diff --git a/CHANGES.rst b/CHANGES.rst index 9c6740e5..d38a0673 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -20,6 +20,10 @@ Changes - Migrate doctests to Python 3.8 [#261] - Migrate Python tests to pytest [#265] +Fixes +----- +- Add additional check to tell if it's safe to redirect stdout/err [#270] + 2.4.0 (2021-09-30) ================== diff --git a/Corrfunc/mocks/DDrppi_mocks.py b/Corrfunc/mocks/DDrppi_mocks.py index 5cf3d394..e772249a 100644 --- a/Corrfunc/mocks/DDrppi_mocks.py +++ b/Corrfunc/mocks/DDrppi_mocks.py @@ -14,7 +14,7 @@ __all__ = ('DDrppi_mocks', ) -def DDrppi_mocks(autocorr, cosmology, nthreads, pimax, binfile, +def DDrppi_mocks(autocorr, cosmology, nthreads, binfile, pimax, npibins, RA1, DEC1, CZ1, weights1=None, RA2=None, DEC2=None, CZ2=None, weights2=None, is_comoving_dist=False, @@ -24,10 +24,11 @@ def DDrppi_mocks(autocorr, cosmology, nthreads, pimax, binfile, zbin_refine_factor=1, max_cells_per_dim=100, copy_particles=True, enable_min_sep_opt=True, c_api_timer=False, isa='fastest', - weight_type=None, bin_type='custom'): + weight_type=None, bin_type='custom', + pair_weights=None, sep_pair_weights=None, attrs_pair_weights=None): """ Calculate the 2-D pair-counts corresponding to the projected correlation - function, :math:`\\xi(r_p, \pi)`. Pairs which are separated by less + function, :math:`\\xi(r_p, \\pi)`. Pairs which are separated by less than the ``rp`` bins (specified in ``binfile``) in the X-Y plane, and less than ``pimax`` in the Z-dimension are counted. The input positions are expected to be on-sky co-ordinates. @@ -42,16 +43,15 @@ def DDrppi_mocks(autocorr, cosmology, nthreads, pimax, binfile, .. note:: that this module only returns pair counts and not the actual - correlation function :math:`\\xi(r_p, \pi)` or :math:`wp(r_p)`. See the + correlation function :math:`\\xi(r_p, \\pi)` or :math:`wp(r_p)`. See the utilities :py:mod:`Corrfunc.utils.convert_3d_counts_to_cf` and :py:mod:`Corrfunc.utils.convert_rp_pi_counts_to_wp` for computing - :math:`\\xi(r_p, \pi)` and :math:`wp(r_p)` respectively from the + :math:`\\xi(r_p, \\pi)` and :math:`wp(r_p)` respectively from the pair counts. Parameters ---------- - autocorr : boolean, required Boolean flag for auto/cross-correlation. If autocorr is set to 1, then the second set of particle positions are not required. @@ -75,15 +75,6 @@ def DDrppi_mocks(autocorr, cosmology, nthreads, pimax, binfile, The number of OpenMP threads to use. Has no effect if OpenMP was not enabled during library compilation. - pimax : double - A double-precision value for the maximum separation along - the Z-dimension. - - Distances along the :math:`\\pi` direction are binned with unit - depth. For instance, if ``pimax=40``, then 40 bins will be created - along the ``pi`` direction. Only pairs with ``0 <= dz < pimax`` - are counted (no equality). - binfile : string or an list/array of floats For string input: filename specifying the ``rp`` bins for ``DDrppi_mocks``. The file should contain white-space separated values @@ -96,6 +87,19 @@ def DDrppi_mocks(autocorr, cosmology, nthreads, pimax, binfile, input specifying **14** (logarithmic) bins between 0.1 and 10.0. This array does not need to be sorted. + pimax : double + A double-precision value for the maximum separation along + the Z-dimension. + + Distances along the :math:`\\pi` direction are binned with unit + depth. For instance, if ``pimax=40``, then 40 bins will be created + along the ``pi`` direction. Only pairs with ``0 <= dz < pimax`` + are counted (no equality). + + npibins : int + The number of linear ``pi`` bins, with the bins ranging from + from (0, :math:`\\pi_{max}`) + RA1 : array-like, real (float/double) The array of Right Ascensions for the first set of points. RA's are expected to be in [0.0, 360.0], but the code will try to fix cases @@ -172,7 +176,7 @@ def DDrppi_mocks(autocorr, cosmology, nthreads, pimax, binfile, you need accurate ``rpavg`` values, then pass in double precision arrays for the particle positions. - fast_divide_and_NR_steps: integer (default 0) + fast_divide_and_NR_steps : integer (default 0) Replaces the division in ``AVX`` implementation with an approximate reciprocal, followed by ``fast_divide_and_NR_steps`` of Newton-Raphson. Can improve runtime by ~15-20% on older computers. Value of 0 uses @@ -182,18 +186,18 @@ def DDrppi_mocks(autocorr, cosmology, nthreads, pimax, binfile, Controls the refinement on the cell sizes. Can have up to a 20% impact on runtime. - max_cells_per_dim: integer, default is 100, typical values in [50-300] + max_cells_per_dim : integer, default is 100, typical values in [50-300] Controls the maximum number of cells per dimension. Total number of cells can be up to (max_cells_per_dim)^3. Only increase if ``rpmax`` is too small relative to the boxsize (and increasing helps the runtime). - copy_particles: boolean (default True) + copy_particles : boolean (default True) Boolean flag to make a copy of the particle positions If set to False, the particles will be re-ordered in-place .. versionadded:: 2.3.0 - enable_min_sep_opt: boolean (default true) + enable_min_sep_opt : boolean (default true) Boolean flag to allow optimizations based on min. separation between pairs of cells. Here to allow for comparison studies. @@ -236,9 +240,19 @@ def DDrppi_mocks(autocorr, cosmology, nthreads, pimax, binfile, ``rtol = 1e-05`` *and* ``atol = 1e-08`` (relative and absolute tolerance) of ``np.linspace(binfile[0], binfile[-1], len(binfile))``. - Returns - -------- + pair_weights : array-like, optional. Default: None. + Array of pair weights. + sep_pair_weights : array-like, optional. Default: None. + Array of separations corresponding to ``pair_weights``. + + attrs_pair_weights : tuple. Default: None. + Attributes for pair weights; in case ``weight_type`` is "inverse_bitwise", + the tuple of (offset to be added to the bitwise counts, + default weight value if denominator is zero). + + Returns + ------- results : Numpy structured array A numpy structured array containing [rpmin, rpmax, rpavg, pimax, @@ -246,7 +260,7 @@ def DDrppi_mocks(autocorr, cosmology, nthreads, pimax, binfile, If ``output_ravg`` is not set, then ``rpavg`` will be set to 0.0 for all bins; similarly for ``weightavg``. ``npairs`` contains the number of pairs in that bin and can be used to compute the actual - :math:`\\xi(r_p, \pi)` or :math:`wp(rp)` by combining with + :math:`\\xi(r_p, \\pi)` or :math:`wp(rp)` by combining with (DR, RR) counts. api_time : float, optional @@ -254,8 +268,7 @@ def DDrppi_mocks(autocorr, cosmology, nthreads, pimax, binfile, the time spent within the C library and ignores all python overhead. Example - -------- - + ------- >>> from __future__ import print_function >>> import numpy as np >>> from os.path import dirname, abspath, join as pjoin @@ -344,7 +357,7 @@ def DDrppi_mocks(autocorr, cosmology, nthreads, pimax, binfile, import numpy as np from Corrfunc.utils import translate_isa_string_to_enum, translate_bin_type_string_to_enum,\ - fix_ra_dec, return_file_with_rbins, convert_to_native_endian,\ + fix_ra_dec, get_edges, convert_to_native_endian,\ sys_pipes, process_weights from future.utils import bytes_to_native_str @@ -361,27 +374,37 @@ def DDrppi_mocks(autocorr, cosmology, nthreads, pimax, binfile, weights1, weights2 = process_weights(weights1, weights2, RA1, RA2, weight_type, autocorr) # Ensure all input arrays are native endian - RA1, DEC1, CZ1, weights1, RA2, DEC2, CZ2, weights2 = [ + RA1, DEC1, CZ1, RA2, DEC2, CZ2 = [ convert_to_native_endian(arr, warn=True) for arr in - [RA1, DEC1, CZ1, weights1, RA2, DEC2, CZ2, weights2]] + [RA1, DEC1, CZ1, RA2, DEC2, CZ2]] fix_ra_dec(RA1, DEC1) if autocorr == 0: fix_ra_dec(RA2, DEC2) + if weights1 is not None: + weights1 = [convert_to_native_endian(arr, warn=True) for arr in weights1] + if weights2 is not None: + weights2 = [convert_to_native_endian(arr, warn=True) for arr in weights2] + + if pair_weights is not None: + pair_weights = convert_to_native_endian(pair_weights, warn=True) + sep_pair_weights = convert_to_native_endian(sep_pair_weights, warn=True) + # Passing None parameters breaks the parsing code, so avoid this kwargs = {} - for k in ['weights1', 'weights2', 'weight_type', 'RA2', 'DEC2', 'CZ2']: + for k in ['weights1', 'weights2', 'weight_type', 'RA2', 'DEC2', 'CZ2', + 'pair_weights', 'sep_pair_weights', 'attrs_pair_weights']: v = locals()[k] if v is not None: kwargs[k] = v integer_isa = translate_isa_string_to_enum(isa) integer_bin_type = translate_bin_type_string_to_enum(bin_type) - rbinfile, delete_after_use = return_file_with_rbins(binfile) + rbinfile = get_edges(binfile) with sys_pipes(): extn_results = DDrppi_extn(autocorr, cosmology, nthreads, - pimax, rbinfile, + rbinfile, pimax, npibins, RA1, DEC1, CZ1, is_comoving_dist=is_comoving_dist, verbose=verbose, @@ -402,10 +425,6 @@ def DDrppi_mocks(autocorr, cosmology, nthreads, pimax, binfile, else: extn_results, api_time = extn_results - if delete_after_use: - import os - os.remove(rbinfile) - results_dtype = np.dtype([(bytes_to_native_str(b'rmin'), np.float64), (bytes_to_native_str(b'rmax'), np.float64), (bytes_to_native_str(b'rpavg'), np.float64), diff --git a/Corrfunc/mocks/DDsmu_mocks.py b/Corrfunc/mocks/DDsmu_mocks.py index 1eb54c07..138f40e5 100644 --- a/Corrfunc/mocks/DDsmu_mocks.py +++ b/Corrfunc/mocks/DDsmu_mocks.py @@ -13,7 +13,7 @@ __all__ = ('DDsmu_mocks', ) -def DDsmu_mocks(autocorr, cosmology, nthreads, mu_max, nmu_bins, binfile, +def DDsmu_mocks(autocorr, cosmology, nthreads, binfile, mumax, nmubins, RA1, DEC1, CZ1, weights1=None, RA2=None, DEC2=None, CZ2=None, weights2=None, is_comoving_dist=False, @@ -23,10 +23,11 @@ def DDsmu_mocks(autocorr, cosmology, nthreads, mu_max, nmu_bins, binfile, zbin_refine_factor=1, max_cells_per_dim=100, copy_particles=True, enable_min_sep_opt=True, c_api_timer=False, isa='fastest', - weight_type=None, bin_type='custom'): + weight_type=None, bin_type='custom', + pair_weights=None, sep_pair_weights=None, attrs_pair_weights=None): """ Calculate the 2-D pair-counts corresponding to the projected correlation - function, :math:`\\xi(s, \mu)`. The pairs are counted in bins of + function, :math:`\\xi(s, \\mu)`. The pairs are counted in bins of radial separation and cosine of angle to the line-of-sight (LOS). The input positions are expected to be on-sky co-ordinates. This module is suitable for calculating correlation functions for mock catalogs. @@ -39,20 +40,19 @@ def DDsmu_mocks(autocorr, cosmology, nthreads, mu_max, nmu_bins, binfile, .. note:: This module only returns pair counts and not the actual - correlation function :math:`\\xi(s, \mu)`. See the + correlation function :math:`\\xi(s, \\mu)`. See the utilities :py:mod:`Corrfunc.utils.convert_3d_counts_to_cf` - for computing :math:`\\xi(s, \mu)` from the pair counts. + for computing :math:`\\xi(s, \\mu)` from the pair counts. .. versionadded:: 2.1.0 Parameters ---------- - - autocorr: boolean, required + autocorr : boolean, required Boolean flag for auto/cross-correlation. If autocorr is set to 1, then the second set of particle positions are not required. - cosmology: integer, required + cosmology : integer, required Integer choice for setting cosmology. Valid values are 1->LasDamas cosmology and 2->Planck cosmology. If you need arbitrary cosmology, easiest way is to convert the ``CZ`` values into co-moving distance, @@ -67,25 +67,11 @@ def DDsmu_mocks(autocorr, cosmology, nthreads, mu_max, nmu_bins, binfile, ``init_cosmology`` in ``ROOT/utils/cosmology_params.c`` and re-install the entire package. - nthreads: integer + nthreads : integer The number of OpenMP threads to use. Has no effect if OpenMP was not enabled during library compilation. - mu_max: double. Must be in range [0.0, 1.0] - A double-precision value for the maximum cosine of the angular - separation from the line of sight (LOS). Here, ``mu`` is defined as - the angle between ``s`` and ``l``. If :math:`v_1` and :math:`v_2` - represent the vectors to each point constituting the pair, then - :math:`s := v_1 - v_2` and :math:`l := 1/2 (v_1 + v_2)`. - - Note: Only pairs with :math:`0 <= \cos(\\theta_{LOS}) < \mu_{max}` - are counted (no equality). - - nmu_bins: int - The number of linear ``mu`` bins, with the bins ranging from - from (0, :math:`\mu_{max}`) - - binfile: string or an list/array of floats + binfile : string or an list/array of floats For string input: filename specifying the ``s`` bins for ``DDsmu_mocks``. The file should contain white-space separated values of (smin, smax) specifying each ``s`` bin wanted. The bins @@ -98,7 +84,21 @@ def DDsmu_mocks(autocorr, cosmology, nthreads, mu_max, nmu_bins, binfile, input specifying **14** (logarithmic) bins between 0.1 and 10.0. This array does not need to be sorted. - RA1: array-like, real (float/double) + mumax : double. Must be in range [0.0, 1.0] + A double-precision value for the maximum cosine of the angular + separation from the line of sight (LOS). Here, ``mu`` is defined as + the angle between ``s`` and ``l``. If :math:`v_1` and :math:`v_2` + represent the vectors to each point constituting the pair, then + :math:`s := v_1 - v_2` and :math:`l := 1/2 (v_1 + v_2)`. + + Note: Only pairs with :math:`0 <= \\cos(\\theta_{LOS}) < \\mu_{max}` + are counted (no equality). + + nmubins : int + The number of linear ``mu`` bins, with the bins ranging from + from (0, :math:`\\mu_{max}`) + + RA1 : array-like, real (float/double) The array of Right Ascensions for the first set of points. RA's are expected to be in [0.0, 360.0], but the code will try to fix cases where the RA's are in [-180, 180.0]. For peace of mind, always supply @@ -106,7 +106,7 @@ def DDsmu_mocks(autocorr, cosmology, nthreads, mu_max, nmu_bins, binfile, Calculations are done in the precision of the supplied arrays. - DEC1: array-like, real (float/double) + DEC1 : array-like, real (float/double) Array of Declinations for the first set of points. DEC's are expected to be in the [-90.0, 90.0], but the code will try to fix cases where the DEC's are in [0.0, 180.0]. Again, for peace of mind, always supply @@ -114,7 +114,7 @@ def DDsmu_mocks(autocorr, cosmology, nthreads, mu_max, nmu_bins, binfile, Must be of same precision type as RA1. - CZ1: array-like, real (float/double) + CZ1 : array-like, real (float/double) Array of (Speed Of Light * Redshift) values for the first set of points. Code will try to detect cases where ``redshifts`` have been passed and multiply the entire array with the ``speed of light``. @@ -122,14 +122,14 @@ def DDsmu_mocks(autocorr, cosmology, nthreads, mu_max, nmu_bins, binfile, If is_comoving_dist is set, then ``CZ1`` is interpreted as the co-moving distance, rather than `cz`. - weights1: array_like, real (float/double), optional + weights1 : array_like, real (float/double), optional A scalar, or an array of weights of shape (n_weights, n_positions) or (n_positions,). `weight_type` specifies how these weights are used; results are returned in the `weightavg` field. If only one of ``weights1`` or ``weights2`` is specified, the other will be set to uniform weights. - RA2: array-like, real (float/double) + RA2 : array-like, real (float/double) The array of Right Ascensions for the second set of points. RA's are expected to be in [0.0, 360.0], but the code will try to fix cases where the RA's are in [-180, 180.0]. For peace of mind, always supply @@ -137,7 +137,7 @@ def DDsmu_mocks(autocorr, cosmology, nthreads, mu_max, nmu_bins, binfile, Must be of same precision type as RA1/DEC1/CZ1. - DEC2: array-like, real (float/double) + DEC2 : array-like, real (float/double) Array of Declinations for the second set of points. DEC's are expected to be in the [-90.0, 90.0], but the code will try to fix cases where the DEC's are in [0.0, 180.0]. Again, for peace of mind, always supply @@ -145,7 +145,7 @@ def DDsmu_mocks(autocorr, cosmology, nthreads, mu_max, nmu_bins, binfile, Must be of same precision type as RA1/DEC1/CZ1. - CZ2: array-like, real (float/double) + CZ2 : array-like, real (float/double) Array of (Speed Of Light * Redshift) values for the second set of points. Code will try to detect cases where ``redshifts`` have been passed and multiply the entire array with the ``speed of light``. @@ -155,18 +155,18 @@ def DDsmu_mocks(autocorr, cosmology, nthreads, mu_max, nmu_bins, binfile, Must be of same precision type as RA1/DEC1/CZ1. - weights2: array-like, real (float/double), optional + weights2 : array-like, real (float/double), optional Same as weights1, but for the second set of positions - is_comoving_dist: boolean (default false) + is_comoving_dist : boolean (default false) Boolean flag to indicate that ``cz`` values have already been converted into co-moving distances. This flag allows arbitrary cosmologies to be used in ``Corrfunc``. - verbose: boolean (default false) + verbose : boolean (default false) Boolean flag to control output of informational messages - output_savg: boolean (default false) + output_savg : boolean (default false) Boolean flag to output the average ``s`` for each bin. Code will run slower if you set this flag. Also, note, if you are calculating in single-precision, ``savg`` will suffer from numerical loss of @@ -174,38 +174,38 @@ def DDsmu_mocks(autocorr, cosmology, nthreads, mu_max, nmu_bins, binfile, values, then pass in double precision arrays for the particle positions. - fast_divide_and_NR_steps: integer (default 0) + fast_divide_and_NR_steps : integer (default 0) Replaces the division in ``AVX`` implementation with an approximate reciprocal, followed by ``fast_divide_and_NR_steps`` of Newton-Raphson. Can improve runtime by ~15-20% on older computers. Value of 0 uses the standard division operation. - (xyz)bin_refine_factor: integer, default is (2,2,1); typically within [1-3] + (xyz)bin_refine_factor : integer, default is (2,2,1); typically within [1-3] Controls the refinement on the cell sizes. Can have up to a 20% impact on runtime. - max_cells_per_dim: integer, default is 100, typical values in [50-300] + max_cells_per_dim : integer, default is 100, typical values in [50-300] Controls the maximum number of cells per dimension. Total number of cells can be up to (max_cells_per_dim)^3. Only increase if ``rpmax`` is too small relative to the boxsize (and increasing helps the runtime). - copy_particles: boolean (default True) + copy_particles : boolean (default True) Boolean flag to make a copy of the particle positions If set to False, the particles will be re-ordered in-place .. versionadded:: 2.3.0 - enable_min_sep_opt: boolean (default true) + enable_min_sep_opt : boolean (default true) Boolean flag to allow optimizations based on min. separation between pairs of cells. Here to allow for comparison studies. .. versionadded:: 2.3.0 - c_api_timer: boolean (default false) + c_api_timer : boolean (default false) Boolean flag to measure actual time spent in the C libraries. Here to allow for benchmarking and scaling studies. - isa: string, case-insensitive (default ``fastest``) + isa : string, case-insensitive (default ``fastest``) Controls the runtime dispatch for the instruction set to use. Options are: [``fastest``, ``avx512f``, ``avx``, ``sse42``, ``fallback``] @@ -219,7 +219,7 @@ def DDsmu_mocks(autocorr, cosmology, nthreads, mu_max, nmu_bins, binfile, benchmarking, then the string supplied here gets translated into an ``enum`` for the instruction set defined in ``utils/defs.h``. - weight_type: string, optional (default None) + weight_type : string, optional (default None) The type of weighting to apply. One of ["pair_product", None]. bin_type : string, case-insensitive (default ``custom``) @@ -238,20 +238,30 @@ def DDsmu_mocks(autocorr, cosmology, nthreads, mu_max, nmu_bins, binfile, ``rtol = 1e-05`` *and* ``atol = 1e-08`` (relative and absolute tolerance) of ``np.linspace(binfile[0], binfile[-1], len(binfile))``. - Returns - -------- + pair_weights : array-like, optional. Default: None. + Array of pair weights. + + sep_pair_weights : array-like, optional. Default: None. + Array of separations corresponding to ``pair_weights``. - results: Numpy structured array + attrs_pair_weights : tuple. Default: None. + Attributes for pair weights; in case ``weight_type`` is "inverse_bitwise", + the tuple of (offset to be added to the bitwise counts, + default weight value if denominator is zero). + + Returns + ------- + results : Numpy structured array A numpy structured array containing [smin, smax, savg, mumax, - npairs, weightavg]. There are a total of ``nmu_bins`` in ``mu`` + npairs, weightavg]. There are a total of ``nmubins`` in ``mu`` for each separation bin specified in the ``binfile``, with ``mumax`` being the upper limit of the ``mu`` bin. If ``output_savg`` is not set, then ``savg`` will be set to 0.0 for all bins; similarly for ``weightavg``. ``npairs`` contains the number of pairs in that bin - and can be used to compute the actual :math:`\\xi(s, \mu)` by + and can be used to compute the actual :math:`\\xi(s, \\mu)` by combining with (DR, RR) counts. - api_time: float, optional + api_time : float, optional Only returned if ``c_api_timer`` is set. ``api_time`` measures only the time spent within the C library and ignores all python overhead. """ @@ -265,21 +275,21 @@ def DDsmu_mocks(autocorr, cosmology, nthreads, mu_max, nmu_bins, binfile, import numpy as np from Corrfunc.utils import translate_isa_string_to_enum, translate_bin_type_string_to_enum,\ - fix_ra_dec, return_file_with_rbins, convert_to_native_endian,\ + fix_ra_dec, get_edges, convert_to_native_endian,\ sys_pipes, process_weights from future.utils import bytes_to_native_str - # Check if mu_max is scalar - if not np.isscalar(mu_max): - msg = "The parameter `mu_max` = {0}, has size = {1}. "\ + # Check if mumax is scalar + if not np.isscalar(mumax): + msg = "The parameter `mumax` = {0}, has size = {1}. "\ "The code is expecting a scalar quantity (and not "\ - "not a list, array)".format(mu_max, np.size(mu_max)) + "not a list, array)".format(mumax, np.size(mumax)) raise TypeError(msg) - # Check that mu_max is within (0.0, 1.0] - if mu_max <= 0.0 or mu_max > 1.0: - msg = "The parameter `mu_max` = {0}, is the max. of cosine of an "\ - "angle and should be within (0.0, 1.0]".format(mu_max) + # Check that mumax is within (0.0, 1.0] + if mumax <= 0.0 or mumax > 1.0: + msg = "The parameter `mumax` = {0}, is the max. of cosine of an "\ + "angle and should be within (0.0, 1.0]".format(mumax) raise ValueError(msg) if not autocorr: @@ -295,28 +305,38 @@ def DDsmu_mocks(autocorr, cosmology, nthreads, mu_max, nmu_bins, binfile, weights1, weights2 = process_weights(weights1, weights2, RA1, RA2, weight_type, autocorr) # Ensure all input arrays are native endian - RA1, DEC1, CZ1, weights1, RA2, DEC2, CZ2, weights2 = [ + RA1, DEC1, CZ1, RA2, DEC2, CZ2 = [ convert_to_native_endian(arr, warn=True) for arr in - [RA1, DEC1, CZ1, weights1, RA2, DEC2, CZ2, weights2]] + [RA1, DEC1, CZ1, RA2, DEC2, CZ2]] fix_ra_dec(RA1, DEC1) if autocorr == 0: fix_ra_dec(RA2, DEC2) + if weights1 is not None: + weights1 = [convert_to_native_endian(arr, warn=True) for arr in weights1] + if weights2 is not None: + weights2 = [convert_to_native_endian(arr, warn=True) for arr in weights2] + + if pair_weights is not None: + pair_weights = convert_to_native_endian(pair_weights, warn=True) + sep_pair_weights = convert_to_native_endian(sep_pair_weights, warn=True) + # Passing None parameters breaks the parsing code, so avoid this kwargs = {} - for k in ['weights1', 'weights2', 'weight_type', 'RA2', 'DEC2', 'CZ2']: + for k in ['weights1', 'weights2', 'weight_type', 'RA2', 'DEC2', 'CZ2', + 'pair_weights', 'sep_pair_weights', 'attrs_pair_weights']: v = locals()[k] if v is not None: kwargs[k] = v integer_isa = translate_isa_string_to_enum(isa) integer_bin_type = translate_bin_type_string_to_enum(bin_type) - sbinfile, delete_after_use = return_file_with_rbins(binfile) + sbinfile = get_edges(binfile) with sys_pipes(): extn_results = DDsmu_extn(autocorr, cosmology, nthreads, - mu_max, nmu_bins, sbinfile, + sbinfile, mumax, nmubins, RA1, DEC1, CZ1, is_comoving_dist=is_comoving_dist, verbose=verbose, @@ -337,10 +357,6 @@ def DDsmu_mocks(autocorr, cosmology, nthreads, mu_max, nmu_bins, binfile, else: extn_results, api_time = extn_results - if delete_after_use: - import os - os.remove(sbinfile) - results_dtype = np.dtype([(bytes_to_native_str(b'smin'), np.float64), (bytes_to_native_str(b'smax'), np.float64), (bytes_to_native_str(b'savg'), np.float64), diff --git a/Corrfunc/mocks/DDtheta_mocks.py b/Corrfunc/mocks/DDtheta_mocks.py index f8993928..35ff9957 100644 --- a/Corrfunc/mocks/DDtheta_mocks.py +++ b/Corrfunc/mocks/DDtheta_mocks.py @@ -24,7 +24,8 @@ def DDtheta_mocks(autocorr, nthreads, binfile, dec_refine_factor=2, max_cells_per_dim=100, copy_particles=True, enable_min_sep_opt=True, c_api_timer=False, isa='fastest', - weight_type=None, bin_type='custom'): + weight_type=None, bin_type='custom', + pair_weights=None, sep_pair_weights=None, attrs_pair_weights=None): """ Function to compute the angular correlation function for points on the sky (i.e., mock catalogs or observed galaxies). @@ -37,14 +38,13 @@ def DDtheta_mocks(autocorr, nthreads, binfile, .. note:: This module only returns pair counts and not the actual - correlation function :math:`\\omega(\theta)`. See + correlation function :math:`\\omega(\\theta)`. See :py:mod:`Corrfunc.utils.convert_3d_counts_to_cf` for computing - :math:`\\omega(\theta)` from the pair counts returned. + :math:`\\omega(\\theta)` from the pair counts returned. Parameters ---------- - autocorr : boolean, required Boolean flag for auto/cross-correlation. If autocorr is set to 1, then the second set of particle positions are not required. @@ -52,7 +52,7 @@ def DDtheta_mocks(autocorr, nthreads, binfile, nthreads : integer Number of threads to use. - binfile: string or an list/array of floats. Units: degrees. + binfile : string or an list/array of floats. Units: degrees. For string input: filename specifying the ``theta`` bins for ``DDtheta_mocks``. The file should contain white-space separated values of (thetamin, thetamax) for each ``theta`` wanted. The bins need to be @@ -163,13 +163,13 @@ def DDtheta_mocks(autocorr, nthreads, binfile, is too small relative to the boxsize (and increasing helps the runtime). - copy_particles: boolean (default True) + copy_particles : boolean (default True) Boolean flag to make a copy of the particle positions If set to False, the particles will be re-ordered in-place .. versionadded:: 2.3.0 - enable_min_sep_opt: boolean (default true) + enable_min_sep_opt : boolean (default true) Boolean flag to allow optimizations based on min. separation between pairs of cells. Here to allow for comparison studies. @@ -179,7 +179,7 @@ def DDtheta_mocks(autocorr, nthreads, binfile, Boolean flag to measure actual time spent in the C libraries. Here to allow for benchmarking and scaling studies. - isa: string, case-insensitive (default ``fastest``) + isa : string, case-insensitive (default ``fastest``) Controls the runtime dispatch for the instruction set to use. Options are: [``fastest``, ``avx512f``, ``avx``, ``sse42``, ``fallback``] @@ -215,9 +215,19 @@ def DDtheta_mocks(autocorr, nthreads, binfile, ``rtol = 1e-05`` *and* ``atol = 1e-08`` (relative and absolute tolerance) of ``np.linspace(binfile[0], binfile[-1], len(binfile))``. - Returns - -------- + pair_weights : array-like, optional. Default: None. + Array of pair weights. + + sep_pair_weights : array-like, optional. Default: None. + Array of separations corresponding to ``pair_weights``. + + attrs_pair_weights : tuple. Default: None. + Attributes for pair weights; in case ``weight_type`` is "inverse_bitwise", + the tuple of (offset to be added to the bitwise counts, + default weight value if denominator is zero). + Returns + ------- results : Numpy structured array A numpy structured array containing [thetamin, thetamax, thetaavg, npairs, weightavg] for each angular bin specified in the ``binfile``. @@ -231,7 +241,6 @@ def DDtheta_mocks(autocorr, nthreads, binfile, Example ------- - >>> from __future__ import print_function >>> import numpy as np >>> import time @@ -295,7 +304,7 @@ def DDtheta_mocks(autocorr, nthreads, binfile, import numpy as np from Corrfunc.utils import translate_isa_string_to_enum, translate_bin_type_string_to_enum,\ - fix_ra_dec, return_file_with_rbins, convert_to_native_endian,\ + fix_ra_dec, get_edges, convert_to_native_endian,\ sys_pipes, process_weights from future.utils import bytes_to_native_str @@ -312,27 +321,37 @@ def DDtheta_mocks(autocorr, nthreads, binfile, RA1, RA2, weight_type, autocorr) # Ensure all input arrays are native endian - RA1, DEC1, weights1, RA2, DEC2, weights2 = [ + RA1, DEC1, RA2, DEC2 = [ convert_to_native_endian(arr, warn=True) for arr in - [RA1, DEC1, weights1, RA2, DEC2, weights2]] + [RA1, DEC1, RA2, DEC2]] fix_ra_dec(RA1, DEC1) if autocorr == 0: fix_ra_dec(RA2, DEC2) + if weights1 is not None: + weights1 = [convert_to_native_endian(arr, warn=True) for arr in weights1] + if weights2 is not None: + weights2 = [convert_to_native_endian(arr, warn=True) for arr in weights2] + + if pair_weights is not None: + pair_weights = convert_to_native_endian(pair_weights, warn=True) + sep_pair_weights = convert_to_native_endian(sep_pair_weights, warn=True) + if link_in_ra: link_in_dec = True # Passing None parameters breaks the parsing code, so avoid this kwargs = {} - for k in ['weights1', 'weights2', 'weight_type', 'RA2', 'DEC2']: + for k in ['weights1', 'weights2', 'weight_type', 'RA2', 'DEC2', + 'pair_weights', 'sep_pair_weights', 'attrs_pair_weights']: v = locals()[k] if v is not None: kwargs[k] = v integer_isa = translate_isa_string_to_enum(isa) integer_bin_type = translate_bin_type_string_to_enum(bin_type) - rbinfile, delete_after_use = return_file_with_rbins(binfile) + rbinfile = get_edges(binfile) with sys_pipes(): extn_results = DDtheta_mocks_extn(autocorr, nthreads, rbinfile, RA1, DEC1, @@ -355,10 +374,6 @@ def DDtheta_mocks(autocorr, nthreads, binfile, else: extn_results, api_time = extn_results - if delete_after_use: - import os - os.remove(rbinfile) - results_dtype = np.dtype([(bytes_to_native_str(b'thetamin'), np.float64), (bytes_to_native_str(b'thetamax'), np.float64), (bytes_to_native_str(b'thetaavg'), np.float64), @@ -391,7 +406,7 @@ def find_fastest_DDtheta_mocks_bin_refs(autocorr, nthreads, binfile, nthreads : integer Number of threads to use. - binfile: string or an list/array of floats. Units: degrees. + binfile : string or an list/array of floats. Units: degrees. For string input: filename specifying the ``theta`` bins for ``DDtheta_mocks``. The file should contain white-space separated values of (thetamin, thetamax) for each ``theta`` wanted. The bins need to be @@ -444,7 +459,7 @@ def find_fastest_DDtheta_mocks_bin_refs(autocorr, nthreads, binfile, need accurate ``thetaavg`` values, then pass in double precision arrays for ``RA/DEC``. - isa: string, case-insensitive (default ``fastest``) + isa : string, case-insensitive (default ``fastest``) Controls the runtime dispatch for the instruction set to use. Options are: [``fastest``, ``avx512f``, ``avx``, ``sse42``, ``fallback``] @@ -459,12 +474,12 @@ def find_fastest_DDtheta_mocks_bin_refs(autocorr, nthreads, binfile, benchmarking, then the string supplied here gets translated into an ``enum`` for the instruction set defined in ``utils/defs.h``. - max_cells_per_dim: integer, default is 100, typical values in [50-300] + max_cells_per_dim : integer, default is 100, typical values in [50-300] Controls the maximum number of cells per dimension. Total number of cells can be up to (max_cells_per_dim)^2. Only increase if ``rpmax`` is too small relative to the boxsize (and increasing helps the runtime). - maxbinref: integer (default 3) + maxbinref : integer (default 3) The maximum ``bin refine factor`` to use along each dimension. Runtime of module scales as ``maxbinref^2``, so change the value of @@ -473,12 +488,12 @@ def find_fastest_DDtheta_mocks_bin_refs(autocorr, nthreads, binfile, Note that ``max_cells_per_dim`` might need to be increased to accommodate really large ``maxbinref``. - nrepeats: integer (default 3) + nrepeats : integer (default 3) Number of times to repeat the timing for an individual run. Accounts for the dispersion in runtimes on computers with multiple user processes. - return_runtimes: boolean (default ``false``) + return_runtimes : boolean (default ``false``) If set, also returns the array of runtimes. Returns @@ -488,7 +503,6 @@ def find_fastest_DDtheta_mocks_bin_refs(autocorr, nthreads, binfile, produces the fastest code. runtimes : numpy structured array - Only returned if ``return_runtimes`` is set, then the return value is a tuple containing ((nRA, nDEC), runtimes). ``runtimes`` is a ``numpy`` structured array containing the fields, [``nRA``, ``nDEC``, @@ -541,7 +555,7 @@ def find_fastest_DDtheta_mocks_bin_refs(autocorr, nthreads, binfile, import numpy as np from Corrfunc.utils import translate_isa_string_to_enum, fix_ra_dec,\ - return_file_with_rbins, convert_to_native_endian, process_weights + get_edges, convert_to_native_endian, process_weights from future.utils import bytes_to_native_str import itertools import time @@ -566,7 +580,7 @@ def find_fastest_DDtheta_mocks_bin_refs(autocorr, nthreads, binfile, kwargs[k] = v integer_isa = translate_isa_string_to_enum(isa) - rbinfile, delete_after_use = return_file_with_rbins(binfile) + rbinfile = get_edges(binfile) bin_refs = np.arange(1, maxbinref + 1) if link_in_ra: bin_ref_perms = itertools.product(bin_refs, bin_refs) @@ -646,10 +660,6 @@ def find_fastest_DDtheta_mocks_bin_refs(autocorr, nthreads, binfile, all_runtimes[ii]['avg_time'] = avg_runtime all_runtimes[ii]['sigma_time'] = runtime_disp - if delete_after_use: - import os - os.remove(rbinfile) - all_runtimes.sort(order=('avg_time', 'sigma_time')) results = (all_runtimes[0]['nRA'], all_runtimes[0]['nDEC']) diff --git a/Corrfunc/mocks/vpf_mocks.py b/Corrfunc/mocks/vpf_mocks.py index bdc1e314..efb00fd9 100644 --- a/Corrfunc/mocks/vpf_mocks.py +++ b/Corrfunc/mocks/vpf_mocks.py @@ -31,7 +31,6 @@ def vpf_mocks(rmax, nbins, nspheres, numpN, Parameters ---------- - rmax : double Maximum radius of the sphere to place on the particles @@ -197,8 +196,7 @@ def vpf_mocks(rmax, nbins, nspheres, numpN, ``enum`` for the instruction set defined in ``utils/defs.h``. Returns - -------- - + ------- results : Numpy structured array A numpy structured array containing [rmax, pN[numpN]] with ``nbins`` elements. Each row contains the maximum radius of the sphere and the @@ -214,8 +212,7 @@ def vpf_mocks(rmax, nbins, nspheres, numpN, Example - -------- - + ------- >>> from __future__ import print_function >>> import math >>> from os.path import dirname, abspath, join as pjoin diff --git a/Corrfunc/tests/common.py b/Corrfunc/tests/common.py index d7bb6230..c37c1bcc 100644 --- a/Corrfunc/tests/common.py +++ b/Corrfunc/tests/common.py @@ -8,11 +8,11 @@ @pytest.fixture(scope='module') def gals_Mr19(): - + filename = pjoin(dirname(abspath(__file__)), "../../theory/tests/data", "gals_Mr19.ff") x, y, z, w = read_fastfood_catalog(filename, need_weights=True) - + return x, y, z, w @@ -21,7 +21,7 @@ def Mr19_mock_northonly(): filename = pjoin(dirname(abspath(__file__)), "../../mocks/tests/data", "Mr19_mock_northonly.rdcz.ff") ra,dec,cz,w = read_fastfood_catalog(filename, need_weights=True) - + return ra, dec, cz, w @@ -30,38 +30,38 @@ def Mr19_randoms_northonly(): filename = pjoin(dirname(abspath(__file__)), "../../mocks/tests/data", "Mr19_randoms_northonly.rdcz.ff") ra,dec,cz,w = read_fastfood_catalog(filename, need_weights=True) - + return ra, dec, cz, w def maxthreads(): '''Use as many threads as cores that are available to this process''' import multiprocessing - + try: maxthreads = len(os.sched_getaffinity(0)) except AttributeError: maxthreads = multiprocessing.cpu_count() or 1 - + return maxthreads def generate_isa_and_nthreads_combos(extra_isa=None): '''Test all ISA with maxthreads, and the fastest ISA with threads 1 and maxthreads+1''' mx = maxthreads() - + # the ISA sweep will use maxthreads # and then with the fastest ISA, we will test single-threaded, # plus "oversubscribed", where we use more threads than cores all_nthreads = [1,mx+1] - + combos = [] all_isa = ['fallback','sse42','avx','avx512f'] if extra_isa: all_isa += extra_isa combos += [(isa,mx) for isa in all_isa] combos += [('fastest',n) for n in all_nthreads] - + return combos @@ -73,18 +73,18 @@ def check_against_reference(results, filename, # results is output of Python function # filename has the reference counts # ref_cols in order of npairs, weightavg, rpavg, [xi] - + names = ['npairs','weightavg',ravg_name] dtypes = [np.int64,np.float64,np.float64] if cf_name != None: # modules like xi return both npairs and xi, so we'll check both names += [cf_name] dtypes += [np.float64] - + refs = np.genfromtxt(filename, usecols=ref_cols, names=names, dtype=dtypes, ) - + assert (results['npairs'] == refs['npairs']).all() for name in names[1:]: assert np.allclose(results[name], refs[name], atol=atol, rtol=rtol) @@ -93,7 +93,7 @@ def check_vpf_against_reference(results, filename, atol=1e-9, rtol=1e-6): # results is output of Python function # filename has the reference counts - + numN = results['pN'].shape[-1] refs = np.genfromtxt(filename, usecols=range(1,numN+1), dtype=np.float64, diff --git a/Corrfunc/tests/test_lin.py b/Corrfunc/tests/test_lin.py index 986e715c..5be818b0 100644 --- a/Corrfunc/tests/test_lin.py +++ b/Corrfunc/tests/test_lin.py @@ -12,6 +12,7 @@ from Corrfunc.tests.common import gals_Mr19 from Corrfunc.tests.common import maxthreads + def _allclose(a, b, ravg_name=None): toret = True for name in ['npairs','weightavg',ravg_name]: @@ -26,11 +27,11 @@ def _allclose(a, b, ravg_name=None): return toret -def _test_bin_types(pair_counter, *args, ravg_name=None, bin_types = ['custom', 'lin'], **kwargs): +def _test_bin_types(pair_counter, *args, ravg_name=None, bin_types=('custom', 'custom'), **kwargs): res = (pair_counter(*args, bin_type=bin_type, weight_type="pair_product", **kwargs) for bin_type in bin_types) assert _allclose(*res, ravg_name=ravg_name) - + @pytest.fixture def nthreads(): @@ -43,29 +44,25 @@ def points(request, npts=10**4): filename = pjoin(dirname(abspath(__file__)), "../../theory/tests/data", "gals_Mr19.ff") data = read_fastfood_catalog(filename, need_weights=True) - data = np.array(data) np.random.seed(42) - i = np.random.choice(data.shape[-1], size=npts, replace=False) - data = data[:,i] + i = np.random.choice(len(data[0]), size=npts, replace=False) + return dict(data=[d[i] for d in data], boxsize=420.) + + raise ValueError + - return dict(data=data, boxsize=420.) - - raise ValueError(kind) - @pytest.fixture(scope='module', params=['Mr19_mock_northonly',]) def points_mock(request, npts=10**4): if request.param == 'Mr19_mock_northonly': filename = pjoin(dirname(abspath(__file__)), "../../mocks/tests/data", "Mr19_mock_northonly.rdcz.ff") data = read_fastfood_catalog(filename, need_weights=True) - data = np.array(data) np.random.seed(42) - i = np.random.choice(data.shape[-1], size=npts, replace=False) - data = data[:,i] + i = np.random.choice(len(data[0]), size=npts, replace=False) + + return dict(data=[d[i] for d in data]) - return dict(data=data) - - raise ValueError(kind) + raise ValueError @pytest.fixture(scope='module') @@ -75,39 +72,40 @@ def linbins(): @pytest.mark.parametrize('isa', ['fallback','sse42','avx','avx512f']) -def test_linear_binning_mocks_DDrppi(points_mock, linbins, isa, nthreads, autocorr=True, pimax = 40.0, cosmology=1): +def test_linear_binning_mocks_DDrppi(points_mock, linbins, isa, nthreads, autocorr=True, pimax=40.0, cosmology=1): from Corrfunc.mocks import DDrppi_mocks ra,dec,cz,w = points_mock['data'] - + _test_bin_types(DDrppi_mocks, autocorr, cosmology, nthreads, - pimax, linbins, - ra, dec, cz, weights1=w, - output_rpavg=True, verbose=True, - isa=isa, ravg_name='rpavg') - + linbins, pimax, int(pimax), + ra, dec, cz, weights1=w, + output_rpavg=True, verbose=True, + isa=isa, ravg_name='rpavg') + + @pytest.mark.parametrize('isa', ['fallback','sse42','avx','avx512f']) -def test_linear_binning_mocks_DDsmu(points_mock, linbins, isa, nthreads, autocorr=True, periodic=True, cosmology=1, nmu_bins = 10, mu_max = 1.0): +def test_linear_binning_mocks_DDsmu(points_mock, linbins, isa, nthreads, autocorr=True, periodic=True, cosmology=1, nmu_bins=10, mu_max=1.0): from Corrfunc.mocks import DDsmu_mocks ra,dec,cz,w = points_mock['data'] - + _test_bin_types(DDsmu_mocks, autocorr, cosmology, nthreads, - mu_max, nmu_bins, linbins, - ra, dec, cz, weights1=w, - output_savg=True, verbose=True, - isa=isa, ravg_name='savg') + linbins, mu_max, nmu_bins, + ra, dec, cz, weights1=w, + output_savg=True, verbose=True, + isa=isa, ravg_name='savg') @pytest.mark.parametrize('isa', ['fallback','sse42','avx','avx512f']) def test_linear_binning_mocks_DDtheta(points_mock, linbins, isa, nthreads, autocorr=True): from Corrfunc.mocks import DDtheta_mocks ra,dec,cz,w = points_mock['data'] - + _test_bin_types(DDtheta_mocks, autocorr, nthreads, linbins, - ra, dec, RA2=ra, DEC2=dec, - weights1=w, - weights2=w, - output_thetaavg=True, fast_acos=False, - verbose=True, isa=isa, ravg_name='thetaavg') + ra, dec, RA2=ra, DEC2=dec, + weights1=w, + weights2=w, + output_thetaavg=True, fast_acos=False, + verbose=True, isa=isa, ravg_name='thetaavg') @pytest.mark.parametrize('isa', ['fallback','sse42','avx','avx512f']) @@ -115,11 +113,11 @@ def test_linear_binning_theory_DD(points, linbins, isa, nthreads, autocorr=True, from Corrfunc.theory import DD x,y,z,w = points['data'] boxsize = points['boxsize'] - + _test_bin_types(DD, autocorr, nthreads, linbins, x, y, z, weights1=w, verbose=True, periodic=periodic, boxsize=boxsize, isa=isa, output_ravg=True, ravg_name='ravg') - + @pytest.mark.parametrize('isa', ['fallback','sse42','avx','avx512f']) def test_linear_binning_theory_DDrppi(points, linbins, isa, nthreads, autocorr=True, periodic=True, pimax=40.): @@ -127,11 +125,11 @@ def test_linear_binning_theory_DDrppi(points, linbins, isa, nthreads, autocorr=T x,y,z,w = points['data'] boxsize = points['boxsize'] - _test_bin_types(DDrppi, autocorr, nthreads, pimax, - linbins, x, y, z, weights1=w, - verbose=True, periodic=periodic, - boxsize=boxsize, isa=isa, - output_rpavg=True, ravg_name='rpavg') + _test_bin_types(DDrppi, autocorr, nthreads, + linbins, pimax, int(pimax), x, y, z, weights1=w, + verbose=True, periodic=periodic, + boxsize=boxsize, isa=isa, + output_rpavg=True, ravg_name='rpavg') @pytest.mark.parametrize('isa', ['fallback','sse42','avx','avx512f']) @@ -142,32 +140,32 @@ def test_linear_binning_theory_DDsmu(points, linbins, isa, nthreads, autocorr=Tr boxsize = points['boxsize'] _test_bin_types(DDsmu, autocorr, nthreads, linbins, - mu_max, nmu_bins, - x, y, z, weights1=w, - verbose=True, periodic=periodic, - boxsize=boxsize, output_savg=True, isa=isa, - ravg_name='savg') + mu_max, nmu_bins, + x, y, z, weights1=w, + verbose=True, periodic=periodic, + boxsize=boxsize, output_savg=True, isa=isa, + ravg_name='savg') + - @pytest.mark.parametrize('isa', ['fallback','sse42','avx','avx512f']) def test_linear_binning_theory_wp(points, linbins, isa, nthreads, autocorr=True, periodic=True, pimax=40.): from Corrfunc.theory import wp x,y,z,w = points['data'] boxsize = points['boxsize'] - - _test_bin_types(wp, boxsize, pimax, nthreads, - linbins, x, y, z, weights=w, - verbose=True, isa=isa, - output_rpavg=True, ravg_name='rpavg') - + _test_bin_types(wp, boxsize, nthreads, + linbins, pimax, x, y, z, weights=w, + verbose=True, isa=isa, + output_rpavg=True, ravg_name='rpavg') + + @pytest.mark.parametrize('isa', ['fallback','sse42','avx','avx512f']) def test_linear_binning_theory_xi(points, linbins, isa, nthreads, autocorr=True, periodic=True): from Corrfunc.theory import xi x,y,z,w = points['data'] boxsize = points['boxsize'] - + _test_bin_types(xi, boxsize, nthreads, linbins, - x, y, z, weights=w, - verbose=True, isa=isa, - output_ravg=True, ravg_name='ravg') + x, y, z, weights=w, + verbose=True, isa=isa, + output_ravg=True, ravg_name='ravg') diff --git a/Corrfunc/tests/test_mocks.py b/Corrfunc/tests/test_mocks.py index 1468ddc8..472cd619 100644 --- a/Corrfunc/tests/test_mocks.py +++ b/Corrfunc/tests/test_mocks.py @@ -9,71 +9,71 @@ from Corrfunc.tests.common import (check_against_reference, check_vpf_against_reference) from Corrfunc.tests.common import generate_isa_and_nthreads_combos - + @pytest.mark.parametrize('isa,nthreads', generate_isa_and_nthreads_combos()) def test_DDrppi_mocks(Mr19_mock_northonly, isa, nthreads): from Corrfunc.mocks import DDrppi_mocks - + pimax = 40.0 binfile = pjoin(dirname(abspath(__file__)), "../../mocks/tests/", "bins") autocorr = 1 cosmology = 1 - + ra,dec,cz,w = Mr19_mock_northonly results_DDrppi_mocks = DDrppi_mocks(autocorr, cosmology, nthreads, - pimax, binfile, - ra, dec, cz, weights1=w, - weight_type='pair_product', - output_rpavg=True, verbose=True, - isa=isa) - + binfile, pimax, int(pimax), + ra, dec, cz, weights1=w, + weight_type='pair_product', + output_rpavg=True, verbose=True, + isa=isa) + file_ref = pjoin(dirname(abspath(__file__)), "../../mocks/tests/", "Mr19_mock.DD") check_against_reference(results_DDrppi_mocks, file_ref, ravg_name='rpavg', ref_cols=(0, 4, 1)) - + @pytest.mark.parametrize('isa,nthreads', generate_isa_and_nthreads_combos()) def test_DDsmu_mocks(Mr19_randoms_northonly, isa, nthreads): from Corrfunc.mocks import DDsmu_mocks - + binfile = pjoin(dirname(abspath(__file__)), "../../mocks/tests/", "bins") autocorr = 1 mu_max = 1.0 nmu_bins = 10 cosmology = 1 - + ra,dec,cz,w = Mr19_randoms_northonly results_DDsmu_mocks = DDsmu_mocks(autocorr, cosmology, nthreads, - mu_max, nmu_bins, binfile, - ra, dec, cz, weights1=w, - weight_type='pair_product', - output_savg=True, verbose=True, - isa=isa) - + binfile, mu_max, nmu_bins, + ra, dec, cz, weights1=w, + weight_type='pair_product', + output_savg=True, verbose=True, + isa=isa) + file_ref = pjoin(dirname(abspath(__file__)), "../../mocks/tests/", "Mr19_mock_DDsmu.RR") check_against_reference(results_DDsmu_mocks, file_ref, ravg_name='savg', ref_cols=(0, 4, 1)) - - + + @pytest.mark.parametrize('isa,nthreads', generate_isa_and_nthreads_combos()) def test_DDtheta_mocks(Mr19_mock_northonly, isa, nthreads): from Corrfunc.mocks import DDtheta_mocks - + autocorr = 1 binfile = pjoin(dirname(abspath(__file__)), "../../mocks/tests/", "angular_bins") - + ra,dec,cz,w = Mr19_mock_northonly results_DDtheta_mocks = DDtheta_mocks(autocorr, nthreads, binfile, - ra, dec, - weights1=w, - weight_type='pair_product', - output_thetaavg=True, fast_acos=False, - verbose=True, isa=isa) - + ra, dec, + weights1=w, + weight_type='pair_product', + output_thetaavg=True, fast_acos=False, + verbose=True, isa=isa) + file_ref = pjoin(dirname(abspath(__file__)), "../../mocks/tests/", "Mr19_mock_wtheta.DD") check_against_reference(results_DDtheta_mocks, file_ref, ravg_name='thetaavg', ref_cols=(0, 4, 1)) @@ -82,7 +82,7 @@ def test_DDtheta_mocks(Mr19_mock_northonly, isa, nthreads): @pytest.mark.parametrize('isa,nthreads', generate_isa_and_nthreads_combos()) def test_vpf_mocks(Mr19_mock_northonly, isa, nthreads): from Corrfunc.mocks import vpf_mocks - + print("Beginning the VPF") # Max. sphere radius of 10 Mpc rmax = 10.0 @@ -95,18 +95,17 @@ def test_vpf_mocks(Mr19_mock_northonly, isa, nthreads): "../../mocks/tests/data/", "Mr19_centers_xyz_forVPF_rmax_10Mpc.txt") cosmology = 1 - + binfile = pjoin(dirname(abspath(__file__)), "../../mocks/tests/", "angular_bins") - + ra,dec,cz,w = Mr19_mock_northonly results_vpf_mocks = vpf_mocks(rmax, nbin, num_spheres, num_pN, - threshold_neighbors, centers_file, - cosmology, - ra, dec, cz, ra, dec, cz, - verbose=True, isa=isa,) - + threshold_neighbors, centers_file, + cosmology, + ra, dec, cz, ra, dec, cz, + verbose=True, isa=isa,) + file_ref = pjoin(dirname(abspath(__file__)), "../../mocks/tests/", "Mr19_mock_vpf") check_vpf_against_reference(results_vpf_mocks, file_ref) - \ No newline at end of file diff --git a/Corrfunc/tests/test_theory.py b/Corrfunc/tests/test_theory.py index 4247d503..bd9f0e52 100644 --- a/Corrfunc/tests/test_theory.py +++ b/Corrfunc/tests/test_theory.py @@ -11,56 +11,57 @@ from Corrfunc.tests.common import generate_isa_and_nthreads_combos + @pytest.mark.parametrize('isa,nthreads', generate_isa_and_nthreads_combos()) def test_DD(gals_Mr19, isa, nthreads): from Corrfunc.theory import DD - + boxsize = 420. binfile = pjoin(dirname(abspath(__file__)), "../../theory/tests/", "bins") autocorr = 1 periodic = 1 - + x,y,z,w = gals_Mr19 results_DD = DD(autocorr, nthreads, binfile, x, y, z, - weights1=w, weight_type='pair_product', - periodic=periodic, boxsize=boxsize, - output_ravg=True, verbose=True, - isa=isa) - + weights1=w, weight_type='pair_product', + periodic=periodic, boxsize=boxsize, + output_ravg=True, verbose=True, + isa=isa) + file_ref = pjoin(dirname(abspath(__file__)), "../../theory/tests/", "Mr19_DD_periodic") check_against_reference(results_DD, file_ref, ravg_name='ravg', ref_cols=(0, 4, 1)) - + @pytest.mark.parametrize('isa,nthreads', generate_isa_and_nthreads_combos()) def test_DDrppi(gals_Mr19, isa, nthreads): from Corrfunc.theory import DDrppi - + boxsize = 420. pimax = 40.0 binfile = pjoin(dirname(abspath(__file__)), "../../theory/tests/", "bins") autocorr = 1 periodic = 1 - + x,y,z,w = gals_Mr19 - results_DDrppi = DDrppi(autocorr, nthreads, pimax, binfile, x, y, z, + results_DDrppi = DDrppi(autocorr, nthreads, binfile, pimax, int(pimax), x, y, z, weights1=w, weight_type='pair_product', periodic=periodic, boxsize=boxsize, output_rpavg=True, verbose=True, isa=isa) - + file_ref = pjoin(dirname(abspath(__file__)), "../../theory/tests/", "Mr19_DDrppi_periodic") check_against_reference(results_DDrppi, file_ref, ravg_name='rpavg', ref_cols=(0, 4, 1)) - + @pytest.mark.parametrize('isa,nthreads', generate_isa_and_nthreads_combos()) def test_DDsmu(gals_Mr19, isa, nthreads): from Corrfunc.theory import DDsmu - + boxsize = 420. binfile = pjoin(dirname(abspath(__file__)), "../../theory/tests/", "bins") @@ -68,67 +69,67 @@ def test_DDsmu(gals_Mr19, isa, nthreads): periodic = 1 mu_max = 0.5 nmu_bins = 10 - + x,y,z,w = gals_Mr19 results_DDsmu = DDsmu(autocorr, nthreads, binfile, - mu_max, nmu_bins, - x, y, z, - weights1=w, weight_type='pair_product', - periodic=periodic, boxsize=boxsize, - output_savg=True, verbose=True, - isa=isa) - + mu_max, nmu_bins, + x, y, z, + weights1=w, weight_type='pair_product', + periodic=periodic, boxsize=boxsize, + output_savg=True, verbose=True, + isa=isa) + file_ref = pjoin(dirname(abspath(__file__)), "../../theory/tests/", "Mr19_DDsmu_periodic") check_against_reference(results_DDsmu, file_ref, ravg_name='savg', ref_cols=(0, 4, 1)) - - + + @pytest.mark.parametrize('isa,nthreads', generate_isa_and_nthreads_combos(extra_isa=['AVX2'])) def test_wp(gals_Mr19, isa, nthreads): from Corrfunc.theory import wp - + boxsize = 420. pimax = 40. binfile = pjoin(dirname(abspath(__file__)), "../../theory/tests/", "bins") - + x,y,z,w = gals_Mr19 - results_wp = wp(boxsize, pimax, nthreads, binfile, - x, y, z, - weights=w, weight_type='pair_product', - output_rpavg=True, verbose=True, - isa=isa) - + results_wp = wp(boxsize, nthreads, binfile, pimax, + x, y, z, + weights=w, weight_type='pair_product', + output_rpavg=True, verbose=True, + isa=isa) + file_ref = pjoin(dirname(abspath(__file__)), "../../theory/tests/", "Mr19_wp") check_against_reference(results_wp, file_ref, ravg_name='rpavg', cf_name='wp', ref_cols=(4, 5, 1, 0)) - + @pytest.mark.parametrize('isa,nthreads', generate_isa_and_nthreads_combos()) def test_xi(gals_Mr19, isa, nthreads): from Corrfunc.theory import xi - + boxsize = 420. binfile = pjoin(dirname(abspath(__file__)), "../../theory/tests/", "bins") - + x,y,z,w = gals_Mr19 results_xi = xi(boxsize, nthreads, binfile, - x, y, z, - weights=w, weight_type='pair_product', - output_ravg=True, verbose=True, - isa=isa) - + x, y, z, + weights=w, weight_type='pair_product', + output_ravg=True, verbose=True, + isa=isa) + file_ref = pjoin(dirname(abspath(__file__)), "../../theory/tests/", "Mr19_xi") check_against_reference(results_xi, file_ref, ravg_name='ravg', cf_name='xi', ref_cols=(4, 5, 1, 0)) - + @pytest.mark.parametrize('isa,nthreads', generate_isa_and_nthreads_combos()) def test_vpf(gals_Mr19, isa, nthreads): from Corrfunc.theory import vpf - + boxsize = 420. rmax = 10.0 nbin = 10 @@ -136,11 +137,11 @@ def test_vpf(gals_Mr19, isa, nthreads): num_pN = 6 seed = -1234 periodic = 1 - + x,y,z,w = gals_Mr19 results_vpf = vpf(rmax, nbin, nspheres, num_pN, - seed, x, y, z, verbose=True, periodic=periodic, - boxsize=boxsize) + seed, x, y, z, verbose=True, periodic=periodic, + boxsize=boxsize) #results_vpf = results_vpf.view(dtype=np.float64).reshape(nbin,-1) # flatten to same shape as results file_ref = pjoin(dirname(abspath(__file__)), "../../theory/tests/", "Mr19_vpf_periodic") diff --git a/Corrfunc/theory/DD.py b/Corrfunc/theory/DD.py index 057f5032..acc00868 100644 --- a/Corrfunc/theory/DD.py +++ b/Corrfunc/theory/DD.py @@ -18,7 +18,8 @@ def DD(autocorr, nthreads, binfile, X1, Y1, Z1, weights1=None, periodic=True, output_ravg=False, xbin_refine_factor=2, ybin_refine_factor=2, zbin_refine_factor=1, max_cells_per_dim=100, copy_particles=True, enable_min_sep_opt=True, - c_api_timer=False, isa='fastest', weight_type=None, bin_type='custom'): + c_api_timer=False, isa='fastest', weight_type=None, bin_type='custom', + pair_weights=None, sep_pair_weights=None, attrs_pair_weights=None): """ Calculate the 3-D pair-counts corresponding to the real-space correlation function, :math:`\\xi(r)`. @@ -36,16 +37,15 @@ def DD(autocorr, nthreads, binfile, X1, Y1, Z1, weights1=None, periodic=True, Parameters ---------- - - autocorr: boolean, required + autocorr : boolean, required Boolean flag for auto/cross-correlation. If autocorr is set to 1, then the second set of particle positions are not required. - nthreads: integer + nthreads : integer The number of OpenMP threads to use. Has no effect if OpenMP was not enabled during library compilation. - binfile: string or an list/array of floats + binfile : string or an list/array of floats For string input: filename specifying the ``r`` bins for ``DD``. The file should contain white-space separated values of (rmin, rmax) for each ``r`` wanted. The bins need to be @@ -57,21 +57,21 @@ def DD(autocorr, nthreads, binfile, X1, Y1, Z1, weights1=None, periodic=True, input specifying **14** (logarithmic) bins between 0.1 and 10.0. This array does not need to be sorted. - X1/Y1/Z1: array_like, real (float/double) + X1/Y1/Z1 : array_like, real (float/double) The array of X/Y/Z positions for the first set of points. Calculations are done in the precision of the supplied arrays. - weights1: array_like, real (float/double), optional + weights1 : array_like, real (float/double), optional A scalar, or an array of weights of shape (n_weights, n_positions) or (n_positions,). ``weight_type`` specifies how these weights are used; results are returned in the ``weightavg`` field. If only one of weights1 and weights2 is specified, the other will be set to uniform weights. - periodic: boolean + periodic : boolean Boolean flag to indicate periodic boundary conditions. - boxsize: double, required if ``periodic=True`` + boxsize : double, required if ``periodic=True`` The side-length of the cube in the cosmological simulation. Present to facilitate exact calculations for periodic wrapping. If boxsize is 0., then the wrapping is done based on @@ -80,17 +80,17 @@ def DD(autocorr, nthreads, binfile, X1, Y1, Z1, weights1=None, periodic=True, .. versionchanged:: 2.4.0 Required if ``periodic=True``. - X2/Y2/Z2: array-like, real (float/double) + X2/Y2/Z2 : array-like, real (float/double) Array of XYZ positions for the second set of points. *Must* be the same precision as the X1/Y1/Z1 arrays. Only required when ``autocorr==0``. - weights2: array-like, real (float/double), optional + weights2 : array-like, real (float/double), optional Same as weights1, but for the second set of positions - verbose: boolean (default false) + verbose : boolean (default false) Boolean flag to control output of informational messages - output_ravg: boolean (default false) + output_ravg : boolean (default false) Boolean flag to output the average ``r`` for each bin. Code will run slower if you set this flag. @@ -99,32 +99,32 @@ def DD(autocorr, nthreads, binfile, X1, Y1, Z1, weights1=None, periodic=True, If you need accurate ``ravg`` values, then pass in double precision arrays for the particle positions. - (xyz)bin_refine_factor: integer, default is (2,2,1); typically within [1-3] + (xyz)bin_refine_factor : integer, default is (2,2,1); typically within [1-3] Controls the refinement on the cell sizes. Can have up to a 20% impact on runtime. - max_cells_per_dim: integer, default is 100, typical values in [50-300] + max_cells_per_dim : integer, default is 100, typical values in [50-300] Controls the maximum number of cells per dimension. Total number of cells can be up to (max_cells_per_dim)^3. Only increase if ``rmax`` is too small relative to the boxsize (and increasing helps the runtime). - copy_particles: boolean (default True) + copy_particles : boolean (default True) Boolean flag to make a copy of the particle positions If set to False, the particles will be re-ordered in-place .. versionadded:: 2.3.0 - enable_min_sep_opt: boolean (default true) + enable_min_sep_opt : boolean (default true) Boolean flag to allow optimizations based on min. separation between pairs of cells. Here to allow for comparison studies. .. versionadded:: 2.3.0 - c_api_timer: boolean (default false) + c_api_timer : boolean (default false) Boolean flag to measure actual time spent in the C libraries. Here to allow for benchmarking and scaling studies. - isa: string (default ``fastest``) + isa : string (default ``fastest``) Controls the runtime dispatch for the instruction set to use. Options are: [``fastest``, ``avx512f``, ``avx``, ``sse42``, ``fallback``] @@ -137,8 +137,8 @@ def DD(autocorr, nthreads, binfile, X1, Y1, Z1, weights1=None, periodic=True, you *are* benchmarking, then the string supplied here gets translated into an ``enum`` for the instruction set defined in ``utils/defs.h``. - weight_type: string, optional. Default: None. - The type of weighting to apply. One of ["pair_product", None]. + weight_type : string, optional. Default: None. + The type of weighting to apply. One of ["pair_product", "inverse_bitwise", None]. bin_type : string, case-insensitive (default ``custom``) Set to ``lin`` for speed-up in case of linearly-spaced bins. @@ -156,10 +156,20 @@ def DD(autocorr, nthreads, binfile, X1, Y1, Z1, weights1=None, periodic=True, ``rtol = 1e-05`` *and* ``atol = 1e-08`` (relative and absolute tolerance) of ``np.linspace(binfile[0], binfile[-1], len(binfile))``. - Returns - -------- + pair_weights : array-like, optional. Default: None. + Array of pair weights. + + sep_pair_weights : array-like, optional. Default: None. + Array of separations corresponding to ``pair_weights``. - results: Numpy structured array + attrs_pair_weights : tuple. Default: None. + Attributes for pair weights; in case ``weight_type`` is "inverse_bitwise", + the tuple of (offset to be added to the bitwise counts, + default weight value if denominator is zero). + + Returns + ------- + results : Numpy structured array A numpy structured array containing [rmin, rmax, ravg, npairs, weightavg] for each radial bin specified in the ``binfile``. If ``output_ravg`` is not set, then ``ravg`` will be set to 0.0 for all @@ -167,13 +177,12 @@ def DD(autocorr, nthreads, binfile, X1, Y1, Z1, weights1=None, periodic=True, pairs in that bin and can be used to compute the actual :math:`\\xi(r)` by combining with (DR, RR) counts. - api_time: float, optional + api_time : float, optional Only returned if ``c_api_timer`` is set. ``api_time`` measures only the time spent within the C library and ignores all python overhead. Example - -------- - + ------- >>> from __future__ import print_function >>> import numpy as np >>> from os.path import dirname, abspath, join as pjoin @@ -222,7 +231,7 @@ def DD(autocorr, nthreads, binfile, X1, Y1, Z1, weights1=None, periodic=True, import numpy as np from Corrfunc.utils import translate_isa_string_to_enum, translate_bin_type_string_to_enum,\ - return_file_with_rbins, convert_to_native_endian,\ + get_edges, convert_to_native_endian,\ sys_pipes, process_weights from future.utils import bytes_to_native_str @@ -238,21 +247,32 @@ def DD(autocorr, nthreads, binfile, X1, Y1, Z1, weights1=None, periodic=True, weights1, weights2 = process_weights(weights1, weights2, X1, X2, weight_type, autocorr) # Ensure all input arrays are native endian - X1, Y1, Z1, weights1, X2, Y2, Z2, weights2 = [ + X1, Y1, Z1, X2, Y2, Z2 = [ convert_to_native_endian(arr, warn=True) for arr in - [X1, Y1, Z1, weights1, X2, Y2, Z2, weights2]] + [X1, Y1, Z1, X2, Y2, Z2]] + + if weights1 is not None: + weights1 = [convert_to_native_endian(arr, warn=True) for arr in weights1] + if weights2 is not None: + weights2 = [convert_to_native_endian(arr, warn=True) for arr in weights2] + + if pair_weights is not None: + if periodic: raise ValueError('Cannot use pair_weights if periodic=True') + pair_weights = convert_to_native_endian(pair_weights, warn=True) + sep_pair_weights = convert_to_native_endian(sep_pair_weights, warn=True) # Passing None parameters breaks the parsing code, so avoid this kwargs = {} for k in ['weights1', 'weights2', 'weight_type', - 'X2', 'Y2', 'Z2', 'boxsize']: + 'X2', 'Y2', 'Z2', 'boxsize', + 'pair_weights', 'sep_pair_weights', 'attrs_pair_weights']: v = locals()[k] if v is not None: kwargs[k] = v integer_isa = translate_isa_string_to_enum(isa) integer_bin_type = translate_bin_type_string_to_enum(bin_type) - rbinfile, delete_after_use = return_file_with_rbins(binfile) + rbinfile = get_edges(binfile) with sys_pipes(): extn_results = DD_extn(autocorr, nthreads, rbinfile, @@ -275,10 +295,6 @@ def DD(autocorr, nthreads, binfile, X1, Y1, Z1, weights1=None, periodic=True, else: extn_results, api_time = extn_results - if delete_after_use: - import os - os.remove(rbinfile) - results_dtype = np.dtype([(bytes_to_native_str(b'rmin'), np.float64), (bytes_to_native_str(b'rmax'), np.float64), (bytes_to_native_str(b'ravg'), np.float64), diff --git a/Corrfunc/theory/DDrppi.py b/Corrfunc/theory/DDrppi.py index 9d4cbdec..28d41019 100644 --- a/Corrfunc/theory/DDrppi.py +++ b/Corrfunc/theory/DDrppi.py @@ -13,7 +13,7 @@ __all__ = ('DDrppi', ) -def DDrppi(autocorr, nthreads, pimax, binfile, X1, Y1, Z1, weights1=None, +def DDrppi(autocorr, nthreads, binfile, pimax, npibins, X1, Y1, Z1, weights1=None, periodic=True, boxsize=None, X2=None, Y2=None, Z2=None, weights2=None, verbose=False, output_rpavg=False, @@ -21,10 +21,11 @@ def DDrppi(autocorr, nthreads, pimax, binfile, X1, Y1, Z1, weights1=None, zbin_refine_factor=1, max_cells_per_dim=100, copy_particles=True, enable_min_sep_opt=True, c_api_timer=False, isa='fastest', - weight_type=None, bin_type='custom'): + weight_type=None, bin_type='custom', + pair_weights=None, sep_pair_weights=None, attrs_pair_weights=None): """ Calculate the 3-D pair-counts corresponding to the real-space correlation - function, :math:`\\xi(r_p, \pi)` or :math:`\\wp(r_p)`. Pairs which are + function, :math:`\\xi(r_p, \\pi)` or :math:`\\wp(r_p)`. Pairs which are separated by less than the ``rp`` bins (specified in ``binfile``) in the X-Y plane, and less than ``pimax`` in the Z-dimension are counted. @@ -35,35 +36,24 @@ def DDrppi(autocorr, nthreads, pimax, binfile, X1, Y1, Z1, weights1=None, ``weight_type``. .. note:: that this module only returns pair counts and not the actual - correlation function :math:`\\xi(r_p, \pi)` or :math:`wp(r_p)`. See the + correlation function :math:`\\xi(r_p, \\pi)` or :math:`wp(r_p)`. See the utilities :py:mod:`Corrfunc.utils.convert_3d_counts_to_cf` and :py:mod:`Corrfunc.utils.convert_rp_pi_counts_to_wp` for computing - :math:`\\xi(r_p, \pi)` and :math:`wp(r_p)` respectively from the + :math:`\\xi(r_p, \\pi)` and :math:`wp(r_p)` respectively from the pair counts. Parameters - ----------- - - autocorr: boolean, required + ---------- + autocorr : boolean, required Boolean flag for auto/cross-correlation. If autocorr is set to 1, then the second set of particle positions are not required. - nthreads: integer + nthreads : integer The number of OpenMP threads to use. Has no effect if OpenMP was not enabled during library compilation. - pimax: double - A double-precision value for the maximum separation along - the Z-dimension. - - Distances along the :math:``\\pi`` direction are binned with unit - depth. For instance, if ``pimax=40``, then 40 bins will be created - along the ``pi`` direction. - - Note: Only pairs with ``0 <= dz < pimax`` are counted (no equality). - - binfile: string or an list/array of floats + binfile : string or an list/array of floats For string input: filename specifying the ``rp`` bins for ``DDrppi``. The file should contain white-space separated values of (rpmin, rpmax) for each ``rp`` wanted. The bins need to be @@ -75,21 +65,35 @@ def DDrppi(autocorr, nthreads, pimax, binfile, X1, Y1, Z1, weights1=None, input specifying **14** (logarithmic) bins between 0.1 and 10.0. This array does not need to be sorted. - X1/Y1/Z1: array-like, real (float/double) + pimax : double + A double-precision value for the maximum separation along + the Z-dimension. + + Distances along the :math:``\\pi`` direction are binned with unit + depth. For instance, if ``pimax=40``, then 40 bins will be created + along the ``pi`` direction. + + Note: Only pairs with ``0 <= dz < pimax`` are counted (no equality). + + npibins : int + The number of linear ``pi`` bins, with the bins ranging from + from (0, :math:`\\pi_{max}`) + + X1/Y1/Z1 : array-like, real (float/double) The array of X/Y/Z positions for the first set of points. Calculations are done in the precision of the supplied arrays. - weights1: array_like, real (float/double), optional + weights1 : array_like, real (float/double), optional A scalar, or an array of weights of shape (n_weights, n_positions) or (n_positions,). ``weight_type`` specifies how these weights are used; results are returned in the ``weightavg`` field. If only one of weights1 and weights2 is specified, the other will be set to uniform weights. - periodic: boolean + periodic : boolean Boolean flag to indicate periodic boundary conditions. - boxsize: double, required if ``periodic=True`` + boxsize : double, required if ``periodic=True`` The side-length of the cube in the cosmological simulation. Present to facilitate exact calculations for periodic wrapping. If boxsize is 0., then the wrapping is done based on @@ -102,13 +106,13 @@ def DDrppi(autocorr, nthreads, pimax, binfile, X1, Y1, Z1, weights1=None, Array of XYZ positions for the second set of points. *Must* be the same precision as the X1/Y1/Z1 arrays. Only required when ``autocorr==0``. - weights2: array-like, real (float/double), optional + weights2 : array-like, real (float/double), optional Same as weights1, but for the second set of positions - verbose: boolean (default false) + verbose : boolean (default false) Boolean flag to control output of informational messages - output_rpavg: boolean (default false) + output_rpavg : boolean (default false) Boolean flag to output the average ``rp`` for each bin. Code will run slower if you set this flag. @@ -117,32 +121,32 @@ def DDrppi(autocorr, nthreads, pimax, binfile, X1, Y1, Z1, weights1=None, you need accurate ``rpavg`` values, then pass in double precision arrays for the particle positions. - (xyz)bin_refine_factor: integer, default is (2,2,1); typically within [1-3] + (xyz)bin_refine_factor : integer, default is (2,2,1); typically within [1-3] Controls the refinement on the cell sizes. Can have up to a 20% impact on runtime. - max_cells_per_dim: integer, default is 100, typical values in [50-300] + max_cells_per_dim : integer, default is 100, typical values in [50-300] Controls the maximum number of cells per dimension. Total number of cells can be up to (max_cells_per_dim)^3. Only increase if ``rpmax`` is too small relative to the boxsize (and increasing helps the runtime). - copy_particles: boolean (default True) + copy_particles : boolean (default True) Boolean flag to make a copy of the particle positions If set to False, the particles will be re-ordered in-place .. versionadded:: 2.3.0 - enable_min_sep_opt: boolean (default true) + enable_min_sep_opt : boolean (default true) Boolean flag to allow optimizations based on min. separation between pairs of cells. Here to allow for comparison studies. .. versionadded:: 2.3.0 - c_api_timer: boolean (default false) + c_api_timer : boolean (default false) Boolean flag to measure actual time spent in the C libraries. Here to allow for benchmarking and scaling studies. - isa: string (default ``fastest``) + isa : string (default ``fastest``) Controls the runtime dispatch for the instruction set to use. Options are: [``fastest``, ``avx512f``, ``avx``, ``sse42``, ``fallback``] @@ -155,7 +159,7 @@ def DDrppi(autocorr, nthreads, pimax, binfile, X1, Y1, Z1, weights1=None, you *are* benchmarking, then the string supplied here gets translated into an ``enum`` for the instruction set defined in ``utils/defs.h``. - weight_type: string, optional. Default: None. + weight_type : string, optional. Default: None. The type of weighting to apply. One of ["pair_product", None]. bin_type : string, case-insensitive (default ``custom``) @@ -174,24 +178,33 @@ def DDrppi(autocorr, nthreads, pimax, binfile, X1, Y1, Z1, weights1=None, ``rtol = 1e-05`` *and* ``atol = 1e-08`` (relative and absolute tolerance) of ``np.linspace(binfile[0], binfile[-1], len(binfile))``. - Returns - -------- + pair_weights : array-like, optional. Default: None. + Array of pair weights. - results: Numpy structured array + sep_pair_weights : array-like, optional. Default: None. + Array of separations corresponding to ``pair_weights``. + + attrs_pair_weights : tuple. Default: None. + Attributes for pair weights; in case ``weight_type`` is "inverse_bitwise", + the tuple of (offset to be added to the bitwise counts, + default weight value if denominator is zero). + + Returns + ------- + results : Numpy structured array A numpy structured array containing [rpmin, rpmax, rpavg, pimax, npairs, weightavg] for each radial bin specified in the ``binfile``. If ``output_rpavg`` is not set, then ``rpavg`` will be set to 0.0 for all bins; similarly for ``weightavg``. ``npairs`` contains the number - of pairs in that bin and can be used to compute :math:`\\xi(r_p, \pi)` + of pairs in that bin and can be used to compute :math:`\\xi(r_p, \\pi)` by combining with (DR, RR) counts. - api_time: float, optional + api_time : float, optional Only returned if ``c_api_timer`` is set. ``api_time`` measures only the time spent within the C library and ignores all python overhead. Example - -------- - + ------- >>> from __future__ import print_function >>> import numpy as np >>> from os.path import dirname, abspath, join as pjoin @@ -269,7 +282,7 @@ def DDrppi(autocorr, nthreads, pimax, binfile, X1, Y1, Z1, weights1=None, import numpy as np from Corrfunc.utils import translate_isa_string_to_enum, translate_bin_type_string_to_enum,\ - return_file_with_rbins, convert_to_native_endian,\ + get_edges, convert_to_native_endian,\ sys_pipes, process_weights from future.utils import bytes_to_native_str @@ -290,25 +303,36 @@ def DDrppi(autocorr, nthreads, pimax, binfile, X1, Y1, Z1, weights1=None, weights1, weights2 = process_weights(weights1, weights2, X1, X2, weight_type, autocorr) # Ensure all input arrays are native endian - X1, Y1, Z1, weights1, X2, Y2, Z2, weights2 = [ + X1, Y1, Z1, X2, Y2, Z2 = [ convert_to_native_endian(arr, warn=True) for arr in - [X1, Y1, Z1, weights1, X2, Y2, Z2, weights2]] + [X1, Y1, Z1, X2, Y2, Z2]] + + if weights1 is not None: + weights1 = [convert_to_native_endian(arr, warn=True) for arr in weights1] + if weights2 is not None: + weights2 = [convert_to_native_endian(arr, warn=True) for arr in weights2] + + if pair_weights is not None: + if periodic: raise ValueError('Cannot use pair_weights if periodic=True') + pair_weights = convert_to_native_endian(pair_weights, warn=True) + sep_pair_weights = convert_to_native_endian(sep_pair_weights, warn=True) # Passing None parameters breaks the parsing code, so avoid this kwargs = {} for k in ['weights1', 'weights2', 'weight_type', - 'X2', 'Y2', 'Z2', 'boxsize']: + 'X2', 'Y2', 'Z2', 'boxsize', + 'pair_weights', 'sep_pair_weights', 'attrs_pair_weights']: v = locals()[k] if v is not None: kwargs[k] = v integer_isa = translate_isa_string_to_enum(isa) integer_bin_type = translate_bin_type_string_to_enum(bin_type) - rbinfile, delete_after_use = return_file_with_rbins(binfile) + rbinfile = get_edges(binfile) with sys_pipes(): extn_results = DDrppi_extn(autocorr, nthreads, - pimax, rbinfile, + rbinfile, pimax, npibins, X1, Y1, Z1, periodic=periodic, verbose=verbose, @@ -328,10 +352,6 @@ def DDrppi(autocorr, nthreads, pimax, binfile, X1, Y1, Z1, weights1=None, else: extn_results, api_time = extn_results - if delete_after_use: - import os - os.remove(rbinfile) - results_dtype = np.dtype([(bytes_to_native_str(b'rmin'), np.float64), (bytes_to_native_str(b'rmax'), np.float64), (bytes_to_native_str(b'rpavg'), np.float64), diff --git a/Corrfunc/theory/DDsmu.py b/Corrfunc/theory/DDsmu.py index 095e02c9..a53fc3ec 100644 --- a/Corrfunc/theory/DDsmu.py +++ b/Corrfunc/theory/DDsmu.py @@ -13,7 +13,7 @@ __all__ = ('DDsmu', ) -def DDsmu(autocorr, nthreads, binfile, mu_max, nmu_bins, +def DDsmu(autocorr, nthreads, binfile, mumax, nmubins, X1, Y1, Z1, weights1=None, periodic=True, boxsize=None, X2=None, Y2=None, Z2=None, weights2=None, verbose=False, output_savg=False, @@ -22,12 +22,13 @@ def DDsmu(autocorr, nthreads, binfile, mu_max, nmu_bins, zbin_refine_factor=1, max_cells_per_dim=100, copy_particles=True, enable_min_sep_opt=True, c_api_timer=False, isa='fastest', - weight_type=None, bin_type='custom'): + weight_type=None, bin_type='custom', + pair_weights=None, sep_pair_weights=None, attrs_pair_weights=None): """ Calculate the 2-D pair-counts corresponding to the redshift-space - correlation function, :math:`\\xi(s, \mu)` Pairs which are separated + correlation function, :math:`\\xi(s, \\mu)` Pairs which are separated by less than the ``s`` bins (specified in ``binfile``) in 3-D, and - less than ``s*mu_max`` in the Z-dimension are counted. + less than ``s*mumax`` in the Z-dimension are counted. If ``weights`` are provided, the mean pair weight is stored in the ``"weightavg"`` field of the results array. The raw pair counts in the @@ -35,24 +36,23 @@ def DDsmu(autocorr, nthreads, binfile, mu_max, nmu_bins, ``weight_type``. .. note:: This module only returns pair counts and not the actual - correlation function :math:`\\xi(s, \mu)`. See the + correlation function :math:`\\xi(s, \\mu)`. See the utilities :py:mod:`Corrfunc.utils.convert_3d_counts_to_cf` - for computing :math:`\\xi(s, \mu)` from the pair counts. + for computing :math:`\\xi(s, \\mu)` from the pair counts. .. versionadded:: 2.1.0 Parameters ---------- - - autocorr: boolean, required + autocorr : boolean, required Boolean flag for auto/cross-correlation. If autocorr is set to 1, then the second set of particle positions are not required. - nthreads: integer + nthreads : integer The number of OpenMP threads to use. Has no effect if OpenMP was not enabled during library compilation. - binfile: string or an list/array of floats + binfile : string or an list/array of floats For string input: filename specifying the ``s`` bins for ``DDsmu_mocks``. The file should contain white-space separated values of (smin, smax) specifying each ``s`` bin wanted. The bins @@ -65,15 +65,15 @@ def DDsmu(autocorr, nthreads, binfile, mu_max, nmu_bins, input specifying **14** (logarithmic) bins between 0.1 and 10.0. This array does not need to be sorted. - mu_max: double. Must be in range (0.0, 1.0] + mumax : double. Must be in range (0.0, 1.0] A double-precision value for the maximum cosine of the angular separation from the line of sight (LOS). Here, LOS is taken to be along the Z direction. - Note: Only pairs with :math:`0 <= \cos(\\theta_{LOS}) < \mu_{max}` + Note: Only pairs with :math:`0 <= \\cos(\\theta_{LOS}) < \\mu_{max}` are counted (no equality). - nmu_bins: int + nmubins : int The number of linear ``mu`` bins, with the bins ranging from from (0, :math:`\mu_{max}`) @@ -81,7 +81,7 @@ def DDsmu(autocorr, nthreads, binfile, mu_max, nmu_bins, The array of X/Y/Z positions for the first set of points. Calculations are done in the precision of the supplied arrays. - weights1: array_like, real (float/double), optional + weights1 : array_like, real (float/double), optional A scalar, or an array of weights of shape (n_weights, n_positions) or (n_positions,). ``weight_type`` specifies how these weights are used; results are returned in the ``weightavg`` field. If only one of @@ -104,7 +104,7 @@ def DDsmu(autocorr, nthreads, binfile, mu_max, nmu_bins, Array of XYZ positions for the second set of points. *Must* be the same precision as the X1/Y1/Z1 arrays. Only required when ``autocorr==0``. - weights2: array-like, real (float/double), optional + weights2 : array-like, real (float/double), optional Same as weights1, but for the second set of positions verbose : boolean (default false) @@ -118,28 +118,28 @@ def DDsmu(autocorr, nthreads, binfile, mu_max, nmu_bins, values, then pass in double precision arrays for the particle positions. - fast_divide_and_NR_steps: integer (default 0) + fast_divide_and_NR_steps : integer (default 0) Replaces the division in ``AVX`` implementation with an approximate reciprocal, followed by ``fast_divide_and_NR_steps`` of Newton-Raphson. Can improve runtime by ~15-20% on older computers. Value of 0 uses the standard division operation. - (xyz)bin_refine_factor: integer (default (2,2,1) typical values in [1-3]) + (xyz)bin_refine_factor : integer (default (2,2,1) typical values in [1-3]) Controls the refinement on the cell sizes. Can have up to a 20% impact on runtime. - max_cells_per_dim: integer (default 100, typical values in [50-300]) + max_cells_per_dim : integer (default 100, typical values in [50-300]) Controls the maximum number of cells per dimension. Total number of cells can be up to (max_cells_per_dim)^3. Only increase if ``rmax`` is too small relative to the boxsize (and increasing helps the runtime). - copy_particles: boolean (default True) + copy_particles : boolean (default True) Boolean flag to make a copy of the particle positions If set to False, the particles will be re-ordered in-place .. versionadded:: 2.3.0 - enable_min_sep_opt: boolean (default true) + enable_min_sep_opt : boolean (default true) Boolean flag to allow optimizations based on min. separation between pairs of cells. Here to allow for comparison studies. @@ -182,17 +182,28 @@ def DDsmu(autocorr, nthreads, binfile, mu_max, nmu_bins, ``rtol = 1e-05`` *and* ``atol = 1e-08`` (relative and absolute tolerance) of ``np.linspace(binfile[0], binfile[-1], len(binfile))``. + pair_weights : array-like, optional. Default: None. + Array of pair weights. + + sep_pair_weights : array-like, optional. Default: None. + Array of separations corresponding to ``pair_weights``. + + attrs_pair_weights : tuple. Default: None. + Attributes for pair weights; in case ``weight_type`` is "inverse_bitwise", + the tuple of (offset to be added to the bitwise counts, + default weight value if denominator is zero). + Returns - -------- + ------- results : A python list - A python list containing ``nmu_bins`` of [smin, smax, savg, mu_max, + A python list containing ``nmubins`` of [smin, smax, savg, mumax, npairs, weightavg] for each spatial bin specified in the ``binfile``. - There will be a total of ``nmu_bins`` ranging from [0, ``mu_max``) + There will be a total of ``nmubins`` ranging from [0, ``mumax``) *per* spatial bin. If ``output_savg`` is not set, then ``savg`` will be set to 0.0 for all bins; similarly for ``weight_avg``. ``npairs`` contains the number of pairs in that bin. - api_time: float, optional + api_time : float, optional Only returned if ``c_api_timer`` is set. ``api_time`` measures only the time spent within the C library and ignores all python overhead. @@ -209,20 +220,20 @@ def DDsmu(autocorr, nthreads, binfile, mu_max, nmu_bins, >>> boxsize = 420.0 >>> nthreads = 4 >>> autocorr = 1 - >>> mu_max = 1.0 + >>> mumax = 1.0 >>> seed = 42 - >>> nmu_bins = 10 + >>> nmubins = 10 >>> np.random.seed(seed) >>> X = np.random.uniform(0, boxsize, N) >>> Y = np.random.uniform(0, boxsize, N) >>> Z = np.random.uniform(0, boxsize, N) >>> weights = np.ones_like(X) - >>> results = DDsmu(autocorr, nthreads, binfile, mu_max, nmu_bins, + >>> results = DDsmu(autocorr, nthreads, binfile, mumax, nmubins, ... X, Y, Z, weights1=weights, weight_type='pair_product', ... output_savg=True, boxsize=boxsize, periodic=True) >>> for r in results[100:]: print("{0:10.6f} {1:10.6f} {2:10.6f} {3:10.1f}" ... " {4:10d} {5:10.6f}".format(r['smin'], r['smax'], - ... r['savg'], r['mu_max'], r['npairs'], r['weightavg'])) + ... r['savg'], r['mumax'], r['npairs'], r['weightavg'])) ... # doctest: +NORMALIZE_WHITESPACE 5.788530 8.249250 7.149762 0.1 230 1.000000 5.788530 8.249250 7.158884 0.2 236 1.000000 @@ -275,22 +286,22 @@ def DDsmu(autocorr, nthreads, binfile, mu_max, nmu_bins, import numpy as np from Corrfunc.utils import translate_isa_string_to_enum, translate_bin_type_string_to_enum,\ - return_file_with_rbins, convert_to_native_endian,\ + get_edges, convert_to_native_endian,\ sys_pipes, process_weights from future.utils import bytes_to_native_str - # Check if mu_max is scalar - if not np.isscalar(mu_max): - msg = "The parameter `mu_max` = {0}, has size = {1}. "\ + # Check if mumax is scalar + if not np.isscalar(mumax): + msg = "The parameter `mumax` = {0}, has size = {1}. "\ "The code is expecting a scalar quantity (and not "\ - "not a list, array)".format(mu_max, np.size(mu_max)) + "not a list, array)".format(mumax, np.size(mumax)) raise TypeError(msg) - # Check that mu_max is within (0.0, 1.0] - if mu_max <= 0.0 or mu_max > 1.0: - msg = "The parameter `mu_max` = {0}, is the max. of cosine of an "\ - "angle and should be within (0.0, 1.0]".format(mu_max) + # Check that mumax is within (0.0, 1.0] + if mumax <= 0.0 or mumax > 1.0: + msg = "The parameter `mumax` = {0}, is the max. of cosine of an "\ + "angle and should be within (0.0, 1.0]".format(mumax) raise ValueError(msg) if not autocorr: @@ -305,25 +316,36 @@ def DDsmu(autocorr, nthreads, binfile, mu_max, nmu_bins, weights1, weights2 = process_weights(weights1, weights2, X1, X2, weight_type, autocorr) # Ensure all input arrays are native endian - X1, Y1, Z1, weights1, X2, Y2, Z2, weights2 = [ + X1, Y1, Z1, X2, Y2, Z2 = [ convert_to_native_endian(arr, warn=True) for arr in - [X1, Y1, Z1, weights1, X2, Y2, Z2, weights2]] + [X1, Y1, Z1, X2, Y2, Z2]] + + if weights1 is not None: + weights1 = [convert_to_native_endian(arr, warn=True) for arr in weights1] + if weights2 is not None: + weights2 = [convert_to_native_endian(arr, warn=True) for arr in weights2] + + if pair_weights is not None: + if periodic: raise ValueError('Cannot use pair_weights if periodic=True') + pair_weights = convert_to_native_endian(pair_weights, warn=True) + sep_pair_weights = convert_to_native_endian(sep_pair_weights, warn=True) # Passing None parameters breaks the parsing code, so avoid this kwargs = {} for k in ['weights1', 'weights2', 'weight_type', - 'X2', 'Y2', 'Z2', 'boxsize']: + 'X2', 'Y2', 'Z2', 'boxsize', + 'pair_weights', 'sep_pair_weights', 'attrs_pair_weights']: v = locals()[k] if v is not None: kwargs[k] = v integer_isa = translate_isa_string_to_enum(isa) integer_bin_type = translate_bin_type_string_to_enum(bin_type) - sbinfile, delete_after_use = return_file_with_rbins(binfile) + sbinfile = get_edges(binfile) with sys_pipes(): extn_results = DDsmu_extn(autocorr, nthreads, sbinfile, - mu_max, nmu_bins, + mumax, nmubins, X1, Y1, Z1, periodic=periodic, verbose=verbose, @@ -344,14 +366,10 @@ def DDsmu(autocorr, nthreads, binfile, mu_max, nmu_bins, else: extn_results, api_time = extn_results - if delete_after_use: - import os - os.remove(sbinfile) - results_dtype = np.dtype([(bytes_to_native_str(b'smin'), np.float64), (bytes_to_native_str(b'smax'), np.float64), (bytes_to_native_str(b'savg'), np.float64), - (bytes_to_native_str(b'mu_max'), np.float64), + (bytes_to_native_str(b'mumax'), np.float64), (bytes_to_native_str(b'npairs'), np.uint64), (bytes_to_native_str(b'weightavg'), np.float64), ]) diff --git a/Corrfunc/theory/vpf.py b/Corrfunc/theory/vpf.py index eb47a976..88d46d94 100644 --- a/Corrfunc/theory/vpf.py +++ b/Corrfunc/theory/vpf.py @@ -27,8 +27,7 @@ def vpf(rmax, nbins, nspheres, numpN, seed, sphere of radius up to ``rmax`` containing [0, numpN-1] galaxies. Parameters - ----------- - + ---------- rmax: double Maximum radius of the sphere to place on the particles @@ -127,8 +126,7 @@ def vpf(rmax, nbins, nspheres, numpN, seed, into an ``enum`` for the instruction set defined in ``utils/defs.h``. Returns - -------- - + ------- results: Numpy structured array A numpy structured array containing [rmax, pN[numpN]] with ``nbins`` @@ -144,8 +142,7 @@ def vpf(rmax, nbins, nspheres, numpN, seed, the C library and ignores all python overhead. Example - -------- - + ------- >>> from __future__ import print_function >>> import numpy as np >>> from Corrfunc.theory.vpf import vpf diff --git a/Corrfunc/theory/wp.py b/Corrfunc/theory/wp.py index 9282fba8..fe810c4d 100644 --- a/Corrfunc/theory/wp.py +++ b/Corrfunc/theory/wp.py @@ -14,7 +14,7 @@ __all__ = ('wp', 'find_fastest_wp_bin_refs', ) -def find_fastest_wp_bin_refs(boxsize, pimax, nthreads, binfile, X, Y, Z, +def find_fastest_wp_bin_refs(boxsize, nthreads, binfile, pimax, X, Y, Z, verbose=False, output_rpavg=False, max_cells_per_dim=100, isa='fastest', @@ -26,22 +26,15 @@ def find_fastest_wp_bin_refs(boxsize, pimax, nthreads, binfile, X, Y, Z, fastest computation for the given dataset and ``rp`` limits. Parameters - ----------- - - boxsize: double + ---------- + boxsize : double A double-precision value for the boxsize of the simulation in same units as the particle positions and the ``rp`` bins. - pimax: double - A double-precision value for the maximum separation along - the Z-dimension. - - Note: Only pairs with ``0 <= dz < pimax`` are counted (no equality). - - nthreads: integer + nthreads : integer Number of threads to use. - binfile: string or an list/array of floats + binfile : string or an list/array of floats For string input: filename specifying the ``rp`` bins for ``wp``. The file should contain white-space separated values of (rpmin, rpmax) for each ``rp`` wanted. The bins need to be @@ -53,7 +46,13 @@ def find_fastest_wp_bin_refs(boxsize, pimax, nthreads, binfile, X, Y, Z, input specifying **14** (logarithmic) bins between 0.1 and 10.0. This array does not need to be sorted. - X/Y/Z: arraytype, real (float/double) + pimax : double + A double-precision value for the maximum separation along + the Z-dimension. + + Note: Only pairs with ``0 <= dz < pimax`` are counted (no equality). + + X/Y/Z : arraytype, real (float/double) Particle positions in the 3 axes. Must be within [0, boxsize] and specified in the same units as ``rp_bins`` and boxsize. All 3 arrays must be of the same floating-point type. @@ -63,10 +62,10 @@ def find_fastest_wp_bin_refs(boxsize, pimax, nthreads, binfile, X, Y, Z, precision arrays (C float type); or in double-precision if XYZ are double precision arrays (C double type). - verbose: boolean (default false) + verbose : boolean (default false) Boolean flag to control output of informational messages - output_rpavg: boolean (default false) + output_rpavg : boolean (default false) Boolean flag to output the average ``rp`` for each bin. Code will run slower if you set this flag. @@ -75,12 +74,12 @@ def find_fastest_wp_bin_refs(boxsize, pimax, nthreads, binfile, X, Y, Z, you need accurate ``rpavg`` values, then pass in double precision arrays for the particle positions. - max_cells_per_dim: integer, default is 100, typical values in [50-300] + max_cells_per_dim : integer, default is 100, typical values in [50-300] Controls the maximum number of cells per dimension. Total number of cells can be up to (max_cells_per_dim)^3. Only increase if ``rpmax`` is too small relative to the boxsize (and increasing helps the runtime). - isa: string (default ``fastest``) + isa : string (default ``fastest``) Controls the runtime dispatch for the instruction set to use. Options are: [``fastest``, ``avx512f``, ``avx``, ``sse42``, ``fallback``] @@ -93,29 +92,28 @@ def find_fastest_wp_bin_refs(boxsize, pimax, nthreads, binfile, X, Y, Z, you *are* benchmarking, then the string supplied here gets translated into an ``enum`` for the instruction set defined in ``utils/defs.h``. - maxbinref: integer (default 3) + maxbinref : integer (default 3) The maximum ``bin refine factor`` to use along each dimension. From experience, values larger than 3 do not improve ``wp`` runtime. Runtime of module scales as ``maxbinref^3``, so change the value of ``maxbinref`` with caution. - nrepeats: integer (default 3) + nrepeats : integer (default 3) Number of times to repeat the timing for an individual run. Accounts for the dispersion in runtimes on computers with multiple user processes. - return_runtimes: boolean (default ``false``) + return_runtimes : boolean (default ``false``) If set, also returns the array of runtimes. Returns - -------- + ------- (nx, ny, nz) : tuple of integers The combination of ``bin refine factors`` along each dimension that produces the fastest code. runtimes : numpy structured array - Only returned if ``return_runtimes`` is set, then the return value is a tuple containing ((nx, ny, nz), runtimes). ``runtimes`` is a ``numpy`` structured array containing the fields, [``nx``, ``ny``, ``nz``, @@ -125,8 +123,7 @@ def find_fastest_wp_bin_refs(boxsize, pimax, nthreads, binfile, X, Y, Z, run times across those ``nrepeats`` invocations. Example - -------- - + ------- >>> from __future__ import print_function >>> import numpy as np >>> from os.path import dirname, abspath, join as pjoin @@ -140,7 +137,7 @@ def find_fastest_wp_bin_refs(boxsize, pimax, nthreads, binfile, X, Y, Z, >>> pimax = 40.0 >>> nthreads = 4 >>> verbose = 1 - >>> best, _ = find_fastest_wp_bin_refs(boxsize, pimax, nthreads, binfile, + >>> best, _ = find_fastest_wp_bin_refs(boxsize, nthreads, binfile, pimax, ... X, Y, Z, maxbinref=2, nrepeats=3, ... verbose=verbose, ... return_runtimes=True) @@ -160,7 +157,7 @@ def find_fastest_wp_bin_refs(boxsize, pimax, nthreads, binfile, X, Y, Z, raise ImportError(msg) from Corrfunc.utils import translate_isa_string_to_enum,\ - return_file_with_rbins + get_edges import itertools import numpy as np @@ -168,7 +165,7 @@ def find_fastest_wp_bin_refs(boxsize, pimax, nthreads, binfile, X, Y, Z, import time integer_isa = translate_isa_string_to_enum(isa) - rbinfile, delete_after_use = return_file_with_rbins(binfile) + rbinfile = get_edges(binfile) bin_refs = np.arange(1, maxbinref + 1) bin_ref_perms = itertools.product(bin_refs, bin_refs, bin_refs) dtype = np.dtype([(bytes_to_native_str(b'nx'), np.int), @@ -221,10 +218,6 @@ def find_fastest_wp_bin_refs(boxsize, pimax, nthreads, binfile, X, Y, Z, all_runtimes[ii]['avg_time'] = avg_runtime all_runtimes[ii]['sigma_time'] = runtime_disp - if delete_after_use: - import os - os.remove(rbinfile) - all_runtimes.sort(order=('avg_time', 'sigma_time')) results = (all_runtimes[0]['nx'], all_runtimes[0]['ny'], @@ -280,12 +273,12 @@ def _convert_cell_timer(cell_time_lst): return cell_times -def wp(boxsize, pimax, nthreads, binfile, X, Y, Z, +def wp(boxsize, nthreads, binfile, pimax, X, Y, Z, weights=None, weight_type=None, verbose=False, output_rpavg=False, xbin_refine_factor=2, ybin_refine_factor=2, zbin_refine_factor=1, max_cells_per_dim=100, copy_particles=True, enable_min_sep_opt=True, - c_api_timer=False, c_cell_timer=False, isa='fastest', bin_type='custom'): + c_api_timer=False, c_cell_timer=False, isa='fastest', bin_type='custom', attrs_pair_weights=None): """ Function to compute the projected correlation function in a periodic cosmological box. Pairs which are separated by less @@ -306,20 +299,14 @@ def wp(boxsize, pimax, nthreads, binfile, X, Y, Z, Parameters ----------- - boxsize: double + boxsize : double A double-precision value for the boxsize of the simulation in same units as the particle positions and the ``rp`` bins. - pimax: double - A double-precision value for the maximum separation along - the Z-dimension. - - Note: Only pairs with ``0 <= dz < pimax`` are counted (no equality). - - nthreads: integer + nthreads : integer Number of threads to use. - binfile: string or an list/array of floats + binfile : string or an list/array of floats For string input: filename specifying the ``rp`` bins for ``wp``. The file should contain white-space separated values of (rpmin, rpmax) for each ``rp`` wanted. The bins need to be @@ -331,7 +318,13 @@ def wp(boxsize, pimax, nthreads, binfile, X, Y, Z, input specifying **14** (logarithmic) bins between 0.1 and 10.0. This array does not need to be sorted. - X/Y/Z: arraytype, real (float/double) + pimax : double + A double-precision value for the maximum separation along + the Z-dimension. + + Note: Only pairs with ``0 <= dz < pimax`` are counted (no equality). + + X/Y/Z : arraytype, real (float/double) Particle positions in the 3 axes. Must be within [0, boxsize] and specified in the same units as ``rp_bins`` and boxsize. All 3 arrays must be of the same floating-point type. @@ -341,15 +334,15 @@ def wp(boxsize, pimax, nthreads, binfile, X, Y, Z, precision arrays (C float type); or in double-precision if XYZ are double precision arrays (C double type). - weights: array_like, real (float/double), optional + weights : array_like, real (float/double), optional A scalar, or an array of weights of shape (n_weights, n_positions) or (n_positions,). ``weight_type`` specifies how these weights are used; results are returned in the ``weightavg`` field. - verbose: boolean (default false) + verbose : boolean (default false) Boolean flag to control output of informational messages - output_rpavg: boolean (default false) + output_rpavg : boolean (default false) Boolean flag to output the average ``rp`` for each bin. Code will run slower if you set this flag. @@ -358,28 +351,28 @@ def wp(boxsize, pimax, nthreads, binfile, X, Y, Z, you need accurate ``rpavg`` values, then pass in double precision arrays for the particle positions. - (xyz)bin_refine_factor: integer, default is (2,2,1); typically within [1-3] + (xyz)bin_refine_factor : integer, default is (2,2,1); typically within [1-3] Controls the refinement on the cell sizes. Can have up to a 20% impact on runtime. - max_cells_per_dim: integer, default is 100, typical values in [50-300] + max_cells_per_dim : integer, default is 100, typical values in [50-300] Controls the maximum number of cells per dimension. Total number of cells can be up to (max_cells_per_dim)^3. Only increase if ``rpmax`` is too small relative to the boxsize (and increasing helps the runtime). - copy_particles: boolean (default True) + copy_particles : boolean (default True) Boolean flag to make a copy of the particle positions If set to False, the particles will be re-ordered in-place .. versionadded:: 2.3.0 - enable_min_sep_opt: boolean (default true) + enable_min_sep_opt : boolean (default true) Boolean flag to allow optimizations based on min. separation between pairs of cells. Here to allow for comparison studies. .. versionadded:: 2.3.0 - c_api_timer: boolean (default false) + c_api_timer : boolean (default false) Boolean flag to measure actual time spent in the C libraries. Here to allow for benchmarking and scaling studies. @@ -391,7 +384,7 @@ def wp(boxsize, pimax, nthreads, binfile, X, Y, Z, cell pair. This timer can be used to study the instruction set efficiency, and load-balancing of the code. - isa: string (default ``fastest``) + isa : string (default ``fastest``) Controls the runtime dispatch for the instruction set to use. Options are: [``fastest``, ``avx512f``, ``avx``, ``sse42``, ``fallback``] @@ -404,7 +397,7 @@ def wp(boxsize, pimax, nthreads, binfile, X, Y, Z, you *are* benchmarking, then the string supplied here gets translated into an ``enum`` for the instruction set defined in ``utils/defs.h``. - weight_type: string, optional. Default: None. + weight_type : string, optional. Default: None. The type of weighting to apply. One of ["pair_product", None]. bin_type : string, case-insensitive (default ``custom``) @@ -423,6 +416,11 @@ def wp(boxsize, pimax, nthreads, binfile, X, Y, Z, ``rtol = 1e-05`` *and* ``atol = 1e-08`` (relative and absolute tolerance) of ``np.linspace(binfile[0], binfile[-1], len(binfile))``. + attrs_pair_weights : tuple. Default: None. + Attributes for pair weights; in case ``weight_type`` is "inverse_bitwise", + the tuple of (offset to be added to the bitwise counts, + default weight value if denominator is zero). + Returns -------- @@ -498,28 +496,31 @@ def wp(boxsize, pimax, nthreads, binfile, X, Y, Z, import numpy as np from future.utils import bytes_to_native_str from Corrfunc.utils import translate_isa_string_to_enum, translate_bin_type_string_to_enum,\ - return_file_with_rbins, convert_to_native_endian,\ + get_edges, convert_to_native_endian,\ sys_pipes, process_weights weights, _ = process_weights(weights, None, X, None, weight_type, autocorr=True) # Ensure all input arrays are native endian - X, Y, Z, weights = [convert_to_native_endian(arr, warn=True) - for arr in [X, Y, Z, weights]] + X, Y, Z = [convert_to_native_endian(arr, warn=True) + for arr in [X, Y, Z]] + + if weights is not None: + weights = [convert_to_native_endian(arr, warn=True) for arr in weights] # Passing None parameters breaks the parsing code, so avoid this kwargs = {} - for k in ['weights', 'weight_type']: + for k in ['weights', 'weight_type', 'attrs_pair_weights']: v = locals()[k] if v is not None: kwargs[k] = v integer_isa = translate_isa_string_to_enum(isa) integer_bin_type = translate_bin_type_string_to_enum(bin_type) - rbinfile, delete_after_use = return_file_with_rbins(binfile) + rbinfile = get_edges(binfile) with sys_pipes(): - extn_results = wp_extn(boxsize, pimax, nthreads, - rbinfile, + extn_results = wp_extn(boxsize, nthreads, + rbinfile, pimax, X, Y, Z, verbose=verbose, output_rpavg=output_rpavg, @@ -539,10 +540,6 @@ def wp(boxsize, pimax, nthreads, binfile, X, Y, Z, else: extn_results, api_time, cell_time = extn_results - if delete_after_use: - import os - os.remove(rbinfile) - results_dtype = np.dtype([(bytes_to_native_str(b'rmin'), np.float64), (bytes_to_native_str(b'rmax'), np.float64), (bytes_to_native_str(b'rpavg'), np.float64), diff --git a/Corrfunc/theory/xi.py b/Corrfunc/theory/xi.py index 986170ef..4d38b0ec 100644 --- a/Corrfunc/theory/xi.py +++ b/Corrfunc/theory/xi.py @@ -20,7 +20,7 @@ def xi(boxsize, nthreads, binfile, X, Y, Z, xbin_refine_factor=2, ybin_refine_factor=2, zbin_refine_factor=1, max_cells_per_dim=100, copy_particles=True, enable_min_sep_opt=True, - c_api_timer=False, isa='fastest', bin_type='custom'): + c_api_timer=False, isa='fastest', bin_type='custom', attrs_pair_weights=None): """ Function to compute the projected correlation function in a periodic cosmological box. Pairs which are separated by less @@ -38,15 +38,14 @@ def xi(boxsize, nthreads, binfile, X, Y, Z, Parameters ---------- - - boxsize: double + boxsize : double A double-precision value for the boxsize of the simulation in same units as the particle positions and the ``r`` bins. - nthreads: integer + nthreads : integer Number of threads to use. - binfile: string or an list/array of floats + binfile : string or an list/array of floats For string input: filename specifying the ``r`` bins for ``xi``. The file should contain white-space separated values of (rmin, rmax) for each ``r`` wanted. The bins need to be @@ -58,7 +57,7 @@ def xi(boxsize, nthreads, binfile, X, Y, Z, input specifying **14** (logarithmic) bins between 0.1 and 10.0. This array does not need to be sorted. - X/Y/Z: arraytype, real (float/double) + X/Y/Z : arraytype, real (float/double) Particle positions in the 3 axes. Must be within [0, boxsize] and specified in the same units as ``rp_bins`` and boxsize. All 3 arrays must be of the same floating-point type. @@ -68,15 +67,15 @@ def xi(boxsize, nthreads, binfile, X, Y, Z, precision arrays (C float type); or in double-precision if XYZ are double precision arrays (C double type). - weights: array_like, real (float/double), optional + weights : array_like, real (float/double), optional A scalar, or an array of weights of shape (n_weights, n_positions) or (n_positions,). ``weight_type`` specifies how these weights are used; results are returned in the ``weightavg`` field. - verbose: boolean (default false) + verbose : boolean (default false) Boolean flag to control output of informational messages - output_ravg: boolean (default false) + output_ravg : boolean (default false) Boolean flag to output the average ``r`` for each bin. Code will run slower if you set this flag. @@ -85,32 +84,32 @@ def xi(boxsize, nthreads, binfile, X, Y, Z, you need accurate ``rpavg`` values, then pass in double precision arrays for the particle positions. - (xyz)bin_refine_factor: integer, default is (2,2,1); typically within [1-3] + (xyz)bin_refine_factor : integer, default is (2,2,1); typically within [1-3] Controls the refinement on the cell sizes. Can have up to a 20% impact on runtime. - max_cells_per_dim: integer, default is 100, typical values in [50-300] + max_cells_per_dim : integer, default is 100, typical values in [50-300] Controls the maximum number of cells per dimension. Total number of cells can be up to (max_cells_per_dim)^3. Only increase if ``rmax`` is too small relative to the boxsize (and increasing helps the runtime). - copy_particles: boolean (default True) + copy_particles : boolean (default True) Boolean flag to make a copy of the particle positions If set to False, the particles will be re-ordered in-place .. versionadded:: 2.3.0 - enable_min_sep_opt: boolean (default true) + enable_min_sep_opt : boolean (default true) Boolean flag to allow optimizations based on min. separation between pairs of cells. Here to allow for comparison studies. .. versionadded:: 2.3.0 - c_api_timer: boolean (default false) + c_api_timer : boolean (default false) Boolean flag to measure actual time spent in the C libraries. Here to allow for benchmarking and scaling studies. - isa: string (default ``fastest``) + isa : string (default ``fastest``) Controls the runtime dispatch for the instruction set to use. Options are: [``fastest``, ``avx512f``, ``avx``, ``sse42``, ``fallback``] @@ -123,7 +122,7 @@ def xi(boxsize, nthreads, binfile, X, Y, Z, you *are* benchmarking, then the string supplied here gets translated into an ``enum`` for the instruction set defined in ``utils/defs.h``. - weight_type: string, optional, Default: None. + weight_type : string, optional, Default: None. The type of weighting to apply. One of ["pair_product", None]. bin_type : string, case-insensitive (default ``custom``) @@ -142,10 +141,20 @@ def xi(boxsize, nthreads, binfile, X, Y, Z, ``rtol = 1e-05`` *and* ``atol = 1e-08`` (relative and absolute tolerance) of ``np.linspace(binfile[0], binfile[-1], len(binfile))``. - Returns - -------- + pair_weights : array-like, optional. Default: None. + Array of pair weights. + + sep_pair_weights : array-like, optional. Default: None. + Array of separations corresponding to ``pair_weights``. + + attrs_pair_weights : tuple. Default: None. + Attributes for pair weights; in case ``weight_type`` is "inverse_bitwise", + the tuple of (offset to be added to the bitwise counts, + default weight value if denominator is zero). - results: Numpy structured array + Returns + ------- + results : Numpy structured array A numpy structured array containing [rmin, rmax, ravg, xi, npairs, weightavg] for each radial specified in the ``binfile``. If ``output_ravg`` is not set then ``ravg`` will be set to 0.0 for all @@ -153,13 +162,12 @@ def xi(boxsize, nthreads, binfile, X, Y, Z, function while ``npairs`` contains the number of pairs in that bin. If using weights, ``xi`` will be weighted while ``npairs`` will not be. - api_time: float, optional + api_time : float, optional Only returned if ``c_api_timer`` is set. ``api_time`` measures only the time spent within the C library and ignores all python overhead. Example - -------- - + ------- >>> from __future__ import print_function >>> import numpy as np >>> from os.path import dirname, abspath, join as pjoin @@ -208,25 +216,28 @@ def xi(boxsize, nthreads, binfile, X, Y, Z, import numpy as np from future.utils import bytes_to_native_str from Corrfunc.utils import translate_isa_string_to_enum, translate_bin_type_string_to_enum,\ - return_file_with_rbins, convert_to_native_endian,\ + get_edges, convert_to_native_endian,\ sys_pipes, process_weights weights, _ = process_weights(weights, None, X, None, weight_type, autocorr=True) # Ensure all input arrays are native endian - X, Y, Z, weights = [convert_to_native_endian(arr, warn=True) - for arr in [X, Y, Z, weights]] + X, Y, Z = [convert_to_native_endian(arr, warn=True) + for arr in [X, Y, Z]] + + if weights is not None: + weights = [convert_to_native_endian(arr, warn=True) for arr in weights] # Passing None parameters breaks the parsing code, so avoid this kwargs = {} - for k in ['weights', 'weight_type']: + for k in ['weights', 'weight_type', 'attrs_pair_weights']: v = locals()[k] if v is not None: kwargs[k] = v integer_isa = translate_isa_string_to_enum(isa) integer_bin_type = translate_bin_type_string_to_enum(bin_type) - rbinfile, delete_after_use = return_file_with_rbins(binfile) + rbinfile = get_edges(binfile) with sys_pipes(): extn_results = xi_extn(boxsize, nthreads, rbinfile, X, Y, Z, @@ -247,10 +258,6 @@ def xi(boxsize, nthreads, binfile, X, Y, Z, else: extn_results, api_time = extn_results - if delete_after_use: - import os - os.remove(rbinfile) - results_dtype = np.dtype([(bytes_to_native_str(b'rmin'), np.float64), (bytes_to_native_str(b'rmax'), np.float64), (bytes_to_native_str(b'ravg'), np.float64), diff --git a/Corrfunc/utils.py b/Corrfunc/utils.py index bd5e6051..5d65ac36 100644 --- a/Corrfunc/utils.py +++ b/Corrfunc/utils.py @@ -13,6 +13,9 @@ import wurlitzer from contextlib import contextmanager +import numpy as np + + __all__ = ['convert_3d_counts_to_cf', 'convert_rp_pi_counts_to_wp', 'translate_isa_string_to_enum', 'translate_bin_type_string_to_enum', 'return_file_with_rbins', 'fix_ra_dec', 'fix_cz', 'compute_nbins', 'gridlink_sphere', ] @@ -321,63 +324,46 @@ def convert_rp_pi_counts_to_wp(ND1, ND2, NR1, NR2, return wp -def return_file_with_rbins(rbins): +def get_edges(binfile): """ - Helper function to ensure that the ``binfile`` required by the Corrfunc - extensions is a actually a string. - - Checks if the input is a string and file; return if True. If not, and - the input is an array, then a temporary file is created and the contents - of rbins is written out. + Helper function to return edges corresponding to ``binfile``. Parameters ----------- - rbins: string or array-like - Expected to be a string or an array containing the bins + binfile : string or array-like + Expected to be a path to a bin file (two columns, lower and upper) or an array containing the bins. Returns - --------- - binfile: string, filename - If the input ``rbins`` was a valid filename, then returns the same - string. If ``rbins`` was an array, then this function creates a - temporary file with the contents of the ``rbins`` arrays. This - temporary filename is returned - + ------- + edges : array """ - - is_string = False - delete_after_use = False - try: - if isinstance(rbins, basestring): - is_string = True - except NameError: - if isinstance(rbins, str): - is_string = True - - if is_string: - if file_exists(rbins): - delete_after_use = False - return rbins, delete_after_use + if isinstance(binfile, str): + if file_exists(binfile): + # The equivalent of read_binfile() in io.c + with open(binfile, 'r') as file: + binfile = [] + for iline, line in enumerate(file): + lowhi = line.split() + if len(lowhi) == 2: + low, hi = lowhi + if iline == 0: + binfile.append(low) + binfile.append(hi) + else: + break else: msg = "Could not find file = `{0}` containing the bins"\ - .format(rbins) + .format(binfile) raise IOError(msg) # For a valid bin specifier, there must be at least 1 bin. - if len(rbins) >= 1: - import tempfile - rbins = sorted(rbins) - with tempfile.NamedTemporaryFile(delete=False, mode='w') as f: - for i in range(len(rbins) - 1): - f.write("{0} {1}\n".format(rbins[i], rbins[i + 1])) - - tmpfilename = f.name - - delete_after_use = True - return tmpfilename, delete_after_use + if len(binfile) >= 1: + binfile = np.array(binfile, dtype='f8') + binfile.sort() + return binfile msg = "Input `binfile` was not a valid array (>= 1 element)."\ - "Num elements = {0}".format(len(rbins)) + "Num elements = {0}".format(len(binfile)) raise TypeError(msg) @@ -548,11 +534,11 @@ def translate_bin_type_string_to_enum(bin_type): except NameError: if not isinstance(bin_type, str): raise TypeError(msg) - valid_bin_types = ['AUTO', 'CUSTOM', 'LIN'] + valid_bin_type = ['AUTO', 'CUSTOM', 'LIN'] bin_type_upper = bin_type.upper() - if bin_type_upper not in valid_bin_types: + if bin_type_upper not in valid_bin_type: msg = "Desired bin type = {0} is not in the list of valid "\ - "bin types = {1}".format(bin_type, valid_bin_types) + "bin types = {1}".format(bin_type, valid_bin_type) raise ValueError(msg) enums = {'AUTO': 0, @@ -1034,26 +1020,25 @@ def process_weights(weights1, weights2, X1, X2, weight_type, autocorr): # Takes a scalar, 1d, or 2d weights array # and returns a 2d array of shape (nweights,npart) - def prep(w,x): - if w is None: - return w - - # not None, so probably float or numpy array - if isinstance(w, float): - # Use the particle dtype if a Python float was given - w = np.array(w, dtype=x.dtype) - - w = np.atleast_1d(w) # could have been numpy scalar - - # If only one particle's weight(s) were given, - # assume it applies to all particles - if w.shape[-1] == 1: - w = np.tile(w, len(x)) - - # now of shape (nweights,nparticles) - w = np.atleast_2d(w) - - return w + def prep(weights, x): + if weights is None: + return weights + + if not isinstance(weights, (tuple,list)): + if isinstance(weights, np.ndarray) and weights.ndim == 2: + weights = list(weights) + else: + weights = [weights] + + toret = [] + for w in weights: + w = np.asarray(w) + w.shape = (-1,) + if w.shape[-1] == 1: + w = np.tile(w, len(x)) + toret.append(w) + + return toret weights1 = prep(weights1, X1) @@ -1067,10 +1052,10 @@ def prep(w,x): "both weight arrays.") if weights1 is None and weights2 is not None: - weights1 = np.ones((len(weights2),len(X1)), dtype=X1.dtype) + weights1 = [np.ones_like(X1) for w in weights2] if weights2 is None and weights1 is not None: - weights2 = np.ones((len(weights1),len(X2)), dtype=X2.dtype) + weights2 = [np.ones_like(X2) for w in weights1] return weights1, weights2 @@ -1078,12 +1063,13 @@ def prep(w,x): @contextmanager def sys_pipes(): ''' - We can use the Wurlitzer package to redirect stdout and stderr - from the command line into a Jupyter notebook. But if we're not - in a notebook, this isn't safe because we can't redirect stdout - to itself. This function is a thin wrapper that checks if the - stdout/err streams are TTYs and enables output redirection - based on that. + In a Jupyter notebook, Python's ``sys.stdout`` and ``sys.stderr`` are redirected + so output ends up in cells. But C extensions don't know about that! Wurlitzer + uses os.dup2 to redirect fds 1 & 2 to the new location and restore them on return, + but will cause the output to hang if they were not already redirected. It seems + we can compare Python's ``sys.stdout`` to the saved ``sys.__stdout__`` to tell + if redirection occurred. We will also check if the output is a TTY as a safety + net, even though it is probably a subset of the preceeding check. Basic usage is: @@ -1091,11 +1077,19 @@ def sys_pipes(): ... call_some_c_function() See the Wurlitzer package for usage of `wurlitzer.pipes()`; - see also https://github.com/manodeep/Corrfunc/issues/157. + see also https://github.com/manodeep/Corrfunc/issues/157, + https://github.com/manodeep/Corrfunc/issues/269. ''' - - kwargs = {'stdout':None if sys.stdout.isatty() else sys.stdout, - 'stderr':None if sys.stderr.isatty() else sys.stderr } + + kwargs = {} + if sys.stdout.isatty() or (sys.stdout is sys.__stdout__): + kwargs['stdout'] = None + else: + kwargs['stdout'] = sys.stdout + if sys.stderr.isatty() or (sys.stderr is sys.__stderr__): + kwargs['stderr'] = None + else: + kwargs['stderr'] = sys.stderr # Redirection might break for any number of reasons, like # stdout/err already being closed/redirected. We probably diff --git a/common.mk b/common.mk index 65801e79..2934c817 100644 --- a/common.mk +++ b/common.mk @@ -19,7 +19,7 @@ CLINK ?= ## Set the python command (supply the full path to python you want to ## use, if different from directly calling `python` on the shell, ## as can be the case if python is set via an alias) -PYTHON:=python +PYTHON:=/local/home/adematti/anaconda3/envs/cosmopipe-dev/bin/python ## Important note -> if you directly call /some/path/to/python ## then the previous two variables will be updated to point diff --git a/docs/source/apidoc.sh b/docs/source/apidoc.sh old mode 100755 new mode 100644 diff --git a/io/io.c b/io/io.c index 8c4db1cf..ad854fb3 100644 --- a/io/io.c +++ b/io/io.c @@ -17,6 +17,7 @@ #include "ftread.h" #include "utils.h" #include "macros.h" +#include "defs.h" #ifndef MEMORY_INCREASE_FAC #define MEMORY_INCREASE_FAC 1.1 @@ -26,6 +27,82 @@ #define MAXLEN 500 #endif + +int test_all_files_present(const int nfiles, ...) +{ + /* sets i'th bit for i'th missing file + return value is 0 *iff* all files are present + and readable. + */ + + int absent=0; + va_list filenames; + va_start(filenames, nfiles); + XASSERT(nfiles <= 31, "Can only test for 31 files simultaneously. nfiles = %d \n",nfiles); + for(int i=0;i + const int MAXBUFSIZE=1000; + char buf[MAXBUFSIZE]; + FILE *fp=NULL; + double low,hi; + const char comment='#'; + const int nitems=2; + int nread=0; + int nedges = ((int) getnumlines(fname, comment)) + 1; + double *edges = (double *) my_calloc(sizeof(double), nedges); + + fp = my_fopen(fname,"r"); + if(fp == NULL) { + free(edges); + return EXIT_FAILURE; + } + int index=1; + while(1) { + if(fgets(buf,MAXBUFSIZE,fp) != NULL) { + nread = sscanf(buf,"%lf %lf",&low,&hi); + if(nread == nitems) { + + if(index == 1) { + edges[0] = low; + } + + edges[index] = hi; + index++; + } + } else { + break; + } + } + fclose(fp); + if (index != nedges) { + free(edges); + return EXIT_FAILURE; + } + + set_binarray(bins, edges, nedges); + free(edges); + return EXIT_SUCCESS; +} + + int64_t read_positions(const char *filename, const char *format, const size_t size, const int num_fields, ...) { XRETURN((sizeof(void *) == sizeof(float *) && sizeof(void *) == sizeof(double *)), -1, diff --git a/io/io.h b/io/io.h index c4d09d65..02f1730a 100644 --- a/io/io.h +++ b/io/io.h @@ -8,11 +8,12 @@ #pragma once #include +#include "defs.h" #ifdef __cplusplus extern "C" { #endif - + int read_binfile(const char *fname, binarray *bins); int64_t read_positions(const char *filename, const char *format, const size_t size, const int num_fields, ...) __attribute__((warn_unused_result)); int64_t read_columns_into_array(const char *filename, const char *format, const size_t size, const int num_fields, void **data) __attribute__((warn_unused_result)); diff --git a/mocks/DDrppi_mocks/DDrppi_mocks.c b/mocks/DDrppi_mocks/DDrppi_mocks.c index f1c876f5..8760b2ed 100644 --- a/mocks/DDrppi_mocks/DDrppi_mocks.c +++ b/mocks/DDrppi_mocks/DDrppi_mocks.c @@ -53,7 +53,7 @@ int main(int argc, char *argv[]) char *binfile=NULL; char *weight_method_str=NULL; DOUBLE pimax; - + weight_method_t weight_method = NONE; int num_weights = 0; @@ -67,7 +67,7 @@ int main(int argc, char *argv[]) double read_time=0.0; gettimeofday(&t_start,NULL); int nthreads=1; - + /*---Corrfunc-variables----------------*/ #if defined(_OPENMP) const char argnames[][30]={"file1","format1","file2","format2","binfile","pimax","cosmology flag","numthreads"}; @@ -75,14 +75,14 @@ int main(int argc, char *argv[]) const char argnames[][30]={"file1","format1","file2","format2","binfile","pimax","cosmology flag"}; #endif const char optargnames[][30]={"weight_method", "weights_file1","weights_format1","weights_file2","weights_format2"}; - + int nargs=sizeof(argnames)/(sizeof(char)*30); int noptargs=sizeof(optargnames)/(sizeof(char)*30); - + int cosmology=1; /*---Read-arguments-----------------------------------*/ - if(argc< (nargs+1)) { + if(argc < (nargs+1)) { Printhelp() ; fprintf(stderr,"\nFound: %d parameters\n ",argc-1); int i; @@ -99,7 +99,7 @@ int main(int argc, char *argv[]) fprintf(stderr,"\t\t %s = `?'\n",argnames[i-1]); return EXIT_FAILURE; } - + /* Validate optional arguments */ int noptargs_given = argc - (nargs + 1); if(noptargs_given != 0 && noptargs_given != 3 && noptargs_given != 5){ @@ -114,7 +114,7 @@ int main(int argc, char *argv[]) } return EXIT_FAILURE; } - + file1=argv[1]; fileformat1=argv[2]; file2=argv[3]; @@ -138,7 +138,7 @@ int main(int argc, char *argv[]) return EXIT_FAILURE; } num_weights = get_num_weights_by_method(weight_method); - + weights_file1 = argv[nargs + 2]; weights_fileformat1 = argv[nargs + 3]; } @@ -165,6 +165,8 @@ int main(int argc, char *argv[]) } fprintf(stderr,"\t\t -------------------------------------\n"); + binarray bins; + read_binfile(binfile, &bins); /*---Read-data1-file----------------------------------*/ gettimeofday(&t0,NULL); @@ -172,14 +174,14 @@ int main(int argc, char *argv[]) gettimeofday(&t1,NULL); read_time += ADD_DIFF_TIME(t0,t1); gettimeofday(&t0,NULL); - + /* Read weights file 1 */ if(weights_file1 != NULL){ gettimeofday(&t0,NULL); int64_t wND1 = read_columns_into_array(weights_file1,weights_fileformat1, sizeof(DOUBLE), num_weights, (void **) weights1); gettimeofday(&t1,NULL); read_time += ADD_DIFF_TIME(t0,t1); - + if(wND1 != ND1){ fprintf(stderr, "Error: read %"PRId64" lines from %s, but read %"PRId64" from %s\n", wND1, weights_file1, ND1, file1); return EXIT_FAILURE; @@ -191,7 +193,7 @@ int main(int argc, char *argv[]) ND2=read_positions(file2,fileformat2,sizeof(DOUBLE), 3, &phiD2, &thetaD2, &czD2); gettimeofday(&t1,NULL); read_time += ADD_DIFF_TIME(t0,t1); - + if(weights_file2 != NULL){ gettimeofday(&t0,NULL); int64_t wND2 = read_columns_into_array(weights_file2,weights_fileformat2, sizeof(DOUBLE), num_weights, (void **) weights2); @@ -226,13 +228,14 @@ int main(int argc, char *argv[]) extra.weights0.weights[w] = (void *) weights1[w]; extra.weights1.weights[w] = (void *) weights2[w]; } - + int status = countpairs_mocks(ND1,phiD1,thetaD1,czD1, ND2,phiD2,thetaD2,czD2, nthreads, autocorr, - binfile, + &bins, pimax, + (int) pimax, cosmology, &results, &options, @@ -248,6 +251,7 @@ int main(int argc, char *argv[]) free(weights2[w]); } } + free_binarray(&bins); if(status != EXIT_SUCCESS) { return status; @@ -317,8 +321,8 @@ void Printhelp(void) fprintf(stderr,"CZ column contains co-moving distance = True\n"); #else fprintf(stderr,"CZ column contains co-moving distance = False\n"); -#endif - +#endif + #ifdef DOUBLE_PREC fprintf(stderr,"Precision = double\n"); #else diff --git a/mocks/DDrppi_mocks/countpairs_rp_pi_mocks.c b/mocks/DDrppi_mocks/countpairs_rp_pi_mocks.c index f5c4ba44..d9f3c7ce 100644 --- a/mocks/DDrppi_mocks/countpairs_rp_pi_mocks.c +++ b/mocks/DDrppi_mocks/countpairs_rp_pi_mocks.c @@ -34,8 +34,9 @@ int countpairs_mocks(const int64_t ND1, void *phi1, void *theta1, void *czD1, const int64_t ND2, void *phi2, void *theta2, void *czD2, const int numthreads, const int autocorr, - const char *binfile, + binarray* bins, const double pimax, + const int npibins, const int cosmology, results_countpairs_mocks *results, struct config_options *options, struct extra_options *extra) @@ -56,8 +57,9 @@ int countpairs_mocks(const int64_t ND1, void *phi1, void *theta1, void *czD1, ND2, (float *) phi2, (float *) theta2, (float *) czD2, numthreads, autocorr, - binfile, + bins, pimax, + npibins, cosmology, results, options, @@ -67,8 +69,9 @@ int countpairs_mocks(const int64_t ND1, void *phi1, void *theta1, void *czD1, ND2, (double *) phi2, (double *) theta2, (double *) czD2, numthreads, autocorr, - binfile, + bins, pimax, + npibins, cosmology, results, options, diff --git a/mocks/DDrppi_mocks/countpairs_rp_pi_mocks.h b/mocks/DDrppi_mocks/countpairs_rp_pi_mocks.h index 2d386bbd..5f240770 100644 --- a/mocks/DDrppi_mocks/countpairs_rp_pi_mocks.h +++ b/mocks/DDrppi_mocks/countpairs_rp_pi_mocks.h @@ -16,7 +16,7 @@ extern "C" { #include //for uint64_t //define the results structure - typedef struct{ + typedef struct { uint64_t *npairs; double *rupp; double *rpavg; @@ -25,13 +25,14 @@ extern "C" { int nbin; int npibin; } results_countpairs_mocks; - + int countpairs_mocks(const int64_t ND1, void *theta1, void *phi1, void *czD1, const int64_t ND2, void *theta2, void *phi2, void *czD2, const int numthreads, const int autocorr, - const char *binfile, + binarray* bins, const double pimax, + const int npibins, const int cosmology, results_countpairs_mocks *results, struct config_options *options, struct extra_options *extra); diff --git a/mocks/DDrppi_mocks/countpairs_rp_pi_mocks_impl.c.src b/mocks/DDrppi_mocks/countpairs_rp_pi_mocks_impl.c.src index 9e8738d3..69f6c2a6 100644 --- a/mocks/DDrppi_mocks/countpairs_rp_pi_mocks_impl.c.src +++ b/mocks/DDrppi_mocks/countpairs_rp_pi_mocks_impl.c.src @@ -203,8 +203,9 @@ int countpairs_mocks_DOUBLE(const int64_t ND1, DOUBLE *ra1, DOUBLE *dec1, DOUBLE const int64_t ND2, DOUBLE *ra2, DOUBLE *dec2, DOUBLE *czD2, const int numthreads, const int autocorr, - const char *binfile, + binarray *bins, const DOUBLE pimax, + const int npibin, const int cosmology, results_countpairs_mocks *results, struct config_options *options, struct extra_options *extra) @@ -276,8 +277,6 @@ int countpairs_mocks_DOUBLE(const int64_t ND1, DOUBLE *ra1, DOUBLE *dec1, DOUBLE } } - const int npibin = (int) pimax; - /* setup interrupt handler -> mostly useful during the python execution. Let's Ctrl-C abort the extension */ SETUP_INTERRUPT_HANDLERS(interrupt_handler_countpairs_rp_pi_mocks_DOUBLE); @@ -294,16 +293,15 @@ int countpairs_mocks_DOUBLE(const int64_t ND1, DOUBLE *ra1, DOUBLE *dec1, DOUBLE /*********************** *initializing the bins ************************/ - double *rupp; - int nrpbin; - double rpmin,rpmax; - setup_bins(binfile,&rpmin,&rpmax,&nrpbin,&rupp); - if( ! (rpmin > 0.0 && rpmax > 0.0 && rpmin < rpmax && nrpbin > 0)) { - fprintf(stderr,"Error: Could not setup with R bins correctly. (rmin = %lf, rmax = %lf, with nbins = %d). Expected non-zero rmin/rmax with rmax > rmin and nbins >=1 \n", + double *rupp = bins->edges; + int nrpbin = bins->nedges; + double rpmin=bins->edges[0], rpmax=bins->edges[bins->nedges-1]; + if( ! (rpmin >= 0.0 && rpmax > 0.0 && rpmin < rpmax && nrpbin > 0)) { + fprintf(stderr,"Error: Could not setup with r bins correctly. (rmin = %lf, rmax = %lf, with nbins = %d). Expected positive rmin/rmax with rmax > rmin and nbins >=1 \n", rpmin, rpmax, nrpbin); return EXIT_FAILURE; } - detect_bin_type(rupp, nrpbin, &(options->bin_type), options->verbose); + detect_bin_type(bins, &(options->bin_type), options->verbose); const DOUBLE sqr_max_sep = rpmax*rpmax + pimax*pimax; const DOUBLE max_sep = SQRT(sqr_max_sep); @@ -335,7 +333,7 @@ int countpairs_mocks_DOUBLE(const int64_t ND1, DOUBLE *ra1, DOUBLE *dec1, DOUBLE const double zmax = czmax * inv_speed_of_light + 0.01; const int workspace_size = 10000; - double *interp_redshift = my_calloc(sizeof(*interp_redshift), workspace_size);//the interpolation is done in 'z' and not in 'cz' + double *interp_redshift = my_calloc(sizeof(*interp_redshift), workspace_size);//the interpolation is done in 'z' and not in 'cz' double *interp_comoving_dist = my_calloc(sizeof(*interp_comoving_dist),workspace_size); int Nzdc = set_cosmo_dist(zmax, workspace_size, interp_redshift, interp_comoving_dist, cosmology); if(Nzdc < 0) { @@ -346,7 +344,7 @@ int countpairs_mocks_DOUBLE(const int64_t ND1, DOUBLE *ra1, DOUBLE *dec1, DOUBLE gsl_interp *interpolation; gsl_interp_accel *accelerator; accelerator = gsl_interp_accel_alloc(); - interpolation = gsl_interp_alloc (gsl_interp_linear,Nzdc); + interpolation = gsl_interp_alloc(gsl_interp_linear,Nzdc); gsl_interp_init(interpolation, interp_redshift, interp_comoving_dist, Nzdc); for(int64_t i=0;imin_dx, this_cell_pair->min_dy, this_cell_pair->min_dz, this_cell_pair->closest_x1, this_cell_pair->closest_y1, this_cell_pair->closest_z1, this_rpavg, npairs, - this_weightavg, extra->weight_method, options->bin_type); + this_weightavg, extra->weight_method, extra->pair_weight, options->bin_type); /* This actually causes a race condition under OpenMP - but mostly I care that an error occurred - rather than the exact value of @@ -687,7 +684,6 @@ int countpairs_mocks_DOUBLE(const int64_t ND1, DOUBLE *ra1, DOUBLE *dec1, DOUBLE if(abort_status != EXIT_SUCCESS || interrupt_status_DDrppi_mocks_DOUBLE != EXIT_SUCCESS) { /* Cleanup memory here if aborting */ - free(rupp); #if defined(_OPENMP) matrix_free((void **) all_npairs, numthreads); if(options->need_avg_sep) { @@ -762,23 +758,22 @@ int countpairs_mocks_DOUBLE(const int64_t ND1, DOUBLE *ra1, DOUBLE *dec1, DOUBLE /* Then, add all the self-pairs. This ensures that a cross-correlation with two identical datasets produces the same result as the auto-correlation */ - npairs[1] += ND1; //npairs[1] contains the first valid bin. + npairs[npibin+1] += ND1; //npairs[1] contains the first valid bin. // Increasing npairs affects rpavg and weightavg. // We don't need to add anything to rpavg; all the self-pairs have 0 separation! // The self-pairs have non-zero weight, though. So, fix that here. if(need_weightavg){ // Keep in mind this is an autocorrelation (i.e. only one particle set to consider) + pair_struct_DOUBLE pair; + set_pair_struct_DOUBLE(&pair, (weight_struct_DOUBLE *) &(extra->weights0), (weight_struct_DOUBLE *) &(extra->weights0), &(extra->pair_weight)); weight_func_t_DOUBLE weight_func = get_weight_func_by_method_DOUBLE(extra->weight_method); - pair_struct_DOUBLE pair = {.num_weights = extra->weights0.num_weights, - .dx.d=0., .dy.d=0., .dz.d=0., // always 0 separation - .parx.d=0., .pary.d=0., .parz.d=0.}; for(int64_t j = 0; j < ND1; j++){ for(int w = 0; w < pair.num_weights; w++){ pair.weights0[w].d = ((DOUBLE *) extra->weights0.weights[w])[j]; pair.weights1[w].d = ((DOUBLE *) extra->weights0.weights[w])[j]; } - weightavg[1] += weight_func(&pair); + weightavg[npibin+1] += weight_func(&pair); } } } @@ -787,7 +782,7 @@ int countpairs_mocks_DOUBLE(const int64_t ND1, DOUBLE *ra1, DOUBLE *dec1, DOUBLE for(int i=0;i 0) { if(options->need_avg_sep) { - rpavg[i] /= (DOUBLE) npairs[i] ; + rpavg[i] /= need_weightavg ? weightavg[i] : (DOUBLE) npairs[i]; } if(need_weightavg) { weightavg[i] /= (DOUBLE) npairs[i]; @@ -804,7 +799,6 @@ int countpairs_mocks_DOUBLE(const int64_t ND1, DOUBLE *ra1, DOUBLE *dec1, DOUBLE results->weightavg = my_calloc(sizeof(double) , totnbins); if(results->npairs == NULL || results->rupp == NULL || results->rpavg == NULL || results->weightavg == NULL) { free_results_mocks(results); - free(rupp); return EXIT_FAILURE; } @@ -815,7 +809,6 @@ int countpairs_mocks_DOUBLE(const int64_t ND1, DOUBLE *ra1, DOUBLE *dec1, DOUBLE if( index >= totnbins ) { fprintf(stderr, "ERROR: In %s> index = %d must be in range [0, %d)\n", __FUNCTION__, index, totnbins); free_results_mocks(results); - free(rupp); return EXIT_FAILURE; } results->npairs[index] = npairs[index]; @@ -829,7 +822,6 @@ int countpairs_mocks_DOUBLE(const int64_t ND1, DOUBLE *ra1, DOUBLE *dec1, DOUBLE } } } - free(rupp); /* reset interrupt handlers to default */ RESET_INTERRUPT_HANDLERS(); diff --git a/mocks/DDrppi_mocks/countpairs_rp_pi_mocks_impl.h.src b/mocks/DDrppi_mocks/countpairs_rp_pi_mocks_impl.h.src index 2484f7f8..c35a93a6 100644 --- a/mocks/DDrppi_mocks/countpairs_rp_pi_mocks_impl.h.src +++ b/mocks/DDrppi_mocks/countpairs_rp_pi_mocks_impl.h.src @@ -30,7 +30,8 @@ extern "C" { const DOUBLE min_xdiff, const DOUBLE min_ydiff, const DOUBLE min_zdiff, const DOUBLE closest_icell_xpos, const DOUBLE closest_icell_ypos, const DOUBLE closest_icell_zpos, DOUBLE *src_rpavg, uint64_t *src_npairs, - DOUBLE *src_weightavg, const weight_method_t weight_method, const bin_type_t bin_type); + DOUBLE *src_weightavg, const weight_method_t weight_method, const pair_weight_struct pair_weight, + const bin_type_t bin_type); extern countpairs_mocks_func_ptr_DOUBLE countpairs_rp_pi_mocks_driver_DOUBLE(const struct config_options *options) __attribute__((warn_unused_result)); @@ -38,8 +39,9 @@ extern "C" { const int64_t ND2, DOUBLE *theta2, DOUBLE *phi2, DOUBLE *czD2, const int numthreads, const int autocorr, - const char *binfile, + binarray *bins, const DOUBLE pimax, + const int npibins, const int cosmology, results_countpairs_mocks *results, struct config_options *options, struct extra_options *extra); diff --git a/mocks/DDrppi_mocks/countpairs_rp_pi_mocks_kernels.c.src b/mocks/DDrppi_mocks/countpairs_rp_pi_mocks_kernels.c.src index 86dfb031..8c1f34b1 100644 --- a/mocks/DDrppi_mocks/countpairs_rp_pi_mocks_kernels.c.src +++ b/mocks/DDrppi_mocks/countpairs_rp_pi_mocks_kernels.c.src @@ -40,7 +40,8 @@ static inline int countpairs_rp_pi_mocks_avx512_intrinsics_DOUBLE(const int64_t const DOUBLE closest_icell_xpos, const DOUBLE closest_icell_ypos, const DOUBLE closest_icell_zpos, DOUBLE *src_rpavg, - uint64_t *src_npairs, DOUBLE *src_weightavg, const weight_method_t weight_method, const bin_type_t bin_type) + uint64_t *src_npairs, DOUBLE *src_weightavg, const weight_method_t weight_method, const pair_weight_struct pair_weight, + const bin_type_t bin_type) { if(N0 == 0 || N1 == 0) { return EXIT_SUCCESS; @@ -52,6 +53,7 @@ static inline int countpairs_rp_pi_mocks_avx512_intrinsics_DOUBLE(const int64_t const int32_t need_rpavg = src_rpavg != NULL; const int32_t need_weightavg = src_weightavg != NULL; + int32_t need_costheta = need_weightavg; const DOUBLE sqr_rpmin=rpmin*rpmin, sqr_rpmax=rpmax*rpmax; AVX512_FLOATS m_inv_rpstep = AVX512_SETZERO_FLOAT(); AVX512_FLOATS m_rpmin_invstep = AVX512_SETZERO_FLOAT(); @@ -90,12 +92,20 @@ static inline int countpairs_rp_pi_mocks_avx512_intrinsics_DOUBLE(const int64_t pair_struct_DOUBLE pair = {.num_weights=0}; avx512_weight_func_t_DOUBLE avx512_weight_func = NULL; if(need_weightavg){ - // Same particle list, new copy of num_weights pointers into that list - local_w0 = *weights0; - local_w1 = *weights1; + // Same particle list, new copy of num_weights pointers into that list + local_w0 = *weights0; + local_w1 = *weights1; - pair.num_weights = local_w0.num_weights; - avx512_weight_func = get_avx512_weight_func_by_method_DOUBLE(weight_method); + set_pair_struct_DOUBLE(&pair, &local_w0, &local_w1, &pair_weight); + need_costheta = pair_weight.num; + avx512_weight_func = get_avx512_weight_func_by_method_DOUBLE(weight_method); + } + DOUBLE *norm1 = NULL; + if (need_costheta) { + norm1 = (DOUBLE *) my_malloc(N1,sizeof(DOUBLE)); + for(int64_t i=0;iweights[w] + j; } - AVX_FLOATS m_xpos = AVX_SET_FLOAT(xpos); - AVX_FLOATS m_ypos = AVX_SET_FLOAT(ypos); - AVX_FLOATS m_zpos = AVX_SET_FLOAT(zpos); + const AVX_FLOATS m_xpos = AVX_SET_FLOAT(xpos); + const AVX_FLOATS m_ypos = AVX_SET_FLOAT(ypos); + const AVX_FLOATS m_zpos = AVX_SET_FLOAT(zpos); + const AVX_FLOATS m_norm0 = AVX_SET_FLOAT(norm0); const AVX_FLOATS m_sqr_pimax = AVX_SET_FLOAT(sqr_pimax); const AVX_FLOATS m_sqr_rpmax = AVX_SET_FLOAT(sqr_rpmax); @@ -540,6 +569,11 @@ static inline int countpairs_rp_pi_mocks_avx_intrinsics_DOUBLE(const int64_t N0, const AVX_FLOATS m_x2 = AVX_LOAD_FLOATS_UNALIGNED(localx1); const AVX_FLOATS m_y2 = AVX_LOAD_FLOATS_UNALIGNED(localy1); const AVX_FLOATS m_z2 = AVX_LOAD_FLOATS_UNALIGNED(localz1); + if(need_costheta) { + const AVX_FLOATS m_norm1 = AVX_LOAD_FLOATS_UNALIGNED(norm1 + j); + pair.costheta.a = AVX_ADD_FLOATS(AVX_ADD_FLOATS(AVX_MULTIPLY_FLOATS(m_xpos, m_x2), AVX_MULTIPLY_FLOATS(m_ypos, m_y2)), AVX_MULTIPLY_FLOATS(m_zpos, m_z2)); + pair.costheta.a = AVX_DIVIDE_FLOATS(pair.costheta.a, AVX_MULTIPLY_FLOATS(m_norm0, m_norm1)); + } union int8 union_finalbin; union float8 union_mDperp; @@ -687,25 +721,32 @@ static inline int countpairs_rp_pi_mocks_avx_intrinsics_DOUBLE(const int64_t N0, const AVX_FLOATS m_binproduct = AVX_ADD_FLOATS(AVX_MULTIPLY_FLOATS(m_rpbin,m_npibin_p1),m_pibin); union_finalbin.m_ibin = AVX_TRUNCATE_FLOAT_TO_INT(m_binproduct); + if(need_rpavg && need_weightavg) union_mDperp.m_Dperp = AVX_MULTIPLY_FLOATS(union_mDperp.m_Dperp, union_mweight.m_weights); #if __INTEL_COMPILER #pragma unroll(AVX_NVEC) #endif for(int jj=0;jj 0.0 && smax > 0.0 && smin < smax && nsbin > 0)) { - fprintf(stderr,"Error: Could not setup with S bins correctly. (smin = %lf, smax = %lf, with nbins = %d). Expected non-zero smin/smax with smax > smin and nbins >=1 \n", + double *supp = bins->edges; + int nsbin = bins->nedges; + double smin=bins->edges[0], smax=bins->edges[bins->nedges-1]; + if( ! (smin >= 0.0 && smax > 0.0 && smin < smax && nsbin > 0)) { + fprintf(stderr,"Error: Could not setup with s bins correctly. (smin = %lf, smax = %lf, with nbins = %d). Expected non-zero smin/smax with smax > smin and nbins >=1 \n", smin, smax, nsbin); return EXIT_FAILURE; } - detect_bin_type(supp, nsbin, &(options->bin_type), options->verbose); + detect_bin_type(bins, &(options->bin_type), options->verbose); if(max_mu <= 0.0 || max_mu > 1.0) { fprintf(stderr,"Error: max_mu (max. value for the cosine of the angle with line of sight) must be greater than 0 and at most 1).\n" @@ -540,7 +539,6 @@ int countpairs_mocks_s_mu_DOUBLE(const int64_t ND1, DOUBLE *ra1, DOUBLE *dec1, D if(autocorr == 0) { free_cellarray_mocks_DOUBLE(lattice2, totncells); } - free(supp); return EXIT_FAILURE; } @@ -642,7 +640,7 @@ int countpairs_mocks_s_mu_DOUBLE(const int64_t ND1, DOUBLE *ra1, DOUBLE *dec1, D this_cell_pair->min_dx, this_cell_pair->min_dy, this_cell_pair->min_dz, this_cell_pair->closest_x1, this_cell_pair->closest_y1, this_cell_pair->closest_z1, this_savg, npairs, - this_weightavg, extra->weight_method, options->bin_type); + this_weightavg, extra->weight_method, extra->pair_weight, options->bin_type); /* This actually causes a race condition under OpenMP - but mostly I care that an error occurred - rather than the exact value of @@ -690,7 +688,6 @@ int countpairs_mocks_s_mu_DOUBLE(const int64_t ND1, DOUBLE *ra1, DOUBLE *dec1, D if(abort_status != EXIT_SUCCESS || interrupt_status_DDsmu_mocks_DOUBLE != EXIT_SUCCESS) { /* Cleanup memory here if aborting */ - free(supp); #if defined(_OPENMP) matrix_free((void **) all_npairs, numthreads); if(options->need_avg_sep) { @@ -764,23 +761,22 @@ int countpairs_mocks_s_mu_DOUBLE(const int64_t ND1, DOUBLE *ra1, DOUBLE *dec1, D /* Then, add all the self-pairs. This ensures that a cross-correlation with two identical datasets produces the same result as the auto-correlation */ - npairs[1] += ND1; //npairs[1] contains the first valid bin. + npairs[nmu_bins+1] += ND1; //npairs[1] contains the first valid bin. // Increasing npairs affects rpavg and weightavg. // We don't need to add anything to rpavg; all the self-pairs have 0 separation! // The self-pairs have non-zero weight, though. So, fix that here. if(need_weightavg){ // Keep in mind this is an autocorrelation (i.e. only one particle set to consider) + pair_struct_DOUBLE pair; + set_pair_struct_DOUBLE(&pair, (weight_struct_DOUBLE *) &(extra->weights0), (weight_struct_DOUBLE *) &(extra->weights0), &(extra->pair_weight)); weight_func_t_DOUBLE weight_func = get_weight_func_by_method_DOUBLE(extra->weight_method); - pair_struct_DOUBLE pair = {.num_weights = extra->weights0.num_weights, - .dx.d=0., .dy.d=0., .dz.d=0., // always 0 separation - .parx.d=0., .pary.d=0., .parz.d=0.}; for(int64_t j = 0; j < ND1; j++){ for(int w = 0; w < pair.num_weights; w++){ pair.weights0[w].d = ((DOUBLE *) extra->weights0.weights[w])[j]; pair.weights1[w].d = ((DOUBLE *) extra->weights0.weights[w])[j]; } - weightavg[1] += weight_func(&pair); + weightavg[nmu_bins+1] += weight_func(&pair); } } } @@ -789,7 +785,7 @@ int countpairs_mocks_s_mu_DOUBLE(const int64_t ND1, DOUBLE *ra1, DOUBLE *dec1, D for(int i=0;i 0) { if(options->need_avg_sep) { - savg[i] /= (DOUBLE) npairs[i] ; + savg[i] /= need_weightavg ? weightavg[i] : (DOUBLE) npairs[i]; } if(need_weightavg) { weightavg[i] /= (DOUBLE) npairs[i]; @@ -802,12 +798,11 @@ int countpairs_mocks_s_mu_DOUBLE(const int64_t ND1, DOUBLE *ra1, DOUBLE *dec1, D results->mu_max = max_mu;//NOTE max_mu which is double and not mu_max (which might be float) results->mu_min = ZERO; results->npairs = my_malloc(sizeof(*(results->npairs)), totnbins); - results->supp = my_malloc(sizeof(*(results->supp)) , nsbin); - results->savg = my_malloc(sizeof(*(results->savg)) , totnbins); - results->weightavg = my_calloc(sizeof(double) , totnbins); + results->supp = my_malloc(sizeof(*(results->supp)), nsbin); + results->savg = my_malloc(sizeof(*(results->savg)), totnbins); + results->weightavg = my_calloc(sizeof(double), totnbins); if(results->npairs == NULL || results->supp == NULL || results->savg == NULL || results->weightavg == NULL) { free_results_mocks_s_mu(results); - free(supp); return EXIT_FAILURE; } @@ -818,7 +813,6 @@ int countpairs_mocks_s_mu_DOUBLE(const int64_t ND1, DOUBLE *ra1, DOUBLE *dec1, D if( index >= totnbins ) { fprintf(stderr, "ERROR: In %s> index = %d must be in range [0, %d)\n", __FUNCTION__, index, totnbins); free_results_mocks_s_mu(results); - free(supp); return EXIT_FAILURE; } results->npairs[index] = npairs[index]; @@ -832,7 +826,6 @@ int countpairs_mocks_s_mu_DOUBLE(const int64_t ND1, DOUBLE *ra1, DOUBLE *dec1, D } } } - free(supp); /* reset interrupt handlers to default */ RESET_INTERRUPT_HANDLERS(); diff --git a/mocks/DDsmu_mocks/countpairs_s_mu_mocks_impl.h.src b/mocks/DDsmu_mocks/countpairs_s_mu_mocks_impl.h.src index 98299a80..d4d24547 100644 --- a/mocks/DDsmu_mocks/countpairs_s_mu_mocks_impl.h.src +++ b/mocks/DDsmu_mocks/countpairs_s_mu_mocks_impl.h.src @@ -31,7 +31,8 @@ extern "C" { const DOUBLE min_xdiff, const DOUBLE min_ydiff, const DOUBLE min_zdiff, const DOUBLE closest_icell_xpos, const DOUBLE closest_icell_ypos, const DOUBLE closest_icell_zpos, DOUBLE *src_savg, uint64_t *src_npairs, - DOUBLE *src_weightavg, const weight_method_t weight_method, const bin_type_t bin_type); + DOUBLE *src_weightavg, const weight_method_t weight_method, const pair_weight_struct pair_weight, + const bin_type_t bin_type); extern countpairs_mocks_func_ptr_DOUBLE countpairs_s_mu_mocks_driver_DOUBLE(const struct config_options *options) __attribute__((warn_unused_result)); @@ -39,7 +40,7 @@ extern "C" { const int64_t ND2, DOUBLE *theta2, DOUBLE *phi2, DOUBLE *czD2, const int numthreads, const int autocorr, - const char *sbinfile, + binarray *bins, const double mu_max, const int nmu_bins, const int cosmology, diff --git a/mocks/DDsmu_mocks/countpairs_s_mu_mocks_kernels.c.src b/mocks/DDsmu_mocks/countpairs_s_mu_mocks_kernels.c.src index 922ddb7b..c4809425 100644 --- a/mocks/DDsmu_mocks/countpairs_s_mu_mocks_kernels.c.src +++ b/mocks/DDsmu_mocks/countpairs_s_mu_mocks_kernels.c.src @@ -34,7 +34,8 @@ static inline int countpairs_s_mu_mocks_avx512_intrinsics_DOUBLE(const int64_t N const DOUBLE min_xdiff, const DOUBLE min_ydiff, const DOUBLE min_zdiff, const DOUBLE closest_icell_xpos, const DOUBLE closest_icell_ypos, const DOUBLE closest_icell_zpos, DOUBLE *src_savg, - uint64_t *src_npairs, DOUBLE *src_weightavg, const weight_method_t weight_method, const bin_type_t bin_type) + uint64_t *src_npairs, DOUBLE *src_weightavg, const weight_method_t weight_method, const pair_weight_struct pair_weight, + const bin_type_t bin_type) { if(N0 == 0 || N1 == 0) { @@ -47,6 +48,7 @@ static inline int countpairs_s_mu_mocks_avx512_intrinsics_DOUBLE(const int64_t N const int32_t need_savg = src_savg != NULL; const int32_t need_weightavg = src_weightavg != NULL; + int32_t need_costheta = need_weightavg; const DOUBLE sqr_smin=smin*smin, sqr_smax=smax*smax; AVX512_FLOATS m_inv_sstep = AVX512_SETZERO_FLOAT(); AVX512_FLOATS m_smin_invstep = AVX512_SETZERO_FLOAT(); @@ -89,9 +91,17 @@ static inline int countpairs_s_mu_mocks_avx512_intrinsics_DOUBLE(const int64_t N local_w0 = *weights0; local_w1 = *weights1; - pair.num_weights = local_w0.num_weights; + set_pair_struct_DOUBLE(&pair, &local_w0, &local_w1, &pair_weight); + need_costheta = pair_weight.num; avx512_weight_func = get_avx512_weight_func_by_method_DOUBLE(weight_method); } + DOUBLE *norm1 = NULL; + if (need_costheta) { + norm1 = (DOUBLE *) my_malloc(N1,sizeof(DOUBLE)); + for(int64_t i=0;iweights[w] + j; } - AVX_FLOATS m_xpos = AVX_SET_FLOAT(xpos); - AVX_FLOATS m_ypos = AVX_SET_FLOAT(ypos); - AVX_FLOATS m_zpos = AVX_SET_FLOAT(zpos); + const AVX_FLOATS m_xpos = AVX_SET_FLOAT(xpos); + const AVX_FLOATS m_ypos = AVX_SET_FLOAT(ypos); + const AVX_FLOATS m_zpos = AVX_SET_FLOAT(zpos); + const AVX_FLOATS m_norm0 = AVX_SET_FLOAT(norm0); const AVX_FLOATS m_max_dz = AVX_SET_FLOAT(max_dz); const AVX_FLOATS m_sqr_smax = AVX_SET_FLOAT(sqr_smax); @@ -522,6 +555,11 @@ static inline int countpairs_s_mu_mocks_avx_intrinsics_DOUBLE(const int64_t N0, const AVX_FLOATS m_x2 = AVX_LOAD_FLOATS_UNALIGNED(localx1); const AVX_FLOATS m_y2 = AVX_LOAD_FLOATS_UNALIGNED(localy1); const AVX_FLOATS m_z2 = AVX_LOAD_FLOATS_UNALIGNED(localz1); + if(need_costheta) { + const AVX_FLOATS m_norm1 = AVX_LOAD_FLOATS_UNALIGNED(norm1 + j); + pair.costheta.a = AVX_ADD_FLOATS(AVX_ADD_FLOATS(AVX_MULTIPLY_FLOATS(m_xpos, m_x2), AVX_MULTIPLY_FLOATS(m_ypos, m_y2)), AVX_MULTIPLY_FLOATS(m_zpos, m_z2)); + pair.costheta.a = AVX_DIVIDE_FLOATS(pair.costheta.a, AVX_MULTIPLY_FLOATS(m_norm0, m_norm1)); + } localx1 += AVX_NVEC; localy1 += AVX_NVEC; @@ -577,8 +615,10 @@ static inline int countpairs_s_mu_mocks_avx_intrinsics_DOUBLE(const int64_t N0, AVX_SQUARE_FLOAT(m_parz))); // \mu^2 := cos^2(\theta_between_s_and_l) = |s.l|^2 / (|s|^2 * |l|^2) + AVX_FLOATS m_sqr_norm_l_norm_s = AVX_MULTIPLY_FLOATS(m_sqr_norm_l, m_sqr_s); + const AVX_FLOATS m_mask_szero = AVX_COMPARE_FLOATS(m_zero, m_sqr_s, _CMP_LT_OQ); + m_sqr_norm_l_norm_s = AVX_BLEND_FLOATS_WITH_MASK(m_one, m_sqr_norm_l_norm_s, m_mask_szero); // to avoid division by 0 AVX_FLOATS m_sqr_mu = AVX_SETZERO_FLOAT(); - const AVX_FLOATS m_sqr_norm_l_norm_s = AVX_MULTIPLY_FLOATS(m_sqr_norm_l, m_sqr_s); CHECK_AND_FAST_DIVIDE_AVX(m_sqr_mu, m_sqr_s_dot_l, m_sqr_norm_l_norm_s, fast_divide_and_NR_steps); const AVX_FLOATS m_mu = AVX_SQRT_FLOAT(m_sqr_mu); @@ -586,7 +626,7 @@ static inline int countpairs_s_mu_mocks_avx_intrinsics_DOUBLE(const int64_t N0, AVX_FLOATS m_mask_left; //Do the mask filters in a separate scope { - const AVX_FLOATS m_mask_mumax = AVX_COMPARE_FLOATS(m_sqr_mu,m_sqr_mumax,_CMP_LT_OQ); + const AVX_FLOATS m_mask_mumax = AVX_COMPARE_FLOATS(m_sqr_mu,m_sqr_mumax, _CMP_LT_OQ); const AVX_FLOATS m_smax_mask = AVX_COMPARE_FLOATS(m_sqr_s, m_sqr_smax, _CMP_LT_OQ); const AVX_FLOATS m_smin_mask = AVX_COMPARE_FLOATS(m_sqr_s, m_sqr_smin, _CMP_GE_OQ); const AVX_FLOATS m_s_mask = AVX_BITWISE_AND(m_smax_mask, m_smin_mask); @@ -596,7 +636,7 @@ static inline int countpairs_s_mu_mocks_avx_intrinsics_DOUBLE(const int64_t N0, continue; } m_sqr_s = AVX_BLEND_FLOATS_WITH_MASK(m_zero,m_sqr_s,m_mask_left); - m_sqr_mu = AVX_BLEND_FLOATS_WITH_MASK(m_sqr_mumax,m_sqr_mu,m_mask_left); + m_sqr_mu = AVX_BLEND_FLOATS_WITH_MASK(m_sqr_mumax,m_sqr_mu,m_mask_left); } if(need_savg || bin_type == BIN_LIN) { @@ -639,6 +679,7 @@ static inline int countpairs_s_mu_mocks_avx_intrinsics_DOUBLE(const int64_t N0, const AVX_FLOATS m_nmu_bins_p1 = AVX_ADD_FLOATS(m_nmu_bins,m_one); const AVX_FLOATS m_binproduct = AVX_ADD_FLOATS(AVX_MULTIPLY_FLOATS(m_sbin,m_nmu_bins_p1),m_mubin); union_finalbin.m_ibin = AVX_TRUNCATE_FLOAT_TO_INT(m_binproduct); + if(need_savg && need_weightavg) union_msep.m_Dperp = AVX_MULTIPLY_FLOATS(union_msep.m_Dperp, union_mweight.m_weights); #if __INTEL_COMPILER #pragma unroll(AVX_NVEC) @@ -659,6 +700,13 @@ static inline int countpairs_s_mu_mocks_avx_intrinsics_DOUBLE(const int64_t N0, //Take care of the remainder for(;j 0. ? sqr_s_dot_l/(sqr_l * sqr_s) : 0.; const int mubin = (sqr_mu >= sqr_mumax) ? nmu_bins:(int) (SQRT(sqr_mu)*inv_dmu); DOUBLE s = ZERO, pairweight = ZERO; if(need_savg || bin_type == BIN_LIN) { @@ -721,6 +770,7 @@ static inline int countpairs_s_mu_mocks_avx_intrinsics_DOUBLE(const int64_t N0, const int ibin = kbin*(nmu_bins+1) + mubin; npairs[ibin]++; if(need_savg) { + if(need_weightavg) s *= pairweight; savg[ibin] += s; } if(need_weightavg){ @@ -758,7 +808,8 @@ static inline int countpairs_s_mu_mocks_sse_intrinsics_DOUBLE(const int64_t N0, const DOUBLE closest_icell_xpos, const DOUBLE closest_icell_ypos, const DOUBLE closest_icell_zpos, DOUBLE *src_savg, uint64_t *src_npairs, - DOUBLE *src_weightavg, const weight_method_t weight_method, const bin_type_t bin_type) + DOUBLE *src_weightavg, const weight_method_t weight_method, const pair_weight_struct pair_weight, + const bin_type_t bin_type) { if(N0 == 0 || N1 == 0) { return EXIT_SUCCESS; @@ -769,6 +820,7 @@ static inline int countpairs_s_mu_mocks_sse_intrinsics_DOUBLE(const int64_t N0, const int32_t need_savg = src_savg != NULL; const int32_t need_weightavg = src_weightavg != NULL; + int32_t need_costheta = need_weightavg; const DOUBLE sqr_smin=smin*smin, sqr_smax=smax*smax; DOUBLE inv_sstep=0., smin_invstep=0.; SSE_FLOATS m_inv_sstep = SSE_SETZERO_FLOAT(); @@ -817,11 +869,18 @@ static inline int countpairs_s_mu_mocks_sse_intrinsics_DOUBLE(const int64_t N0, local_w0 = *weights0; local_w1 = *weights1; - pair.num_weights = local_w0.num_weights; - + set_pair_struct_DOUBLE(&pair, &local_w0, &local_w1, &pair_weight); + need_costheta = pair_weight.num; sse_weight_func = get_sse_weight_func_by_method_DOUBLE(weight_method); fallback_weight_func = get_weight_func_by_method_DOUBLE(weight_method); } + DOUBLE *norm1 = NULL; + if (need_costheta) { + norm1 = (DOUBLE *) my_malloc(N1,sizeof(DOUBLE)); + for(int64_t i=0;i=1;kbin--) { - const SSE_FLOATS m_mask_low = SSE_COMPARE_FLOATS_GE(m_sqr_s,m_supp_sqr[kbin-1]); - const SSE_FLOATS m_bin_mask = SSE_BITWISE_AND(m_mask_low,m_mask_left); - m_sbin = SSE_BLEND_FLOATS_WITH_MASK(m_sbin,m_kbin[kbin], m_bin_mask); + const SSE_FLOATS m_mask_low = SSE_COMPARE_FLOATS_GE(m_sqr_s, m_supp_sqr[kbin-1]); + const SSE_FLOATS m_bin_mask = SSE_BITWISE_AND(m_mask_low, m_mask_left); + m_sbin = SSE_BLEND_FLOATS_WITH_MASK(m_sbin, m_kbin[kbin], m_bin_mask); m_mask_left = SSE_COMPARE_FLOATS_LT(m_sqr_s, m_supp_sqr[kbin-1]); if(SSE_TEST_COMPARISON(m_mask_left) == 0) { break; @@ -1032,6 +1099,7 @@ static inline int countpairs_s_mu_mocks_sse_intrinsics_DOUBLE(const int64_t N0, const SSE_FLOATS m_nmu_bins_p1 = SSE_ADD_FLOATS(m_nmu_bins,m_one); const SSE_FLOATS m_binproduct = SSE_ADD_FLOATS(SSE_MULTIPLY_FLOATS(m_sbin,m_nmu_bins_p1),m_mubin); union_finalbin.m_ibin = SSE_TRUNCATE_FLOAT_TO_INT(m_binproduct); + if(need_savg && need_weightavg) union_msep.m_Dperp = SSE_MULTIPLY_FLOATS(union_msep.m_Dperp, union_mweight.m_weights); #if __INTEL_COMPILER #pragma unroll(SSE_NVEC) @@ -1052,6 +1120,13 @@ static inline int countpairs_s_mu_mocks_sse_intrinsics_DOUBLE(const int64_t N0, //Take care of the remainder for(;j 0. ? sqr_s_dot_l/(sqr_l * sqr_s) : 0.; const int mubin = (sqr_mu >= sqr_mumax) ? nmu_bins:(int) (SQRT(sqr_mu)*inv_dmu); DOUBLE s = ZERO, pairweight = ZERO; if(need_savg || bin_type == BIN_LIN) { @@ -1104,6 +1180,7 @@ static inline int countpairs_s_mu_mocks_sse_intrinsics_DOUBLE(const int64_t N0, const int ibin = kbin*(nmu_bins+1) + mubin; npairs[ibin]++; if(need_savg) { + if(need_weightavg) s *= pairweight; savg[ibin] += s; } if(need_weightavg){ @@ -1138,7 +1215,8 @@ static inline int countpairs_s_mu_mocks_fallback_DOUBLE(const int64_t N0, DOUBLE const DOUBLE closest_icell_xpos, const DOUBLE closest_icell_ypos, const DOUBLE closest_icell_zpos, DOUBLE *src_savg, uint64_t *src_npairs, - DOUBLE *src_weightavg, const weight_method_t weight_method, const bin_type_t bin_type) + DOUBLE *src_weightavg, const weight_method_t weight_method, const pair_weight_struct pair_weight, + const bin_type_t bin_type) { if(N0 == 0 || N1 == 0) { return EXIT_SUCCESS; @@ -1151,6 +1229,7 @@ static inline int countpairs_s_mu_mocks_fallback_DOUBLE(const int64_t N0, DOUBLE (void) fast_divide_and_NR_steps;//unused parameter but required to keep the same function signature amongst the kernels const int32_t need_savg = src_savg != NULL; const int32_t need_weightavg = src_weightavg != NULL; + int32_t need_costheta = need_weightavg; const DOUBLE sqr_smin=smin*smin, sqr_smax=smax*smax; DOUBLE inv_sstep=0., smin_invstep=0.; if (bin_type == BIN_LIN) { @@ -1184,9 +1263,18 @@ static inline int countpairs_s_mu_mocks_fallback_DOUBLE(const int64_t N0, DOUBLE // Same particle list, new copy of num_weights pointers into that list local_w0 = *weights0; local_w1 = *weights1; - pair.num_weights = local_w0.num_weights; + + set_pair_struct_DOUBLE(&pair, &local_w0, &local_w1, &pair_weight); + need_costheta = pair_weight.num; weight_func = get_weight_func_by_method_DOUBLE(weight_method); } + DOUBLE *norm1 = NULL; + if (need_costheta) { + norm1 = (DOUBLE *) my_malloc(N1,sizeof(DOUBLE)); + for(int64_t i=0;i 0. ? sqr_s_dot_l/(sqr_l * sqr_s) : 0.; const int mubin = (sqr_mu >= sqr_mumax) ? nmu_bins:(int) (SQRT(sqr_mu)*inv_dmu); DOUBLE s = ZERO, pairweight = ZERO; if(need_savg || bin_type == BIN_LIN) { @@ -1319,6 +1416,7 @@ static inline int countpairs_s_mu_mocks_fallback_DOUBLE(const int64_t N0, DOUBLE const int ibin = kbin*(nmu_bins+1) + mubin; npairs[ibin]++; if(need_savg) { + if(need_weightavg) s *= pairweight; savg[ibin] += s; } if(need_weightavg){ diff --git a/mocks/DDtheta_mocks/DDtheta_mocks.c b/mocks/DDtheta_mocks/DDtheta_mocks.c index c889f55b..69ca856b 100644 --- a/mocks/DDtheta_mocks/DDtheta_mocks.c +++ b/mocks/DDtheta_mocks/DDtheta_mocks.c @@ -47,20 +47,20 @@ int main(int argc, char **argv) char *binfile=NULL; char *weight_method_str=NULL; int nthreads=1; - + weight_method_t weight_method = NONE; int num_weights = 0; - + #if defined(_OPENMP) const char argnames[][30]={"file1","format1","file2","format2","binfile","Nthreads"}; #else const char argnames[][30]={"file1","format1","file2","format2","binfile"}; #endif const char optargnames[][30]={"weight_method", "weights_file1","weights_format1","weights_file2","weights_format2"}; - + int nargs=sizeof(argnames)/(sizeof(char)*30); int noptargs=sizeof(optargnames)/(sizeof(char)*30); - + struct timeval tstart,t0,t1; double pair_time=0,read_time=0.0; @@ -89,7 +89,7 @@ int main(int argc, char **argv) fprintf(stderr,"\t\t %s = `?'\n",argnames[i-1]); return EXIT_FAILURE; } - + /* Validate optional arguments */ int noptargs_given = argc - (nargs + 1); if(noptargs_given != 0 && noptargs_given != 3 && noptargs_given != 5){ @@ -104,7 +104,7 @@ int main(int argc, char **argv) } return EXIT_FAILURE; } - + file1=argv[1]; fileformat1=argv[2]; file2=argv[3]; @@ -126,7 +126,7 @@ int main(int argc, char **argv) return EXIT_FAILURE; } num_weights = get_num_weights_by_method(weight_method); - + weights_file1 = argv[nargs + 2]; weights_fileformat1 = argv[nargs + 3]; } @@ -159,19 +159,21 @@ int main(int argc, char **argv) gettimeofday(&t1,NULL); read_time += ADD_DIFF_TIME(t0,t1); fprintf(stderr,"DDtheta_mocks> Read in %"PRId64" particles from file `%s'\n",ND1,file1); - + /* Read weights file 1 */ if(weights_file1 != NULL){ gettimeofday(&t0,NULL); int64_t wND1 = read_columns_into_array(weights_file1,weights_fileformat1, sizeof(DOUBLE), num_weights, (void **) weights1); gettimeofday(&t1,NULL); read_time += ADD_DIFF_TIME(t0,t1); - + if(wND1 != ND1){ fprintf(stderr, "Error: read %"PRId64" lines from %s, but read %"PRId64" from %s\n", wND1, weights_file1, ND1, file1); return EXIT_FAILURE; } } + binarray bins; + read_binfile(binfile, &bins); /*---Read-data2-file----------------------------------*/ if(autocorr==0) { @@ -180,7 +182,7 @@ int main(int argc, char **argv) gettimeofday(&t1,NULL); read_time += ADD_DIFF_TIME(t0,t1); fprintf(stderr,"DDtheta_mocks> Read in %"PRId64" particles from file `%s'\n",ND2,file2); - + if(weights_file2 != NULL){ gettimeofday(&t0,NULL); int64_t wND2 = read_columns_into_array(weights_file2,weights_fileformat2, sizeof(DOUBLE), num_weights, (void **) weights2); @@ -204,20 +206,20 @@ int main(int argc, char **argv) /*---Count-pairs--------------------------------------*/ gettimeofday(&t0,NULL); results_countpairs_theta results; - + /* Pack weights into extra options */ struct extra_options extra = get_extra_options(weight_method); for(int w = 0; w < num_weights; w++){ extra.weights0.weights[w] = (void *) weights1[w]; extra.weights1.weights[w] = (void *) weights2[w]; } - + struct config_options options = get_config_options(); int status = countpairs_theta_mocks(ND1,phiD1,thetaD1, ND2,phiD2,thetaD2, nthreads, autocorr, - binfile, + &bins, &results, &options, &extra); @@ -234,10 +236,13 @@ int main(int argc, char **argv) free(weights2[w]); } } + + free_binarray(&bins); + if(status != EXIT_SUCCESS) { return status; } - + /*---Output-Pairs-------------------------------------*/ DOUBLE theta_low = results.theta_upp[0]; for(int i=1;i Thetafile\n") ; #else fprintf(stderr," --- DDtheta file1 format1 file2 format2 binfile [weight_method weights_file1 weights_format1 [weights_file2 weights_format2]] > Thetafile\n") ; -#endif +#endif fprintf(stderr," --- Measure the cross-correlation function w(theta) for two different\n") ; fprintf(stderr," data files (or autocorrelation if data1=data2).\n") ; fprintf(stderr," * file1 = name of first data file\n") ; @@ -302,7 +307,7 @@ void Printhelp(void) fprintf(stderr,"Linking in declination = True\n"); #else fprintf(stderr,"Linking in declination = False\n"); -#endif +#endif #ifdef LINK_IN_DEC //RA linking only works when dec linking is enabled @@ -319,9 +324,9 @@ void Printhelp(void) fprintf(stderr,"Fast (approx) arc-cosine = True\n"); #else fprintf(stderr,"Fast (approx) arc-cosine = False\n"); -#endif//fast acos -#endif//thetaavg - +#endif//fast acos +#endif//thetaavg + #ifdef DOUBLE_PREC fprintf(stderr,"Precision = double\n"); #else diff --git a/mocks/DDtheta_mocks/countpairs_theta_mocks.c b/mocks/DDtheta_mocks/countpairs_theta_mocks.c index 20407b13..d1834194 100644 --- a/mocks/DDtheta_mocks/countpairs_theta_mocks.c +++ b/mocks/DDtheta_mocks/countpairs_theta_mocks.c @@ -33,7 +33,7 @@ int countpairs_theta_mocks(const int64_t ND1, void *phi1, void *theta1, const int64_t ND2, void *phi2, void *theta2, const int numthreads, const int autocorr, - const char *binfile, + binarray *bins, results_countpairs_theta *results, struct config_options *options, struct extra_options *extra) { @@ -53,7 +53,7 @@ int countpairs_theta_mocks(const int64_t ND1, void *phi1, void *theta1, ND2, (float *) phi2, (float *) theta2, numthreads, autocorr, - binfile, + bins, results, options, extra); @@ -62,7 +62,7 @@ int countpairs_theta_mocks(const int64_t ND1, void *phi1, void *theta1, ND2, (double *) phi2, (double *) theta2, numthreads, autocorr, - binfile, + bins, results, options, extra); diff --git a/mocks/DDtheta_mocks/countpairs_theta_mocks.h b/mocks/DDtheta_mocks/countpairs_theta_mocks.h index c51e7c33..8ca20d9f 100644 --- a/mocks/DDtheta_mocks/countpairs_theta_mocks.h +++ b/mocks/DDtheta_mocks/countpairs_theta_mocks.h @@ -28,10 +28,10 @@ extern "C" { const int64_t ND2, void *phi2, void *theta2, const int numthreads, const int autocorr, - const char *binfile, + binarray *bins, results_countpairs_theta *results, struct config_options *options, struct extra_options *extra); - + extern void free_results_countpairs_theta(results_countpairs_theta *results); #ifdef __cplusplus diff --git a/mocks/DDtheta_mocks/countpairs_theta_mocks_impl.c.src b/mocks/DDtheta_mocks/countpairs_theta_mocks_impl.c.src index 9ff0db7d..fa23ec01 100644 --- a/mocks/DDtheta_mocks/countpairs_theta_mocks_impl.c.src +++ b/mocks/DDtheta_mocks/countpairs_theta_mocks_impl.c.src @@ -184,7 +184,7 @@ static inline int countpairs_theta_mocks_brute_force_DOUBLE(const int64_t N0, DO const int64_t N1, DOUBLE *x1, DOUBLE *y1, DOUBLE *z1, const int numthreads, const DOUBLE thetamax, const DOUBLE thetamin, const int nthetabin, - const DOUBLE *theta_upp, + const double *theta_upp, const DOUBLE *costheta_upp, results_countpairs_theta *results, struct config_options *options, @@ -336,8 +336,10 @@ static inline int countpairs_theta_mocks_brute_force_DOUBLE(const int64_t N0, DO // Make thread-local copies of the weights structs so we can // advance the pointers - weight_struct_DOUBLE this_weights0 = {.num_weights = extra->weights0.num_weights}; - weight_struct_DOUBLE this_weights1 = {.num_weights = extra->weights1.num_weights}; + weight_struct_DOUBLE this_weights0 = {.num_weights = extra->weights0.num_weights, + .num_integer_weights = extra->weights0.num_integer_weights}; + weight_struct_DOUBLE this_weights1 = {.num_weights = extra->weights1.num_weights, + .num_integer_weights = extra->weights1.num_integer_weights}; for(int w = 0; w < this_weights0.num_weights; w++){ this_weights0.weights[w] = (DOUBLE *) extra->weights0.weights[w] + i; this_weights1.weights[w] = (DOUBLE *) extra->weights1.weights[w] + j; @@ -352,7 +354,7 @@ static inline int countpairs_theta_mocks_brute_force_DOUBLE(const int64_t N0, DO ZERO, ZERO, ZERO, /* min xyz diff */ ZERO, ZERO, ZERO, /* closest xyz positions */ this_thetaavg, npairs, - this_weightavg, extra->weight_method, options->bin_type); + this_weightavg, extra->weight_method, extra->pair_weight, options->bin_type); abort_status |= status; } //N1 loop } //abort_status condition @@ -410,7 +412,7 @@ static inline int countpairs_theta_mocks_brute_force_DOUBLE(const int64_t N0, DO for(int i=1;i 0) { if(options->need_avg_sep) { - thetaavg[i] /= (DOUBLE) npairs[i] ; + thetaavg[i] /= need_weightavg ? weightavg[i] : (DOUBLE) npairs[i]; } if(need_weightavg) { weightavg[i] /= (DOUBLE) npairs[i]; @@ -457,7 +459,7 @@ int countpairs_theta_mocks_DOUBLE(const int64_t ND1, DOUBLE *ra1, DOUBLE *dec1, const int64_t ND2, DOUBLE *ra2, DOUBLE *dec2, const int numthreads, const int autocorr, - const char *binfile, + binarray *bins, results_countpairs_theta *results, struct config_options *options, struct extra_options *extra) { @@ -511,7 +513,7 @@ int countpairs_theta_mocks_DOUBLE(const int64_t ND1, DOUBLE *ra1, DOUBLE *dec1, } } - if(autocorr==0) { + if(autocorr == 0) { int status = check_ra_dec_DOUBLE(ND2, ra2, dec2); if(status != EXIT_SUCCESS) { return status; @@ -528,23 +530,22 @@ int countpairs_theta_mocks_DOUBLE(const int64_t ND1, DOUBLE *ra1, DOUBLE *dec1, Let's Ctrl-C abort the extension */ SETUP_INTERRUPT_HANDLERS(interrupt_handler_wtheta_mocks_DOUBLE); - DOUBLE *theta_upp; - int nthetabin; - DOUBLE thetamin,thetamax; - setup_bins_DOUBLE(binfile,&thetamin,&thetamax,&nthetabin,&theta_upp); + double *theta_upp = bins->edges; + int nthetabin = bins->nedges; + double thetamin=bins->edges[0], thetamax=bins->edges[bins->nedges-1]; if( ! (thetamin >= 0.0 && thetamax > 0.0 && thetamin < thetamax && thetamax <= 180.0 && nthetabin >= 1) ) { - fprintf(stderr,"Error: Could not setup with theta bins correctly. (thetamin = %lf, thetamax = %lf, with nbins = %d). Expected non-zero rmin/rmax with thetamax > " + fprintf(stderr,"Error: Could not setup with theta bins correctly. (thetamin = %lf, thetamax = %lf, with nbins = %d). Expected positive rmin/rmax with thetamax > " "thetamin and nbins >=1 \n",thetamin, thetamax, nthetabin); return EXIT_FAILURE; } - detect_bin_type_DOUBLE(theta_upp, nthetabin, &(options->bin_type), options->verbose); + detect_bin_type(bins, &(options->bin_type), options->verbose); #if defined(_OPENMP) if((options->link_in_ra == 0) && (options->bin_refine_factors[1] < numthreads) && (get_bin_refine_scheme(options) == BINNING_DFL)) { - options->bin_refine_factors[1]=numthreads; + options->bin_refine_factors[1] = numthreads; } #endif @@ -660,7 +661,6 @@ int countpairs_theta_mocks_DOUBLE(const int64_t ND1, DOUBLE *ra1, DOUBLE *dec1, free(extra->weights1.weights[w]); } } - free(theta_upp); // Free the temporary weights copy and restore the original pointers for(int64_t w = 0; w < extra->weights0.num_weights; w++){ @@ -894,7 +894,6 @@ int countpairs_theta_mocks_DOUBLE(const int64_t ND1, DOUBLE *ra1, DOUBLE *dec1, free(extra->weights1.weights[w]); } } - free(theta_upp); // Free the temporary weights copy and restore the original pointers for(int64_t w = 0; w < extra->weights0.num_weights; w++){ @@ -926,7 +925,6 @@ int countpairs_theta_mocks_DOUBLE(const int64_t ND1, DOUBLE *ra1, DOUBLE *dec1, /* runtime dispatch - get the function pointer */ countpairs_theta_mocks_func_ptr_DOUBLE countpairs_theta_mocks_function_DOUBLE = countpairs_theta_mocks_driver_DOUBLE(options); if(countpairs_theta_mocks_function_DOUBLE == NULL) { - free(theta_upp); free_cellarray_mocks_DOUBLE(lattice1,totncells); if(autocorr==0) { free_cellarray_mocks_DOUBLE(lattice2,totncells); @@ -1024,7 +1022,7 @@ int countpairs_theta_mocks_DOUBLE(const int64_t ND1, DOUBLE *ra1, DOUBLE *dec1, this_cell_pair->min_dx, this_cell_pair->min_dy, this_cell_pair->min_dz, this_cell_pair->closest_x1, this_cell_pair->closest_y1, this_cell_pair->closest_z1, this_thetaavg, npairs, - this_weightavg, extra->weight_method, options->bin_type); + this_weightavg, extra->weight_method, extra->pair_weight, options->bin_type); /* This actually causes a race condition under OpenMP - but mostly I care that an error occurred - rather than the exact value of @@ -1072,7 +1070,6 @@ int countpairs_theta_mocks_DOUBLE(const int64_t ND1, DOUBLE *ra1, DOUBLE *dec1, if(abort_status != EXIT_SUCCESS || interrupt_status_wtheta_mocks_DOUBLE != EXIT_SUCCESS) { /* Cleanup memory here if aborting */ - free(theta_upp); #if defined(_OPENMP) matrix_free((void **) all_npairs, numthreads); if(options->need_avg_sep) { @@ -1151,10 +1148,9 @@ int countpairs_theta_mocks_DOUBLE(const int64_t ND1, DOUBLE *ra1, DOUBLE *dec1, // The self-pairs have non-zero weight, though. So, fix that here. if(need_weightavg){ // Keep in mind this is an autocorrelation (i.e. only one particle set to consider) + pair_struct_DOUBLE pair; + set_pair_struct_DOUBLE(&pair, (weight_struct_DOUBLE *) &(extra->weights0), (weight_struct_DOUBLE *) &(extra->weights0), &(extra->pair_weight)); weight_func_t_DOUBLE weight_func = get_weight_func_by_method_DOUBLE(extra->weight_method); - pair_struct_DOUBLE pair = {.num_weights = extra->weights0.num_weights, - .dx.d=0., .dy.d=0., .dz.d=0., // always 0 separation - .parx.d=0., .pary.d=0., .parz.d=0.}; for(int64_t j = 0; j < ND1; j++){ for(int w = 0; w < pair.num_weights; w++){ pair.weights0[w].d = ((DOUBLE *) extra->weights0.weights[w])[j]; @@ -1169,7 +1165,7 @@ int countpairs_theta_mocks_DOUBLE(const int64_t ND1, DOUBLE *ra1, DOUBLE *dec1, for(int i=1;i 0) { if(options->need_avg_sep) { - thetaavg[i] /= (DOUBLE) npairs[i] ; + thetaavg[i] /= need_weightavg ? weightavg[i] : (DOUBLE) npairs[i]; } if(need_weightavg) { weightavg[i] /= (DOUBLE) npairs[i]; @@ -1187,7 +1183,6 @@ int countpairs_theta_mocks_DOUBLE(const int64_t ND1, DOUBLE *ra1, DOUBLE *dec1, if(results->npairs == NULL || results->theta_upp == NULL || results->theta_avg == NULL || results->weightavg == NULL) { fprintf(stderr,"Error: Could not allocate memory for %d nbins to hold the results of the pair-counting\n", nthetabin); free_results_countpairs_theta(results); - free(theta_upp); return EXIT_FAILURE; } @@ -1203,7 +1198,6 @@ int countpairs_theta_mocks_DOUBLE(const int64_t ND1, DOUBLE *ra1, DOUBLE *dec1, results->weightavg[i] = weightavg[i]; } } - free(theta_upp); /* reset interrupt handlers to default */ RESET_INTERRUPT_HANDLERS(); diff --git a/mocks/DDtheta_mocks/countpairs_theta_mocks_impl.h.src b/mocks/DDtheta_mocks/countpairs_theta_mocks_impl.h.src index ff822c9f..5c452c52 100644 --- a/mocks/DDtheta_mocks/countpairs_theta_mocks_impl.h.src +++ b/mocks/DDtheta_mocks/countpairs_theta_mocks_impl.h.src @@ -32,7 +32,8 @@ typedef int (*countpairs_theta_mocks_func_ptr_DOUBLE)(const int64_t N0, DOUBLE * const DOUBLE min_zdiff, const DOUBLE closest_icell_xpos, const DOUBLE closest_icell_ypos, const DOUBLE closest_icell_zpos, DOUBLE *src_rpavg, uint64_t *src_npairs, - DOUBLE *src_weightavg, const weight_method_t weight_method, const bin_type_t bin_type); + DOUBLE *src_weightavg, const weight_method_t weight_method, const pair_weight_struct pair_weight, + const bin_type_t bin_type); extern countpairs_theta_mocks_func_ptr_DOUBLE countpairs_theta_mocks_driver_DOUBLE(const struct config_options *options) __attribute__((warn_unused_result)); @@ -40,7 +41,7 @@ extern int countpairs_theta_mocks_DOUBLE(const int64_t ND1, DOUBLE *phi1, DOUBLE const int64_t ND2, DOUBLE *phi2, DOUBLE *theta2, const int numthreads, const int autocorr, - const char *binfile, + binarray *bins, results_countpairs_theta *results, struct config_options *options, struct extra_options *extra); diff --git a/mocks/DDtheta_mocks/countpairs_theta_mocks_kernels.c.src b/mocks/DDtheta_mocks/countpairs_theta_mocks_kernels.c.src index 58c94c17..a2bfa7d6 100644 --- a/mocks/DDtheta_mocks/countpairs_theta_mocks_kernels.c.src +++ b/mocks/DDtheta_mocks/countpairs_theta_mocks_kernels.c.src @@ -32,7 +32,8 @@ static inline int countpairs_theta_mocks_fallback_DOUBLE(const int64_t N0, DOUBL const DOUBLE min_zdiff, const DOUBLE closest_icell_xpos, const DOUBLE closest_icell_ypos, const DOUBLE closest_icell_zpos, DOUBLE *src_rpavg, uint64_t *src_npairs, - DOUBLE *src_weightavg, const weight_method_t weight_method, const bin_type_t bin_type) + DOUBLE *src_weightavg, const weight_method_t weight_method, const pair_weight_struct pair_weight, + const bin_type_t bin_type) { if(N0 == 0 || N1 == 0) { return EXIT_SUCCESS; @@ -70,7 +71,7 @@ static inline int countpairs_theta_mocks_fallback_DOUBLE(const int64_t N0, DOUBL thetaavg[i] = ZERO; } if(need_weightavg){ - weightavg[i]=ZERO; + weightavg[i] = ZERO; } } @@ -83,8 +84,7 @@ static inline int countpairs_theta_mocks_fallback_DOUBLE(const int64_t N0, DOUBL local_w0 = *weights0; local_w1 = *weights1; - pair.num_weights = local_w0.num_weights; - + set_pair_struct_DOUBLE(&pair, &local_w0, &local_w1, &pair_weight); weight_func = get_weight_func_by_method_DOUBLE(weight_method); } @@ -197,7 +197,7 @@ static inline int countpairs_theta_mocks_fallback_DOUBLE(const int64_t N0, DOUBL if(costheta > costhetamin || costheta <= costhetamax) continue; - if(need_rpavg || bin_type == BIN_LIN) { + if (need_rpavg || bin_type == BIN_LIN) { if(order) { theta = INV_PI_OVER_180*FAST_ACOS(costheta); } else { @@ -218,6 +218,8 @@ static inline int countpairs_theta_mocks_fallback_DOUBLE(const int64_t N0, DOUBL pair.pary.d = y2 + ypos; pair.parz.d = z2 + zpos; + pair.costheta.d = costheta; + pairweight = weight_func(&pair); } @@ -234,6 +236,7 @@ static inline int countpairs_theta_mocks_fallback_DOUBLE(const int64_t N0, DOUBL } npairs[ibin]++; if(need_rpavg) { + if(need_weightavg) theta *= pairweight; thetaavg[ibin] += theta; } if(need_weightavg){ @@ -271,7 +274,8 @@ static inline int countpairs_theta_mocks_sse_intrinsics_DOUBLE(const int64_t N0, const DOUBLE min_zdiff, const DOUBLE closest_icell_xpos, const DOUBLE closest_icell_ypos, const DOUBLE closest_icell_zpos, DOUBLE *src_rpavg, uint64_t *src_npairs, - DOUBLE *src_weightavg, const weight_method_t weight_method, const bin_type_t bin_type) + DOUBLE *src_weightavg, const weight_method_t weight_method, const pair_weight_struct pair_weight, + const bin_type_t bin_type) { if(N0 == 0 || N1 == 0) { return EXIT_SUCCESS; @@ -291,7 +295,7 @@ static inline int countpairs_theta_mocks_sse_intrinsics_DOUBLE(const int64_t N0, min_xdiff, min_ydiff, min_zdiff, closest_icell_xpos, closest_icell_ypos, closest_icell_zpos, - src_rpavg, src_npairs, src_weightavg, weight_method, bin_type); + src_rpavg, src_npairs, src_weightavg, weight_method, pair_weight, bin_type); } const int32_t need_rpavg = src_rpavg != NULL; @@ -325,7 +329,7 @@ static inline int countpairs_theta_mocks_sse_intrinsics_DOUBLE(const int64_t N0, } SSE_FLOATS m_kbin[nthetabin]; - if(need_rpavg || need_weightavg) { + if (need_rpavg || need_weightavg) { for(int i=0;i=nthetabin) printf("LOOOOLI %d\n", ibin); npairs[ibin]++; if(need_rpavg) { + if(need_weightavg) theta *= pairweight; thetaavg[ibin] += theta; } if(need_weightavg){ @@ -634,7 +642,8 @@ static inline int countpairs_theta_mocks_avx_intrinsics_DOUBLE(const int64_t N0, const DOUBLE min_zdiff, const DOUBLE closest_icell_xpos, const DOUBLE closest_icell_ypos, const DOUBLE closest_icell_zpos, DOUBLE *src_rpavg, uint64_t *src_npairs, - DOUBLE *src_weightavg, const weight_method_t weight_method, const bin_type_t bin_type) + DOUBLE *src_weightavg, const weight_method_t weight_method, const pair_weight_struct pair_weight, + const bin_type_t bin_type) { if(N0 == 0 || N1 == 0) { return EXIT_SUCCESS; @@ -653,7 +662,7 @@ static inline int countpairs_theta_mocks_avx_intrinsics_DOUBLE(const int64_t N0, min_xdiff, min_ydiff, min_zdiff, closest_icell_xpos, closest_icell_ypos, closest_icell_zpos, - src_rpavg, src_npairs, src_weightavg, weight_method, bin_type); + src_rpavg, src_npairs, src_weightavg, weight_method, pair_weight, bin_type); } @@ -705,8 +714,7 @@ static inline int countpairs_theta_mocks_avx_intrinsics_DOUBLE(const int64_t N0, local_w0 = *weights0; local_w1 = *weights1; - pair.num_weights = local_w0.num_weights; - + set_pair_struct_DOUBLE(&pair, &local_w0, &local_w1, &pair_weight); avx_weight_func = get_avx_weight_func_by_method_DOUBLE(weight_method); fallback_weight_func = get_weight_func_by_method_DOUBLE(weight_method); } @@ -832,11 +840,8 @@ static inline int countpairs_theta_mocks_avx_intrinsics_DOUBLE(const int64_t N0, continue; } - AVX_FLOATS m_thetabin; - if(need_rpavg || need_weightavg) { - m_thetabin = AVX_SETZERO_FLOAT(); - } - if(need_rpavg|| bin_type == BIN_LIN){ + AVX_FLOATS m_thetabin = AVX_SETZERO_FLOAT(); + if (need_rpavg || bin_type == BIN_LIN){ //first do the acos to get the actual angles const AVX_FLOATS m_inv_pi_over_180 = AVX_SET_FLOAT(INV_PI_OVER_180); const AVX_FLOATS m_theta = AVX_ARC_COSINE(m_costheta, order); @@ -857,7 +862,9 @@ static inline int countpairs_theta_mocks_avx_intrinsics_DOUBLE(const int64_t N0, pair.pary.a = AVX_ADD_FLOATS(m_y2,m_y1); pair.parz.a = AVX_ADD_FLOATS(m_z2,m_z1); - union_mweight.m_weights = avx_weight_func(&pair); + pair.costheta.a = m_costheta; + + union_mweight.m_weights = avx_weight_func(&pair); } if (bin_type == BIN_LIN) { @@ -870,7 +877,7 @@ static inline int countpairs_theta_mocks_avx_intrinsics_DOUBLE(const int64_t N0, const AVX_FLOATS m1 = AVX_COMPARE_FLOATS(m_costheta,m_costheta_upp[kbin-1],_CMP_LE_OS); const AVX_FLOATS m_bin_mask = AVX_BITWISE_AND(m1,m_mask_left); const int test = AVX_TEST_COMPARISON(m_bin_mask); - if(need_rpavg || need_weightavg) { + if (need_rpavg || need_weightavg) { m_thetabin = AVX_BLEND_FLOATS_WITH_MASK(m_thetabin,m_kbin[kbin], m_bin_mask); } @@ -881,7 +888,8 @@ static inline int countpairs_theta_mocks_avx_intrinsics_DOUBLE(const int64_t N0, } } } - if(need_rpavg || need_weightavg || bin_type == BIN_LIN) { + if (need_rpavg && need_weightavg) union_mDperp.m_Dperp = AVX_MULTIPLY_FLOATS(union_mDperp.m_Dperp, union_mweight.m_weights); + if (need_rpavg || need_weightavg || bin_type == BIN_LIN) { union_rpbin.m_ibin = AVX_TRUNCATE_FLOAT_TO_INT(m_thetabin); #if __INTEL_COMPILER #pragma unroll(AVX_NVEC) @@ -921,11 +929,12 @@ static inline int countpairs_theta_mocks_avx_intrinsics_DOUBLE(const int64_t N0, continue; } DOUBLE theta = ZERO, pairweight = ZERO; + if(need_rpavg) { if(order) { - theta = INV_PI_OVER_180*FAST_ACOS(costheta) ; + theta = INV_PI_OVER_180*FAST_ACOS(costheta); } else { - theta = INV_PI_OVER_180*ACOS(costheta) ; + theta = INV_PI_OVER_180*ACOS(costheta); } } if(need_weightavg){ @@ -937,6 +946,8 @@ static inline int countpairs_theta_mocks_avx_intrinsics_DOUBLE(const int64_t N0, pair.pary.d = (ypos + dy) + ypos; pair.parz.d = (zpos + dz) + zpos; + pair.costheta.d = costheta; + pairweight = fallback_weight_func(&pair); } @@ -953,6 +964,7 @@ static inline int countpairs_theta_mocks_avx_intrinsics_DOUBLE(const int64_t N0, } npairs[ibin]++; if(need_rpavg) { + if(need_weightavg) theta *= pairweight; thetaavg[ibin] += theta; } if(need_weightavg){ @@ -990,7 +1002,8 @@ static inline int countpairs_theta_mocks_avx512_intrinsics_DOUBLE(const int64_t const DOUBLE min_zdiff, const DOUBLE closest_icell_xpos, const DOUBLE closest_icell_ypos, const DOUBLE closest_icell_zpos, DOUBLE *src_rpavg, uint64_t *src_npairs, - DOUBLE *src_weightavg, const weight_method_t weight_method, const bin_type_t bin_type) + DOUBLE *src_weightavg, const weight_method_t weight_method, const pair_weight_struct pair_weight, + const bin_type_t bin_type) { if(N0 == 0 || N1 == 0) { return EXIT_SUCCESS; @@ -1036,7 +1049,7 @@ static inline int countpairs_theta_mocks_avx512_intrinsics_DOUBLE(const int64_t uint64_t npairs[nthetabin]; DOUBLE thetaavg[nthetabin], weightavg[nthetabin]; - if(need_rpavg || need_weightavg){ + if (need_rpavg || need_weightavg){ for(int i=0;i=1;kbin--) { const AVX512_MASK m_bin_mask = AVX512_MASK_COMPARE_FLOATS(m_mask_left, m_costheta,m_costheta_upp[kbin-1],_CMP_LE_OQ); npairs[kbin] += bits_set_in_avx512_mask_DOUBLE[m_bin_mask]; - if(need_rpavg || need_weightavg) { + if (need_rpavg || need_weightavg) { m_thetabin = AVX512_BLEND_INTS_WITH_MASK(m_bin_mask, m_thetabin, AVX512_SET_INT(kbin)); } m_mask_left = AVX512_MASK_BITWISE_AND_NOT(m_bin_mask, m_mask_left);//ANDNOT(X, Y) -> NOT X AND Y @@ -1233,7 +1248,8 @@ static inline int countpairs_theta_mocks_avx512_intrinsics_DOUBLE(const int64_t } }//backwards loop over the bins } - if(need_rpavg || need_weightavg || bin_type == BIN_LIN) { + if (need_rpavg && need_weightavg) union_mDperp.m_Dperp = AVX512_MASKZ_MULTIPLY_FLOATS(m_mask_left, union_mDperp.m_Dperp, union_mweight.m_weights); + if (need_rpavg || need_weightavg || bin_type == BIN_LIN) { union_rpbin.m_ibin = m_thetabin; #if __INTEL_COMPILER #pragma unroll(AVX512_NVEC) diff --git a/mocks/examples/run_correlations_mocks.c b/mocks/examples/run_correlations_mocks.c index 842569c2..931602cb 100644 --- a/mocks/examples/run_correlations_mocks.c +++ b/mocks/examples/run_correlations_mocks.c @@ -129,7 +129,8 @@ int main(int argc, char **argv) return status; } } - + binarray bins; + read_binfile(binfile, &bins); //Read-in the data const int64_t ND1 = read_positions(file,fileformat,sizeof(*ra1),3, &ra1, &dec1, &cz1); @@ -156,8 +157,9 @@ int main(int argc, char **argv) ND2,ra2,dec2,cz2, nthreads, autocorr, - binfile, + &bins, pimax, + (int) pimax, cosmology, &results, &options, NULL); @@ -203,7 +205,7 @@ int main(int argc, char **argv) ND2,ra2,dec2,cz2, nthreads, autocorr, - binfile, + &bins, mu_max, nmu_bins, cosmology, @@ -251,7 +253,7 @@ int main(int argc, char **argv) ND2,ra2,dec2, nthreads, autocorr, - binfile, + &bins, &results, &options, NULL); if(status != EXIT_SUCCESS) { @@ -327,5 +329,6 @@ int main(int argc, char **argv) free(ra1);free(dec1);free(cz1); + free_binarray(&bins); return EXIT_SUCCESS; } diff --git a/mocks/python_bindings/_countpairs_mocks.c b/mocks/python_bindings/_countpairs_mocks.c index 11234c86..096a5b42 100644 --- a/mocks/python_bindings/_countpairs_mocks.c +++ b/mocks/python_bindings/_countpairs_mocks.c @@ -898,12 +898,10 @@ static int print_kwlist_into_msg(char *msg, const size_t totsize, size_t len, ch // weights1_obj may be NULL, in which case it is ignored. // If it is not NULL, it will be checked alongside the positions -static int64_t check_dims_and_datatype(PyObject *module, PyArrayObject *x1_obj, PyArrayObject *y1_obj, PyArrayObject *z1_obj, PyArrayObject *weights1_obj, size_t *element_size) +static int64_t check_dims_and_datatype(PyObject *module, PyArrayObject *x1_obj, PyArrayObject *y1_obj, PyArrayObject *z1_obj, size_t *element_size) { char msg[1024]; - const int check_weights = weights1_obj != NULL; - /* All the position arrays should be 1-D*/ const int nxdims = PyArray_NDIM(x1_obj); const int nydims = PyArray_NDIM(y1_obj); @@ -916,59 +914,46 @@ static int64_t check_dims_and_datatype(PyObject *module, PyArrayObject *x1_obj, return -1; } - /* The weights array can be 1-D or 2-D of shape (n_weights, n_particles) */ - const int n_weight_dims = check_weights ? PyArray_NDIM(weights1_obj) : 2; - - if(n_weight_dims != 2) { - snprintf(msg, 1024, "ERROR: Expected 2-D weight array of shpae (n_weights_per_particle,n_particles).\nFound n_weight_dims = %d instead", n_weight_dims); - countpairs_mocks_error_out(module, msg); - return -1; - } - /* All the arrays should be floating point (only float32 and float64 are allowed) */ const int x_type = PyArray_TYPE(x1_obj); const int y_type = PyArray_TYPE(y1_obj); const int z_type = PyArray_TYPE(z1_obj); - const int weights_type = check_weights ? PyArray_TYPE(weights1_obj) : NPY_NOTYPE; if( ! ((x_type == NPY_FLOAT || x_type == NPY_DOUBLE) && (y_type == NPY_FLOAT || y_type == NPY_DOUBLE) && - (z_type == NPY_FLOAT || z_type == NPY_DOUBLE) && - (!check_weights || weights_type == NPY_FLOAT || weights_type == NPY_DOUBLE)) + (z_type == NPY_FLOAT || z_type == NPY_DOUBLE)) ) { PyArray_Descr *x_descr = PyArray_DescrFromType(x_type); PyArray_Descr *y_descr = PyArray_DescrFromType(y_type); PyArray_Descr *z_descr = PyArray_DescrFromType(z_type); - PyArray_Descr *weights_descr = PyArray_DescrFromType(weights_type); - if(x_descr == NULL || y_descr == NULL || z_descr == NULL || weights_descr == NULL) { + if(x_descr == NULL || y_descr == NULL || z_descr == NULL) { /* Generating the dtype descriptor failed somehow. At least provide some information */ - snprintf(msg, 1024, "TypeError: Expected floating point arrays (allowed types = %d or %d). Instead found type-nums (%d, %d, %d, %d)\n", - NPY_FLOAT, NPY_DOUBLE, x_type, y_type, z_type, weights_type); + snprintf(msg, 1024, "TypeError: Expected floating point arrays (allowed types = %d or %d). Instead found type-nums (%d, %d, %d)\n", + NPY_FLOAT, NPY_DOUBLE, x_type, y_type, z_type); } else { - snprintf(msg, 1024, "TypeError: Expected floating point arrays (allowed types = %d or %d). Instead found type-nums (%d, %d, %d, %d) " - "with type-names = (%s, %s, %s, %s)\n", - NPY_FLOAT, NPY_DOUBLE, x_type, y_type, z_type, weights_type, x_descr->typeobj->tp_name, y_descr->typeobj->tp_name, z_descr->typeobj->tp_name, weights_descr->typeobj->tp_name); + snprintf(msg, 1024, "TypeError: Expected floating point arrays (allowed types = %d or %d). Instead found type-nums (%d, %d, %d) " + "with type-names = (%s, %s, %s)\n", + NPY_FLOAT, NPY_DOUBLE, x_type, y_type, z_type, x_descr->typeobj->tp_name, y_descr->typeobj->tp_name, z_descr->typeobj->tp_name); } - Py_XDECREF(x_descr);Py_XDECREF(y_descr);Py_XDECREF(z_descr);Py_XDECREF(weights_descr); + Py_XDECREF(x_descr);Py_XDECREF(y_descr);Py_XDECREF(z_descr); countpairs_mocks_error_out(module, msg); return -1; } // Current version of the code only supports weights of the same dtype as positions - if( x_type != y_type || y_type != z_type || (check_weights && z_type != weights_type)) { + if( x_type != y_type || y_type != z_type) { PyArray_Descr *x_descr = PyArray_DescrFromType(x_type); PyArray_Descr *y_descr = PyArray_DescrFromType(y_type); PyArray_Descr *z_descr = PyArray_DescrFromType(z_type); - PyArray_Descr *weights_descr = PyArray_DescrFromType(weights_type); - if(x_descr == NULL || y_descr == NULL || z_descr == NULL || weights_descr == NULL) { + if(x_descr == NULL || y_descr == NULL || z_descr == NULL) { /* Generating the dtype descriptor failed somehow. At least provide some information */ - snprintf(msg, 1024, "TypeError: Expected *ALL* 3 floating point arrays to be the same type (allowed types = %d or %d). Instead found type-nums (%d, %d, %d, %d)\n", - NPY_FLOAT, NPY_DOUBLE, x_type, y_type, z_type, weights_type); + snprintf(msg, 1024, "TypeError: Expected *ALL* 3 floating point arrays to be the same type (allowed types = %d or %d). Instead found type-nums (%d, %d, %d)\n", + NPY_FLOAT, NPY_DOUBLE, x_type, y_type, z_type); } else { - snprintf(msg, 1024, "TypeError: Expected *ALL* 3 floating point arrays to be the same type (allowed types = %d or %d). Instead found type-nums (%d, %d, %d, %d) " - "with type-names = (%s, %s, %s, %s)\n", - NPY_FLOAT, NPY_DOUBLE, x_type, y_type, z_type, weights_type, x_descr->typeobj->tp_name, y_descr->typeobj->tp_name, z_descr->typeobj->tp_name, weights_descr->typeobj->tp_name); + snprintf(msg, 1024, "TypeError: Expected *ALL* 3 floating point arrays to be the same type (allowed types = %d or %d). Instead found type-nums (%d, %d, %d) " + "with type-names = (%s, %s, %s)\n", + NPY_FLOAT, NPY_DOUBLE, x_type, y_type, z_type, x_descr->typeobj->tp_name, y_descr->typeobj->tp_name, z_descr->typeobj->tp_name); } - Py_XDECREF(x_descr);Py_XDECREF(y_descr);Py_XDECREF(z_descr);Py_XDECREF(weights_descr); + Py_XDECREF(x_descr);Py_XDECREF(y_descr);Py_XDECREF(z_descr); countpairs_mocks_error_out(module, msg); return -1; } @@ -985,17 +970,6 @@ static int64_t check_dims_and_datatype(PyObject *module, PyArrayObject *x1_obj, return -1; } - // The last dimension of the weights array must match the number of positions - if(check_weights){ - const int64_t n_weights1 = (int64_t) PyArray_DIMS(weights1_obj)[n_weight_dims-1]; - if(nx1 != n_weights1){ - snprintf(msg, 1024, "ERROR: the last dimension of `weights` must match the number of positions. Instead found n_weights=%"PRId64", nx=%"PRId64, - n_weights1, nx1); - countpairs_mocks_error_out(module, msg); - return -1; - } - } - /* Return the size of each element of the data object */ if(x_type == NPY_FLOAT) { *element_size = sizeof(float); @@ -1007,6 +981,175 @@ static int64_t check_dims_and_datatype(PyObject *module, PyArrayObject *x1_obj, } +static int check_weights(PyObject *module, PyObject *weights_obj, weight_struct *weight_st, const weight_method_t method, const int64_t nx, size_t element_size) +{ + int status = EXIT_SUCCESS; + char msg[1024]; + if (!PySequence_Check(weights_obj)) { + snprintf(msg, 1024, "Please input tuple/list of weights"); + goto except; + } + PyObject *iter_arrays = NULL, *array_obj = NULL; + PyArrayObject *array = NULL; + iter_arrays = PyObject_GetIter(weights_obj); // raises error if NULL + if (iter_arrays == NULL) goto except; + int64_t w = 0; + weight_type_t itemtype[MAX_NUM_WEIGHTS]; + const int requirements = NPY_ARRAY_IN_ARRAY; + while ((array_obj = PyIter_Next(iter_arrays))) { + array = (PyArrayObject *) PyArray_FromArray((PyArrayObject *) array_obj, NOTYPE_DESCR, requirements); + if (array == NULL) { + snprintf(msg, 1024, "TypeError: Could not convert input weights to arrays. Are you passing numpy arrays?\n"); + goto except_iter; + } + /* The weights array must be 2-D of shape (n_weights, n_particles) */ + const int ndims = PyArray_NDIM(array); + if (ndims != 1) { + snprintf(msg, 1024, "ERROR: Expected 1-D numpy arrays.\nFound ndims = %d instead.\n", ndims); + goto except_iter; + } + const int64_t nx_weights = (int64_t) PyArray_SIZE((PyArrayObject *) array); + if (nx_weights != nx) { + snprintf(msg, 1024, "ERROR: Expected weight arrays to have the same number of elements as input coordinates.\nFound nx = %"PRId64" instead.\n", nx_weights); + goto except_iter; + } + const int array_type = PyArray_TYPE(array); + switch (array_type) { + case NPY_FLOAT: + itemtype[w] = FLOAT_TYPE; + if (element_size != sizeof(float)) { + snprintf(msg, 1024, "ERROR: Input coordinates are float32 but provided weights are float64. Please use the same size.\n"); + goto except_iter; + } + break; + case NPY_DOUBLE: + itemtype[w] = FLOAT_TYPE; + if (element_size != sizeof(double)) { + snprintf(msg, 1024, "ERROR: Input coordinates are float64 but provided weights are float32. Please use the same size.\n"); + goto except_iter; + } + break; + case NPY_INT32: + itemtype[w] = INT_TYPE; + if (element_size != sizeof(int32_t)) { + snprintf(msg, 1024, "ERROR: Input coordinates are float64 but provided weights are int32. Please use the same size.\n"); + goto except_iter; + } + break; + case NPY_INT64: + itemtype[w] = INT_TYPE; + if (element_size != sizeof(int64_t)) { + snprintf(msg, 1024, "ERROR: Input coordinates are float64 but provided weights are int32. Please use the same size.\n"); + goto except_iter; + } + break; + default: + snprintf(msg, 1024, "TypeError: Expected integer or floating arrays for weights. Instead found type-num %d.\n", array_type); + goto except_iter; + } + + if (array_type == NPY_FLOAT || array_type == NPY_DOUBLE) { + itemtype[w] = FLOAT_TYPE; + } + else if (array_type == NPY_INT32 || array_type == NPY_INT64) { + itemtype[w] = INT_TYPE; + } + else { + snprintf(msg, 1024, "ERROR: Unknown weight array type.\n"); + goto except_iter; + } + weight_st->weights[w] = (void *) PyArray_DATA(array); + w++; + goto finally_iter; +except_iter: + Py_XDECREF(array_obj); + Py_XDECREF(array); + goto except; +finally_iter: + Py_XDECREF(array_obj); + Py_XDECREF(array); + } + status = set_weight_struct(weight_st, method, itemtype, w); + goto finally; +except: + countpairs_mocks_error_out(module, msg); + return EXIT_FAILURE; +finally: + Py_XDECREF(iter_arrays); + return status; +} + + +static int check_pair_weight(PyObject *module, pair_weight_struct *pair_weight_st, PyObject *sep_obj, PyObject *weight_obj, size_t element_size, PyObject *weight_attrs) +{ + int status = EXIT_SUCCESS; + char msg[1024]; + pair_weight_st->noffset = 1; + pair_weight_st->default_value = 0.; + if (weight_attrs != NULL) { + if (!PySequence_Check(weight_attrs)) { + snprintf(msg, 1024, "Please input tuple/list of weight attributes"); + return EXIT_FAILURE; + } + pair_weight_st->noffset = PyLong_AsLong(PySequence_Fast_GET_ITEM(weight_attrs,0)); + pair_weight_st->default_value = PyFloat_AsDouble(PySequence_Fast_GET_ITEM(weight_attrs,1)); + if (PyErr_Occurred() != NULL) { + snprintf(msg, 1024, "Please provide tuple of integers (noffset, default_value) as weight attributes"); + return EXIT_FAILURE; + } + } + if (weight_obj == NULL) return status; + const int requirements = NPY_ARRAY_IN_ARRAY; + PyArrayObject *sep = (PyArrayObject *) PyArray_FromArray((PyArrayObject *) sep_obj, NOTYPE_DESCR, requirements); + PyArrayObject *weight = (PyArrayObject *) PyArray_FromArray((PyArrayObject *) weight_obj, NOTYPE_DESCR, requirements); + PyArrayObject *arrays[2] = {sep, weight}; + for (int ii=0; ii<2; ii++) { + PyArrayObject *array = arrays[ii]; + if (array == NULL) { + snprintf(msg, 1024, "TypeError: Could not convert input pair weight to array. Are you passing numpy array?\n"); + goto except; + } + const int ndims = PyArray_NDIM(array); + if (ndims != 1) { + snprintf(msg, 1024, "ERROR: Expected 1-D numpy arrays.\nFound ndims = %d instead.\n", ndims); + goto except; + } + const int array_type = PyArray_TYPE(array); + switch (array_type) { + case NPY_FLOAT: + if (element_size != sizeof(float)) { + snprintf(msg, 1024, "ERROR: Input coordinates are float32 but provided pair weight is float64. Please use the same size.\n"); + goto except; + } + break; + case NPY_DOUBLE: + if (element_size != sizeof(double)) { + snprintf(msg, 1024, "ERROR: Input coordinates are float64 but provided pair weight is float32. Please use the same size.\n"); + goto except; + } + break; + default: + snprintf(msg, 1024, "TypeError: Expected floating array for pair weight. Instead found type-num %d.\n", array_type); + goto except; + } + } + const int num = (int) PyArray_SIZE((PyArrayObject *) sep); + const int num_weight = (int) PyArray_SIZE((PyArrayObject *) weight); + if (num_weight != num) { + snprintf(msg, 1024, "ERROR: Expected pair weight array and separation array to be of same size.\nFound %d and %d instead.\n", num_weight, num); + goto except; + } + set_pair_weight_struct(pair_weight_st, (void *) PyArray_DATA(sep), (void *) PyArray_DATA(weight), num, pair_weight_st->noffset, pair_weight_st->default_value); + goto finally; +except: + countpairs_mocks_error_out(module, msg); + return EXIT_FAILURE; +finally: + Py_XDECREF(sep); + Py_XDECREF(weight); + return status; +} + static int64_t check_dims_and_datatype_ra_dec(PyObject *module, PyArrayObject *x1_obj, PyArrayObject *y1_obj, size_t *element_size) { @@ -1085,6 +1228,22 @@ static int64_t check_dims_and_datatype_ra_dec(PyObject *module, PyArrayObject *x } +static int check_binarray(PyObject *module, binarray* bins, PyArrayObject *bins_obj) { + + char msg[1024]; + + /* All the arrays should be 1-D*/ + const int ndims = PyArray_NDIM(bins_obj); + + if(ndims != 1) { + snprintf(msg, 1024, "ERROR: Expected 1-D numpy arrays.\nFound ndims = %d instead", ndims); + countpairs_mocks_error_out(module, msg); + return EXIT_FAILURE; + } + return set_binarray(bins, (double *) PyArray_DATA(bins_obj), (int) PyArray_SIZE(bins_obj)); +} + + static PyObject *countpairs_countpairs_rp_pi_mocks(PyObject *self, PyObject *args, PyObject *kwargs) { //Error-handling is global in python2 -> stored in struct module_state _struct declared at the top of this file @@ -1098,8 +1257,10 @@ static PyObject *countpairs_countpairs_rp_pi_mocks(PyObject *self, PyObject *arg //x1->ra (phi), y1-> declination (theta1), z1->cz (cz1) //x2->ra (ph2), y2-> declination (theta2), z2->cz (cz2) - PyArrayObject *x1_obj=NULL, *y1_obj=NULL, *z1_obj=NULL, *weights1_obj=NULL; - PyArrayObject *x2_obj=NULL, *y2_obj=NULL, *z2_obj=NULL, *weights2_obj=NULL; + PyArrayObject *x1_obj=NULL, *y1_obj=NULL, *z1_obj=NULL; + PyArrayObject *x2_obj=NULL, *y2_obj=NULL, *z2_obj=NULL; + PyArrayObject *bins_obj=NULL; + PyObject *weights1_obj=NULL, *weights2_obj=NULL; struct config_options options = get_config_options(); options.is_comoving_dist = 0; @@ -1119,14 +1280,17 @@ static PyObject *countpairs_countpairs_rp_pi_mocks(PyObject *self, PyObject *arg int nthreads=4; int cosmology=1; double pimax; - char *binfile, *weighting_method_str = NULL; + int npibins; + char *weighting_method_str = NULL; + PyObject *pair_weight_obj=NULL, *sep_pair_weight_obj=NULL, *attrs_pair_weight=NULL; static char *kwlist[] = { "autocorr", "cosmology", "nthreads", - "pimax", "binfile", + "pimax", + "npibins", "RA1", "DEC1", "CZ1", @@ -1148,20 +1312,25 @@ static PyObject *countpairs_countpairs_rp_pi_mocks(PyObject *self, PyObject *arg "c_api_timer", "isa",/* instruction set to use of type enum isa; valid values are AVX512F, AVX, SSE, FALLBACK (enum) */ "weight_type", + "pair_weights", + "sep_pair_weights", + "attrs_pair_weights", "bin_type", NULL }; - if ( ! PyArg_ParseTupleAndKeywords(args, kwargs, "iiidsO!O!O!|O!O!O!O!O!bbbbbbbhbbbisI", kwlist, - &autocorr,&cosmology,&nthreads,&pimax,&binfile, + if ( ! PyArg_ParseTupleAndKeywords(args, kwargs, "iiiO!diO!O!O!|OO!O!O!ObbbbbbbhbbbisO!O!OI", kwlist, + &autocorr,&cosmology,&nthreads, + &PyArray_Type,&bins_obj, + &pimax,&npibins, &PyArray_Type,&x1_obj, &PyArray_Type,&y1_obj, &PyArray_Type,&z1_obj, - &PyArray_Type,&weights1_obj, + &weights1_obj, &PyArray_Type,&x2_obj,//optional parameters -> if autocorr == 1, not checked; required if autocorr=0 &PyArray_Type,&y2_obj, &PyArray_Type,&z2_obj, - &PyArray_Type,&weights2_obj, + &weights2_obj, &(options.is_comoving_dist), &(options.verbose), &(options.need_avg_sep), @@ -1173,6 +1342,9 @@ static PyObject *countpairs_countpairs_rp_pi_mocks(PyObject *self, PyObject *arg &(options.c_api_timer), &(options.instruction_set), &weighting_method_str, + &PyArray_Type,&pair_weight_obj, + &PyArray_Type,&sep_pair_weight_obj, + &attrs_pair_weight, &(options.bin_type)) ) { @@ -1226,29 +1398,13 @@ static PyObject *countpairs_countpairs_rp_pi_mocks(PyObject *self, PyObject *arg /* We have numpy arrays and all the required inputs*/ /* How many data points are there? And are they all of floating point type */ size_t element_size; - const int64_t ND1 = check_dims_and_datatype(module, x1_obj, y1_obj, z1_obj, weights1_obj, &element_size); + const int64_t ND1 = check_dims_and_datatype(module, x1_obj, y1_obj, z1_obj, &element_size); if(ND1 == -1) { //Error has already been set -> simply return Py_RETURN_NONE; } - int found_weights = weights1_obj == NULL ? 0 : PyArray_SHAPE(weights1_obj)[0]; struct extra_options extra = get_extra_options(weighting_method); - if(extra.weights0.num_weights > 0 && extra.weights0.num_weights != found_weights){ - char msg[1024]; - snprintf(msg, 1024, "ValueError: In %s: specified weighting method %s which requires %"PRId64" weight(s)-per-particle, but found %d weight(s) instead!\n", - __FUNCTION__, weighting_method_str, extra.weights0.num_weights, found_weights); - countpairs_mocks_error_out(module, msg); - Py_RETURN_NONE; - } - - if(extra.weights0.num_weights > 0 && found_weights > MAX_NUM_WEIGHTS){ - char msg[1024]; - snprintf(msg, 1024, "ValueError: In %s: Provided %d weights-per-particle, but the code was compiled with MAX_NUM_WEIGHTS=%d.\n", - __FUNCTION__, found_weights, MAX_NUM_WEIGHTS); - countpairs_mocks_error_out(module, msg); - Py_RETURN_NONE; - } int64_t ND2 = ND1; if(autocorr == 0) { @@ -1267,7 +1423,7 @@ static PyObject *countpairs_countpairs_rp_pi_mocks(PyObject *self, PyObject *arg } size_t element_size2; - ND2 = check_dims_and_datatype(module, x2_obj, y2_obj, z2_obj, weights2_obj, &element_size2); + ND2 = check_dims_and_datatype(module, x2_obj, y2_obj, z2_obj, &element_size2); if(ND2 == -1) { //Error has already been set -> simply return Py_RETURN_NONE; @@ -1286,19 +1442,12 @@ static PyObject *countpairs_countpairs_rp_pi_mocks(PyObject *self, PyObject *arg PyObject *x1_array = PyArray_FromArray(x1_obj, NOTYPE_DESCR, requirements); PyObject *y1_array = PyArray_FromArray(y1_obj, NOTYPE_DESCR, requirements); PyObject *z1_array = PyArray_FromArray(z1_obj, NOTYPE_DESCR, requirements); - PyObject *weights1_array = NULL; - if(weights1_obj != NULL){ - weights1_array = PyArray_FromArray(weights1_obj, NOTYPE_DESCR, requirements); - } - PyObject *x2_array = NULL, *y2_array = NULL, *z2_array = NULL, *weights2_array = NULL; + PyObject *x2_array = NULL, *y2_array = NULL, *z2_array = NULL; if(autocorr == 0) { x2_array = PyArray_FromArray(x2_obj, NOTYPE_DESCR, requirements); y2_array = PyArray_FromArray(y2_obj, NOTYPE_DESCR, requirements); z2_array = PyArray_FromArray(z2_obj, NOTYPE_DESCR, requirements); - if(weights2_obj != NULL){ - weights2_array = PyArray_FromArray(weights2_obj, NOTYPE_DESCR, requirements); - } } if (x1_array == NULL || y1_array == NULL || z1_array == NULL || @@ -1306,12 +1455,10 @@ static PyObject *countpairs_countpairs_rp_pi_mocks(PyObject *self, PyObject *arg Py_XDECREF(x1_array); Py_XDECREF(y1_array); Py_XDECREF(z1_array); - Py_XDECREF(weights1_array); Py_XDECREF(x2_array); Py_XDECREF(y2_array); Py_XDECREF(z2_array); - Py_XDECREF(weights2_array); char msg[1024]; snprintf(msg, 1024, "TypeError: In %s: Could not convert input to arrays of allowed floating point types (doubles or floats). Are you passing numpy arrays?", __FUNCTION__); @@ -1323,29 +1470,30 @@ static PyObject *countpairs_countpairs_rp_pi_mocks(PyObject *self, PyObject *arg void *phiD1 = PyArray_DATA((PyArrayObject *)x1_array); void *thetaD1 = PyArray_DATA((PyArrayObject *)y1_array); void *czD1 = PyArray_DATA((PyArrayObject *)z1_array); - void *weights1=NULL; - if(weights1_array != NULL){ - weights1 = PyArray_DATA((PyArrayObject *) weights1_array); - } - void *phiD2=NULL, *thetaD2=NULL, *czD2=NULL, *weights2=NULL; + if (weights1_obj != NULL) wstatus = check_weights(module, weights1_obj, &(extra.weights0), extra.weight_method, ND1, element_size); + + void *phiD2=NULL, *thetaD2=NULL, *czD2=NULL; if(autocorr == 0) { phiD2 = PyArray_DATA((PyArrayObject *) x2_array); thetaD2 = PyArray_DATA((PyArrayObject *) y2_array); czD2 = PyArray_DATA((PyArrayObject *) z2_array); - if(weights2_array != NULL){ - weights2 = PyArray_DATA((PyArrayObject *) weights2_array); - } + + if (weights2_obj != NULL) wstatus = check_weights(module, weights2_obj, &(extra.weights1), extra.weight_method, ND2, element_size); } - options.float_type = element_size; + wstatus = check_pair_weight(module, &(extra.pair_weight), sep_pair_weight_obj, pair_weight_obj, element_size, attrs_pair_weight); - /* Pack the weights into extra_options */ - for(int64_t w = 0; w < extra.weights0.num_weights; w++){ - extra.weights0.weights[w] = (char *) weights1 + w*ND1*element_size; - if(autocorr == 0){ - extra.weights1.weights[w] = (char *) weights2 + w*ND2*element_size; - } + if(wstatus != EXIT_SUCCESS) { + Py_RETURN_NONE; } + binarray bins; + wstatus = check_binarray(module, &bins, bins_obj); + + if(wstatus != EXIT_SUCCESS) { + Py_RETURN_NONE; + } + + options.float_type = element_size; NPY_BEGIN_THREADS_DEF; NPY_BEGIN_THREADS; @@ -1356,8 +1504,9 @@ static PyObject *countpairs_countpairs_rp_pi_mocks(PyObject *self, PyObject *arg ND2,phiD2,thetaD2,czD2, nthreads, autocorr, - binfile, + &bins, pimax, + npibins, cosmology, &results, &options, @@ -1368,8 +1517,9 @@ static PyObject *countpairs_countpairs_rp_pi_mocks(PyObject *self, PyObject *arg NPY_END_THREADS; /* Clean up. */ - Py_DECREF(x1_array);Py_DECREF(y1_array);Py_DECREF(z1_array);Py_XDECREF(weights1_array);//x1 should absolutely not be NULL - Py_XDECREF(x2_array);Py_XDECREF(y2_array);Py_XDECREF(z2_array);Py_XDECREF(weights2_array);//x2 might be NULL depending on value of autocorr + Py_DECREF(x1_array);Py_DECREF(y1_array);Py_DECREF(z1_array);//x1 should absolutely not be NULL + Py_XDECREF(x2_array);Py_XDECREF(y2_array);Py_XDECREF(z2_array);//x2 might be NULL depending on value of autocorr + free_binarray(&bins); if(status != EXIT_SUCCESS) { Py_RETURN_NONE; @@ -1391,7 +1541,7 @@ static PyObject *countpairs_countpairs_rp_pi_mocks(PyObject *self, PyObject *arg /* Build the output list */ PyObject *ret = PyList_New(0);//create an empty list double rlow=results.rupp[0]; - const double dpi = pimax/(double)results.npibin ; + const double dpi = pimax/(double)results.npibin; for(int i=1;ira (phi), y1-> declination (theta1), z1->cz (cz1) //x2->ra (ph2), y2-> declination (theta2), z2->cz (cz2) - PyArrayObject *x1_obj=NULL, *y1_obj=NULL, *z1_obj=NULL, *weights1_obj=NULL; - PyArrayObject *x2_obj=NULL, *y2_obj=NULL, *z2_obj=NULL, *weights2_obj=NULL; + PyArrayObject *x1_obj=NULL, *y1_obj=NULL, *z1_obj=NULL; + PyArrayObject *x2_obj=NULL, *y2_obj=NULL, *z2_obj=NULL; + PyArrayObject *bins_obj=NULL; + PyObject *weights1_obj=NULL, *weights2_obj=NULL; struct config_options options = get_config_options(); options.is_comoving_dist = 0; @@ -1445,15 +1597,16 @@ static PyObject *countpairs_countpairs_s_mu_mocks(PyObject *self, PyObject *args int cosmology=1; int nmu_bins=10; double mu_max=1.0; - char *binfile, *weighting_method_str = NULL; + char *weighting_method_str = NULL; + PyObject *pair_weight_obj=NULL, *sep_pair_weight_obj=NULL, *attrs_pair_weight=NULL; static char *kwlist[] = { "autocorr", "cosmology", "nthreads", + "binfile", "mu_max", "nmu_bins", - "binfile", "RA1", "DEC1", "CZ1", @@ -1475,20 +1628,25 @@ static PyObject *countpairs_countpairs_s_mu_mocks(PyObject *self, PyObject *args "c_api_timer", "isa",/* instruction set to use of type enum isa; valid values are AVX512F, AVX, SSE, FALLBACK (enum) */ "weight_type", + "pair_weights", + "sep_pair_weights", + "attrs_pair_weights", "bin_type", NULL }; - if ( ! PyArg_ParseTupleAndKeywords(args, kwargs, "iiidisO!O!O!|O!O!O!O!O!bbbbbbbhbbbisI", kwlist, - &autocorr,&cosmology,&nthreads,&mu_max,&nmu_bins,&binfile, + if ( ! PyArg_ParseTupleAndKeywords(args, kwargs, "iiiO!diO!O!O!|OO!O!O!ObbbbbbbhbbbisO!O!OI", kwlist, + &autocorr,&cosmology,&nthreads, + &PyArray_Type,&bins_obj, + &mu_max,&nmu_bins, &PyArray_Type,&x1_obj, &PyArray_Type,&y1_obj, &PyArray_Type,&z1_obj, - &PyArray_Type,&weights1_obj, + &weights1_obj, &PyArray_Type,&x2_obj,//optional parameters -> if autocorr == 1, not checked; required if autocorr=0 &PyArray_Type,&y2_obj, &PyArray_Type,&z2_obj, - &PyArray_Type,&weights2_obj, + &weights2_obj, &(options.is_comoving_dist), &(options.verbose), &(options.need_avg_sep), @@ -1500,6 +1658,9 @@ static PyObject *countpairs_countpairs_s_mu_mocks(PyObject *self, PyObject *args &(options.c_api_timer), &(options.instruction_set), &weighting_method_str, + &PyArray_Type,&pair_weight_obj, + &PyArray_Type,&sep_pair_weight_obj, + &attrs_pair_weight, &(options.bin_type)) ) { @@ -1553,29 +1714,13 @@ static PyObject *countpairs_countpairs_s_mu_mocks(PyObject *self, PyObject *args /* We have numpy arrays and all the required inputs*/ /* How many data points are there? And are they all of floating point type */ size_t element_size; - const int64_t ND1 = check_dims_and_datatype(module, x1_obj, y1_obj, z1_obj, weights1_obj, &element_size); + const int64_t ND1 = check_dims_and_datatype(module, x1_obj, y1_obj, z1_obj, &element_size); if(ND1 == -1) { //Error has already been set -> simply return Py_RETURN_NONE; } - int found_weights = weights1_obj == NULL ? 0 : PyArray_SHAPE(weights1_obj)[0]; struct extra_options extra = get_extra_options(weighting_method); - if(extra.weights0.num_weights > 0 && extra.weights0.num_weights != found_weights){ - char msg[1024]; - snprintf(msg, 1024, "ValueError: In %s: specified weighting method %s which requires %"PRId64" weight(s)-per-particle, but found %d weight(s) instead!\n", - __FUNCTION__, weighting_method_str, extra.weights0.num_weights, found_weights); - countpairs_mocks_error_out(module, msg); - Py_RETURN_NONE; - } - - if(extra.weights0.num_weights > 0 && found_weights > MAX_NUM_WEIGHTS){ - char msg[1024]; - snprintf(msg, 1024, "ValueError: In %s: Provided %d weights-per-particle, but the code was compiled with MAX_NUM_WEIGHTS=%d.\n", - __FUNCTION__, found_weights, MAX_NUM_WEIGHTS); - countpairs_mocks_error_out(module, msg); - Py_RETURN_NONE; - } int64_t ND2 = ND1; if(autocorr == 0) { @@ -1594,7 +1739,7 @@ static PyObject *countpairs_countpairs_s_mu_mocks(PyObject *self, PyObject *args } size_t element_size2; - ND2 = check_dims_and_datatype(module, x2_obj, y2_obj, z2_obj, weights2_obj, &element_size2); + ND2 = check_dims_and_datatype(module, x2_obj, y2_obj, z2_obj, &element_size2); if(ND2 == -1) { //Error has already been set -> simply return Py_RETURN_NONE; @@ -1613,19 +1758,12 @@ static PyObject *countpairs_countpairs_s_mu_mocks(PyObject *self, PyObject *args PyObject *x1_array = PyArray_FromArray(x1_obj, NOTYPE_DESCR, requirements); PyObject *y1_array = PyArray_FromArray(y1_obj, NOTYPE_DESCR, requirements); PyObject *z1_array = PyArray_FromArray(z1_obj, NOTYPE_DESCR, requirements); - PyObject *weights1_array = NULL; - if(weights1_obj != NULL){ - weights1_array = PyArray_FromArray(weights1_obj, NOTYPE_DESCR, requirements); - } - PyObject *x2_array = NULL, *y2_array = NULL, *z2_array = NULL, *weights2_array = NULL; + PyObject *x2_array = NULL, *y2_array = NULL, *z2_array = NULL; if(autocorr == 0) { x2_array = PyArray_FromArray(x2_obj, NOTYPE_DESCR, requirements); y2_array = PyArray_FromArray(y2_obj, NOTYPE_DESCR, requirements); z2_array = PyArray_FromArray(z2_obj, NOTYPE_DESCR, requirements); - if(weights2_obj != NULL){ - weights2_array = PyArray_FromArray(weights2_obj, NOTYPE_DESCR, requirements); - } } if (x1_array == NULL || y1_array == NULL || z1_array == NULL || @@ -1633,12 +1771,10 @@ static PyObject *countpairs_countpairs_s_mu_mocks(PyObject *self, PyObject *args Py_XDECREF(x1_array); Py_XDECREF(y1_array); Py_XDECREF(z1_array); - Py_XDECREF(weights1_array); Py_XDECREF(x2_array); Py_XDECREF(y2_array); Py_XDECREF(z2_array); - Py_XDECREF(weights2_array); char msg[1024]; snprintf(msg, 1024, "TypeError: In %s: Could not convert input to arrays of allowed floating point types (doubles or floats). Are you passing numpy arrays?", __FUNCTION__); @@ -1650,30 +1786,31 @@ static PyObject *countpairs_countpairs_s_mu_mocks(PyObject *self, PyObject *args void *phiD1 = PyArray_DATA((PyArrayObject *)x1_array); void *thetaD1 = PyArray_DATA((PyArrayObject *)y1_array); void *czD1 = PyArray_DATA((PyArrayObject *)z1_array); - void *weights1=NULL; - if(weights1_array != NULL){ - weights1 = PyArray_DATA((PyArrayObject *) weights1_array); - } - void *phiD2=NULL, *thetaD2=NULL, *czD2=NULL, *weights2=NULL; + if (weights1_obj != NULL) wstatus = check_weights(module, weights1_obj, &(extra.weights0), extra.weight_method, ND1, element_size); + + void *phiD2=NULL, *thetaD2=NULL, *czD2=NULL; if(autocorr == 0) { phiD2 = PyArray_DATA((PyArrayObject *) x2_array); thetaD2 = PyArray_DATA((PyArrayObject *) y2_array); czD2 = PyArray_DATA((PyArrayObject *) z2_array); - if(weights2_array != NULL){ - weights2 = PyArray_DATA((PyArrayObject *) weights2_array); - } + + if (weights2_obj != NULL) wstatus = check_weights(module, weights2_obj, &(extra.weights1), extra.weight_method, ND2, element_size); } - options.float_type = element_size; + wstatus = check_pair_weight(module, &(extra.pair_weight), sep_pair_weight_obj, pair_weight_obj, element_size, attrs_pair_weight); - /* Pack the weights into extra_options */ - for(int64_t w = 0; w < extra.weights0.num_weights; w++){ - extra.weights0.weights[w] = (char *) weights1 + w*ND1*element_size; - if(autocorr == 0){ - extra.weights1.weights[w] = (char *) weights2 + w*ND2*element_size; - } + if(wstatus != EXIT_SUCCESS) { + Py_RETURN_NONE; + } + binarray bins; + wstatus = check_binarray(module, &bins, bins_obj); + + if(wstatus != EXIT_SUCCESS) { + Py_RETURN_NONE; } + options.float_type = element_size; + NPY_BEGIN_THREADS_DEF; NPY_BEGIN_THREADS; @@ -1683,7 +1820,7 @@ static PyObject *countpairs_countpairs_s_mu_mocks(PyObject *self, PyObject *args ND2,phiD2,thetaD2,czD2, nthreads, autocorr, - binfile, + &bins, mu_max, nmu_bins, cosmology, @@ -1696,8 +1833,9 @@ static PyObject *countpairs_countpairs_s_mu_mocks(PyObject *self, PyObject *args NPY_END_THREADS; /* Clean up. */ - Py_DECREF(x1_array);Py_DECREF(y1_array);Py_DECREF(z1_array);Py_XDECREF(weights1_array);//x1 should absolutely not be NULL - Py_XDECREF(x2_array);Py_XDECREF(y2_array);Py_XDECREF(z2_array);Py_XDECREF(weights2_array);//x2 might be NULL depending on value of autocorr + Py_DECREF(x1_array);Py_DECREF(y1_array);Py_DECREF(z1_array);//x1 should absolutely not be NULL + Py_XDECREF(x2_array);Py_XDECREF(y2_array);Py_XDECREF(z2_array);//x2 might be NULL depending on value of autocorr + free_binarray(&bins); if(status != EXIT_SUCCESS) { Py_RETURN_NONE; @@ -1750,10 +1888,15 @@ static PyObject *countpairs_countpairs_theta_mocks(PyObject *self, PyObject *arg PyObject *module = self; #endif - PyArrayObject *x1_obj=NULL, *y1_obj=NULL, *weights1_obj=NULL; - PyArrayObject *x2_obj=NULL, *y2_obj=NULL, *weights2_obj=NULL; + PyArrayObject *x1_obj=NULL, *y1_obj=NULL; + PyArrayObject *x2_obj=NULL, *y2_obj=NULL; + PyArrayObject *bins_obj=NULL; + PyObject *weights1_obj=NULL, *weights2_obj=NULL; + int nthreads=1; - char *binfile, *weighting_method_str = NULL;; + char *weighting_method_str = NULL;; + PyObject *pair_weight_obj=NULL, *sep_pair_weight_obj=NULL, *attrs_pair_weight=NULL; + int autocorr=0; struct config_options options = get_config_options(); options.verbose=0; @@ -1789,19 +1932,23 @@ static PyObject *countpairs_countpairs_theta_mocks(PyObject *self, PyObject *arg "c_api_timer", "isa",/* instruction set to use of type enum isa; valid values are AVX512F, AVX, SSE, FALLBACK */ "weight_type", + "pair_weights", + "sep_pair_weights", + "attrs_pair_weights", "bin_type", NULL }; - if ( ! PyArg_ParseTupleAndKeywords(args, kwargs, "iisO!O!|O!O!O!O!bbbbbbbhbbbisI", kwlist, - &autocorr,&nthreads,&binfile, + if ( ! PyArg_ParseTupleAndKeywords(args, kwargs, "iiO!O!O!|OO!O!ObbbbbbbhbbbisO!O!OI", kwlist, + &autocorr,&nthreads, + &PyArray_Type,&bins_obj, &PyArray_Type,&x1_obj, &PyArray_Type,&y1_obj, - &PyArray_Type,&weights1_obj, + &weights1_obj, &PyArray_Type,&x2_obj,//optional parameters -> if autocorr == 1, not checked; required if autocorr=0 &PyArray_Type,&y2_obj, - &PyArray_Type,&weights2_obj, + &weights2_obj, &(options.link_in_dec), &(options.link_in_ra), &(options.verbose), @@ -1814,6 +1961,9 @@ static PyObject *countpairs_countpairs_theta_mocks(PyObject *self, PyObject *arg &(options.c_api_timer), &(options.instruction_set), &weighting_method_str, + &PyArray_Type,&pair_weight_obj, + &PyArray_Type,&sep_pair_weight_obj, + &attrs_pair_weight, &(options.bin_type)) ) { @@ -1869,24 +2019,7 @@ static PyObject *countpairs_countpairs_theta_mocks(PyObject *self, PyObject *arg //Error has already been set -> simply return Py_RETURN_NONE; } - - int found_weights = weights1_obj == NULL ? 0 : PyArray_SHAPE(weights1_obj)[0]; struct extra_options extra = get_extra_options(weighting_method); - if(extra.weights0.num_weights > 0 && extra.weights0.num_weights != found_weights){ - char msg[1024]; - snprintf(msg, 1024, "ValueError: In %s: specified weighting method %s which requires %"PRId64" weight(s)-per-particle, but found %d weight(s) instead!\n", - __FUNCTION__, weighting_method_str, extra.weights0.num_weights, found_weights); - countpairs_mocks_error_out(module, msg); - Py_RETURN_NONE; - } - - if(extra.weights0.num_weights > 0 && found_weights > MAX_NUM_WEIGHTS){ - char msg[1024]; - snprintf(msg, 1024, "ValueError: In %s: Provided %d weights-per-particle, but the code was compiled with MAX_NUM_WEIGHTS=%d.\n", - __FUNCTION__, found_weights, MAX_NUM_WEIGHTS); - countpairs_mocks_error_out(module, msg); - Py_RETURN_NONE; - } int64_t ND2 = ND1; if(autocorr==0) { @@ -1905,7 +2038,7 @@ static PyObject *countpairs_countpairs_theta_mocks(PyObject *self, PyObject *arg } size_t element_size2; - ND2 = check_dims_and_datatype_ra_dec(module, x2_obj, y2_obj,&element_size2); + ND2 = check_dims_and_datatype_ra_dec(module, x2_obj, y2_obj, &element_size2); if(ND2 == -1) { //Error has already been set -> simply return Py_RETURN_NONE; @@ -1923,29 +2056,20 @@ static PyObject *countpairs_countpairs_theta_mocks(PyObject *self, PyObject *arg const int requirements = NPY_ARRAY_IN_ARRAY; PyObject *x1_array = PyArray_FromArray(x1_obj, NOTYPE_DESCR, requirements); PyObject *y1_array = PyArray_FromArray(y1_obj, NOTYPE_DESCR, requirements); - PyObject *weights1_array = NULL; - if(weights1_obj != NULL){ - weights1_array = PyArray_FromArray(weights1_obj, NOTYPE_DESCR, requirements); - } - PyObject *x2_array = NULL, *y2_array = NULL, *weights2_array = NULL; + PyObject *x2_array = NULL, *y2_array = NULL; if(autocorr == 0) { x2_array = PyArray_FromArray(x2_obj, NOTYPE_DESCR, requirements); y2_array = PyArray_FromArray(y2_obj, NOTYPE_DESCR, requirements); - if(weights2_obj != NULL){ - weights2_array = PyArray_FromArray(weights2_obj, NOTYPE_DESCR, requirements); - } } if (x1_array == NULL || y1_array == NULL || (autocorr == 0 && (x2_array == NULL || y2_array == NULL))) { Py_XDECREF(x1_array); Py_XDECREF(y1_array); - Py_XDECREF(weights1_array); Py_XDECREF(x2_array); Py_XDECREF(y2_array); - Py_XDECREF(weights2_array); char msg[1024]; snprintf(msg, 1024, "TypeError: In %s: Could not convert input to arrays of allowed floating point types (doubles or floats). Are you passing numpy arrays?", __FUNCTION__); @@ -1956,26 +2080,24 @@ static PyObject *countpairs_countpairs_theta_mocks(PyObject *self, PyObject *arg /* Get pointers to the data as C-types. */ void *phiD1 = PyArray_DATA((PyArrayObject *) x1_array); void *thetaD1 = PyArray_DATA((PyArrayObject *) y1_array); - void *weights1 = NULL; - if(weights1_array != NULL){ - weights1 = PyArray_DATA((PyArrayObject *) weights1_array); - } + if (weights1_obj != NULL) wstatus = check_weights(module, weights1_obj, &(extra.weights0), extra.weight_method, ND1, element_size); - void *phiD2=NULL, *thetaD2=NULL, *weights2=NULL; + void *phiD2=NULL, *thetaD2=NULL; if(autocorr == 0) { phiD2 = PyArray_DATA((PyArrayObject *) x2_array); thetaD2 = PyArray_DATA((PyArrayObject *) y2_array); - if(weights2_array != NULL){ - weights2 = PyArray_DATA((PyArrayObject *) weights2_array); - } + if (weights2_obj != NULL) wstatus = check_weights(module, weights2_obj, &(extra.weights1), extra.weight_method, ND2, element_size); } + wstatus = check_pair_weight(module, &(extra.pair_weight), sep_pair_weight_obj, pair_weight_obj, element_size, attrs_pair_weight); - /* Pack the weights into extra_options */ - for(int64_t w = 0; w < extra.weights0.num_weights; w++){ - extra.weights0.weights[w] = (char *) weights1 + w*ND1*element_size; - if(autocorr == 0){ - extra.weights1.weights[w] = (char *) weights2 + w*ND2*element_size; - } + if(wstatus != EXIT_SUCCESS) { + Py_RETURN_NONE; + } + binarray bins; + wstatus = check_binarray(module, &bins, bins_obj); + + if(wstatus != EXIT_SUCCESS) { + Py_RETURN_NONE; } NPY_BEGIN_THREADS_DEF; @@ -1988,7 +2110,7 @@ static PyObject *countpairs_countpairs_theta_mocks(PyObject *self, PyObject *arg ND2,phiD2,thetaD2, nthreads, autocorr, - binfile, + &bins, &results, &options, &extra); @@ -1999,8 +2121,9 @@ static PyObject *countpairs_countpairs_theta_mocks(PyObject *self, PyObject *arg /* Clean up. */ - Py_DECREF(x1_array);Py_DECREF(y1_array);Py_XDECREF(weights1_array);//x1/y1 (representing ra1,dec1) should not be NULL - Py_XDECREF(x2_array);Py_XDECREF(y2_array);Py_XDECREF(weights2_array);//x2/y2 may be NULL (in case of autocorr) + Py_DECREF(x1_array);Py_DECREF(y1_array);//x1/y1 (representing ra1,dec1) should not be NULL + Py_XDECREF(x2_array);Py_XDECREF(y2_array);//x2/y2 may be NULL (in case of autocorr) + free_binarray(&bins); if(status != EXIT_SUCCESS) { Py_RETURN_NONE; @@ -2147,14 +2270,14 @@ static PyObject *countpairs_countspheres_vpf_mocks(PyObject *self, PyObject *arg size_t element_size; /* We have numpy arrays and all the required inputs*/ /* How many data points are there? And are they all of floating point type */ - const int64_t ND1 = check_dims_and_datatype(module, x1_obj, y1_obj, z1_obj, NULL, &element_size); + const int64_t ND1 = check_dims_and_datatype(module, x1_obj, y1_obj, z1_obj, &element_size); if(ND1 == -1) { //Error has already been set -> simply return Py_RETURN_NONE; } size_t element_size2; - const int64_t ND2 = check_dims_and_datatype(module, x2_obj, y2_obj, z2_obj, NULL, &element_size2); + const int64_t ND2 = check_dims_and_datatype(module, x2_obj, y2_obj, z2_obj, &element_size2); if(ND2 == -1) { //Error has already been set -> simply return Py_RETURN_NONE; diff --git a/mocks/python_bindings/call_correlation_functions_mocks.py b/mocks/python_bindings/call_correlation_functions_mocks.py index 464aeeed..7aed875d 100644 --- a/mocks/python_bindings/call_correlation_functions_mocks.py +++ b/mocks/python_bindings/call_correlation_functions_mocks.py @@ -9,6 +9,7 @@ """ from __future__ import print_function from os.path import dirname, abspath, join as pjoin +from os.path import exists as file_exists import time import numpy as np @@ -41,6 +42,49 @@ def read_text_file(filename, encoding="utf-8"): return r +def get_edges(binfile): + """ + Helper function to return edges corresponding to ``binfile``. + + Parameters + ----------- + binfile : string or array-like + Expected to be a path to a bin file (two columns, lower and upper) or an array containing the bins. + + Returns + ------- + edges : array + """ + if isinstance(binfile, str): + if file_exists(binfile): + # The equivalent of read_binfile() in io.c + with open(binfile, 'r') as file: + binfile = [] + for iline, line in enumerate(file): + lowhi = line.split() + if len(lowhi) == 2: + low, hi = lowhi + if iline == 0: + binfile.append(low) + binfile.append(hi) + else: + break + else: + msg = "Could not find file = `{0}` containing the bins"\ + .format(binfile) + raise IOError(msg) + + # For a valid bin specifier, there must be at least 1 bin. + if len(binfile) >= 1: + binfile = np.array(binfile, dtype='f8') + binfile.sort() + return binfile + + msg = "Input `binfile` was not a valid array (>= 1 element)."\ + "Num elements = {0}".format(len(binfile)) + raise TypeError(msg) + + def main(): tstart = time.time() filename = pjoin(dirname(abspath(__file__)), @@ -80,13 +124,14 @@ def main(): pimax = 40.0 binfile = pjoin(dirname(abspath(__file__)), "../tests/", "bins") + binfile = get_edges(binfile) autocorr = 1 numbins_to_print = 5 cosmology = 1 print("\nRunning 2-D correlation function xi(rp,pi)") results_DDrppi, _ = rp_pi_mocks(autocorr, cosmology, nthreads, - pimax, binfile, + binfile, pimax, int(pimax), ra, dec, cz, weights1=weights, output_rpavg=True, verbose=True, weight_type='pair_product') @@ -103,7 +148,7 @@ def main(): print("\nRunning 2-D correlation function xi(rp,pi) with different bin refinement") results_DDrppi, _ = rp_pi_mocks(autocorr, cosmology, nthreads, - pimax, binfile, + binfile, pimax, int(pimax), ra, dec, cz, output_rpavg=True, xbin_refine_factor=3, @@ -126,7 +171,7 @@ def main(): print("\nRunning 2-D correlation function xi(s,mu)") results_DDsmu, _ = s_mu_mocks(autocorr, cosmology, nthreads, - mu_max, nmu_bins, binfile, + binfile, mu_max, nmu_bins, ra, dec, cz, weights1=weights, output_savg=True, verbose=True, weight_type='pair_product') @@ -143,6 +188,7 @@ def main(): binfile = pjoin(dirname(abspath(__file__)), "../tests/", "angular_bins") + binfile = get_edges(binfile) print("\nRunning angular correlation function w(theta)") results_wtheta, _ = theta_mocks(autocorr, nthreads, binfile, ra, dec, weights1=weights, diff --git a/mocks/tests/Mr19_mock.DD b/mocks/tests/Mr19_mock.DD index 7c9ecd98..0bc90229 100644 --- a/mocks/tests/Mr19_mock.DD +++ b/mocks/tests/Mr19_mock.DD @@ -1,560 +1,560 @@ - 4156 0.12393689 -0.82871857 1.00000000 0.25016330 - 3016 0.12474710 -0.82871857 2.00000000 0.26150050 - 2336 0.12452434 -0.82871857 3.00000000 0.24682984 - 1912 0.12419325 -0.82871857 4.00000000 0.24384985 - 1618 0.12470107 -0.82871857 5.00000000 0.26231396 - 1258 0.12525616 -0.82871857 6.00000000 0.24273859 - 1008 0.12535650 -0.82871857 7.00000000 0.25015619 - 862 0.12420590 -0.82871857 8.00000000 0.25399403 - 762 0.12488589 -0.82871857 9.00000000 0.25116047 - 648 0.12514913 -0.82871857 10.00000000 0.25622713 - 562 0.12546129 -0.82871857 11.00000000 0.25993422 - 482 0.12429853 -0.82871857 12.00000000 0.25859197 - 448 0.12415951 -0.82871857 13.00000000 0.22887206 - 392 0.12332290 -0.82871857 14.00000000 0.23331814 - 328 0.12591479 -0.82871857 15.00000000 0.26490964 - 270 0.12639580 -0.82871857 16.00000000 0.24815899 - 246 0.12373483 -0.82871857 17.00000000 0.25682834 - 220 0.12506131 -0.82871857 18.00000000 0.26894730 - 246 0.12436659 -0.82871857 19.00000000 0.27571146 - 162 0.12550797 -0.82871857 20.00000000 0.27984065 - 170 0.12621698 -0.82871857 21.00000000 0.30703331 - 154 0.12318226 -0.82871857 22.00000000 0.21624163 - 174 0.12601714 -0.82871857 23.00000000 0.22678746 - 112 0.12578632 -0.82871857 24.00000000 0.19372553 - 130 0.12305852 -0.82871857 25.00000000 0.27760809 - 118 0.12591090 -0.82871857 26.00000000 0.23891698 - 114 0.12316600 -0.82871857 27.00000000 0.22992821 - 116 0.12736486 -0.82871857 28.00000000 0.20948667 - 106 0.12538352 -0.82871857 29.00000000 0.28254263 - 118 0.12367941 -0.82871857 30.00000000 0.25021621 - 98 0.12788361 -0.82871857 31.00000000 0.30513141 - 76 0.12233146 -0.82871857 32.00000000 0.21346281 - 104 0.12242491 -0.82871857 33.00000000 0.22397106 - 84 0.12238387 -0.82871857 34.00000000 0.23064471 - 74 0.12511673 -0.82871857 35.00000000 0.28487428 - 70 0.12601054 -0.82871857 36.00000000 0.27403086 - 78 0.12098412 -0.82871857 37.00000000 0.28600996 - 86 0.12622448 -0.82871857 38.00000000 0.27014618 - 80 0.12710876 -0.82871857 39.00000000 0.31395098 - 52 0.12957319 -0.82871857 40.00000000 0.27054138 - 6242 0.18416069 -0.65743714 1.00000000 0.25058271 - 4746 0.18496725 -0.65743714 2.00000000 0.25177086 - 3798 0.18509801 -0.65743714 3.00000000 0.24362524 - 3114 0.18596689 -0.65743714 4.00000000 0.25439788 - 2682 0.18554395 -0.65743714 5.00000000 0.25656578 - 2336 0.18524879 -0.65743714 6.00000000 0.24184050 - 2040 0.18392860 -0.65743714 7.00000000 0.23826460 - 1776 0.18465581 -0.65743714 8.00000000 0.25617774 - 1504 0.18487635 -0.65743714 9.00000000 0.26107206 - 1184 0.18606741 -0.65743714 10.00000000 0.24496004 - 1022 0.18592662 -0.65743714 11.00000000 0.25447070 - 906 0.18577184 -0.65743714 12.00000000 0.24001152 - 854 0.18534567 -0.65743714 13.00000000 0.23469816 - 752 0.18614550 -0.65743714 14.00000000 0.24873795 - 756 0.18560916 -0.65743714 15.00000000 0.26178935 - 604 0.18706202 -0.65743714 16.00000000 0.25153155 - 538 0.18476070 -0.65743714 17.00000000 0.27031723 - 494 0.18891113 -0.65743714 18.00000000 0.26950864 - 420 0.18694043 -0.65743714 19.00000000 0.27994581 - 382 0.18681797 -0.65743714 20.00000000 0.25010807 - 316 0.18566606 -0.65743714 21.00000000 0.23472658 - 304 0.18814954 -0.65743714 22.00000000 0.28208861 - 324 0.18716393 -0.65743714 23.00000000 0.28830426 - 280 0.18726639 -0.65743714 24.00000000 0.25930928 - 272 0.18355756 -0.65743714 25.00000000 0.26484630 - 252 0.18664821 -0.65743714 26.00000000 0.25210282 - 216 0.18600225 -0.65743714 27.00000000 0.24641028 - 246 0.18743085 -0.65743714 28.00000000 0.24191095 - 250 0.18497587 -0.65743714 29.00000000 0.25647593 - 230 0.18783223 -0.65743714 30.00000000 0.27507632 - 252 0.18481263 -0.65743714 31.00000000 0.27511258 - 186 0.18637858 -0.65743714 32.00000000 0.26428680 - 186 0.18867480 -0.65743714 33.00000000 0.25909057 - 190 0.18749832 -0.65743714 34.00000000 0.28365395 - 164 0.18754043 -0.65743714 35.00000000 0.22643515 - 170 0.18794661 -0.65743714 36.00000000 0.23388277 - 162 0.18815489 -0.65743714 37.00000000 0.26906999 - 140 0.18630633 -0.65743714 38.00000000 0.26191481 - 180 0.18563630 -0.65743714 39.00000000 0.22584352 - 142 0.19211228 -0.65743714 40.00000000 0.20719611 - 9864 0.27493589 -0.48615571 1.00000000 0.24632580 - 7678 0.27446225 -0.48615571 2.00000000 0.25441840 - 6552 0.27484432 -0.48615571 3.00000000 0.24338852 - 5504 0.27439009 -0.48615571 4.00000000 0.24604738 - 4490 0.27585082 -0.48615571 5.00000000 0.25870014 - 4034 0.27601339 -0.48615571 6.00000000 0.24924018 - 3684 0.27399362 -0.48615571 7.00000000 0.24541258 - 2998 0.27428866 -0.48615571 8.00000000 0.24671797 - 2774 0.27520368 -0.48615571 9.00000000 0.25070629 - 2296 0.27608210 -0.48615571 10.00000000 0.25683877 - 2028 0.27529681 -0.48615571 11.00000000 0.24951670 - 1808 0.27745660 -0.48615571 12.00000000 0.23706893 - 1746 0.27675887 -0.48615571 13.00000000 0.26891466 - 1454 0.27495408 -0.48615571 14.00000000 0.25170234 - 1362 0.27387103 -0.48615571 15.00000000 0.26431816 - 1160 0.27534983 -0.48615571 16.00000000 0.24480575 - 1022 0.27385074 -0.48615571 17.00000000 0.26926212 - 910 0.27596889 -0.48615571 18.00000000 0.24425357 - 856 0.27685973 -0.48615571 19.00000000 0.27199005 - 764 0.27721132 -0.48615571 20.00000000 0.24119959 - 722 0.27843837 -0.48615571 21.00000000 0.25128035 - 718 0.27674383 -0.48615571 22.00000000 0.27103586 - 712 0.27699463 -0.48615571 23.00000000 0.29618270 - 584 0.27819777 -0.48615571 24.00000000 0.24836085 - 596 0.27807437 -0.48615571 25.00000000 0.23998865 - 488 0.27257852 -0.48615571 26.00000000 0.26839693 - 544 0.27588899 -0.48615571 27.00000000 0.25305286 - 488 0.27797737 -0.48615571 28.00000000 0.24153048 - 464 0.27621466 -0.48615571 29.00000000 0.22455249 - 468 0.27529652 -0.48615571 30.00000000 0.25784877 - 376 0.27430481 -0.48615571 31.00000000 0.25641082 - 348 0.28090965 -0.48615571 32.00000000 0.23807871 - 404 0.28097277 -0.48615571 33.00000000 0.22635934 - 352 0.27786863 -0.48615571 34.00000000 0.24802516 - 418 0.27819761 -0.48615571 35.00000000 0.25190908 - 356 0.27626656 -0.48615571 36.00000000 0.22257123 - 312 0.27858779 -0.48615571 37.00000000 0.26776760 - 332 0.27204919 -0.48615571 38.00000000 0.24506653 - 338 0.27265186 -0.48615571 39.00000000 0.22824130 - 338 0.27116086 -0.48615571 40.00000000 0.24801639 - 16876 0.40773570 -0.31487428 1.00000000 0.24573672 - 12596 0.40675627 -0.31487428 2.00000000 0.24866789 - 10448 0.40775906 -0.31487428 3.00000000 0.24795307 - 9156 0.40641217 -0.31487428 4.00000000 0.24319103 - 8116 0.40748464 -0.31487428 5.00000000 0.25654005 - 6970 0.40671043 -0.31487428 6.00000000 0.25442854 - 6234 0.40713308 -0.31487428 7.00000000 0.24936677 - 5426 0.40848873 -0.31487428 8.00000000 0.25038844 - 5024 0.40791881 -0.31487428 9.00000000 0.24847790 - 4300 0.40771662 -0.31487428 10.00000000 0.25478933 - 3944 0.40813119 -0.31487428 11.00000000 0.24813539 - 3430 0.40792967 -0.31487428 12.00000000 0.25252791 - 3098 0.40805351 -0.31487428 13.00000000 0.24706690 - 2742 0.40679902 -0.31487428 14.00000000 0.25780888 - 2504 0.40589590 -0.31487428 15.00000000 0.24914117 - 2218 0.40820694 -0.31487428 16.00000000 0.25947132 - 2132 0.41066227 -0.31487428 17.00000000 0.25768648 - 1778 0.40962382 -0.31487428 18.00000000 0.25335423 - 1640 0.41069166 -0.31487428 19.00000000 0.26576866 - 1554 0.40568696 -0.31487428 20.00000000 0.25378137 - 1506 0.40942152 -0.31487428 21.00000000 0.24691115 - 1372 0.40762077 -0.31487428 22.00000000 0.26274132 - 1262 0.40811436 -0.31487428 23.00000000 0.26516820 - 1274 0.40856030 -0.31487428 24.00000000 0.24386580 - 1168 0.41058922 -0.31487428 25.00000000 0.25267122 - 1046 0.40857968 -0.31487428 26.00000000 0.26006168 - 1034 0.40936673 -0.31487428 27.00000000 0.24224977 - 918 0.40994713 -0.31487428 28.00000000 0.25757459 - 1082 0.40873832 -0.31487428 29.00000000 0.26415921 - 1016 0.40884804 -0.31487428 30.00000000 0.24429422 - 906 0.40816471 -0.31487428 31.00000000 0.26031434 - 838 0.40893452 -0.31487428 32.00000000 0.25722551 - 796 0.40576972 -0.31487428 33.00000000 0.23939734 - 842 0.41385228 -0.31487428 34.00000000 0.23236891 - 828 0.41192460 -0.31487428 35.00000000 0.23162040 - 784 0.41122881 -0.31487428 36.00000000 0.24223081 - 808 0.40701821 -0.31487428 37.00000000 0.25810468 - 820 0.41089087 -0.31487428 38.00000000 0.21196830 - 730 0.40911089 -0.31487428 39.00000000 0.24621932 - 710 0.41124352 -0.31487428 40.00000000 0.24121689 - 27494 0.60317710 -0.14359285 1.00000000 0.24942369 - 21470 0.60391122 -0.14359285 2.00000000 0.24580331 - 17406 0.60460016 -0.14359285 3.00000000 0.25055191 - 14982 0.60327837 -0.14359285 4.00000000 0.24961890 - 13476 0.60335133 -0.14359285 5.00000000 0.24685886 - 11514 0.60271555 -0.14359285 6.00000000 0.24427507 - 10162 0.60350576 -0.14359285 7.00000000 0.24936578 - 9308 0.60427165 -0.14359285 8.00000000 0.25269925 - 8110 0.60238444 -0.14359285 9.00000000 0.24736272 - 7584 0.60345231 -0.14359285 10.00000000 0.25223872 - 6442 0.60465617 -0.14359285 11.00000000 0.25438665 - 5978 0.60404662 -0.14359285 12.00000000 0.24927192 - 5554 0.60656459 -0.14359285 13.00000000 0.24852034 - 4780 0.60469281 -0.14359285 14.00000000 0.25432201 - 4380 0.60608675 -0.14359285 15.00000000 0.24461427 - 4092 0.60667047 -0.14359285 16.00000000 0.25697979 - 3656 0.60411788 -0.14359285 17.00000000 0.24704843 - 3292 0.60303391 -0.14359285 18.00000000 0.25493602 - 3114 0.60214116 -0.14359285 19.00000000 0.25349607 - 3062 0.60450454 -0.14359285 20.00000000 0.24950974 - 2850 0.60857317 -0.14359285 21.00000000 0.24892819 - 2788 0.60612776 -0.14359285 22.00000000 0.24995876 - 2718 0.60573879 -0.14359285 23.00000000 0.25598898 - 2502 0.60793763 -0.14359285 24.00000000 0.25938531 - 2398 0.60983447 -0.14359285 25.00000000 0.24691516 - 2290 0.60297074 -0.14359285 26.00000000 0.25140534 - 2216 0.60680331 -0.14359285 27.00000000 0.24557030 - 2190 0.60640371 -0.14359285 28.00000000 0.25932460 - 2016 0.60619954 -0.14359285 29.00000000 0.25376368 - 1932 0.60707764 -0.14359285 30.00000000 0.26216234 - 1962 0.61128026 -0.14359285 31.00000000 0.24652376 - 1842 0.60953453 -0.14359285 32.00000000 0.24904473 - 1842 0.61023173 -0.14359285 33.00000000 0.26017426 - 1736 0.60835892 -0.14359285 34.00000000 0.23710694 - 1628 0.60781197 -0.14359285 35.00000000 0.23324817 - 1688 0.60747966 -0.14359285 36.00000000 0.25239294 - 1654 0.60924508 -0.14359285 37.00000000 0.24225726 - 1598 0.60791844 -0.14359285 38.00000000 0.24902258 - 1558 0.60685893 -0.14359285 39.00000000 0.24144536 - 1470 0.60681622 -0.14359285 40.00000000 0.24374943 - 43816 0.89445934 0.02768858 1.00000000 0.24997811 - 34834 0.89511374 0.02768858 2.00000000 0.24750474 - 28882 0.89620125 0.02768858 3.00000000 0.24589109 - 24152 0.89466267 0.02768858 4.00000000 0.24396389 - 21966 0.89497048 0.02768858 5.00000000 0.24534227 - 19050 0.89490330 0.02768858 6.00000000 0.24922278 - 16720 0.89536130 0.02768858 7.00000000 0.24903041 - 15194 0.89527319 0.02768858 8.00000000 0.24896019 - 13742 0.89475131 0.02768858 9.00000000 0.24556692 - 12332 0.89716722 0.02768858 10.00000000 0.25320842 - 11412 0.89554292 0.02768858 11.00000000 0.24519478 - 10018 0.90046205 0.02768858 12.00000000 0.24758042 - 9474 0.89926819 0.02768858 13.00000000 0.24687194 - 8820 0.89413808 0.02768858 14.00000000 0.24948157 - 7986 0.89681207 0.02768858 15.00000000 0.24804786 - 7504 0.90097814 0.02768858 16.00000000 0.25266147 - 6896 0.89950553 0.02768858 17.00000000 0.24858442 - 6410 0.89869938 0.02768858 18.00000000 0.25118932 - 5988 0.89731743 0.02768858 19.00000000 0.25397816 - 5938 0.89990026 0.02768858 20.00000000 0.25480761 - 5354 0.90071397 0.02768858 21.00000000 0.24430648 - 5354 0.90020972 0.02768858 22.00000000 0.25393327 - 5068 0.90232660 0.02768858 23.00000000 0.24687546 - 4954 0.89962387 0.02768858 24.00000000 0.25475249 - 4522 0.89994446 0.02768858 25.00000000 0.25144288 - 4644 0.90070133 0.02768858 26.00000000 0.24961773 - 4668 0.90190104 0.02768858 27.00000000 0.25211924 - 4296 0.89550083 0.02768858 28.00000000 0.24863350 - 3928 0.90380477 0.02768858 29.00000000 0.25176973 - 3956 0.90079914 0.02768858 30.00000000 0.24907182 - 3862 0.89782814 0.02768858 31.00000000 0.24202957 - 3782 0.89780496 0.02768858 32.00000000 0.23558403 - 3694 0.90406712 0.02768858 33.00000000 0.23873382 - 3760 0.90239332 0.02768858 34.00000000 0.24381802 - 3606 0.89968373 0.02768858 35.00000000 0.24030114 - 3640 0.89807333 0.02768858 36.00000000 0.24281973 - 3432 0.90025810 0.02768858 37.00000000 0.24475654 - 3204 0.90234217 0.02768858 38.00000000 0.24304789 - 3240 0.90390676 0.02768858 39.00000000 0.24070858 - 3118 0.90594725 0.02768858 40.00000000 0.23796524 - 68820 1.32732615 0.19897000 1.00000000 0.24953320 - 57694 1.32836710 0.19897000 2.00000000 0.24832112 - 48216 1.33024082 0.19897000 3.00000000 0.24888585 - 41372 1.33062687 0.19897000 4.00000000 0.24717333 - 36578 1.33074052 0.19897000 5.00000000 0.24734585 - 32054 1.32925206 0.19897000 6.00000000 0.24744735 - 28886 1.33072628 0.19897000 7.00000000 0.24760930 - 26590 1.33328161 0.19897000 8.00000000 0.24991801 - 23718 1.33282587 0.19897000 9.00000000 0.25180992 - 21768 1.33041843 0.19897000 10.00000000 0.24751174 - 20074 1.32954296 0.19897000 11.00000000 0.25279781 - 18420 1.33041774 0.19897000 12.00000000 0.25097795 - 17154 1.33251590 0.19897000 13.00000000 0.24965266 - 15676 1.33126224 0.19897000 14.00000000 0.25232789 - 15000 1.33251520 0.19897000 15.00000000 0.24655845 - 13876 1.33356575 0.19897000 16.00000000 0.25475325 - 13062 1.33634964 0.19897000 17.00000000 0.24903000 - 12422 1.33458544 0.19897000 18.00000000 0.24955665 - 11680 1.33065258 0.19897000 19.00000000 0.25006247 - 11304 1.33586183 0.19897000 20.00000000 0.25411583 - 10680 1.33618496 0.19897000 21.00000000 0.25139946 - 10736 1.33880934 0.19897000 22.00000000 0.25414448 - 10012 1.33363545 0.19897000 23.00000000 0.24699057 - 9908 1.33775146 0.19897000 24.00000000 0.25155141 - 9440 1.33471317 0.19897000 25.00000000 0.25359617 - 9290 1.33989782 0.19897000 26.00000000 0.25211594 - 8918 1.33619507 0.19897000 27.00000000 0.24485901 - 8956 1.33491049 0.19897000 28.00000000 0.24719098 - 8708 1.33459825 0.19897000 29.00000000 0.24491276 - 8540 1.33564654 0.19897000 30.00000000 0.24714809 - 8158 1.33788604 0.19897000 31.00000000 0.25140622 - 8364 1.34056387 0.19897000 32.00000000 0.25054790 - 8022 1.33435340 0.19897000 33.00000000 0.24477718 - 7992 1.34074620 0.19897000 34.00000000 0.25152537 - 7820 1.33621140 0.19897000 35.00000000 0.24878553 - 7696 1.33994067 0.19897000 36.00000000 0.24839742 - 7322 1.34185792 0.19897000 37.00000000 0.25342708 - 7410 1.33868436 0.19897000 38.00000000 0.24677499 - 7156 1.33646948 0.19897000 39.00000000 0.24347108 - 7030 1.34415561 0.19897000 40.00000000 0.24606591 - 109290 1.96803533 0.37025143 1.00000000 0.24881869 - 96976 1.97019483 0.37025143 2.00000000 0.24815655 - 84608 1.97285777 0.37025143 3.00000000 0.24788068 - 73272 1.97542347 0.37025143 4.00000000 0.24952673 - 65050 1.97728035 0.37025143 5.00000000 0.24875385 - 57664 1.97882512 0.37025143 6.00000000 0.24774262 - 52814 1.97745619 0.37025143 7.00000000 0.24751039 - 47716 1.97912388 0.37025143 8.00000000 0.24859753 - 43416 1.97867273 0.37025143 9.00000000 0.24828202 - 40672 1.97856814 0.37025143 10.00000000 0.24812126 - 37120 1.97941922 0.37025143 11.00000000 0.25007701 - 34880 1.98124249 0.37025143 12.00000000 0.25020067 - 32150 1.98237230 0.37025143 13.00000000 0.24711603 - 30380 1.98103803 0.37025143 14.00000000 0.24580741 - 28496 1.97958148 0.37025143 15.00000000 0.24825432 - 27160 1.98404722 0.37025143 16.00000000 0.24794438 - 25648 1.98336716 0.37025143 17.00000000 0.24920258 - 24568 1.98837631 0.37025143 18.00000000 0.24989475 - 23812 1.98463814 0.37025143 19.00000000 0.24837010 - 23046 1.98512468 0.37025143 20.00000000 0.25251313 - 22334 1.98543143 0.37025143 21.00000000 0.25239060 - 21528 1.98527301 0.37025143 22.00000000 0.25146536 - 21208 1.98435509 0.37025143 23.00000000 0.25139925 - 20008 1.98272903 0.37025143 24.00000000 0.25158403 - 19828 1.98462793 0.37025143 25.00000000 0.25121431 - 19370 1.98375030 0.37025143 26.00000000 0.24730241 - 19274 1.98890582 0.37025143 27.00000000 0.24709195 - 18582 1.98669564 0.37025143 28.00000000 0.24510355 - 18152 1.98761728 0.37025143 29.00000000 0.24941163 - 17848 1.98924601 0.37025143 30.00000000 0.24645158 - 17208 1.98731206 0.37025143 31.00000000 0.24506104 - 17618 1.98575380 0.37025143 32.00000000 0.24726713 - 17054 1.98534136 0.37025143 33.00000000 0.24450514 - 16614 1.98241037 0.37025143 34.00000000 0.24365704 - 16660 1.99062150 0.37025143 35.00000000 0.24399655 - 16460 1.98709101 0.37025143 36.00000000 0.25009259 - 16406 1.99026566 0.37025143 37.00000000 0.24691178 - 15796 1.98399637 0.37025143 38.00000000 0.24606113 - 15462 1.98554514 0.37025143 39.00000000 0.24775133 - 15048 1.98541435 0.37025143 40.00000000 0.24840846 - 176384 2.92513413 0.54153286 1.00000000 0.24876652 - 166064 2.92550239 0.54153286 2.00000000 0.24891352 - 149946 2.93227908 0.54153286 3.00000000 0.24872986 - 135102 2.93410234 0.54153286 4.00000000 0.24813131 - 121998 2.93830305 0.54153286 5.00000000 0.24956581 - 110352 2.94021852 0.54153286 6.00000000 0.24837312 - 101258 2.94107373 0.54153286 7.00000000 0.24716476 - 93724 2.94260155 0.54153286 8.00000000 0.24649832 - 86944 2.94285920 0.54153286 9.00000000 0.24608941 - 80590 2.94348131 0.54153286 10.00000000 0.24716538 - 74736 2.94353053 0.54153286 11.00000000 0.24805741 - 70092 2.94066074 0.54153286 12.00000000 0.24798619 - 65148 2.94708534 0.54153286 13.00000000 0.24673671 - 62516 2.93903489 0.54153286 14.00000000 0.24547115 - 59462 2.94498149 0.54153286 15.00000000 0.24948358 - 57076 2.94418860 0.54153286 16.00000000 0.25082215 - 54838 2.94779091 0.54153286 17.00000000 0.24843480 - 52080 2.94841688 0.54153286 18.00000000 0.24970753 - 50440 2.94759062 0.54153286 19.00000000 0.24811317 - 48480 2.94776707 0.54153286 20.00000000 0.24693192 - 46974 2.94675941 0.54153286 21.00000000 0.25045296 - 46040 2.94584328 0.54153286 22.00000000 0.25170062 - 43600 2.94701817 0.54153286 23.00000000 0.25377988 - 43264 2.94581547 0.54153286 24.00000000 0.25213922 - 42128 2.94684790 0.54153286 25.00000000 0.25326233 - 41314 2.95167672 0.54153286 26.00000000 0.24981971 - 40358 2.94379270 0.54153286 27.00000000 0.24850617 - 39692 2.94957189 0.54153286 28.00000000 0.25092024 - 39084 2.94525847 0.54153286 29.00000000 0.24628078 - 38496 2.95161202 0.54153286 30.00000000 0.24828585 - 37816 2.94950754 0.54153286 31.00000000 0.24714033 - 37654 2.95053193 0.54153286 32.00000000 0.24778717 - 36794 2.94959301 0.54153286 33.00000000 0.24676753 - 36820 2.94662751 0.54153286 34.00000000 0.24541425 - 36480 2.94329146 0.54153286 35.00000000 0.24562192 - 35340 2.95219931 0.54153286 36.00000000 0.24833118 - 35390 2.94482368 0.54153286 37.00000000 0.24739101 - 34732 2.95199724 0.54153286 38.00000000 0.24351798 - 33786 2.94943862 0.54153286 39.00000000 0.24778658 - 33490 2.95118769 0.54153286 40.00000000 0.24904051 - 299852 4.33821829 0.71281429 1.00000000 0.24868877 - 290046 4.34166308 0.71281429 2.00000000 0.24921631 - 271772 4.34942029 0.71281429 3.00000000 0.24956799 - 254042 4.35087553 0.71281429 4.00000000 0.24836711 - 235760 4.35413196 0.71281429 5.00000000 0.24983160 - 217672 4.36009018 0.71281429 6.00000000 0.24885417 - 202298 4.35854558 0.71281429 7.00000000 0.24830500 - 186022 4.35817090 0.71281429 8.00000000 0.24783011 - 175532 4.36220471 0.71281429 9.00000000 0.24831597 - 163728 4.36297052 0.71281429 10.00000000 0.24893544 - 154142 4.36809665 0.71281429 11.00000000 0.24816223 - 147232 4.36976467 0.71281429 12.00000000 0.24659411 - 139384 4.36864976 0.71281429 13.00000000 0.24968601 - 132014 4.37049059 0.71281429 14.00000000 0.24838925 - 127462 4.37659440 0.71281429 15.00000000 0.24767155 - 122430 4.37044494 0.71281429 16.00000000 0.25032607 - 117486 4.37080799 0.71281429 17.00000000 0.24978844 - 112622 4.37626159 0.71281429 18.00000000 0.25001093 - 108710 4.37424249 0.71281429 19.00000000 0.24948582 - 105928 4.37361678 0.71281429 20.00000000 0.25008717 - 102164 4.37088591 0.71281429 21.00000000 0.24883468 - 98550 4.37246146 0.71281429 22.00000000 0.25057588 - 95868 4.37228163 0.71281429 23.00000000 0.25120241 - 94300 4.37624781 0.71281429 24.00000000 0.25016953 - 91200 4.36957162 0.71281429 25.00000000 0.25010685 - 88998 4.37123386 0.71281429 26.00000000 0.24872578 - 87818 4.36939339 0.71281429 27.00000000 0.25198169 - 86034 4.36845085 0.71281429 28.00000000 0.24887076 - 84890 4.36889972 0.71281429 29.00000000 0.24593120 - 83074 4.37355914 0.71281429 30.00000000 0.24780185 - 81932 4.37289660 0.71281429 31.00000000 0.24782482 - 81946 4.37169389 0.71281429 32.00000000 0.24711805 - 79898 4.37354887 0.71281429 33.00000000 0.24961511 - 79172 4.37053906 0.71281429 34.00000000 0.24546177 - 78916 4.36791872 0.71281429 35.00000000 0.24803721 - 77466 4.37021453 0.71281429 36.00000000 0.24570088 - 75878 4.37018029 0.71281429 37.00000000 0.24776021 - 74904 4.37222409 0.71281429 38.00000000 0.24710917 - 73824 4.37352756 0.71281429 39.00000000 0.24673843 - 73308 4.37421106 0.71281429 40.00000000 0.24710711 - 509442 6.44132476 0.88409572 1.00000000 0.24884696 - 499506 6.44625200 0.88409572 2.00000000 0.24920204 - 483290 6.44760636 0.88409572 3.00000000 0.24952780 - 462304 6.45579009 0.88409572 4.00000000 0.24962774 - 440582 6.46019125 0.88409572 5.00000000 0.24997609 - 416036 6.46418360 0.88409572 6.00000000 0.24945009 - 395288 6.46636093 0.88409572 7.00000000 0.24980435 - 371708 6.46667523 0.88409572 8.00000000 0.24884894 - 351714 6.47089067 0.88409572 9.00000000 0.24926166 - 335056 6.46871069 0.88409572 10.00000000 0.24951655 - 319616 6.47744950 0.88409572 11.00000000 0.24954953 - 304266 6.47677657 0.88409572 12.00000000 0.24995629 - 291354 6.47972685 0.88409572 13.00000000 0.24907881 - 278634 6.48160031 0.88409572 14.00000000 0.24976679 - 269094 6.48362429 0.88409572 15.00000000 0.24955489 - 259542 6.48537142 0.88409572 16.00000000 0.24932213 - 253474 6.48555157 0.88409572 17.00000000 0.24867549 - 244584 6.49151920 0.88409572 18.00000000 0.25070472 - 236468 6.48914671 0.88409572 19.00000000 0.24889741 - 228250 6.49108695 0.88409572 20.00000000 0.24885695 - 223832 6.49154772 0.88409572 21.00000000 0.24859243 - 217638 6.49131477 0.88409572 22.00000000 0.24833587 - 211850 6.49262592 0.88409572 23.00000000 0.24949414 - 207198 6.49136620 0.88409572 24.00000000 0.24910682 - 202450 6.49025594 0.88409572 25.00000000 0.24898614 - 197224 6.48839785 0.88409572 26.00000000 0.24782523 - 193856 6.49682653 0.88409572 27.00000000 0.24807537 - 190232 6.49156244 0.88409572 28.00000000 0.24884792 - 188128 6.49171634 0.88409572 29.00000000 0.24745936 - 181720 6.48936651 0.88409572 30.00000000 0.24879487 - 179264 6.48917998 0.88409572 31.00000000 0.24761008 - 176388 6.49370212 0.88409572 32.00000000 0.24627120 - 174074 6.49123626 0.88409572 33.00000000 0.24651533 - 173772 6.48882685 0.88409572 34.00000000 0.24670714 - 171894 6.49284098 0.88409572 35.00000000 0.24704464 - 170136 6.49543566 0.88409572 36.00000000 0.24712520 - 167288 6.49356504 0.88409572 37.00000000 0.24559378 - 165772 6.49592130 0.88409572 38.00000000 0.24877491 - 164468 6.50148479 0.88409572 39.00000000 0.24701601 - 163798 6.49710960 0.88409572 40.00000000 0.24676693 - 882858 9.56037910 1.05537715 1.00000000 0.24928814 - 872394 9.56275410 1.05537715 2.00000000 0.24948430 - 856990 9.56032866 1.05537715 3.00000000 0.24948570 - 836578 9.56990317 1.05537715 4.00000000 0.24894762 - 815784 9.57558956 1.05537715 5.00000000 0.25029975 - 791142 9.57728331 1.05537715 6.00000000 0.25063975 - 762026 9.58234734 1.05537715 7.00000000 0.25074775 - 732752 9.59189445 1.05537715 8.00000000 0.25079519 - 706342 9.59919859 1.05537715 9.00000000 0.25019640 - 682298 9.60081008 1.05537715 10.00000000 0.25099150 - 655784 9.60413012 1.05537715 11.00000000 0.25033610 - 635656 9.61272964 1.05537715 12.00000000 0.24975357 - 614584 9.61443883 1.05537715 13.00000000 0.24971358 - 592764 9.61804460 1.05537715 14.00000000 0.24991999 - 576430 9.61929294 1.05537715 15.00000000 0.24902867 - 559608 9.62238148 1.05537715 16.00000000 0.24970838 - 545314 9.62407386 1.05537715 17.00000000 0.24919058 - 528414 9.62534225 1.05537715 18.00000000 0.24894235 - 515520 9.62710164 1.05537715 19.00000000 0.24915350 - 502400 9.62518824 1.05537715 20.00000000 0.25070946 - 490632 9.63426704 1.05537715 21.00000000 0.25008812 - 480970 9.62998760 1.05537715 22.00000000 0.25010152 - 467562 9.63307417 1.05537715 23.00000000 0.24975328 - 455294 9.63023052 1.05537715 24.00000000 0.24948841 - 446432 9.63194765 1.05537715 25.00000000 0.25033164 - 435880 9.62774684 1.05537715 26.00000000 0.24881397 - 425246 9.63144514 1.05537715 27.00000000 0.24911773 - 416374 9.63054987 1.05537715 28.00000000 0.24807337 - 409836 9.63121515 1.05537715 29.00000000 0.24824328 - 405338 9.63692910 1.05537715 30.00000000 0.24981925 - 401158 9.63542800 1.05537715 31.00000000 0.24946039 - 394876 9.63693849 1.05537715 32.00000000 0.24877647 - 388556 9.63557676 1.05537715 33.00000000 0.24809976 - 386704 9.63386393 1.05537715 34.00000000 0.24908533 - 383670 9.63722375 1.05537715 35.00000000 0.24812980 - 380918 9.62762872 1.05537715 36.00000000 0.24799733 - 375944 9.62631454 1.05537715 37.00000000 0.24777607 - 369790 9.63021498 1.05537715 38.00000000 0.24708111 - 364144 9.62778999 1.05537715 39.00000000 0.24826574 - 360504 9.62661840 1.05537715 40.00000000 0.24765631 - 1551584 14.18169603 1.22665858 1.00000000 0.24902089 - 1531456 14.18276841 1.22665858 2.00000000 0.24923925 - 1511516 14.18915518 1.22665858 3.00000000 0.24914327 - 1495428 14.19291599 1.22665858 4.00000000 0.24944428 - 1475120 14.19386585 1.22665858 5.00000000 0.24922417 - 1450038 14.19733731 1.22665858 6.00000000 0.24926986 - 1425340 14.20375403 1.22665858 7.00000000 0.24947609 - 1394440 14.21481636 1.22665858 8.00000000 0.24954115 - 1367654 14.21861471 1.22665858 9.00000000 0.24993801 - 1342170 14.22705341 1.22665858 10.00000000 0.24959508 - 1311164 14.23079578 1.22665858 11.00000000 0.24978555 - 1282960 14.24204917 1.22665858 12.00000000 0.24955227 - 1257544 14.24565642 1.22665858 13.00000000 0.25020742 - 1229492 14.24983891 1.22665858 14.00000000 0.24954111 - 1206998 14.25288598 1.22665858 15.00000000 0.24932176 - 1181890 14.25587541 1.22665858 16.00000000 0.24881036 - 1162924 14.26160431 1.22665858 17.00000000 0.24903139 - 1135472 14.26200162 1.22665858 18.00000000 0.24860760 - 1118142 14.26558950 1.22665858 19.00000000 0.24910734 - 1095710 14.27048628 1.22665858 20.00000000 0.24854025 - 1074786 14.26611672 1.22665858 21.00000000 0.24932540 - 1054778 14.27131972 1.22665858 22.00000000 0.24881540 - 1033514 14.27912799 1.22665858 23.00000000 0.24886947 - 1012432 14.28226869 1.22665858 24.00000000 0.24843397 - 992952 14.28397438 1.22665858 25.00000000 0.24839128 - 972632 14.29084075 1.22665858 26.00000000 0.24891812 - 953910 14.29875889 1.22665858 27.00000000 0.24957455 - 942120 14.29581075 1.22665858 28.00000000 0.24879714 - 928490 14.29769790 1.22665858 29.00000000 0.24906748 - 915308 14.29460474 1.22665858 30.00000000 0.24949074 - 898288 14.29297671 1.22665858 31.00000000 0.24930832 - 883302 14.28489610 1.22665858 32.00000000 0.24948742 - 868504 14.28614945 1.22665858 33.00000000 0.24943619 - 854868 14.27889355 1.22665858 34.00000000 0.24983520 - 842998 14.27856645 1.22665858 35.00000000 0.25003238 - 832962 14.27792713 1.22665858 36.00000000 0.24915300 - 823794 14.27176182 1.22665858 37.00000000 0.24881383 - 809556 14.27418894 1.22665858 38.00000000 0.24866503 - 795092 14.27683338 1.22665858 39.00000000 0.24864430 - 784952 14.27432786 1.22665858 40.00000000 0.24867774 - 2843682 21.08373822 1.39794001 1.00000000 0.24858276 - 2823704 21.08722300 1.39794001 2.00000000 0.24878427 - 2799296 21.08732196 1.39794001 3.00000000 0.24852797 - 2779320 21.08585640 1.39794001 4.00000000 0.24882382 - 2750676 21.08794036 1.39794001 5.00000000 0.24866755 - 2725470 21.08711045 1.39794001 6.00000000 0.24896444 - 2699080 21.09134777 1.39794001 7.00000000 0.24894138 - 2667934 21.10057131 1.39794001 8.00000000 0.24884846 - 2641636 21.10526652 1.39794001 9.00000000 0.24879619 - 2615084 21.11405317 1.39794001 10.00000000 0.24897332 - 2586306 21.12374625 1.39794001 11.00000000 0.24893040 - 2559136 21.12378348 1.39794001 12.00000000 0.24875235 - 2525172 21.12770934 1.39794001 13.00000000 0.24906389 - 2495506 21.13205778 1.39794001 14.00000000 0.24912016 - 2464286 21.13906962 1.39794001 15.00000000 0.24922939 - 2434260 21.14166544 1.39794001 16.00000000 0.24905928 - 2405302 21.14029028 1.39794001 17.00000000 0.24895084 - 2376156 21.14909072 1.39794001 18.00000000 0.24887878 - 2341716 21.14723372 1.39794001 19.00000000 0.24947595 - 2311666 21.15041409 1.39794001 20.00000000 0.24941547 - 2276046 21.15926543 1.39794001 21.00000000 0.24927768 - 2247224 21.16239142 1.39794001 22.00000000 0.24933993 - 2220012 21.16574115 1.39794001 23.00000000 0.24914576 - 2189790 21.16937653 1.39794001 24.00000000 0.24938066 - 2161768 21.16682532 1.39794001 25.00000000 0.24927942 - 2131028 21.16522752 1.39794001 26.00000000 0.24976949 - 2099856 21.16285380 1.39794001 27.00000000 0.24966870 - 2063930 21.16808677 1.39794001 28.00000000 0.24976709 - 2033378 21.16077323 1.39794001 29.00000000 0.24931362 - 1997836 21.16709874 1.39794001 30.00000000 0.24956264 - 1961964 21.16561650 1.39794001 31.00000000 0.24936036 - 1930470 21.16726063 1.39794001 32.00000000 0.24890861 - 1896134 21.16489911 1.39794001 33.00000000 0.24907636 - 1861658 21.15338922 1.39794001 34.00000000 0.24954344 - 1831892 21.16027200 1.39794001 35.00000000 0.24947016 - 1810052 21.16744565 1.39794001 36.00000000 0.24857878 - 1780040 21.16642842 1.39794001 37.00000000 0.24899357 - 1744878 21.16048297 1.39794001 38.00000000 0.24888524 - 1710066 21.16420159 1.39794001 39.00000000 0.24888095 - 1674528 21.16313054 1.39794001 40.00000000 0.24853232 + 4156 0.12427249 -0.82871857 1.00000000 0.25016330 + 3016 0.12450878 -0.82871857 2.00000000 0.26150050 + 2336 0.12406820 -0.82871857 3.00000000 0.24682984 + 1912 0.12458084 -0.82871857 4.00000000 0.24384985 + 1618 0.12457555 -0.82871857 5.00000000 0.26231396 + 1258 0.12510450 -0.82871857 6.00000000 0.24273859 + 1008 0.12550313 -0.82871857 7.00000000 0.25015619 + 862 0.12466951 -0.82871857 8.00000000 0.25399403 + 762 0.12421332 -0.82871857 9.00000000 0.25116047 + 648 0.12663071 -0.82871857 10.00000000 0.25622713 + 562 0.12588163 -0.82871857 11.00000000 0.25993422 + 482 0.12400987 -0.82871857 12.00000000 0.25859197 + 448 0.12426947 -0.82871857 13.00000000 0.22887206 + 392 0.12301971 -0.82871857 14.00000000 0.23331814 + 328 0.12559690 -0.82871857 15.00000000 0.26490964 + 270 0.12569670 -0.82871857 16.00000000 0.24815899 + 246 0.12547615 -0.82871857 17.00000000 0.25682834 + 220 0.12532914 -0.82871857 18.00000000 0.26894730 + 246 0.12445406 -0.82871857 19.00000000 0.27571146 + 162 0.12536580 -0.82871857 20.00000000 0.27984065 + 170 0.12708425 -0.82871857 21.00000000 0.30703331 + 154 0.12371156 -0.82871857 22.00000000 0.21624163 + 174 0.12414351 -0.82871857 23.00000000 0.22678746 + 112 0.12587005 -0.82871857 24.00000000 0.19372553 + 130 0.12100618 -0.82871857 25.00000000 0.27760809 + 118 0.12696363 -0.82871857 26.00000000 0.23891698 + 114 0.12224649 -0.82871857 27.00000000 0.22992821 + 116 0.12624480 -0.82871857 28.00000000 0.20948667 + 106 0.12672748 -0.82871857 29.00000000 0.28254263 + 118 0.12411939 -0.82871857 30.00000000 0.25021621 + 98 0.12632199 -0.82871857 31.00000000 0.30513141 + 76 0.12368998 -0.82871857 32.00000000 0.21346281 + 104 0.12478813 -0.82871857 33.00000000 0.22397106 + 84 0.12167158 -0.82871857 34.00000000 0.23064471 + 74 0.12784758 -0.82871857 35.00000000 0.28487428 + 70 0.12602299 -0.82871857 36.00000000 0.27403086 + 78 0.12001834 -0.82871857 37.00000000 0.28600996 + 86 0.12942840 -0.82871857 38.00000000 0.27014618 + 80 0.13015623 -0.82871857 39.00000000 0.31395098 + 52 0.12802812 -0.82871857 40.00000000 0.27054138 + 6242 0.18382423 -0.65743714 1.00000000 0.25058271 + 4746 0.18493662 -0.65743714 2.00000000 0.25177086 + 3798 0.18437410 -0.65743714 3.00000000 0.24362524 + 3114 0.18663620 -0.65743714 4.00000000 0.25439788 + 2682 0.18579669 -0.65743714 5.00000000 0.25656578 + 2336 0.18566336 -0.65743714 6.00000000 0.24184050 + 2040 0.18348660 -0.65743714 7.00000000 0.23826460 + 1776 0.18327063 -0.65743714 8.00000000 0.25617774 + 1504 0.18428339 -0.65743714 9.00000000 0.26107206 + 1184 0.18597661 -0.65743714 10.00000000 0.24496004 + 1022 0.18654640 -0.65743714 11.00000000 0.25447070 + 906 0.18562937 -0.65743714 12.00000000 0.24001152 + 854 0.18765290 -0.65743714 13.00000000 0.23469816 + 752 0.18608229 -0.65743714 14.00000000 0.24873795 + 756 0.18731265 -0.65743714 15.00000000 0.26178935 + 604 0.18598687 -0.65743714 16.00000000 0.25153155 + 538 0.18475611 -0.65743714 17.00000000 0.27031723 + 494 0.18803745 -0.65743714 18.00000000 0.26950864 + 420 0.18634185 -0.65743714 19.00000000 0.27994581 + 382 0.18777638 -0.65743714 20.00000000 0.25010807 + 316 0.18636659 -0.65743714 21.00000000 0.23472658 + 304 0.18920481 -0.65743714 22.00000000 0.28208861 + 324 0.18628633 -0.65743714 23.00000000 0.28830426 + 280 0.18683682 -0.65743714 24.00000000 0.25930928 + 272 0.18256651 -0.65743714 25.00000000 0.26484630 + 252 0.18666413 -0.65743714 26.00000000 0.25210282 + 216 0.18390063 -0.65743714 27.00000000 0.24641028 + 246 0.18915018 -0.65743714 28.00000000 0.24191095 + 250 0.18494779 -0.65743714 29.00000000 0.25647593 + 230 0.18864688 -0.65743714 30.00000000 0.27507632 + 252 0.18538693 -0.65743714 31.00000000 0.27511258 + 186 0.18441305 -0.65743714 32.00000000 0.26428680 + 186 0.18765800 -0.65743714 33.00000000 0.25909057 + 190 0.18628433 -0.65743714 34.00000000 0.28365395 + 164 0.18585010 -0.65743714 35.00000000 0.22643515 + 170 0.19000598 -0.65743714 36.00000000 0.23388277 + 162 0.18751452 -0.65743714 37.00000000 0.26906999 + 140 0.18935114 -0.65743714 38.00000000 0.26191481 + 180 0.18542333 -0.65743714 39.00000000 0.22584352 + 142 0.19299165 -0.65743714 40.00000000 0.20719611 + 9864 0.27502666 -0.48615571 1.00000000 0.24632580 + 7678 0.27474390 -0.48615571 2.00000000 0.25441840 + 6552 0.27562556 -0.48615571 3.00000000 0.24338852 + 5504 0.27495753 -0.48615571 4.00000000 0.24604738 + 4490 0.27513821 -0.48615571 5.00000000 0.25870014 + 4034 0.27614700 -0.48615571 6.00000000 0.24924018 + 3684 0.27561404 -0.48615571 7.00000000 0.24541258 + 2998 0.27447459 -0.48615571 8.00000000 0.24671797 + 2774 0.27574519 -0.48615571 9.00000000 0.25070629 + 2296 0.27620784 -0.48615571 10.00000000 0.25683877 + 2028 0.27668211 -0.48615571 11.00000000 0.24951670 + 1808 0.27674213 -0.48615571 12.00000000 0.23706893 + 1746 0.27633833 -0.48615571 13.00000000 0.26891466 + 1454 0.27605193 -0.48615571 14.00000000 0.25170234 + 1362 0.27426743 -0.48615571 15.00000000 0.26431816 + 1160 0.27590006 -0.48615571 16.00000000 0.24480575 + 1022 0.27476899 -0.48615571 17.00000000 0.26926212 + 910 0.27780021 -0.48615571 18.00000000 0.24425357 + 856 0.27698777 -0.48615571 19.00000000 0.27199005 + 764 0.27512267 -0.48615571 20.00000000 0.24119959 + 722 0.27720527 -0.48615571 21.00000000 0.25128035 + 718 0.27420157 -0.48615571 22.00000000 0.27103586 + 712 0.27653939 -0.48615571 23.00000000 0.29618270 + 584 0.27805595 -0.48615571 24.00000000 0.24836085 + 596 0.27764977 -0.48615571 25.00000000 0.23998865 + 488 0.27517215 -0.48615571 26.00000000 0.26839693 + 544 0.27364775 -0.48615571 27.00000000 0.25305286 + 488 0.28080083 -0.48615571 28.00000000 0.24153048 + 464 0.27908350 -0.48615571 29.00000000 0.22455249 + 468 0.28139181 -0.48615571 30.00000000 0.25784877 + 376 0.27752143 -0.48615571 31.00000000 0.25641082 + 348 0.28282233 -0.48615571 32.00000000 0.23807871 + 404 0.27877954 -0.48615571 33.00000000 0.22635934 + 352 0.27735953 -0.48615571 34.00000000 0.24802516 + 418 0.27800458 -0.48615571 35.00000000 0.25190908 + 356 0.27672955 -0.48615571 36.00000000 0.22257123 + 312 0.28068311 -0.48615571 37.00000000 0.26776760 + 332 0.27192345 -0.48615571 38.00000000 0.24506653 + 338 0.27201102 -0.48615571 39.00000000 0.22824130 + 338 0.27168487 -0.48615571 40.00000000 0.24801639 + 16876 0.40837123 -0.31487428 1.00000000 0.24573672 + 12596 0.40571772 -0.31487428 2.00000000 0.24866789 + 10448 0.40751063 -0.31487428 3.00000000 0.24795307 + 9156 0.40565969 -0.31487428 4.00000000 0.24319103 + 8116 0.40720013 -0.31487428 5.00000000 0.25654005 + 6970 0.40616562 -0.31487428 6.00000000 0.25442854 + 6234 0.40734428 -0.31487428 7.00000000 0.24936677 + 5426 0.40927736 -0.31487428 8.00000000 0.25038844 + 5024 0.40852522 -0.31487428 9.00000000 0.24847790 + 4300 0.40812367 -0.31487428 10.00000000 0.25478933 + 3944 0.40830034 -0.31487428 11.00000000 0.24813539 + 3430 0.40689453 -0.31487428 12.00000000 0.25252791 + 3098 0.40711910 -0.31487428 13.00000000 0.24706690 + 2742 0.40754013 -0.31487428 14.00000000 0.25780888 + 2504 0.40687655 -0.31487428 15.00000000 0.24914117 + 2218 0.40870156 -0.31487428 16.00000000 0.25947132 + 2132 0.40972605 -0.31487428 17.00000000 0.25768648 + 1778 0.41107738 -0.31487428 18.00000000 0.25335423 + 1640 0.41103497 -0.31487428 19.00000000 0.26576866 + 1554 0.40653518 -0.31487428 20.00000000 0.25378137 + 1506 0.40888700 -0.31487428 21.00000000 0.24691115 + 1372 0.40875024 -0.31487428 22.00000000 0.26274132 + 1262 0.40573156 -0.31487428 23.00000000 0.26516820 + 1274 0.41055882 -0.31487428 24.00000000 0.24386580 + 1168 0.41388146 -0.31487428 25.00000000 0.25267122 + 1046 0.40842839 -0.31487428 26.00000000 0.26006168 + 1034 0.41188578 -0.31487428 27.00000000 0.24224977 + 918 0.40696941 -0.31487428 28.00000000 0.25757459 + 1082 0.41115704 -0.31487428 29.00000000 0.26415921 + 1016 0.40651687 -0.31487428 30.00000000 0.24429422 + 906 0.40999416 -0.31487428 31.00000000 0.26031434 + 838 0.40959428 -0.31487428 32.00000000 0.25722551 + 796 0.40363125 -0.31487428 33.00000000 0.23939734 + 842 0.41588016 -0.31487428 34.00000000 0.23236891 + 828 0.41169097 -0.31487428 35.00000000 0.23162040 + 784 0.41275867 -0.31487428 36.00000000 0.24223081 + 808 0.40813980 -0.31487428 37.00000000 0.25810468 + 820 0.41199452 -0.31487428 38.00000000 0.21196830 + 730 0.40889216 -0.31487428 39.00000000 0.24621932 + 710 0.41164407 -0.31487428 40.00000000 0.24121689 + 27494 0.60350810 -0.14359285 1.00000000 0.24942369 + 21470 0.60386394 -0.14359285 2.00000000 0.24580331 + 17406 0.60441260 -0.14359285 3.00000000 0.25055191 + 14982 0.60200520 -0.14359285 4.00000000 0.24961890 + 13476 0.60368498 -0.14359285 5.00000000 0.24685886 + 11514 0.60338686 -0.14359285 6.00000000 0.24427507 + 10162 0.60527423 -0.14359285 7.00000000 0.24936578 + 9308 0.60545027 -0.14359285 8.00000000 0.25269925 + 8110 0.60316733 -0.14359285 9.00000000 0.24736272 + 7584 0.60230612 -0.14359285 10.00000000 0.25223872 + 6442 0.60534300 -0.14359285 11.00000000 0.25438665 + 5978 0.60450670 -0.14359285 12.00000000 0.24927192 + 5554 0.60649764 -0.14359285 13.00000000 0.24852034 + 4780 0.60285572 -0.14359285 14.00000000 0.25432201 + 4380 0.60479829 -0.14359285 15.00000000 0.24461427 + 4092 0.60485501 -0.14359285 16.00000000 0.25697979 + 3656 0.60181044 -0.14359285 17.00000000 0.24704843 + 3292 0.60054073 -0.14359285 18.00000000 0.25493602 + 3114 0.60072890 -0.14359285 19.00000000 0.25349607 + 3062 0.60403804 -0.14359285 20.00000000 0.24950974 + 2850 0.60698296 -0.14359285 21.00000000 0.24892819 + 2788 0.60539256 -0.14359285 22.00000000 0.24995876 + 2718 0.60555960 -0.14359285 23.00000000 0.25598898 + 2502 0.60521963 -0.14359285 24.00000000 0.25938531 + 2398 0.60924318 -0.14359285 25.00000000 0.24691516 + 2290 0.60429147 -0.14359285 26.00000000 0.25140534 + 2216 0.60679583 -0.14359285 27.00000000 0.24557030 + 2190 0.60588171 -0.14359285 28.00000000 0.25932460 + 2016 0.60249182 -0.14359285 29.00000000 0.25376368 + 1932 0.60550751 -0.14359285 30.00000000 0.26216234 + 1962 0.61033735 -0.14359285 31.00000000 0.24652376 + 1842 0.61037367 -0.14359285 32.00000000 0.24904473 + 1842 0.61116466 -0.14359285 33.00000000 0.26017426 + 1736 0.60910646 -0.14359285 34.00000000 0.23710694 + 1628 0.60702672 -0.14359285 35.00000000 0.23324817 + 1688 0.60991817 -0.14359285 36.00000000 0.25239294 + 1654 0.61298388 -0.14359285 37.00000000 0.24225726 + 1598 0.60582350 -0.14359285 38.00000000 0.24902258 + 1558 0.61373960 -0.14359285 39.00000000 0.24144536 + 1470 0.60505183 -0.14359285 40.00000000 0.24374943 + 43816 0.89414744 0.02768858 1.00000000 0.24997811 + 34834 0.89482363 0.02768858 2.00000000 0.24750474 + 28882 0.89683275 0.02768858 3.00000000 0.24589109 + 24152 0.89622851 0.02768858 4.00000000 0.24396389 + 21966 0.89399163 0.02768858 5.00000000 0.24534227 + 19050 0.89512142 0.02768858 6.00000000 0.24922278 + 16720 0.89597072 0.02768858 7.00000000 0.24903041 + 15194 0.89398403 0.02768858 8.00000000 0.24896019 + 13742 0.89407742 0.02768858 9.00000000 0.24556692 + 12332 0.89754964 0.02768858 10.00000000 0.25320842 + 11412 0.89346841 0.02768858 11.00000000 0.24519478 + 10018 0.90263937 0.02768858 12.00000000 0.24758042 + 9474 0.90090265 0.02768858 13.00000000 0.24687194 + 8820 0.89357719 0.02768858 14.00000000 0.24948157 + 7986 0.89572104 0.02768858 15.00000000 0.24804786 + 7504 0.90253439 0.02768858 16.00000000 0.25266147 + 6896 0.90190774 0.02768858 17.00000000 0.24858442 + 6410 0.89977890 0.02768858 18.00000000 0.25118932 + 5988 0.89832716 0.02768858 19.00000000 0.25397816 + 5938 0.90037192 0.02768858 20.00000000 0.25480761 + 5354 0.89699489 0.02768858 21.00000000 0.24430648 + 5354 0.89719429 0.02768858 22.00000000 0.25393327 + 5068 0.90107750 0.02768858 23.00000000 0.24687546 + 4954 0.89810783 0.02768858 24.00000000 0.25475249 + 4522 0.89736202 0.02768858 25.00000000 0.25144288 + 4644 0.90153152 0.02768858 26.00000000 0.24961773 + 4668 0.90384144 0.02768858 27.00000000 0.25211924 + 4296 0.89469713 0.02768858 28.00000000 0.24863350 + 3928 0.90420788 0.02768858 29.00000000 0.25176973 + 3956 0.90262341 0.02768858 30.00000000 0.24907182 + 3862 0.89797051 0.02768858 31.00000000 0.24202957 + 3782 0.89661376 0.02768858 32.00000000 0.23558403 + 3694 0.90254191 0.02768858 33.00000000 0.23873382 + 3760 0.90563631 0.02768858 34.00000000 0.24381802 + 3606 0.90201190 0.02768858 35.00000000 0.24030114 + 3640 0.89683417 0.02768858 36.00000000 0.24281973 + 3432 0.90486252 0.02768858 37.00000000 0.24475654 + 3204 0.90425800 0.02768858 38.00000000 0.24304789 + 3240 0.90343153 0.02768858 39.00000000 0.24070858 + 3118 0.90443593 0.02768858 40.00000000 0.23796524 + 68820 1.32643834 0.19897000 1.00000000 0.24953320 + 57694 1.32867241 0.19897000 2.00000000 0.24832112 + 48216 1.33032397 0.19897000 3.00000000 0.24888585 + 41372 1.33075552 0.19897000 4.00000000 0.24717333 + 36578 1.33177222 0.19897000 5.00000000 0.24734585 + 32054 1.32950834 0.19897000 6.00000000 0.24744735 + 28886 1.33075426 0.19897000 7.00000000 0.24760930 + 26590 1.33278860 0.19897000 8.00000000 0.24991801 + 23718 1.33196977 0.19897000 9.00000000 0.25180992 + 21768 1.32835349 0.19897000 10.00000000 0.24751174 + 20074 1.33002989 0.19897000 11.00000000 0.25279781 + 18420 1.33029274 0.19897000 12.00000000 0.25097795 + 17154 1.33588600 0.19897000 13.00000000 0.24965266 + 15676 1.33073320 0.19897000 14.00000000 0.25232789 + 15000 1.33189960 0.19897000 15.00000000 0.24655845 + 13876 1.33771966 0.19897000 16.00000000 0.25475325 + 13062 1.33495438 0.19897000 17.00000000 0.24903000 + 12422 1.33318722 0.19897000 18.00000000 0.24955665 + 11680 1.32774101 0.19897000 19.00000000 0.25006247 + 11304 1.33694229 0.19897000 20.00000000 0.25411583 + 10680 1.33908384 0.19897000 21.00000000 0.25139946 + 10736 1.33520387 0.19897000 22.00000000 0.25414448 + 10012 1.33036905 0.19897000 23.00000000 0.24699057 + 9908 1.33737916 0.19897000 24.00000000 0.25155141 + 9440 1.33359251 0.19897000 25.00000000 0.25359617 + 9290 1.34127378 0.19897000 26.00000000 0.25211594 + 8918 1.34070230 0.19897000 27.00000000 0.24485901 + 8956 1.33331393 0.19897000 28.00000000 0.24719098 + 8708 1.33311203 0.19897000 29.00000000 0.24491276 + 8540 1.33370510 0.19897000 30.00000000 0.24714809 + 8158 1.33799048 0.19897000 31.00000000 0.25140622 + 8364 1.34007914 0.19897000 32.00000000 0.25054790 + 8022 1.33367118 0.19897000 33.00000000 0.24477718 + 7992 1.34043115 0.19897000 34.00000000 0.25152537 + 7820 1.33410705 0.19897000 35.00000000 0.24878553 + 7696 1.33464222 0.19897000 36.00000000 0.24839742 + 7322 1.34047215 0.19897000 37.00000000 0.25342708 + 7410 1.34062204 0.19897000 38.00000000 0.24677499 + 7156 1.33451791 0.19897000 39.00000000 0.24347108 + 7030 1.34398311 0.19897000 40.00000000 0.24606591 + 109290 1.96694479 0.37025143 1.00000000 0.24881869 + 96976 1.96985038 0.37025143 2.00000000 0.24815655 + 84608 1.97223493 0.37025143 3.00000000 0.24788068 + 73272 1.97603075 0.37025143 4.00000000 0.24952673 + 65050 1.97712668 0.37025143 5.00000000 0.24875385 + 57664 1.97981792 0.37025143 6.00000000 0.24774262 + 52814 1.97687366 0.37025143 7.00000000 0.24751039 + 47716 1.98006555 0.37025143 8.00000000 0.24859753 + 43416 1.97678885 0.37025143 9.00000000 0.24828202 + 40672 1.97707939 0.37025143 10.00000000 0.24812126 + 37120 1.98006627 0.37025143 11.00000000 0.25007701 + 34880 1.98135020 0.37025143 12.00000000 0.25020067 + 32150 1.98111603 0.37025143 13.00000000 0.24711603 + 30380 1.97961404 0.37025143 14.00000000 0.24580741 + 28496 1.97801409 0.37025143 15.00000000 0.24825432 + 27160 1.98239007 0.37025143 16.00000000 0.24794438 + 25648 1.98076161 0.37025143 17.00000000 0.24920258 + 24568 1.98720419 0.37025143 18.00000000 0.24989475 + 23812 1.97932160 0.37025143 19.00000000 0.24837010 + 23046 1.98542774 0.37025143 20.00000000 0.25251313 + 22334 1.98646473 0.37025143 21.00000000 0.25239060 + 21528 1.98357283 0.37025143 22.00000000 0.25146536 + 21208 1.98597281 0.37025143 23.00000000 0.25139925 + 20008 1.98444942 0.37025143 24.00000000 0.25158403 + 19828 1.98033228 0.37025143 25.00000000 0.25121431 + 19370 1.98125814 0.37025143 26.00000000 0.24730241 + 19274 1.98275258 0.37025143 27.00000000 0.24709195 + 18582 1.98406106 0.37025143 28.00000000 0.24510355 + 18152 1.98915661 0.37025143 29.00000000 0.24941163 + 17848 1.98757504 0.37025143 30.00000000 0.24645158 + 17208 1.98575969 0.37025143 31.00000000 0.24506104 + 17618 1.98623452 0.37025143 32.00000000 0.24726713 + 17054 1.98552822 0.37025143 33.00000000 0.24450514 + 16614 1.98764109 0.37025143 34.00000000 0.24365704 + 16660 1.98805421 0.37025143 35.00000000 0.24399655 + 16460 1.98862992 0.37025143 36.00000000 0.25009259 + 16406 1.99150853 0.37025143 37.00000000 0.24691178 + 15796 1.98379760 0.37025143 38.00000000 0.24606113 + 15462 1.98301754 0.37025143 39.00000000 0.24775133 + 15048 1.98756124 0.37025143 40.00000000 0.24840846 + 176384 2.92515225 0.54153286 1.00000000 0.24876652 + 166064 2.92611472 0.54153286 2.00000000 0.24891352 + 149946 2.93111567 0.54153286 3.00000000 0.24872986 + 135102 2.93492316 0.54153286 4.00000000 0.24813131 + 121998 2.93976626 0.54153286 5.00000000 0.24956581 + 110352 2.94230850 0.54153286 6.00000000 0.24837312 + 101258 2.94042196 0.54153286 7.00000000 0.24716476 + 93724 2.94789135 0.54153286 8.00000000 0.24649832 + 86944 2.94542675 0.54153286 9.00000000 0.24608941 + 80590 2.94437502 0.54153286 10.00000000 0.24716538 + 74736 2.94720215 0.54153286 11.00000000 0.24805741 + 70092 2.94207332 0.54153286 12.00000000 0.24798619 + 65148 2.94742205 0.54153286 13.00000000 0.24673671 + 62516 2.93791069 0.54153286 14.00000000 0.24547115 + 59462 2.94256427 0.54153286 15.00000000 0.24948358 + 57076 2.94434482 0.54153286 16.00000000 0.25082215 + 54838 2.95201630 0.54153286 17.00000000 0.24843480 + 52080 2.94742493 0.54153286 18.00000000 0.24970753 + 50440 2.94636051 0.54153286 19.00000000 0.24811317 + 48480 2.94765067 0.54153286 20.00000000 0.24693192 + 46974 2.94283566 0.54153286 21.00000000 0.25045296 + 46040 2.94452135 0.54153286 22.00000000 0.25170062 + 43600 2.94372257 0.54153286 23.00000000 0.25377988 + 43264 2.94584346 0.54153286 24.00000000 0.25213922 + 42128 2.94607678 0.54153286 25.00000000 0.25326233 + 41314 2.95050037 0.54153286 26.00000000 0.24981971 + 40358 2.94521964 0.54153286 27.00000000 0.24850617 + 39692 2.95172817 0.54153286 28.00000000 0.25092024 + 39084 2.94582125 0.54153286 29.00000000 0.24628078 + 38496 2.94898911 0.54153286 30.00000000 0.24828585 + 37816 2.95323660 0.54153286 31.00000000 0.24714033 + 37654 2.94868417 0.54153286 32.00000000 0.24778717 + 36794 2.95123072 0.54153286 33.00000000 0.24676753 + 36820 2.94709639 0.54153286 34.00000000 0.24541425 + 36480 2.94247557 0.54153286 35.00000000 0.24562192 + 35340 2.95318259 0.54153286 36.00000000 0.24833118 + 35390 2.94491800 0.54153286 37.00000000 0.24739101 + 34732 2.95217919 0.54153286 38.00000000 0.24351798 + 33786 2.94981086 0.54153286 39.00000000 0.24778658 + 33490 2.95059053 0.54153286 40.00000000 0.24904051 + 299852 4.33555056 0.71281429 1.00000000 0.24868877 + 290046 4.34083536 0.71281429 2.00000000 0.24921631 + 271772 4.34919451 0.71281429 3.00000000 0.24956799 + 254042 4.35113043 0.71281429 4.00000000 0.24836711 + 235760 4.35541292 0.71281429 5.00000000 0.24983160 + 217672 4.36054488 0.71281429 6.00000000 0.24885417 + 202298 4.36011984 0.71281429 7.00000000 0.24830500 + 186022 4.35903125 0.71281429 8.00000000 0.24783011 + 175532 4.36277725 0.71281429 9.00000000 0.24831597 + 163728 4.36242786 0.71281429 10.00000000 0.24893544 + 154142 4.36842921 0.71281429 11.00000000 0.24816223 + 147232 4.37135833 0.71281429 12.00000000 0.24659411 + 139384 4.36973207 0.71281429 13.00000000 0.24968601 + 132014 4.36851217 0.71281429 14.00000000 0.24838925 + 127462 4.37941258 0.71281429 15.00000000 0.24767155 + 122430 4.37121437 0.71281429 16.00000000 0.25032607 + 117486 4.36960896 0.71281429 17.00000000 0.24978844 + 112622 4.37620174 0.71281429 18.00000000 0.25001093 + 108710 4.37427238 0.71281429 19.00000000 0.24948582 + 105928 4.37252014 0.71281429 20.00000000 0.25008717 + 102164 4.37149798 0.71281429 21.00000000 0.24883468 + 98550 4.37370219 0.71281429 22.00000000 0.25057588 + 95868 4.36606415 0.71281429 23.00000000 0.25120241 + 94300 4.37237516 0.71281429 24.00000000 0.25016953 + 91200 4.37021855 0.71281429 25.00000000 0.25010685 + 88998 4.37097124 0.71281429 26.00000000 0.24872578 + 87818 4.37296463 0.71281429 27.00000000 0.25198169 + 86034 4.37264672 0.71281429 28.00000000 0.24887076 + 84890 4.36800292 0.71281429 29.00000000 0.24593120 + 83074 4.37650384 0.71281429 30.00000000 0.24780185 + 81932 4.37305616 0.71281429 31.00000000 0.24782482 + 81946 4.36940180 0.71281429 32.00000000 0.24711805 + 79898 4.37574792 0.71281429 33.00000000 0.24961511 + 79172 4.37000992 0.71281429 34.00000000 0.24546177 + 78916 4.36895726 0.71281429 35.00000000 0.24803721 + 77466 4.37378056 0.71281429 36.00000000 0.24570088 + 75878 4.37103789 0.71281429 37.00000000 0.24776021 + 74904 4.37120060 0.71281429 38.00000000 0.24710917 + 73824 4.37032417 0.71281429 39.00000000 0.24673843 + 73308 4.37440804 0.71281429 40.00000000 0.24710711 + 509442 6.44094097 0.88409572 1.00000000 0.24884696 + 499506 6.44754261 0.88409572 2.00000000 0.24920204 + 483290 6.44707866 0.88409572 3.00000000 0.24952780 + 462304 6.45908975 0.88409572 4.00000000 0.24962774 + 440582 6.46344885 0.88409572 5.00000000 0.24997609 + 416036 6.46435747 0.88409572 6.00000000 0.24945009 + 395288 6.46843729 0.88409572 7.00000000 0.24980435 + 371708 6.46871087 0.88409572 8.00000000 0.24884894 + 351714 6.47438920 0.88409572 9.00000000 0.24926166 + 335056 6.47062219 0.88409572 10.00000000 0.24951655 + 319616 6.48470951 0.88409572 11.00000000 0.24954953 + 304266 6.48118492 0.88409572 12.00000000 0.24995629 + 291354 6.48299052 0.88409572 13.00000000 0.24907881 + 278634 6.48122983 0.88409572 14.00000000 0.24976679 + 269094 6.48275514 0.88409572 15.00000000 0.24955489 + 259542 6.48530392 0.88409572 16.00000000 0.24932213 + 253474 6.48795020 0.88409572 17.00000000 0.24867549 + 244584 6.49448017 0.88409572 18.00000000 0.25070472 + 236468 6.49281222 0.88409572 19.00000000 0.24889741 + 228250 6.49316830 0.88409572 20.00000000 0.24885695 + 223832 6.48912070 0.88409572 21.00000000 0.24859243 + 217638 6.49827685 0.88409572 22.00000000 0.24833587 + 211850 6.49566892 0.88409572 23.00000000 0.24949414 + 207198 6.49372642 0.88409572 24.00000000 0.24910682 + 202450 6.48890161 0.88409572 25.00000000 0.24898614 + 197224 6.48680737 0.88409572 26.00000000 0.24782523 + 193856 6.49557039 0.88409572 27.00000000 0.24807537 + 190232 6.48941153 0.88409572 28.00000000 0.24884792 + 188128 6.49772799 0.88409572 29.00000000 0.24745936 + 181720 6.49139982 0.88409572 30.00000000 0.24879487 + 179264 6.49128887 0.88409572 31.00000000 0.24761008 + 176388 6.49645656 0.88409572 32.00000000 0.24627120 + 174074 6.49182986 0.88409572 33.00000000 0.24651533 + 173772 6.48811515 0.88409572 34.00000000 0.24670714 + 171894 6.49329859 0.88409572 35.00000000 0.24704464 + 170136 6.49533028 0.88409572 36.00000000 0.24712520 + 167288 6.49282649 0.88409572 37.00000000 0.24559378 + 165772 6.49469812 0.88409572 38.00000000 0.24877491 + 164468 6.49881362 0.88409572 39.00000000 0.24701601 + 163798 6.49094389 0.88409572 40.00000000 0.24676693 + 882858 9.56113169 1.05537715 1.00000000 0.24928814 + 872394 9.56353685 1.05537715 2.00000000 0.24948430 + 856990 9.56025748 1.05537715 3.00000000 0.24948570 + 836578 9.56817002 1.05537715 4.00000000 0.24894762 + 815784 9.57495644 1.05537715 5.00000000 0.25029975 + 791142 9.57507610 1.05537715 6.00000000 0.25063975 + 762026 9.58351148 1.05537715 7.00000000 0.25074775 + 732752 9.59267843 1.05537715 8.00000000 0.25079519 + 706342 9.59729149 1.05537715 9.00000000 0.25019640 + 682298 9.59819969 1.05537715 10.00000000 0.25099150 + 655784 9.60332770 1.05537715 11.00000000 0.25033610 + 635656 9.61055880 1.05537715 12.00000000 0.24975357 + 614584 9.61402493 1.05537715 13.00000000 0.24971358 + 592764 9.61752767 1.05537715 14.00000000 0.24991999 + 576430 9.61995811 1.05537715 15.00000000 0.24902867 + 559608 9.61955790 1.05537715 16.00000000 0.24970838 + 545314 9.62420369 1.05537715 17.00000000 0.24919058 + 528414 9.62435129 1.05537715 18.00000000 0.24894235 + 515520 9.62391604 1.05537715 19.00000000 0.24915350 + 502400 9.62429064 1.05537715 20.00000000 0.25070946 + 490632 9.63117049 1.05537715 21.00000000 0.25008812 + 480970 9.63139740 1.05537715 22.00000000 0.25010152 + 467562 9.63258199 1.05537715 23.00000000 0.24975328 + 455294 9.63030103 1.05537715 24.00000000 0.24948841 + 446432 9.63599371 1.05537715 25.00000000 0.25033164 + 435880 9.62560693 1.05537715 26.00000000 0.24881397 + 425246 9.63072250 1.05537715 27.00000000 0.24911773 + 416374 9.63345584 1.05537715 28.00000000 0.24807337 + 409836 9.62839787 1.05537715 29.00000000 0.24824328 + 405338 9.63479860 1.05537715 30.00000000 0.24981925 + 401158 9.63772809 1.05537715 31.00000000 0.24946039 + 394876 9.64230042 1.05537715 32.00000000 0.24877647 + 388556 9.63688330 1.05537715 33.00000000 0.24809976 + 386704 9.63606120 1.05537715 34.00000000 0.24908533 + 383670 9.63958176 1.05537715 35.00000000 0.24812980 + 380918 9.63357041 1.05537715 36.00000000 0.24799733 + 375944 9.63293515 1.05537715 37.00000000 0.24777607 + 369790 9.63640143 1.05537715 38.00000000 0.24708111 + 364144 9.63418093 1.05537715 39.00000000 0.24826574 + 360504 9.63695959 1.05537715 40.00000000 0.24765631 + 1551584 14.17833507 1.22665858 1.00000000 0.24902089 + 1531456 14.17726948 1.22665858 2.00000000 0.24923925 + 1511516 14.18666862 1.22665858 3.00000000 0.24914327 + 1495428 14.18808171 1.22665858 4.00000000 0.24944428 + 1475120 14.18852441 1.22665858 5.00000000 0.24922417 + 1450038 14.19671200 1.22665858 6.00000000 0.24926986 + 1425340 14.20102205 1.22665858 7.00000000 0.24947609 + 1394440 14.21123441 1.22665858 8.00000000 0.24954115 + 1367654 14.21759481 1.22665858 9.00000000 0.24993801 + 1342170 14.22884404 1.22665858 10.00000000 0.24959508 + 1311164 14.22641655 1.22665858 11.00000000 0.24978555 + 1282960 14.23999517 1.22665858 12.00000000 0.24955227 + 1257544 14.24513053 1.22665858 13.00000000 0.25020742 + 1229492 14.24650746 1.22665858 14.00000000 0.24954111 + 1206998 14.25185681 1.22665858 15.00000000 0.24932176 + 1181890 14.25590097 1.22665858 16.00000000 0.24881036 + 1162924 14.26051040 1.22665858 17.00000000 0.24903139 + 1135472 14.25927662 1.22665858 18.00000000 0.24860760 + 1118142 14.26230082 1.22665858 19.00000000 0.24910734 + 1095710 14.26513678 1.22665858 20.00000000 0.24854025 + 1074786 14.26573636 1.22665858 21.00000000 0.24932540 + 1054778 14.26979015 1.22665858 22.00000000 0.24881540 + 1033514 14.28186453 1.22665858 23.00000000 0.24886947 + 1012432 14.28388596 1.22665858 24.00000000 0.24843397 + 992952 14.28354916 1.22665858 25.00000000 0.24839128 + 972632 14.29209021 1.22665858 26.00000000 0.24891812 + 953910 14.30136798 1.22665858 27.00000000 0.24957455 + 942120 14.30078287 1.22665858 28.00000000 0.24879714 + 928490 14.30035833 1.22665858 29.00000000 0.24906748 + 915308 14.29842568 1.22665858 30.00000000 0.24949074 + 898288 14.29648636 1.22665858 31.00000000 0.24930832 + 883302 14.28775895 1.22665858 32.00000000 0.24948742 + 868504 14.29039022 1.22665858 33.00000000 0.24943619 + 854868 14.28356121 1.22665858 34.00000000 0.24983520 + 842998 14.28219900 1.22665858 35.00000000 0.25003238 + 832962 14.28317993 1.22665858 36.00000000 0.24915300 + 823794 14.27177075 1.22665858 37.00000000 0.24881383 + 809556 14.27541964 1.22665858 38.00000000 0.24866503 + 795092 14.27732110 1.22665858 39.00000000 0.24864430 + 784952 14.27522399 1.22665858 40.00000000 0.24867774 + 2843682 21.08370150 1.39794001 1.00000000 0.24858276 + 2823704 21.08904953 1.39794001 2.00000000 0.24878427 + 2799296 21.08739546 1.39794001 3.00000000 0.24852797 + 2779320 21.08856481 1.39794001 4.00000000 0.24882382 + 2750676 21.08629222 1.39794001 5.00000000 0.24866755 + 2725470 21.09087825 1.39794001 6.00000000 0.24896444 + 2699080 21.09549997 1.39794001 7.00000000 0.24894138 + 2667934 21.10170068 1.39794001 8.00000000 0.24884846 + 2641636 21.10703152 1.39794001 9.00000000 0.24879619 + 2615084 21.11383871 1.39794001 10.00000000 0.24897332 + 2586306 21.12017385 1.39794001 11.00000000 0.24893040 + 2559136 21.12184152 1.39794001 12.00000000 0.24875235 + 2525172 21.12977416 1.39794001 13.00000000 0.24906389 + 2495506 21.13197693 1.39794001 14.00000000 0.24912016 + 2464286 21.13859043 1.39794001 15.00000000 0.24922939 + 2434260 21.13865131 1.39794001 16.00000000 0.24905928 + 2405302 21.14082798 1.39794001 17.00000000 0.24895084 + 2376156 21.15002907 1.39794001 18.00000000 0.24887878 + 2341716 21.14515705 1.39794001 19.00000000 0.24947595 + 2311666 21.14886787 1.39794001 20.00000000 0.24941547 + 2276046 21.16075967 1.39794001 21.00000000 0.24927768 + 2247224 21.16006359 1.39794001 22.00000000 0.24933993 + 2220012 21.16586395 1.39794001 23.00000000 0.24914576 + 2189790 21.16763651 1.39794001 24.00000000 0.24938066 + 2161768 21.16350785 1.39794001 25.00000000 0.24927942 + 2131028 21.16330953 1.39794001 26.00000000 0.24976949 + 2099856 21.15652483 1.39794001 27.00000000 0.24966870 + 2063930 21.16025135 1.39794001 28.00000000 0.24976709 + 2033378 21.15602599 1.39794001 29.00000000 0.24931362 + 1997836 21.16236548 1.39794001 30.00000000 0.24956264 + 1961964 21.16008916 1.39794001 31.00000000 0.24936036 + 1930470 21.16421303 1.39794001 32.00000000 0.24890861 + 1896134 21.16263443 1.39794001 33.00000000 0.24907636 + 1861658 21.15497669 1.39794001 34.00000000 0.24954344 + 1831892 21.15755814 1.39794001 35.00000000 0.24947016 + 1810052 21.17028447 1.39794001 36.00000000 0.24857878 + 1780040 21.16538459 1.39794001 37.00000000 0.24899357 + 1744878 21.15799566 1.39794001 38.00000000 0.24888524 + 1710066 21.16187124 1.39794001 39.00000000 0.24888095 + 1674528 21.16088867 1.39794001 40.00000000 0.24853232 diff --git a/mocks/tests/Mr19_mock.DR b/mocks/tests/Mr19_mock.DR index b34c5624..6610db31 100644 --- a/mocks/tests/Mr19_mock.DR +++ b/mocks/tests/Mr19_mock.DR @@ -1,560 +1,560 @@ - 1006 0.12610142 -0.82871857 1.00000000 0.23684510 - 1034 0.12552878 -0.82871857 2.00000000 0.23947496 - 998 0.12646937 -0.82871857 3.00000000 0.24351458 - 993 0.12657416 -0.82871857 4.00000000 0.24267227 - 947 0.12568298 -0.82871857 5.00000000 0.25782233 - 1028 0.12575066 -0.82871857 6.00000000 0.25813936 - 1045 0.12531988 -0.82871857 7.00000000 0.26648839 - 966 0.12603263 -0.82871857 8.00000000 0.24487551 - 995 0.12542491 -0.82871857 9.00000000 0.24533248 - 1024 0.12512779 -0.82871857 10.00000000 0.25524541 - 973 0.12488456 -0.82871857 11.00000000 0.24331588 - 893 0.12542068 -0.82871857 12.00000000 0.25143826 - 980 0.12586937 -0.82871857 13.00000000 0.24386818 - 1009 0.12566965 -0.82871857 14.00000000 0.25653241 - 939 0.12543124 -0.82871857 15.00000000 0.25431389 - 907 0.12541150 -0.82871857 16.00000000 0.24610023 - 894 0.12581402 -0.82871857 17.00000000 0.24991540 - 920 0.12436586 -0.82871857 18.00000000 0.24434238 - 887 0.12509914 -0.82871857 19.00000000 0.24871880 - 892 0.12589328 -0.82871857 20.00000000 0.26608615 - 894 0.12567166 -0.82871857 21.00000000 0.24679086 - 848 0.12605423 -0.82871857 22.00000000 0.24509268 - 842 0.12463333 -0.82871857 23.00000000 0.26700345 - 877 0.12541088 -0.82871857 24.00000000 0.23323627 - 828 0.12598564 -0.82871857 25.00000000 0.24135251 - 830 0.12498488 -0.82871857 26.00000000 0.23355931 - 848 0.12616393 -0.82871857 27.00000000 0.24167054 - 803 0.12597066 -0.82871857 28.00000000 0.23950623 - 854 0.12636986 -0.82871857 29.00000000 0.23922995 - 812 0.12571956 -0.82871857 30.00000000 0.25227014 - 767 0.12691699 -0.82871857 31.00000000 0.25119714 - 803 0.12606512 -0.82871857 32.00000000 0.25535139 - 811 0.12502582 -0.82871857 33.00000000 0.25857109 - 740 0.12681082 -0.82871857 34.00000000 0.25738526 - 721 0.12515934 -0.82871857 35.00000000 0.23734585 - 725 0.12614103 -0.82871857 36.00000000 0.25342903 - 707 0.12518012 -0.82871857 37.00000000 0.25973156 - 709 0.12571354 -0.82871857 38.00000000 0.24651933 - 730 0.12617873 -0.82871857 39.00000000 0.25818309 - 689 0.12556750 -0.82871857 40.00000000 0.25484904 - 2215 0.18624156 -0.65743714 1.00000000 0.24625722 - 2242 0.18597161 -0.65743714 2.00000000 0.24940700 - 2267 0.18642801 -0.65743714 3.00000000 0.25141270 - 2252 0.18653420 -0.65743714 4.00000000 0.25089788 - 2187 0.18677003 -0.65743714 5.00000000 0.25569125 - 2230 0.18600328 -0.65743714 6.00000000 0.25283021 - 2192 0.18655529 -0.65743714 7.00000000 0.24109811 - 2166 0.18654692 -0.65743714 8.00000000 0.24831428 - 2184 0.18617465 -0.65743714 9.00000000 0.24340315 - 2041 0.18763347 -0.65743714 10.00000000 0.25339132 - 2093 0.18711034 -0.65743714 11.00000000 0.25121587 - 2037 0.18673774 -0.65743714 12.00000000 0.25619686 - 2015 0.18601468 -0.65743714 13.00000000 0.23967001 - 2072 0.18708798 -0.65743714 14.00000000 0.26113913 - 1995 0.18648037 -0.65743714 15.00000000 0.25083141 - 2067 0.18672189 -0.65743714 16.00000000 0.25286050 - 2010 0.18640887 -0.65743714 17.00000000 0.25139887 - 2005 0.18631909 -0.65743714 18.00000000 0.25976521 - 1918 0.18685084 -0.65743714 19.00000000 0.26096589 - 1921 0.18701126 -0.65743714 20.00000000 0.24815453 - 1924 0.18618680 -0.65743714 21.00000000 0.24425746 - 1876 0.18610242 -0.65743714 22.00000000 0.25665706 - 1957 0.18625429 -0.65743714 23.00000000 0.25713309 - 1854 0.18581711 -0.65743714 24.00000000 0.24460758 - 1884 0.18661755 -0.65743714 25.00000000 0.25171627 - 1812 0.18660227 -0.65743714 26.00000000 0.23957897 - 1857 0.18659397 -0.65743714 27.00000000 0.25388669 - 1811 0.18671585 -0.65743714 28.00000000 0.24703842 - 1747 0.18685775 -0.65743714 29.00000000 0.24595554 - 1756 0.18674232 -0.65743714 30.00000000 0.24696093 - 1685 0.18638828 -0.65743714 31.00000000 0.25436062 - 1687 0.18678759 -0.65743714 32.00000000 0.24966914 - 1688 0.18696767 -0.65743714 33.00000000 0.25167370 - 1562 0.18733984 -0.65743714 34.00000000 0.24764252 - 1724 0.18649737 -0.65743714 35.00000000 0.25101038 - 1595 0.18622972 -0.65743714 36.00000000 0.24788216 - 1590 0.18692928 -0.65743714 37.00000000 0.25334081 - 1618 0.18625086 -0.65743714 38.00000000 0.25202548 - 1617 0.18745218 -0.65743714 39.00000000 0.25184560 - 1524 0.18600917 -0.65743714 40.00000000 0.26083555 - 5035 0.27646246 -0.48615571 1.00000000 0.25640698 - 4848 0.27673728 -0.48615571 2.00000000 0.24877803 - 4948 0.27725748 -0.48615571 3.00000000 0.25423492 - 4882 0.27623258 -0.48615571 4.00000000 0.24881192 - 4909 0.27679250 -0.48615571 5.00000000 0.25358937 - 4857 0.27738494 -0.48615571 6.00000000 0.24930911 - 4683 0.27566439 -0.48615571 7.00000000 0.24776854 - 4702 0.27657095 -0.48615571 8.00000000 0.24151930 - 4687 0.27779238 -0.48615571 9.00000000 0.24965128 - 4730 0.27601396 -0.48615571 10.00000000 0.24805740 - 4637 0.27668037 -0.48615571 11.00000000 0.24875313 - 4697 0.27753204 -0.48615571 12.00000000 0.24830958 - 4521 0.27681089 -0.48615571 13.00000000 0.24251485 - 4519 0.27661606 -0.48615571 14.00000000 0.25122488 - 4451 0.27676272 -0.48615571 15.00000000 0.25328374 - 4361 0.27595370 -0.48615571 16.00000000 0.25027193 - 4277 0.27585993 -0.48615571 17.00000000 0.24974348 - 4320 0.27732596 -0.48615571 18.00000000 0.25032749 - 4290 0.27683458 -0.48615571 19.00000000 0.24762063 - 4308 0.27697285 -0.48615571 20.00000000 0.24963423 - 4379 0.27759513 -0.48615571 21.00000000 0.24362402 - 4015 0.27752137 -0.48615571 22.00000000 0.24895243 - 4307 0.27624579 -0.48615571 23.00000000 0.25051892 - 4231 0.27640139 -0.48615571 24.00000000 0.24835548 - 4203 0.27594098 -0.48615571 25.00000000 0.24668676 - 3962 0.27590406 -0.48615571 26.00000000 0.25042750 - 4140 0.27663858 -0.48615571 27.00000000 0.25054984 - 4045 0.27669219 -0.48615571 28.00000000 0.25322034 - 3925 0.27624603 -0.48615571 29.00000000 0.25102147 - 3913 0.27661498 -0.48615571 30.00000000 0.24409327 - 3859 0.27590544 -0.48615571 31.00000000 0.25201449 - 3839 0.27683025 -0.48615571 32.00000000 0.24714786 - 3693 0.27621885 -0.48615571 33.00000000 0.24322468 - 3668 0.27632045 -0.48615571 34.00000000 0.24903770 - 3692 0.27681275 -0.48615571 35.00000000 0.24897234 - 3583 0.27670606 -0.48615571 36.00000000 0.25616661 - 3566 0.27639115 -0.48615571 37.00000000 0.24880100 - 3460 0.27680392 -0.48615571 38.00000000 0.25098884 - 3441 0.27712095 -0.48615571 39.00000000 0.25159916 - 3426 0.27750742 -0.48615571 40.00000000 0.25308403 - 10965 0.41022197 -0.31487428 1.00000000 0.25162594 - 10830 0.41032917 -0.31487428 2.00000000 0.24664866 - 10799 0.41024439 -0.31487428 3.00000000 0.24770701 - 10695 0.41036963 -0.31487428 4.00000000 0.24840066 - 10745 0.40963848 -0.31487428 5.00000000 0.24831713 - 10504 0.41055051 -0.31487428 6.00000000 0.25226762 - 10524 0.41060603 -0.31487428 7.00000000 0.24920942 - 10514 0.40999149 -0.31487428 8.00000000 0.24936792 - 10188 0.41068455 -0.31487428 9.00000000 0.25041071 - 10065 0.41054332 -0.31487428 10.00000000 0.24879252 - 10264 0.41026467 -0.31487428 11.00000000 0.24784182 - 10053 0.41071502 -0.31487428 12.00000000 0.25067818 - 10021 0.41083989 -0.31487428 13.00000000 0.25263739 - 9861 0.41068515 -0.31487428 14.00000000 0.25168017 - 9669 0.40992264 -0.31487428 15.00000000 0.24805151 - 9784 0.40963369 -0.31487428 16.00000000 0.24414600 - 9577 0.40999808 -0.31487428 17.00000000 0.24695395 - 9521 0.41031957 -0.31487428 18.00000000 0.25071767 - 9511 0.41036586 -0.31487428 19.00000000 0.24661295 - 9381 0.41032428 -0.31487428 20.00000000 0.24914263 - 9332 0.41039828 -0.31487428 21.00000000 0.25193463 - 9155 0.41033636 -0.31487428 22.00000000 0.24922104 - 9005 0.41102039 -0.31487428 23.00000000 0.24906340 - 9069 0.41018629 -0.31487428 24.00000000 0.25251390 - 8933 0.41150341 -0.31487428 25.00000000 0.25050777 - 8957 0.41125270 -0.31487428 26.00000000 0.24836237 - 8800 0.40993077 -0.31487428 27.00000000 0.24977327 - 8694 0.41039143 -0.31487428 28.00000000 0.25026778 - 8582 0.41079154 -0.31487428 29.00000000 0.24803687 - 8507 0.41090371 -0.31487428 30.00000000 0.24547237 - 8340 0.41087502 -0.31487428 31.00000000 0.25048658 - 8267 0.41041651 -0.31487428 32.00000000 0.24706822 - 8273 0.41097696 -0.31487428 33.00000000 0.25025705 - 8266 0.41065700 -0.31487428 34.00000000 0.24791936 - 8080 0.40986850 -0.31487428 35.00000000 0.24737744 - 7829 0.41027305 -0.31487428 36.00000000 0.25106288 - 7793 0.41058356 -0.31487428 37.00000000 0.24942385 - 7782 0.41061340 -0.31487428 38.00000000 0.24595257 - 7622 0.40982033 -0.31487428 39.00000000 0.24865291 - 7550 0.40983354 -0.31487428 40.00000000 0.25083162 - 24140 0.60994858 -0.14359285 1.00000000 0.25129927 - 23915 0.60898364 -0.14359285 2.00000000 0.24984226 - 23641 0.60886368 -0.14359285 3.00000000 0.24950573 - 23318 0.60931358 -0.14359285 4.00000000 0.25012012 - 23301 0.60857875 -0.14359285 5.00000000 0.25207518 - 23408 0.60834231 -0.14359285 6.00000000 0.24869775 - 23314 0.60915597 -0.14359285 7.00000000 0.24863988 - 23079 0.60903590 -0.14359285 8.00000000 0.24895772 - 22499 0.60946197 -0.14359285 9.00000000 0.24807325 - 22578 0.60923810 -0.14359285 10.00000000 0.24777619 - 22160 0.60906219 -0.14359285 11.00000000 0.24790605 - 21782 0.60889025 -0.14359285 12.00000000 0.24633636 - 21831 0.60848154 -0.14359285 13.00000000 0.25020280 - 21940 0.60891406 -0.14359285 14.00000000 0.24815887 - 21341 0.60934613 -0.14359285 15.00000000 0.25015347 - 21304 0.60926376 -0.14359285 16.00000000 0.24970223 - 20977 0.60804606 -0.14359285 17.00000000 0.24982401 - 20688 0.60937288 -0.14359285 18.00000000 0.25203116 - 20785 0.60859096 -0.14359285 19.00000000 0.24630526 - 20561 0.60930197 -0.14359285 20.00000000 0.24855360 - 20345 0.60898488 -0.14359285 21.00000000 0.24972305 - 20061 0.60871542 -0.14359285 22.00000000 0.24864889 - 19768 0.60857001 -0.14359285 23.00000000 0.24850635 - 19487 0.60941366 -0.14359285 24.00000000 0.24808330 - 19668 0.60914978 -0.14359285 25.00000000 0.24770842 - 19492 0.60789126 -0.14359285 26.00000000 0.24608633 - 19192 0.60857057 -0.14359285 27.00000000 0.24997971 - 18954 0.60868606 -0.14359285 28.00000000 0.24665554 - 18714 0.60859810 -0.14359285 29.00000000 0.24786134 - 18463 0.60863287 -0.14359285 30.00000000 0.25007598 - 18231 0.60909921 -0.14359285 31.00000000 0.24743401 - 18046 0.60905602 -0.14359285 32.00000000 0.25014133 - 18112 0.60876354 -0.14359285 33.00000000 0.25086678 - 17741 0.60962511 -0.14359285 34.00000000 0.24906666 - 17429 0.60895561 -0.14359285 35.00000000 0.25149789 - 17639 0.60789000 -0.14359285 36.00000000 0.25147530 - 17266 0.60774727 -0.14359285 37.00000000 0.24880810 - 16982 0.60937697 -0.14359285 38.00000000 0.24861816 - 16781 0.60944009 -0.14359285 39.00000000 0.24870041 - 16681 0.60903324 -0.14359285 40.00000000 0.25089255 - 53021 0.90402718 0.02768858 1.00000000 0.24911753 - 52232 0.90298786 0.02768858 2.00000000 0.24951254 - 52019 0.90414711 0.02768858 3.00000000 0.24992046 - 51177 0.90314734 0.02768858 4.00000000 0.24970814 - 50780 0.90284071 0.02768858 5.00000000 0.25142230 - 51103 0.90338571 0.02768858 6.00000000 0.24960331 - 50411 0.90249092 0.02768858 7.00000000 0.24676223 - 49885 0.90397726 0.02768858 8.00000000 0.24975945 - 49497 0.90267437 0.02768858 9.00000000 0.24845311 - 49261 0.90284238 0.02768858 10.00000000 0.24939776 - 48958 0.90282193 0.02768858 11.00000000 0.24895784 - 48475 0.90351382 0.02768858 12.00000000 0.25041622 - 47922 0.90296004 0.02768858 13.00000000 0.25084435 - 47730 0.90306240 0.02768858 14.00000000 0.24782254 - 47039 0.90352886 0.02768858 15.00000000 0.24833450 - 46714 0.90332736 0.02768858 16.00000000 0.25023267 - 46479 0.90344974 0.02768858 17.00000000 0.24947522 - 46303 0.90453562 0.02768858 18.00000000 0.24801248 - 45292 0.90329466 0.02768858 19.00000000 0.24884651 - 44963 0.90326078 0.02768858 20.00000000 0.24803777 - 44327 0.90275907 0.02768858 21.00000000 0.24890943 - 44203 0.90382512 0.02768858 22.00000000 0.24913983 - 43951 0.90361322 0.02768858 23.00000000 0.24900629 - 43432 0.90323212 0.02768858 24.00000000 0.24791262 - 42752 0.90327972 0.02768858 25.00000000 0.24821107 - 42397 0.90330848 0.02768858 26.00000000 0.25039546 - 42261 0.90352285 0.02768858 27.00000000 0.24918727 - 41925 0.90271757 0.02768858 28.00000000 0.24899192 - 41258 0.90358038 0.02768858 29.00000000 0.24775678 - 40967 0.90338711 0.02768858 30.00000000 0.24870407 - 39959 0.90389556 0.02768858 31.00000000 0.24869221 - 40057 0.90233488 0.02768858 32.00000000 0.24850728 - 39962 0.90106861 0.02768858 33.00000000 0.24837105 - 39090 0.90301505 0.02768858 34.00000000 0.25091853 - 38828 0.90281211 0.02768858 35.00000000 0.24907624 - 38226 0.90207146 0.02768858 36.00000000 0.24784952 - 37912 0.90366145 0.02768858 37.00000000 0.24926411 - 37395 0.90390474 0.02768858 38.00000000 0.25135450 - 36877 0.90438096 0.02768858 39.00000000 0.24873974 - 36910 0.90309903 0.02768858 40.00000000 0.24830807 - 115080 1.34009885 0.19897000 1.00000000 0.24888024 - 114616 1.34070539 0.19897000 2.00000000 0.25026185 - 113546 1.34066053 0.19897000 3.00000000 0.24928331 - 113071 1.34028673 0.19897000 4.00000000 0.24929642 - 111702 1.34056398 0.19897000 5.00000000 0.25019198 - 111551 1.33997229 0.19897000 6.00000000 0.24903747 - 111172 1.33961750 0.19897000 7.00000000 0.24930214 - 109920 1.34008726 0.19897000 8.00000000 0.24974875 - 108740 1.34045991 0.19897000 9.00000000 0.24883838 - 107590 1.33983027 0.19897000 10.00000000 0.24954752 - 106873 1.34016532 0.19897000 11.00000000 0.24912584 - 106204 1.34007531 0.19897000 12.00000000 0.24988908 - 105543 1.33987240 0.19897000 13.00000000 0.25092224 - 103571 1.34084972 0.19897000 14.00000000 0.25108358 - 102717 1.34060791 0.19897000 15.00000000 0.24977415 - 102473 1.33998457 0.19897000 16.00000000 0.25068634 - 101874 1.34006493 0.19897000 17.00000000 0.25015044 - 100834 1.34006476 0.19897000 18.00000000 0.24939851 - 99778 1.34037416 0.19897000 19.00000000 0.24990462 - 98619 1.33937456 0.19897000 20.00000000 0.25087059 - 98541 1.34042290 0.19897000 21.00000000 0.25077070 - 97244 1.33993028 0.19897000 22.00000000 0.25022277 - 96266 1.34056817 0.19897000 23.00000000 0.24972795 - 95215 1.34083776 0.19897000 24.00000000 0.24988952 - 94606 1.34027468 0.19897000 25.00000000 0.24868211 - 93685 1.34016574 0.19897000 26.00000000 0.24935345 - 92278 1.33972926 0.19897000 27.00000000 0.24939424 - 91714 1.33986448 0.19897000 28.00000000 0.24970498 - 90375 1.33994571 0.19897000 29.00000000 0.24979857 - 89649 1.33909579 0.19897000 30.00000000 0.25014168 - 89390 1.33998141 0.19897000 31.00000000 0.24788707 - 87630 1.34095411 0.19897000 32.00000000 0.24937879 - 86801 1.33957409 0.19897000 33.00000000 0.24961776 - 86036 1.33933320 0.19897000 34.00000000 0.24989152 - 85773 1.33956151 0.19897000 35.00000000 0.24970560 - 84292 1.34011163 0.19897000 36.00000000 0.25012502 - 82620 1.34069343 0.19897000 37.00000000 0.24948281 - 82594 1.34007249 0.19897000 38.00000000 0.24970924 - 80820 1.34018935 0.19897000 39.00000000 0.24927531 - 80032 1.33977181 0.19897000 40.00000000 0.24899854 - 252108 1.98751571 0.37025143 1.00000000 0.24963315 - 251872 1.98765650 0.37025143 2.00000000 0.24945021 - 249206 1.98751292 0.37025143 3.00000000 0.24986431 - 246705 1.98684225 0.37025143 4.00000000 0.24960817 - 245544 1.98752195 0.37025143 5.00000000 0.24913678 - 244112 1.98819573 0.37025143 6.00000000 0.24915278 - 242034 1.98746052 0.37025143 7.00000000 0.24887864 - 240871 1.98790472 0.37025143 8.00000000 0.24923217 - 238804 1.98738512 0.37025143 9.00000000 0.24970954 - 235910 1.98853091 0.37025143 10.00000000 0.24991363 - 234345 1.98750889 0.37025143 11.00000000 0.25018535 - 232579 1.98817220 0.37025143 12.00000000 0.24968614 - 231217 1.98780461 0.37025143 13.00000000 0.24960158 - 227881 1.98792968 0.37025143 14.00000000 0.25024930 - 226635 1.98768072 0.37025143 15.00000000 0.25000929 - 223958 1.98836839 0.37025143 16.00000000 0.25126317 - 222676 1.98707659 0.37025143 17.00000000 0.24916299 - 221877 1.98682452 0.37025143 18.00000000 0.25038128 - 218152 1.98785962 0.37025143 19.00000000 0.25074978 - 216121 1.98796817 0.37025143 20.00000000 0.25064673 - 215197 1.98901297 0.37025143 21.00000000 0.25012655 - 213367 1.98725454 0.37025143 22.00000000 0.24857587 - 210512 1.98754569 0.37025143 23.00000000 0.25003840 - 210545 1.98792947 0.37025143 24.00000000 0.24919997 - 206846 1.98851906 0.37025143 25.00000000 0.24918818 - 204620 1.98775626 0.37025143 26.00000000 0.24942516 - 202631 1.98806262 0.37025143 27.00000000 0.24988244 - 200538 1.98754647 0.37025143 28.00000000 0.24957434 - 198475 1.98896276 0.37025143 29.00000000 0.24932265 - 197035 1.98881806 0.37025143 30.00000000 0.24912495 - 194697 1.98795590 0.37025143 31.00000000 0.24984251 - 192977 1.98870685 0.37025143 32.00000000 0.24899870 - 190384 1.98723118 0.37025143 33.00000000 0.24857349 - 188176 1.98786061 0.37025143 34.00000000 0.25011718 - 185739 1.98770885 0.37025143 35.00000000 0.24998711 - 184296 1.98805345 0.37025143 36.00000000 0.24999465 - 183189 1.98823432 0.37025143 37.00000000 0.24982799 - 179566 1.98800113 0.37025143 38.00000000 0.24979148 - 177745 1.98768807 0.37025143 39.00000000 0.24834992 - 175853 1.98831265 0.37025143 40.00000000 0.24863941 - 552909 2.94787452 0.54153286 1.00000000 0.24956600 - 548189 2.94835837 0.54153286 2.00000000 0.24985274 - 544067 2.94860419 0.54153286 3.00000000 0.24922139 - 538493 2.94928045 0.54153286 4.00000000 0.24945442 - 535443 2.94878962 0.54153286 5.00000000 0.24929780 - 532306 2.94852703 0.54153286 6.00000000 0.24977208 - 528260 2.94877305 0.54153286 7.00000000 0.24974519 - 523946 2.94893056 0.54153286 8.00000000 0.24963347 - 520575 2.94845904 0.54153286 9.00000000 0.25003413 - 515410 2.94880258 0.54153286 10.00000000 0.25007520 - 511589 2.94855815 0.54153286 11.00000000 0.25005304 - 507214 2.94870682 0.54153286 12.00000000 0.24983807 - 502717 2.94829932 0.54153286 13.00000000 0.25019826 - 499701 2.94882025 0.54153286 14.00000000 0.24976195 - 495089 2.94844587 0.54153286 15.00000000 0.24998526 - 491139 2.94869642 0.54153286 16.00000000 0.24989602 - 486167 2.94917647 0.54153286 17.00000000 0.25009579 - 482682 2.94873793 0.54153286 18.00000000 0.24983100 - 479301 2.94838136 0.54153286 19.00000000 0.24985188 - 474413 2.94867796 0.54153286 20.00000000 0.25010531 - 469873 2.94904638 0.54153286 21.00000000 0.24937644 - 464852 2.94886404 0.54153286 22.00000000 0.24927222 - 461733 2.94841612 0.54153286 23.00000000 0.24868128 - 457644 2.94869468 0.54153286 24.00000000 0.24893485 - 452460 2.94861192 0.54153286 25.00000000 0.24924597 - 448905 2.94743799 0.54153286 26.00000000 0.24930675 - 443682 2.94818136 0.54153286 27.00000000 0.24975280 - 438834 2.94835803 0.54153286 28.00000000 0.24940618 - 434997 2.94947013 0.54153286 29.00000000 0.24968832 - 430723 2.94825962 0.54153286 30.00000000 0.24958755 - 426009 2.95011823 0.54153286 31.00000000 0.24977975 - 422204 2.94874526 0.54153286 32.00000000 0.24953114 - 417657 2.94714836 0.54153286 33.00000000 0.24935073 - 411999 2.94845993 0.54153286 34.00000000 0.24858969 - 407294 2.94954039 0.54153286 35.00000000 0.25017361 - 402384 2.94927862 0.54153286 36.00000000 0.24936000 - 396235 2.94962723 0.54153286 37.00000000 0.24897771 - 392556 2.94913040 0.54153286 38.00000000 0.24971337 - 388202 2.94940840 0.54153286 39.00000000 0.24953130 - 383787 2.94991594 0.54153286 40.00000000 0.24836484 - 1204940 4.37416530 0.71281429 1.00000000 0.24992719 - 1196688 4.37398975 0.71281429 2.00000000 0.24984052 - 1186756 4.37420987 0.71281429 3.00000000 0.25005308 - 1179684 4.37338874 0.71281429 4.00000000 0.25016388 - 1172334 4.37399516 0.71281429 5.00000000 0.24940661 - 1160874 4.37375634 0.71281429 6.00000000 0.25027000 - 1152643 4.37420641 0.71281429 7.00000000 0.25001547 - 1144372 4.37422096 0.71281429 8.00000000 0.24989082 - 1134340 4.37292034 0.71281429 9.00000000 0.24944526 - 1126144 4.37392810 0.71281429 10.00000000 0.24964354 - 1116989 4.37420894 0.71281429 11.00000000 0.24992846 - 1107472 4.37298657 0.71281429 12.00000000 0.24992948 - 1096460 4.37384706 0.71281429 13.00000000 0.24995678 - 1088250 4.37409105 0.71281429 14.00000000 0.25011435 - 1079131 4.37297813 0.71281429 15.00000000 0.25016358 - 1070744 4.37483035 0.71281429 16.00000000 0.24985544 - 1059828 4.37393377 0.71281429 17.00000000 0.24989298 - 1050313 4.37340108 0.71281429 18.00000000 0.24970275 - 1041335 4.37385239 0.71281429 19.00000000 0.24960689 - 1031058 4.37340602 0.71281429 20.00000000 0.24994807 - 1024756 4.37424229 0.71281429 21.00000000 0.24939545 - 1014826 4.37438147 0.71281429 22.00000000 0.24910270 - 1006248 4.37391469 0.71281429 23.00000000 0.24964076 - 996112 4.37341176 0.71281429 24.00000000 0.24970291 - 984007 4.37415392 0.71281429 25.00000000 0.24962614 - 977656 4.37479566 0.71281429 26.00000000 0.24942350 - 968240 4.37437640 0.71281429 27.00000000 0.24954335 - 957210 4.37488431 0.71281429 28.00000000 0.24977333 - 946142 4.37488275 0.71281429 29.00000000 0.24963685 - 936029 4.37386354 0.71281429 30.00000000 0.25007075 - 927984 4.37444884 0.71281429 31.00000000 0.24962374 - 917949 4.37432379 0.71281429 32.00000000 0.24940697 - 908871 4.37365057 0.71281429 33.00000000 0.24979345 - 898450 4.37364536 0.71281429 34.00000000 0.24972508 - 887202 4.37385895 0.71281429 35.00000000 0.24967441 - 877429 4.37399896 0.71281429 36.00000000 0.24965162 - 865757 4.37386041 0.71281429 37.00000000 0.24932274 - 855710 4.37372607 0.71281429 38.00000000 0.24952920 - 847439 4.37325429 0.71281429 39.00000000 0.24968661 - 834862 4.37424191 0.71281429 40.00000000 0.24986234 - 2618337 6.48810847 0.88409572 1.00000000 0.24983868 - 2604787 6.48775152 0.88409572 2.00000000 0.24970872 - 2581549 6.48802103 0.88409572 3.00000000 0.24982293 - 2561611 6.48751969 0.88409572 4.00000000 0.24983408 - 2545134 6.48795411 0.88409572 5.00000000 0.24992687 - 2523354 6.48766490 0.88409572 6.00000000 0.25003104 - 2505022 6.48866576 0.88409572 7.00000000 0.25020211 - 2486579 6.48804947 0.88409572 8.00000000 0.24990100 - 2469855 6.48819239 0.88409572 9.00000000 0.24986140 - 2442681 6.48762073 0.88409572 10.00000000 0.24978056 - 2426516 6.48814632 0.88409572 11.00000000 0.24967672 - 2403434 6.48728909 0.88409572 12.00000000 0.24967285 - 2381281 6.48793313 0.88409572 13.00000000 0.24976391 - 2359893 6.48818879 0.88409572 14.00000000 0.24993195 - 2340829 6.48857706 0.88409572 15.00000000 0.24971660 - 2317695 6.48809813 0.88409572 16.00000000 0.24973712 - 2301285 6.48832268 0.88409572 17.00000000 0.24977076 - 2280140 6.48816167 0.88409572 18.00000000 0.24980127 - 2260806 6.48770043 0.88409572 19.00000000 0.25007094 - 2240793 6.48743584 0.88409572 20.00000000 0.24979053 - 2225343 6.48841323 0.88409572 21.00000000 0.24975812 - 2206889 6.48736988 0.88409572 22.00000000 0.24956677 - 2186076 6.48837038 0.88409572 23.00000000 0.24980991 - 2165235 6.48757768 0.88409572 24.00000000 0.24947682 - 2144604 6.48732908 0.88409572 25.00000000 0.24944687 - 2124027 6.48815082 0.88409572 26.00000000 0.24923656 - 2103431 6.48747647 0.88409572 27.00000000 0.24944516 - 2083852 6.48839827 0.88409572 28.00000000 0.24953273 - 2061615 6.48725150 0.88409572 29.00000000 0.24973933 - 2041266 6.48773441 0.88409572 30.00000000 0.24978115 - 2020376 6.48874879 0.88409572 31.00000000 0.24970785 - 1994598 6.48677893 0.88409572 32.00000000 0.24938999 - 1973216 6.48759122 0.88409572 33.00000000 0.24960327 - 1953227 6.48781294 0.88409572 34.00000000 0.24949237 - 1929297 6.48723252 0.88409572 35.00000000 0.24979257 - 1908175 6.48791359 0.88409572 36.00000000 0.24975988 - 1887738 6.48770290 0.88409572 37.00000000 0.24954445 - 1864878 6.48735576 0.88409572 38.00000000 0.24955533 - 1842214 6.48784509 0.88409572 39.00000000 0.24917550 - 1816995 6.48751709 0.88409572 40.00000000 0.24935952 - 5683214 9.62255352 1.05537715 1.00000000 0.24987459 - 5635758 9.62282941 1.05537715 2.00000000 0.25005219 - 5592904 9.62423673 1.05537715 3.00000000 0.24977254 - 5549699 9.62301120 1.05537715 4.00000000 0.24997784 - 5512559 9.62315612 1.05537715 5.00000000 0.25000460 - 5466689 9.62366311 1.05537715 6.00000000 0.24982232 - 5427167 9.62341386 1.05537715 7.00000000 0.24990813 - 5382345 9.62244900 1.05537715 8.00000000 0.24985334 - 5335406 9.62351011 1.05537715 9.00000000 0.24978686 - 5284967 9.62275074 1.05537715 10.00000000 0.24970232 - 5244611 9.62212253 1.05537715 11.00000000 0.24976018 - 5195835 9.62212330 1.05537715 12.00000000 0.24978900 - 5149624 9.62323022 1.05537715 13.00000000 0.24971238 - 5102826 9.62271540 1.05537715 14.00000000 0.24973016 - 5063122 9.62186901 1.05537715 15.00000000 0.24961811 - 5019654 9.62296418 1.05537715 16.00000000 0.24963928 - 4974966 9.62278961 1.05537715 17.00000000 0.24968957 - 4935659 9.62166933 1.05537715 18.00000000 0.24990955 - 4894387 9.62170515 1.05537715 19.00000000 0.24994220 - 4854560 9.62347304 1.05537715 20.00000000 0.24986016 - 4814193 9.62181467 1.05537715 21.00000000 0.24975926 - 4774374 9.62287502 1.05537715 22.00000000 0.24954211 - 4728043 9.62260142 1.05537715 23.00000000 0.24958663 - 4677932 9.62385842 1.05537715 24.00000000 0.24972765 - 4644095 9.62322919 1.05537715 25.00000000 0.24957795 - 4593585 9.62307606 1.05537715 26.00000000 0.24970966 - 4550253 9.62284129 1.05537715 27.00000000 0.24949097 - 4508903 9.62203362 1.05537715 28.00000000 0.24971098 - 4459963 9.62386674 1.05537715 29.00000000 0.24970435 - 4410107 9.62235650 1.05537715 30.00000000 0.24992571 - 4365725 9.62290274 1.05537715 31.00000000 0.24942463 - 4318752 9.62260191 1.05537715 32.00000000 0.24957841 - 4272038 9.62301018 1.05537715 33.00000000 0.24966493 - 4220945 9.62291441 1.05537715 34.00000000 0.24952662 - 4172025 9.62360436 1.05537715 35.00000000 0.24965747 - 4128608 9.62294829 1.05537715 36.00000000 0.24933343 - 4077389 9.62364099 1.05537715 37.00000000 0.24967737 - 4029810 9.62246040 1.05537715 38.00000000 0.24937425 - 3978462 9.62322921 1.05537715 39.00000000 0.24937020 - 3927405 9.62344258 1.05537715 40.00000000 0.24931120 - 12155219 14.26883503 1.22665858 1.00000000 0.24982407 - 12069218 14.26867425 1.22665858 2.00000000 0.24980347 - 11972881 14.26931620 1.22665858 3.00000000 0.24965767 - 11878425 14.26977985 1.22665858 4.00000000 0.24975167 - 11795182 14.27029140 1.22665858 5.00000000 0.24980812 - 11703129 14.26825576 1.22665858 6.00000000 0.24979325 - 11604728 14.26965273 1.22665858 7.00000000 0.24959131 - 11517168 14.26894842 1.22665858 8.00000000 0.24966329 - 11425455 14.26925248 1.22665858 9.00000000 0.24957193 - 11329604 14.26854862 1.22665858 10.00000000 0.24954909 - 11232113 14.26864238 1.22665858 11.00000000 0.24983866 - 11145342 14.27043101 1.22665858 12.00000000 0.24960105 - 11047757 14.27044888 1.22665858 13.00000000 0.24965772 - 10948650 14.27005785 1.22665858 14.00000000 0.24952313 - 10850810 14.27013203 1.22665858 15.00000000 0.24955541 - 10764508 14.26945819 1.22665858 16.00000000 0.24960546 - 10671159 14.26946934 1.22665858 17.00000000 0.24964883 - 10586608 14.26958194 1.22665858 18.00000000 0.24960223 - 10497018 14.27031346 1.22665858 19.00000000 0.24957710 - 10409046 14.26940728 1.22665858 20.00000000 0.24957561 - 10325705 14.27027278 1.22665858 21.00000000 0.24951352 - 10236077 14.27036705 1.22665858 22.00000000 0.24943437 - 10150166 14.27004014 1.22665858 23.00000000 0.24957231 - 10053461 14.27045537 1.22665858 24.00000000 0.24953210 - 9959045 14.27085601 1.22665858 25.00000000 0.24956480 - 9868594 14.26993668 1.22665858 26.00000000 0.24957352 - 9761657 14.27050545 1.22665858 27.00000000 0.24973227 - 9664206 14.27071797 1.22665858 28.00000000 0.24957905 - 9555623 14.26977117 1.22665858 29.00000000 0.24982821 - 9461962 14.26952202 1.22665858 30.00000000 0.24982919 - 9361004 14.26991065 1.22665858 31.00000000 0.24953364 - 9261731 14.27052828 1.22665858 32.00000000 0.24971187 - 9160307 14.26981073 1.22665858 33.00000000 0.24974751 - 9050575 14.27007511 1.22665858 34.00000000 0.24966705 - 8950070 14.26997881 1.22665858 35.00000000 0.24995932 - 8852529 14.26912662 1.22665858 36.00000000 0.24975925 - 8749722 14.27023121 1.22665858 37.00000000 0.24953244 - 8631592 14.27018178 1.22665858 38.00000000 0.24952429 - 8527607 14.26961339 1.22665858 39.00000000 0.24958906 - 8410959 14.27061710 1.22665858 40.00000000 0.24954458 - 25616790 21.15550832 1.39794001 1.00000000 0.24963839 - 25430820 21.15525626 1.39794001 2.00000000 0.24980885 - 25230118 21.15547640 1.39794001 3.00000000 0.24972707 - 25042498 21.15570228 1.39794001 4.00000000 0.24975569 - 24851769 21.15493424 1.39794001 5.00000000 0.24964656 - 24670634 21.15505680 1.39794001 6.00000000 0.24970557 - 24468697 21.15493481 1.39794001 7.00000000 0.24959669 - 24281663 21.15494595 1.39794001 8.00000000 0.24966897 - 24081889 21.15462915 1.39794001 9.00000000 0.24966898 - 23876103 21.15600338 1.39794001 10.00000000 0.24959534 - 23690342 21.15566072 1.39794001 11.00000000 0.24969996 - 23490228 21.15550378 1.39794001 12.00000000 0.24970218 - 23296868 21.15614839 1.39794001 13.00000000 0.24963698 - 23094691 21.15600384 1.39794001 14.00000000 0.24962346 - 22887918 21.15590788 1.39794001 15.00000000 0.24957322 - 22681531 21.15723992 1.39794001 16.00000000 0.24954979 - 22510135 21.15563932 1.39794001 17.00000000 0.24956446 - 22324014 21.15582144 1.39794001 18.00000000 0.24949354 - 22129377 21.15590664 1.39794001 19.00000000 0.24952545 - 21942090 21.15534897 1.39794001 20.00000000 0.24955073 - 21755714 21.15556616 1.39794001 21.00000000 0.24948908 - 21569367 21.15426002 1.39794001 22.00000000 0.24944613 - 21385068 21.15332253 1.39794001 23.00000000 0.24940181 - 21179993 21.15273850 1.39794001 24.00000000 0.24955798 - 20984196 21.15322462 1.39794001 25.00000000 0.24952727 - 20791372 21.15379472 1.39794001 26.00000000 0.24960136 - 20581160 21.15416206 1.39794001 27.00000000 0.24964400 - 20371765 21.15534784 1.39794001 28.00000000 0.24955499 - 20178719 21.15516428 1.39794001 29.00000000 0.24944931 - 19957063 21.15515145 1.39794001 30.00000000 0.24956136 - 19733447 21.15502286 1.39794001 31.00000000 0.24955661 - 19527688 21.15466141 1.39794001 32.00000000 0.24953286 - 19302637 21.15629514 1.39794001 33.00000000 0.24966647 - 19091539 21.15388311 1.39794001 34.00000000 0.24972684 - 18875714 21.15406762 1.39794001 35.00000000 0.24953532 - 18658879 21.15555130 1.39794001 36.00000000 0.24952329 - 18441744 21.15638002 1.39794001 37.00000000 0.24955948 - 18197597 21.15480320 1.39794001 38.00000000 0.24954180 - 17960915 21.15568424 1.39794001 39.00000000 0.24946794 - 17726740 21.15595859 1.39794001 40.00000000 0.24949034 + 1006 0.12618186 -0.82871857 1.00000000 0.23684510 + 1034 0.12545233 -0.82871857 2.00000000 0.23947496 + 998 0.12661035 -0.82871857 3.00000000 0.24351458 + 993 0.12664247 -0.82871857 4.00000000 0.24267227 + 947 0.12574603 -0.82871857 5.00000000 0.25782233 + 1028 0.12506507 -0.82871857 6.00000000 0.25813936 + 1045 0.12562075 -0.82871857 7.00000000 0.26648839 + 966 0.12617338 -0.82871857 8.00000000 0.24487551 + 995 0.12452315 -0.82871857 9.00000000 0.24533248 + 1024 0.12511136 -0.82871857 10.00000000 0.25524541 + 973 0.12470947 -0.82871857 11.00000000 0.24331588 + 893 0.12486080 -0.82871857 12.00000000 0.25143826 + 980 0.12628937 -0.82871857 13.00000000 0.24386818 + 1009 0.12558033 -0.82871857 14.00000000 0.25653241 + 939 0.12607657 -0.82871857 15.00000000 0.25431389 + 907 0.12521727 -0.82871857 16.00000000 0.24610023 + 894 0.12653073 -0.82871857 17.00000000 0.24991540 + 920 0.12420442 -0.82871857 18.00000000 0.24434238 + 887 0.12496959 -0.82871857 19.00000000 0.24871880 + 892 0.12537951 -0.82871857 20.00000000 0.26608615 + 894 0.12566278 -0.82871857 21.00000000 0.24679086 + 848 0.12613393 -0.82871857 22.00000000 0.24509268 + 842 0.12495609 -0.82871857 23.00000000 0.26700345 + 877 0.12515444 -0.82871857 24.00000000 0.23323627 + 828 0.12616310 -0.82871857 25.00000000 0.24135251 + 830 0.12488892 -0.82871857 26.00000000 0.23355931 + 848 0.12630242 -0.82871857 27.00000000 0.24167054 + 803 0.12619763 -0.82871857 28.00000000 0.23950623 + 854 0.12589450 -0.82871857 29.00000000 0.23922995 + 812 0.12614720 -0.82871857 30.00000000 0.25227014 + 767 0.12641298 -0.82871857 31.00000000 0.25119714 + 803 0.12615622 -0.82871857 32.00000000 0.25535139 + 811 0.12478749 -0.82871857 33.00000000 0.25857109 + 740 0.12650937 -0.82871857 34.00000000 0.25738526 + 721 0.12477685 -0.82871857 35.00000000 0.23734585 + 725 0.12580844 -0.82871857 36.00000000 0.25342903 + 707 0.12498574 -0.82871857 37.00000000 0.25973156 + 709 0.12571787 -0.82871857 38.00000000 0.24651933 + 730 0.12622021 -0.82871857 39.00000000 0.25818309 + 689 0.12532474 -0.82871857 40.00000000 0.25484904 + 2215 0.18611638 -0.65743714 1.00000000 0.24625722 + 2242 0.18586911 -0.65743714 2.00000000 0.24940700 + 2267 0.18669594 -0.65743714 3.00000000 0.25141270 + 2252 0.18548192 -0.65743714 4.00000000 0.25089788 + 2187 0.18623247 -0.65743714 5.00000000 0.25569125 + 2230 0.18571514 -0.65743714 6.00000000 0.25283021 + 2192 0.18673665 -0.65743714 7.00000000 0.24109811 + 2166 0.18634594 -0.65743714 8.00000000 0.24831428 + 2184 0.18584151 -0.65743714 9.00000000 0.24340315 + 2041 0.18706157 -0.65743714 10.00000000 0.25339132 + 2093 0.18679037 -0.65743714 11.00000000 0.25121587 + 2037 0.18665884 -0.65743714 12.00000000 0.25619686 + 2015 0.18639658 -0.65743714 13.00000000 0.23967001 + 2072 0.18723194 -0.65743714 14.00000000 0.26113913 + 1995 0.18697949 -0.65743714 15.00000000 0.25083141 + 2067 0.18673318 -0.65743714 16.00000000 0.25286050 + 2010 0.18601012 -0.65743714 17.00000000 0.25139887 + 2005 0.18630631 -0.65743714 18.00000000 0.25976521 + 1918 0.18722393 -0.65743714 19.00000000 0.26096589 + 1921 0.18631090 -0.65743714 20.00000000 0.24815453 + 1924 0.18623103 -0.65743714 21.00000000 0.24425746 + 1876 0.18610760 -0.65743714 22.00000000 0.25665706 + 1957 0.18599173 -0.65743714 23.00000000 0.25713309 + 1854 0.18585542 -0.65743714 24.00000000 0.24460758 + 1884 0.18659066 -0.65743714 25.00000000 0.25171627 + 1812 0.18668125 -0.65743714 26.00000000 0.23957897 + 1857 0.18592417 -0.65743714 27.00000000 0.25388669 + 1811 0.18730582 -0.65743714 28.00000000 0.24703842 + 1747 0.18675749 -0.65743714 29.00000000 0.24595554 + 1756 0.18636776 -0.65743714 30.00000000 0.24696093 + 1685 0.18646011 -0.65743714 31.00000000 0.25436062 + 1687 0.18630851 -0.65743714 32.00000000 0.24966914 + 1688 0.18749635 -0.65743714 33.00000000 0.25167370 + 1562 0.18664221 -0.65743714 34.00000000 0.24764252 + 1724 0.18651073 -0.65743714 35.00000000 0.25101038 + 1595 0.18619931 -0.65743714 36.00000000 0.24788216 + 1590 0.18711028 -0.65743714 37.00000000 0.25334081 + 1618 0.18596432 -0.65743714 38.00000000 0.25202548 + 1617 0.18720855 -0.65743714 39.00000000 0.25184560 + 1524 0.18511322 -0.65743714 40.00000000 0.26083555 + 5035 0.27643483 -0.48615571 1.00000000 0.25640698 + 4848 0.27686239 -0.48615571 2.00000000 0.24877803 + 4948 0.27747727 -0.48615571 3.00000000 0.25423492 + 4882 0.27619560 -0.48615571 4.00000000 0.24881192 + 4909 0.27652846 -0.48615571 5.00000000 0.25358937 + 4857 0.27760875 -0.48615571 6.00000000 0.24930911 + 4683 0.27577462 -0.48615571 7.00000000 0.24776854 + 4702 0.27674447 -0.48615571 8.00000000 0.24151930 + 4687 0.27745365 -0.48615571 9.00000000 0.24965128 + 4730 0.27656510 -0.48615571 10.00000000 0.24805740 + 4637 0.27617333 -0.48615571 11.00000000 0.24875313 + 4697 0.27755739 -0.48615571 12.00000000 0.24830958 + 4521 0.27689463 -0.48615571 13.00000000 0.24251485 + 4519 0.27706532 -0.48615571 14.00000000 0.25122488 + 4451 0.27695330 -0.48615571 15.00000000 0.25328374 + 4361 0.27561497 -0.48615571 16.00000000 0.25027193 + 4277 0.27617434 -0.48615571 17.00000000 0.24974348 + 4320 0.27683881 -0.48615571 18.00000000 0.25032749 + 4290 0.27610378 -0.48615571 19.00000000 0.24762063 + 4308 0.27720397 -0.48615571 20.00000000 0.24963423 + 4379 0.27748468 -0.48615571 21.00000000 0.24362402 + 4015 0.27777941 -0.48615571 22.00000000 0.24895243 + 4307 0.27559417 -0.48615571 23.00000000 0.25051892 + 4231 0.27607710 -0.48615571 24.00000000 0.24835548 + 4203 0.27538061 -0.48615571 25.00000000 0.24668676 + 3962 0.27576582 -0.48615571 26.00000000 0.25042750 + 4140 0.27689391 -0.48615571 27.00000000 0.25054984 + 4045 0.27639617 -0.48615571 28.00000000 0.25322034 + 3925 0.27586509 -0.48615571 29.00000000 0.25102147 + 3913 0.27653928 -0.48615571 30.00000000 0.24409327 + 3859 0.27582096 -0.48615571 31.00000000 0.25201449 + 3839 0.27777550 -0.48615571 32.00000000 0.24714786 + 3693 0.27618523 -0.48615571 33.00000000 0.24322468 + 3668 0.27675837 -0.48615571 34.00000000 0.24903770 + 3692 0.27618796 -0.48615571 35.00000000 0.24897234 + 3583 0.27755435 -0.48615571 36.00000000 0.25616661 + 3566 0.27619538 -0.48615571 37.00000000 0.24880100 + 3460 0.27655342 -0.48615571 38.00000000 0.25098884 + 3441 0.27681542 -0.48615571 39.00000000 0.25159916 + 3426 0.27756311 -0.48615571 40.00000000 0.25308403 + 10965 0.40978371 -0.31487428 1.00000000 0.25162594 + 10830 0.40990417 -0.31487428 2.00000000 0.24664866 + 10799 0.41050577 -0.31487428 3.00000000 0.24770701 + 10695 0.41068744 -0.31487428 4.00000000 0.24840066 + 10745 0.41010351 -0.31487428 5.00000000 0.24831713 + 10504 0.41052559 -0.31487428 6.00000000 0.25226762 + 10524 0.41046980 -0.31487428 7.00000000 0.24920942 + 10514 0.40964413 -0.31487428 8.00000000 0.24936792 + 10188 0.41106100 -0.31487428 9.00000000 0.25041071 + 10065 0.41120874 -0.31487428 10.00000000 0.24879252 + 10264 0.41105005 -0.31487428 11.00000000 0.24784182 + 10053 0.41078491 -0.31487428 12.00000000 0.25067818 + 10021 0.41147486 -0.31487428 13.00000000 0.25263739 + 9861 0.41141507 -0.31487428 14.00000000 0.25168017 + 9669 0.41016631 -0.31487428 15.00000000 0.24805151 + 9784 0.40976934 -0.31487428 16.00000000 0.24414600 + 9577 0.40953483 -0.31487428 17.00000000 0.24695395 + 9521 0.41019001 -0.31487428 18.00000000 0.25071767 + 9511 0.41095881 -0.31487428 19.00000000 0.24661295 + 9381 0.40989547 -0.31487428 20.00000000 0.24914263 + 9332 0.40993993 -0.31487428 21.00000000 0.25193463 + 9155 0.40970760 -0.31487428 22.00000000 0.24922104 + 9005 0.41099696 -0.31487428 23.00000000 0.24906340 + 9069 0.41018460 -0.31487428 24.00000000 0.25251390 + 8933 0.41209487 -0.31487428 25.00000000 0.25050777 + 8957 0.41140931 -0.31487428 26.00000000 0.24836237 + 8800 0.40936341 -0.31487428 27.00000000 0.24977327 + 8694 0.41019880 -0.31487428 28.00000000 0.25026778 + 8582 0.41046523 -0.31487428 29.00000000 0.24803687 + 8507 0.41075356 -0.31487428 30.00000000 0.24547237 + 8340 0.41125977 -0.31487428 31.00000000 0.25048658 + 8267 0.41048582 -0.31487428 32.00000000 0.24706822 + 8273 0.41145777 -0.31487428 33.00000000 0.25025705 + 8266 0.41123190 -0.31487428 34.00000000 0.24791936 + 8080 0.40995925 -0.31487428 35.00000000 0.24737744 + 7829 0.41031010 -0.31487428 36.00000000 0.25106288 + 7793 0.41011730 -0.31487428 37.00000000 0.24942385 + 7782 0.41045540 -0.31487428 38.00000000 0.24595257 + 7622 0.40953322 -0.31487428 39.00000000 0.24865291 + 7550 0.40998579 -0.31487428 40.00000000 0.25083162 + 24140 0.60996129 -0.14359285 1.00000000 0.25129927 + 23915 0.60904035 -0.14359285 2.00000000 0.24984226 + 23641 0.60939512 -0.14359285 3.00000000 0.24950573 + 23318 0.60992809 -0.14359285 4.00000000 0.25012012 + 23301 0.60848314 -0.14359285 5.00000000 0.25207518 + 23408 0.60868387 -0.14359285 6.00000000 0.24869775 + 23314 0.60868232 -0.14359285 7.00000000 0.24863988 + 23079 0.60822922 -0.14359285 8.00000000 0.24895772 + 22499 0.61036461 -0.14359285 9.00000000 0.24807325 + 22578 0.60941138 -0.14359285 10.00000000 0.24777619 + 22160 0.60873927 -0.14359285 11.00000000 0.24790605 + 21782 0.60925793 -0.14359285 12.00000000 0.24633636 + 21831 0.60895158 -0.14359285 13.00000000 0.25020280 + 21940 0.60869414 -0.14359285 14.00000000 0.24815887 + 21341 0.60864007 -0.14359285 15.00000000 0.25015347 + 21304 0.60938046 -0.14359285 16.00000000 0.24970223 + 20977 0.60802342 -0.14359285 17.00000000 0.24982401 + 20688 0.60916295 -0.14359285 18.00000000 0.25203116 + 20785 0.60874436 -0.14359285 19.00000000 0.24630526 + 20561 0.60948491 -0.14359285 20.00000000 0.24855360 + 20345 0.60914971 -0.14359285 21.00000000 0.24972305 + 20061 0.60817250 -0.14359285 22.00000000 0.24864889 + 19768 0.60875597 -0.14359285 23.00000000 0.24850635 + 19487 0.60866057 -0.14359285 24.00000000 0.24808330 + 19668 0.60979830 -0.14359285 25.00000000 0.24770842 + 19492 0.60798696 -0.14359285 26.00000000 0.24608633 + 19192 0.60835668 -0.14359285 27.00000000 0.24997971 + 18954 0.60826985 -0.14359285 28.00000000 0.24665554 + 18714 0.60885726 -0.14359285 29.00000000 0.24786134 + 18463 0.60820328 -0.14359285 30.00000000 0.25007598 + 18231 0.60985757 -0.14359285 31.00000000 0.24743401 + 18046 0.60858174 -0.14359285 32.00000000 0.25014133 + 18112 0.60905750 -0.14359285 33.00000000 0.25086678 + 17741 0.60946085 -0.14359285 34.00000000 0.24906666 + 17429 0.60847086 -0.14359285 35.00000000 0.25149789 + 17639 0.60804439 -0.14359285 36.00000000 0.25147530 + 17266 0.60723922 -0.14359285 37.00000000 0.24880810 + 16982 0.61025172 -0.14359285 38.00000000 0.24861816 + 16781 0.61010485 -0.14359285 39.00000000 0.24870041 + 16681 0.60902312 -0.14359285 40.00000000 0.25089255 + 53021 0.90404215 0.02768858 1.00000000 0.24911753 + 52232 0.90287780 0.02768858 2.00000000 0.24951254 + 52019 0.90342884 0.02768858 3.00000000 0.24992046 + 51177 0.90279626 0.02768858 4.00000000 0.24970814 + 50780 0.90203551 0.02768858 5.00000000 0.25142230 + 51103 0.90271145 0.02768858 6.00000000 0.24960331 + 50411 0.90172969 0.02768858 7.00000000 0.24676223 + 49885 0.90348527 0.02768858 8.00000000 0.24975945 + 49497 0.90281196 0.02768858 9.00000000 0.24845311 + 49261 0.90288824 0.02768858 10.00000000 0.24939776 + 48958 0.90206028 0.02768858 11.00000000 0.24895784 + 48475 0.90332479 0.02768858 12.00000000 0.25041622 + 47922 0.90334064 0.02768858 13.00000000 0.25084435 + 47730 0.90273096 0.02768858 14.00000000 0.24782254 + 47039 0.90367794 0.02768858 15.00000000 0.24833450 + 46714 0.90302027 0.02768858 16.00000000 0.25023267 + 46479 0.90347864 0.02768858 17.00000000 0.24947522 + 46303 0.90424125 0.02768858 18.00000000 0.24801248 + 45292 0.90330930 0.02768858 19.00000000 0.24884651 + 44963 0.90320089 0.02768858 20.00000000 0.24803777 + 44327 0.90258364 0.02768858 21.00000000 0.24890943 + 44203 0.90356987 0.02768858 22.00000000 0.24913983 + 43951 0.90374854 0.02768858 23.00000000 0.24900629 + 43432 0.90351212 0.02768858 24.00000000 0.24791262 + 42752 0.90379423 0.02768858 25.00000000 0.24821107 + 42397 0.90272064 0.02768858 26.00000000 0.25039546 + 42261 0.90352261 0.02768858 27.00000000 0.24918727 + 41925 0.90314674 0.02768858 28.00000000 0.24899192 + 41258 0.90346032 0.02768858 29.00000000 0.24775678 + 40967 0.90319094 0.02768858 30.00000000 0.24870407 + 39959 0.90365206 0.02768858 31.00000000 0.24869221 + 40057 0.90225002 0.02768858 32.00000000 0.24850728 + 39962 0.90144584 0.02768858 33.00000000 0.24837105 + 39090 0.90231624 0.02768858 34.00000000 0.25091853 + 38828 0.90330104 0.02768858 35.00000000 0.24907624 + 38226 0.90265251 0.02768858 36.00000000 0.24784952 + 37912 0.90323518 0.02768858 37.00000000 0.24926411 + 37395 0.90315217 0.02768858 38.00000000 0.25135450 + 36877 0.90411846 0.02768858 39.00000000 0.24873974 + 36910 0.90320461 0.02768858 40.00000000 0.24830807 + 115080 1.34090229 0.19897000 1.00000000 0.24888024 + 114616 1.34171947 0.19897000 2.00000000 0.25026185 + 113546 1.34071485 0.19897000 3.00000000 0.24928331 + 113071 1.33994157 0.19897000 4.00000000 0.24929642 + 111702 1.34066997 0.19897000 5.00000000 0.25019198 + 111551 1.34080972 0.19897000 6.00000000 0.24903747 + 111172 1.33963288 0.19897000 7.00000000 0.24930214 + 109920 1.33995421 0.19897000 8.00000000 0.24974875 + 108740 1.34041220 0.19897000 9.00000000 0.24883838 + 107590 1.34015754 0.19897000 10.00000000 0.24954752 + 106873 1.33987016 0.19897000 11.00000000 0.24912584 + 106204 1.33982715 0.19897000 12.00000000 0.24988908 + 105543 1.34013649 0.19897000 13.00000000 0.25092224 + 103571 1.34133537 0.19897000 14.00000000 0.25108358 + 102717 1.34120175 0.19897000 15.00000000 0.24977415 + 102473 1.34006525 0.19897000 16.00000000 0.25068634 + 101874 1.34016439 0.19897000 17.00000000 0.25015044 + 100834 1.34007683 0.19897000 18.00000000 0.24939851 + 99778 1.33990309 0.19897000 19.00000000 0.24990462 + 98619 1.33924535 0.19897000 20.00000000 0.25087059 + 98541 1.33961484 0.19897000 21.00000000 0.25077070 + 97244 1.34027624 0.19897000 22.00000000 0.25022277 + 96266 1.34053595 0.19897000 23.00000000 0.24972795 + 95215 1.34019456 0.19897000 24.00000000 0.24988952 + 94606 1.34061061 0.19897000 25.00000000 0.24868211 + 93685 1.34027004 0.19897000 26.00000000 0.24935345 + 92278 1.33883016 0.19897000 27.00000000 0.24939424 + 91714 1.33986539 0.19897000 28.00000000 0.24970498 + 90375 1.34096490 0.19897000 29.00000000 0.24979857 + 89649 1.33942344 0.19897000 30.00000000 0.25014168 + 89390 1.33966424 0.19897000 31.00000000 0.24788707 + 87630 1.34109534 0.19897000 32.00000000 0.24937879 + 86801 1.34026169 0.19897000 33.00000000 0.24961776 + 86036 1.33877609 0.19897000 34.00000000 0.24989152 + 85773 1.33936417 0.19897000 35.00000000 0.24970560 + 84292 1.34059984 0.19897000 36.00000000 0.25012502 + 82620 1.34019635 0.19897000 37.00000000 0.24948281 + 82594 1.34036531 0.19897000 38.00000000 0.24970924 + 80820 1.33969487 0.19897000 39.00000000 0.24927531 + 80032 1.33837409 0.19897000 40.00000000 0.24899854 + 252108 1.98750837 0.37025143 1.00000000 0.24963315 + 251872 1.98796831 0.37025143 2.00000000 0.24945021 + 249206 1.98740470 0.37025143 3.00000000 0.24986431 + 246705 1.98658437 0.37025143 4.00000000 0.24960817 + 245544 1.98738671 0.37025143 5.00000000 0.24913678 + 244112 1.98857067 0.37025143 6.00000000 0.24915278 + 242034 1.98751129 0.37025143 7.00000000 0.24887864 + 240871 1.98750953 0.37025143 8.00000000 0.24923217 + 238804 1.98785282 0.37025143 9.00000000 0.24970954 + 235910 1.98855438 0.37025143 10.00000000 0.24991363 + 234345 1.98787527 0.37025143 11.00000000 0.25018535 + 232579 1.98811764 0.37025143 12.00000000 0.24968614 + 231217 1.98814668 0.37025143 13.00000000 0.24960158 + 227881 1.98787835 0.37025143 14.00000000 0.25024930 + 226635 1.98741880 0.37025143 15.00000000 0.25000929 + 223958 1.98779999 0.37025143 16.00000000 0.25126317 + 222676 1.98638876 0.37025143 17.00000000 0.24916299 + 221877 1.98646510 0.37025143 18.00000000 0.25038128 + 218152 1.98774282 0.37025143 19.00000000 0.25074978 + 216121 1.98744778 0.37025143 20.00000000 0.25064673 + 215197 1.98894460 0.37025143 21.00000000 0.25012655 + 213367 1.98667640 0.37025143 22.00000000 0.24857587 + 210512 1.98778173 0.37025143 23.00000000 0.25003840 + 210545 1.98772427 0.37025143 24.00000000 0.24919997 + 206846 1.98857870 0.37025143 25.00000000 0.24918818 + 204620 1.98754574 0.37025143 26.00000000 0.24942516 + 202631 1.98852377 0.37025143 27.00000000 0.24988244 + 200538 1.98746776 0.37025143 28.00000000 0.24957434 + 198475 1.98852066 0.37025143 29.00000000 0.24932265 + 197035 1.98875389 0.37025143 30.00000000 0.24912495 + 194697 1.98799525 0.37025143 31.00000000 0.24984251 + 192977 1.98882153 0.37025143 32.00000000 0.24899870 + 190384 1.98753918 0.37025143 33.00000000 0.24857349 + 188176 1.98804434 0.37025143 34.00000000 0.25011718 + 185739 1.98804323 0.37025143 35.00000000 0.24998711 + 184296 1.98820666 0.37025143 36.00000000 0.24999465 + 183189 1.98939829 0.37025143 37.00000000 0.24982799 + 179566 1.98769584 0.37025143 38.00000000 0.24979148 + 177745 1.98849443 0.37025143 39.00000000 0.24834992 + 175853 1.98840954 0.37025143 40.00000000 0.24863941 + 552909 2.94717426 0.54153286 1.00000000 0.24956600 + 548189 2.94824879 0.54153286 2.00000000 0.24985274 + 544067 2.94822958 0.54153286 3.00000000 0.24922139 + 538493 2.94903138 0.54153286 4.00000000 0.24945442 + 535443 2.94835977 0.54153286 5.00000000 0.24929780 + 532306 2.94766166 0.54153286 6.00000000 0.24977208 + 528260 2.94872306 0.54153286 7.00000000 0.24974519 + 523946 2.94882915 0.54153286 8.00000000 0.24963347 + 520575 2.94816378 0.54153286 9.00000000 0.25003413 + 515410 2.94807130 0.54153286 10.00000000 0.25007520 + 511589 2.94791708 0.54153286 11.00000000 0.25005304 + 507214 2.94848008 0.54153286 12.00000000 0.24983807 + 502717 2.94819141 0.54153286 13.00000000 0.25019826 + 499701 2.94869309 0.54153286 14.00000000 0.24976195 + 495089 2.94830750 0.54153286 15.00000000 0.24998526 + 491139 2.94885819 0.54153286 16.00000000 0.24989602 + 486167 2.94863884 0.54153286 17.00000000 0.25009579 + 482682 2.94852355 0.54153286 18.00000000 0.24983100 + 479301 2.94849477 0.54153286 19.00000000 0.24985188 + 474413 2.94876415 0.54153286 20.00000000 0.25010531 + 469873 2.94898119 0.54153286 21.00000000 0.24937644 + 464852 2.94897663 0.54153286 22.00000000 0.24927222 + 461733 2.94842633 0.54153286 23.00000000 0.24868128 + 457644 2.94870816 0.54153286 24.00000000 0.24893485 + 452460 2.94883693 0.54153286 25.00000000 0.24924597 + 448905 2.94639070 0.54153286 26.00000000 0.24930675 + 443682 2.94766511 0.54153286 27.00000000 0.24975280 + 438834 2.94848836 0.54153286 28.00000000 0.24940618 + 434997 2.94990469 0.54153286 29.00000000 0.24968832 + 430723 2.94863341 0.54153286 30.00000000 0.24958755 + 426009 2.95048198 0.54153286 31.00000000 0.24977975 + 422204 2.94802569 0.54153286 32.00000000 0.24953114 + 417657 2.94760847 0.54153286 33.00000000 0.24935073 + 411999 2.94853279 0.54153286 34.00000000 0.24858969 + 407294 2.94981761 0.54153286 35.00000000 0.25017361 + 402384 2.94890140 0.54153286 36.00000000 0.24936000 + 396235 2.94982227 0.54153286 37.00000000 0.24897771 + 392556 2.94941729 0.54153286 38.00000000 0.24971337 + 388202 2.94954837 0.54153286 39.00000000 0.24953130 + 383787 2.94999837 0.54153286 40.00000000 0.24836484 + 1204940 4.37405964 0.71281429 1.00000000 0.24992719 + 1196688 4.37406561 0.71281429 2.00000000 0.24984052 + 1186756 4.37441168 0.71281429 3.00000000 0.25005308 + 1179684 4.37354376 0.71281429 4.00000000 0.25016388 + 1172334 4.37371423 0.71281429 5.00000000 0.24940661 + 1160874 4.37351866 0.71281429 6.00000000 0.25027000 + 1152643 4.37410472 0.71281429 7.00000000 0.25001547 + 1144372 4.37485430 0.71281429 8.00000000 0.24989082 + 1134340 4.37265944 0.71281429 9.00000000 0.24944526 + 1126144 4.37422030 0.71281429 10.00000000 0.24964354 + 1116989 4.37462764 0.71281429 11.00000000 0.24992846 + 1107472 4.37275471 0.71281429 12.00000000 0.24992948 + 1096460 4.37409099 0.71281429 13.00000000 0.24995678 + 1088250 4.37441148 0.71281429 14.00000000 0.25011435 + 1079131 4.37301289 0.71281429 15.00000000 0.25016358 + 1070744 4.37413910 0.71281429 16.00000000 0.24985544 + 1059828 4.37368426 0.71281429 17.00000000 0.24989298 + 1050313 4.37299499 0.71281429 18.00000000 0.24970275 + 1041335 4.37381801 0.71281429 19.00000000 0.24960689 + 1031058 4.37339490 0.71281429 20.00000000 0.24994807 + 1024756 4.37461082 0.71281429 21.00000000 0.24939545 + 1014826 4.37471163 0.71281429 22.00000000 0.24910270 + 1006248 4.37425213 0.71281429 23.00000000 0.24964076 + 996112 4.37354910 0.71281429 24.00000000 0.24970291 + 984007 4.37511673 0.71281429 25.00000000 0.24962614 + 977656 4.37527594 0.71281429 26.00000000 0.24942350 + 968240 4.37456914 0.71281429 27.00000000 0.24954335 + 957210 4.37465246 0.71281429 28.00000000 0.24977333 + 946142 4.37598097 0.71281429 29.00000000 0.24963685 + 936029 4.37513461 0.71281429 30.00000000 0.25007075 + 927984 4.37437630 0.71281429 31.00000000 0.24962374 + 917949 4.37462292 0.71281429 32.00000000 0.24940697 + 908871 4.37336938 0.71281429 33.00000000 0.24979345 + 898450 4.37458184 0.71281429 34.00000000 0.24972508 + 887202 4.37348587 0.71281429 35.00000000 0.24967441 + 877429 4.37373150 0.71281429 36.00000000 0.24965162 + 865757 4.37408261 0.71281429 37.00000000 0.24932274 + 855710 4.37346732 0.71281429 38.00000000 0.24952920 + 847439 4.37287737 0.71281429 39.00000000 0.24968661 + 834862 4.37351307 0.71281429 40.00000000 0.24986234 + 2618337 6.48782622 0.88409572 1.00000000 0.24983868 + 2604787 6.48770247 0.88409572 2.00000000 0.24970872 + 2581549 6.48837514 0.88409572 3.00000000 0.24982293 + 2561611 6.48719974 0.88409572 4.00000000 0.24983408 + 2545134 6.48777999 0.88409572 5.00000000 0.24992687 + 2523354 6.48779367 0.88409572 6.00000000 0.25003104 + 2505022 6.48909041 0.88409572 7.00000000 0.25020211 + 2486579 6.48804324 0.88409572 8.00000000 0.24990100 + 2469855 6.48847470 0.88409572 9.00000000 0.24986140 + 2442681 6.48774590 0.88409572 10.00000000 0.24978056 + 2426516 6.48822873 0.88409572 11.00000000 0.24967672 + 2403434 6.48738004 0.88409572 12.00000000 0.24967285 + 2381281 6.48741580 0.88409572 13.00000000 0.24976391 + 2359893 6.48812646 0.88409572 14.00000000 0.24993195 + 2340829 6.48899534 0.88409572 15.00000000 0.24971660 + 2317695 6.48789215 0.88409572 16.00000000 0.24973712 + 2301285 6.48784664 0.88409572 17.00000000 0.24977076 + 2280140 6.48794750 0.88409572 18.00000000 0.24980127 + 2260806 6.48720448 0.88409572 19.00000000 0.25007094 + 2240793 6.48679334 0.88409572 20.00000000 0.24979053 + 2225343 6.48832147 0.88409572 21.00000000 0.24975812 + 2206889 6.48806875 0.88409572 22.00000000 0.24956677 + 2186076 6.48942064 0.88409572 23.00000000 0.24980991 + 2165235 6.48812912 0.88409572 24.00000000 0.24947682 + 2144604 6.48785030 0.88409572 25.00000000 0.24944687 + 2124027 6.48775514 0.88409572 26.00000000 0.24923656 + 2103431 6.48671664 0.88409572 27.00000000 0.24944516 + 2083852 6.48823773 0.88409572 28.00000000 0.24953273 + 2061615 6.48623901 0.88409572 29.00000000 0.24973933 + 2041266 6.48844604 0.88409572 30.00000000 0.24978115 + 2020376 6.48890843 0.88409572 31.00000000 0.24970785 + 1994598 6.48736913 0.88409572 32.00000000 0.24938999 + 1973216 6.48740185 0.88409572 33.00000000 0.24960327 + 1953227 6.48793004 0.88409572 34.00000000 0.24949237 + 1929297 6.48724456 0.88409572 35.00000000 0.24979257 + 1908175 6.48805206 0.88409572 36.00000000 0.24975988 + 1887738 6.48829166 0.88409572 37.00000000 0.24954445 + 1864878 6.48727859 0.88409572 38.00000000 0.24955533 + 1842214 6.48808601 0.88409572 39.00000000 0.24917550 + 1816995 6.48793809 0.88409572 40.00000000 0.24935952 + 5683214 9.62252621 1.05537715 1.00000000 0.24987459 + 5635758 9.62256619 1.05537715 2.00000000 0.25005219 + 5592904 9.62377348 1.05537715 3.00000000 0.24977254 + 5549699 9.62260255 1.05537715 4.00000000 0.24997784 + 5512559 9.62355180 1.05537715 5.00000000 0.25000460 + 5466689 9.62348712 1.05537715 6.00000000 0.24982232 + 5427167 9.62317626 1.05537715 7.00000000 0.24990813 + 5382345 9.62176765 1.05537715 8.00000000 0.24985334 + 5335406 9.62381727 1.05537715 9.00000000 0.24978686 + 5284967 9.62247438 1.05537715 10.00000000 0.24970232 + 5244611 9.62211045 1.05537715 11.00000000 0.24976018 + 5195835 9.62259775 1.05537715 12.00000000 0.24978900 + 5149624 9.62347952 1.05537715 13.00000000 0.24971238 + 5102826 9.62259311 1.05537715 14.00000000 0.24973016 + 5063122 9.62210556 1.05537715 15.00000000 0.24961811 + 5019654 9.62259618 1.05537715 16.00000000 0.24963928 + 4974966 9.62323959 1.05537715 17.00000000 0.24968957 + 4935659 9.62198953 1.05537715 18.00000000 0.24990955 + 4894387 9.62221865 1.05537715 19.00000000 0.24994220 + 4854560 9.62332268 1.05537715 20.00000000 0.24986016 + 4814193 9.62184035 1.05537715 21.00000000 0.24975926 + 4774374 9.62313767 1.05537715 22.00000000 0.24954211 + 4728043 9.62282160 1.05537715 23.00000000 0.24958663 + 4677932 9.62344407 1.05537715 24.00000000 0.24972765 + 4644095 9.62362349 1.05537715 25.00000000 0.24957795 + 4593585 9.62476378 1.05537715 26.00000000 0.24970966 + 4550253 9.62351329 1.05537715 27.00000000 0.24949097 + 4508903 9.62221760 1.05537715 28.00000000 0.24971098 + 4459963 9.62401189 1.05537715 29.00000000 0.24970435 + 4410107 9.62292923 1.05537715 30.00000000 0.24992571 + 4365725 9.62351588 1.05537715 31.00000000 0.24942463 + 4318752 9.62328798 1.05537715 32.00000000 0.24957841 + 4272038 9.62335433 1.05537715 33.00000000 0.24966493 + 4220945 9.62280639 1.05537715 34.00000000 0.24952662 + 4172025 9.62455402 1.05537715 35.00000000 0.24965747 + 4128608 9.62269346 1.05537715 36.00000000 0.24933343 + 4077389 9.62405862 1.05537715 37.00000000 0.24967737 + 4029810 9.62351718 1.05537715 38.00000000 0.24937425 + 3978462 9.62360664 1.05537715 39.00000000 0.24937020 + 3927405 9.62353560 1.05537715 40.00000000 0.24931120 + 12155219 14.26832686 1.22665858 1.00000000 0.24982407 + 12069218 14.26836433 1.22665858 2.00000000 0.24980347 + 11972881 14.26865151 1.22665858 3.00000000 0.24965767 + 11878425 14.26972318 1.22665858 4.00000000 0.24975167 + 11795182 14.27031831 1.22665858 5.00000000 0.24980812 + 11703129 14.26757034 1.22665858 6.00000000 0.24979325 + 11604728 14.26934510 1.22665858 7.00000000 0.24959131 + 11517168 14.26924663 1.22665858 8.00000000 0.24966329 + 11425455 14.26848810 1.22665858 9.00000000 0.24957193 + 11329604 14.26895289 1.22665858 10.00000000 0.24954909 + 11232113 14.26781731 1.22665858 11.00000000 0.24983866 + 11145342 14.27031098 1.22665858 12.00000000 0.24960105 + 11047757 14.26955310 1.22665858 13.00000000 0.24965772 + 10948650 14.26971694 1.22665858 14.00000000 0.24952313 + 10850810 14.26926463 1.22665858 15.00000000 0.24955541 + 10764508 14.26917953 1.22665858 16.00000000 0.24960546 + 10671159 14.26872654 1.22665858 17.00000000 0.24964883 + 10586608 14.26916821 1.22665858 18.00000000 0.24960223 + 10497018 14.26919547 1.22665858 19.00000000 0.24957710 + 10409046 14.26840664 1.22665858 20.00000000 0.24957561 + 10325705 14.26911465 1.22665858 21.00000000 0.24951352 + 10236077 14.26947049 1.22665858 22.00000000 0.24943437 + 10150166 14.26987329 1.22665858 23.00000000 0.24957231 + 10053461 14.27008040 1.22665858 24.00000000 0.24953210 + 9959045 14.26970397 1.22665858 25.00000000 0.24956480 + 9868594 14.27034243 1.22665858 26.00000000 0.24957352 + 9761657 14.27033714 1.22665858 27.00000000 0.24973227 + 9664206 14.26944146 1.22665858 28.00000000 0.24957905 + 9555623 14.26924396 1.22665858 29.00000000 0.24982821 + 9461962 14.26836706 1.22665858 30.00000000 0.24982919 + 9361004 14.26981488 1.22665858 31.00000000 0.24953364 + 9261731 14.26998435 1.22665858 32.00000000 0.24971187 + 9160307 14.26964449 1.22665858 33.00000000 0.24974751 + 9050575 14.26979123 1.22665858 34.00000000 0.24966705 + 8950070 14.26908186 1.22665858 35.00000000 0.24995932 + 8852529 14.26913491 1.22665858 36.00000000 0.24975925 + 8749722 14.27032908 1.22665858 37.00000000 0.24953244 + 8631592 14.27042541 1.22665858 38.00000000 0.24952429 + 8527607 14.26925076 1.22665858 39.00000000 0.24958906 + 8410959 14.27004114 1.22665858 40.00000000 0.24954458 + 25616790 21.15476125 1.39794001 1.00000000 0.24963839 + 25430820 21.15472492 1.39794001 2.00000000 0.24980885 + 25230118 21.15514392 1.39794001 3.00000000 0.24972707 + 25042498 21.15577848 1.39794001 4.00000000 0.24975569 + 24851769 21.15443314 1.39794001 5.00000000 0.24964656 + 24670634 21.15470633 1.39794001 6.00000000 0.24970557 + 24468697 21.15469271 1.39794001 7.00000000 0.24959669 + 24281663 21.15440302 1.39794001 8.00000000 0.24966897 + 24081889 21.15472484 1.39794001 9.00000000 0.24966898 + 23876103 21.15592230 1.39794001 10.00000000 0.24959534 + 23690342 21.15553959 1.39794001 11.00000000 0.24969996 + 23490228 21.15537844 1.39794001 12.00000000 0.24970218 + 23296868 21.15576881 1.39794001 13.00000000 0.24963698 + 23094691 21.15546245 1.39794001 14.00000000 0.24962346 + 22887918 21.15531520 1.39794001 15.00000000 0.24957322 + 22681531 21.15766466 1.39794001 16.00000000 0.24954979 + 22510135 21.15565465 1.39794001 17.00000000 0.24956446 + 22324014 21.15530727 1.39794001 18.00000000 0.24949354 + 22129377 21.15567515 1.39794001 19.00000000 0.24952545 + 21942090 21.15500153 1.39794001 20.00000000 0.24955073 + 21755714 21.15613088 1.39794001 21.00000000 0.24948908 + 21569367 21.15391604 1.39794001 22.00000000 0.24944613 + 21385068 21.15378928 1.39794001 23.00000000 0.24940181 + 21179993 21.15351624 1.39794001 24.00000000 0.24955798 + 20984196 21.15286710 1.39794001 25.00000000 0.24952727 + 20791372 21.15367558 1.39794001 26.00000000 0.24960136 + 20581160 21.15441295 1.39794001 27.00000000 0.24964400 + 20371765 21.15502661 1.39794001 28.00000000 0.24955499 + 20178719 21.15513898 1.39794001 29.00000000 0.24944931 + 19957063 21.15525699 1.39794001 30.00000000 0.24956136 + 19733447 21.15435124 1.39794001 31.00000000 0.24955661 + 19527688 21.15377681 1.39794001 32.00000000 0.24953286 + 19302637 21.15557892 1.39794001 33.00000000 0.24966647 + 19091539 21.15354701 1.39794001 34.00000000 0.24972684 + 18875714 21.15299483 1.39794001 35.00000000 0.24953532 + 18658879 21.15441786 1.39794001 36.00000000 0.24952329 + 18441744 21.15529099 1.39794001 37.00000000 0.24955948 + 18197597 21.15255985 1.39794001 38.00000000 0.24954180 + 17960915 21.15489267 1.39794001 39.00000000 0.24946794 + 17726740 21.15455116 1.39794001 40.00000000 0.24949034 diff --git a/mocks/tests/Mr19_mock_DDsmu.DR b/mocks/tests/Mr19_mock_DDsmu.DR index 5dc7f136..2a66ff72 100644 --- a/mocks/tests/Mr19_mock_DDsmu.DR +++ b/mocks/tests/Mr19_mock_DDsmu.DR @@ -1,140 +1,140 @@ - 16 0.12731059 -0.82871857 0.10000000 0.20633790 - 11 0.12515353 -0.82871857 0.20000000 0.15051830 - 18 0.12961133 -0.82871857 0.30000000 0.29915851 - 11 0.12919907 -0.82871857 0.40000000 0.36693781 - 8 0.13127004 -0.82871857 0.50000000 0.18077128 - 11 0.12755128 -0.82871857 0.60000000 0.19729862 - 15 0.12823310 -0.82871857 0.70000000 0.30941661 - 8 0.13026533 -0.82871857 0.80000000 0.38308526 - 11 0.12652695 -0.82871857 0.90000000 0.27457505 - 11 0.12088876 -0.82871857 1.00000000 0.27030041 - 44 0.18988933 -0.65743714 0.10000000 0.25046043 - 40 0.18934067 -0.65743714 0.20000000 0.25819683 - 46 0.18927409 -0.65743714 0.30000000 0.19757136 - 23 0.18814162 -0.65743714 0.40000000 0.28705438 - 44 0.18967457 -0.65743714 0.50000000 0.23617978 - 37 0.18986317 -0.65743714 0.60000000 0.22119408 - 33 0.18751866 -0.65743714 0.70000000 0.21886382 - 49 0.19007635 -0.65743714 0.80000000 0.21821130 - 54 0.18674075 -0.65743714 0.90000000 0.27237927 - 36 0.19187276 -0.65743714 1.00000000 0.24887600 - 144 0.27963534 -0.48615571 0.10000000 0.25038225 - 155 0.28616186 -0.48615571 0.20000000 0.23707988 - 163 0.28191365 -0.48615571 0.30000000 0.26649402 - 120 0.27891034 -0.48615571 0.40000000 0.24197924 - 135 0.28152441 -0.48615571 0.50000000 0.27956477 - 166 0.28448131 -0.48615571 0.60000000 0.25379995 - 124 0.27656690 -0.48615571 0.70000000 0.22831096 - 149 0.27609419 -0.48615571 0.80000000 0.24063340 - 128 0.27998106 -0.48615571 0.90000000 0.27801332 - 143 0.27705729 -0.48615571 1.00000000 0.26451608 - 508 0.41566032 -0.31487428 0.10000000 0.25759224 - 445 0.41393342 -0.31487428 0.20000000 0.25868560 - 444 0.41368517 -0.31487428 0.30000000 0.25914849 - 474 0.41476120 -0.31487428 0.40000000 0.24918414 - 447 0.41821551 -0.31487428 0.50000000 0.24930410 - 458 0.41612023 -0.31487428 0.60000000 0.26149722 - 401 0.41942983 -0.31487428 0.70000000 0.24346060 - 476 0.41491533 -0.31487428 0.80000000 0.26839799 - 450 0.41631213 -0.31487428 0.90000000 0.25158405 - 456 0.41624403 -0.31487428 1.00000000 0.25803716 - 1505 0.61603708 -0.14359285 0.10000000 0.25254030 - 1504 0.61662759 -0.14359285 0.20000000 0.25054681 - 1440 0.61864632 -0.14359285 0.30000000 0.25218452 - 1475 0.61395625 -0.14359285 0.40000000 0.24692343 - 1464 0.61714052 -0.14359285 0.50000000 0.25008302 - 1358 0.61534298 -0.14359285 0.60000000 0.25381702 - 1460 0.61634313 -0.14359285 0.70000000 0.25965402 - 1463 0.61748002 -0.14359285 0.80000000 0.24329196 - 1486 0.61420989 -0.14359285 0.90000000 0.25247011 - 1535 0.61364964 -0.14359285 1.00000000 0.25148934 - 4840 0.91599811 0.02768858 0.10000000 0.25299581 - 4778 0.91322204 0.02768858 0.20000000 0.24907554 - 4892 0.91413760 0.02768858 0.30000000 0.25405492 - 4755 0.91489691 0.02768858 0.40000000 0.24244488 - 4861 0.91404203 0.02768858 0.50000000 0.24703680 - 4849 0.91502518 0.02768858 0.60000000 0.25107696 - 4905 0.91465004 0.02768858 0.70000000 0.25486661 - 4808 0.91361794 0.02768858 0.80000000 0.24922259 - 4731 0.91424215 0.02768858 0.90000000 0.25047345 - 4779 0.91412279 0.02768858 1.00000000 0.25095504 - 15677 1.35610305 0.19897000 0.10000000 0.24670153 - 15526 1.35514701 0.19897000 0.20000000 0.24716871 - 15417 1.35534215 0.19897000 0.30000000 0.24755408 - 15465 1.35677595 0.19897000 0.40000000 0.25058873 - 15516 1.35614667 0.19897000 0.50000000 0.25110275 - 15343 1.35248044 0.19897000 0.60000000 0.24583133 - 15448 1.35441951 0.19897000 0.70000000 0.24819576 - 15314 1.35850655 0.19897000 0.80000000 0.24877819 - 15363 1.35733116 0.19897000 0.90000000 0.25047418 - 15323 1.35480003 0.19897000 1.00000000 0.24727734 - 50173 2.01189660 0.37025143 0.10000000 0.24871628 - 50333 2.01226591 0.37025143 0.20000000 0.25029286 - 49672 2.00924038 0.37025143 0.30000000 0.24951873 - 50105 2.01148289 0.37025143 0.40000000 0.25016451 - 50514 2.01265806 0.37025143 0.50000000 0.24985593 - 50145 2.01417889 0.37025143 0.60000000 0.24999501 - 49984 2.01375145 0.37025143 0.70000000 0.25029335 - 50498 2.01440817 0.37025143 0.80000000 0.25006703 - 50131 2.01264557 0.37025143 0.90000000 0.24950389 - 50712 2.01214364 0.37025143 1.00000000 0.24930654 - 163798 2.98425196 0.54153286 0.10000000 0.24966735 - 163542 2.98354034 0.54153286 0.20000000 0.24918066 - 162483 2.98380717 0.54153286 0.30000000 0.25002588 - 163085 2.98434898 0.54153286 0.40000000 0.24952674 - 162497 2.98289432 0.54153286 0.50000000 0.24977827 - 161895 2.98420528 0.54153286 0.60000000 0.24968099 - 161978 2.98355442 0.54153286 0.70000000 0.25013319 - 162020 2.98299090 0.54153286 0.80000000 0.25021899 - 162310 2.98442359 0.54153286 0.90000000 0.24973058 - 162560 2.98411141 0.54153286 1.00000000 0.24988413 - 528585 4.42722780 0.71281429 0.10000000 0.25005917 - 526245 4.42650446 0.71281429 0.20000000 0.24960208 - 523747 4.42770388 0.71281429 0.30000000 0.25009919 - 524827 4.42799042 0.71281429 0.40000000 0.24995922 - 523306 4.42656072 0.71281429 0.50000000 0.24934124 - 520819 4.42697410 0.71281429 0.60000000 0.24973925 - 522375 4.42750903 0.71281429 0.70000000 0.24927569 - 519933 4.42624285 0.71281429 0.80000000 0.24964784 - 519286 4.42590936 0.71281429 0.90000000 0.24948366 - 523998 4.42625008 0.71281429 1.00000000 0.24982650 - 1701198 6.56722610 0.88409572 0.10000000 0.24981610 - 1695386 6.56615839 0.88409572 0.20000000 0.24980648 - 1689614 6.56582680 0.88409572 0.30000000 0.24970345 - 1680288 6.56634252 0.88409572 0.40000000 0.24980833 - 1676873 6.56555037 0.88409572 0.50000000 0.24982931 - 1672186 6.56526366 0.88409572 0.60000000 0.25029098 - 1669435 6.56508268 0.88409572 0.70000000 0.24980584 - 1667573 6.56444316 0.88409572 0.80000000 0.24978917 - 1666891 6.56512622 0.88409572 0.90000000 0.24970372 - 1681090 6.56461210 0.88409572 1.00000000 0.24942779 - 5469907 9.73975928 1.05537715 0.10000000 0.24980874 - 5427364 9.73869893 1.05537715 0.20000000 0.25010323 - 5392991 9.73928456 1.05537715 0.30000000 0.24976474 - 5362761 9.73865074 1.05537715 0.40000000 0.25003968 - 5336546 9.73801205 1.05537715 0.50000000 0.24989101 - 5309251 9.73660850 1.05537715 0.60000000 0.24982844 - 5290896 9.73708529 1.05537715 0.70000000 0.25010795 - 5281317 9.73624504 1.05537715 0.80000000 0.24995278 - 5275222 9.73499203 1.05537715 0.90000000 0.24979796 - 5314662 9.73553057 1.05537715 1.00000000 0.24971061 - 17319173 14.44207574 1.22665858 0.10000000 0.24983025 - 17152369 14.43989969 1.22665858 0.20000000 0.24972279 - 16982951 14.43981743 1.22665858 0.30000000 0.24975144 - 16852909 14.43816283 1.22665858 0.40000000 0.24973681 - 16728133 14.43656638 1.22665858 0.50000000 0.24975790 - 16615986 14.43514019 1.22665858 0.60000000 0.24969757 - 16520907 14.43442137 1.22665858 0.70000000 0.24973680 - 16439429 14.43367852 1.22665858 0.80000000 0.24977122 - 16409485 14.43252612 1.22665858 0.90000000 0.24970919 - 16544115 14.43317964 1.22665858 1.00000000 0.24992302 - 53981727 21.41207942 1.39794001 0.10000000 0.24972265 - 53169238 21.40834689 1.39794001 0.20000000 0.24970470 - 52467621 21.40406125 1.39794001 0.30000000 0.24966018 - 51795544 21.40083803 1.39794001 0.40000000 0.24964408 - 51210464 21.39821490 1.39794001 0.50000000 0.24965978 - 50699567 21.39559861 1.39794001 0.60000000 0.24966266 - 50268928 21.39291448 1.39794001 0.70000000 0.24956103 - 49994143 21.39486900 1.39794001 0.80000000 0.24963318 - 49913169 21.39462559 1.39794001 0.90000000 0.24972569 - 50385465 21.39529041 1.39794001 1.00000000 0.24966321 + 16 0.13033001 -0.82871857 0.10000000 0.20633790 + 11 0.12389984 -0.82871857 0.20000000 0.15051830 + 18 0.12299773 -0.82871857 0.30000000 0.29915851 + 11 0.12604359 -0.82871857 0.40000000 0.36693781 + 8 0.12338774 -0.82871857 0.50000000 0.18077128 + 11 0.11884060 -0.82871857 0.60000000 0.19729862 + 15 0.12612698 -0.82871857 0.70000000 0.30941661 + 8 0.12563179 -0.82871857 0.80000000 0.38308526 + 11 0.12563743 -0.82871857 0.90000000 0.27457505 + 11 0.12081568 -0.82871857 1.00000000 0.27030041 + 44 0.19119416 -0.65743714 0.10000000 0.25046043 + 40 0.19055453 -0.65743714 0.20000000 0.25819683 + 46 0.19021258 -0.65743714 0.30000000 0.19757136 + 23 0.18507083 -0.65743714 0.40000000 0.28705438 + 44 0.19296269 -0.65743714 0.50000000 0.23617978 + 37 0.19668049 -0.65743714 0.60000000 0.22119408 + 33 0.19017154 -0.65743714 0.70000000 0.21886382 + 49 0.19009166 -0.65743714 0.80000000 0.21821130 + 54 0.18740467 -0.65743714 0.90000000 0.27237927 + 36 0.18868005 -0.65743714 1.00000000 0.24887600 + 144 0.28103252 -0.48615571 0.10000000 0.25038225 + 155 0.28453025 -0.48615571 0.20000000 0.23707988 + 163 0.28020624 -0.48615571 0.30000000 0.26649402 + 120 0.28268820 -0.48615571 0.40000000 0.24197924 + 135 0.28226835 -0.48615571 0.50000000 0.27956477 + 166 0.28547728 -0.48615571 0.60000000 0.25379995 + 124 0.27380441 -0.48615571 0.70000000 0.22831096 + 149 0.27638463 -0.48615571 0.80000000 0.24063340 + 128 0.28000494 -0.48615571 0.90000000 0.27801332 + 143 0.27849399 -0.48615571 1.00000000 0.26451608 + 508 0.41400218 -0.31487428 0.10000000 0.25759224 + 445 0.40884245 -0.31487428 0.20000000 0.25868560 + 444 0.41142460 -0.31487428 0.30000000 0.25914849 + 474 0.41751904 -0.31487428 0.40000000 0.24918414 + 447 0.41854683 -0.31487428 0.50000000 0.24930410 + 458 0.41605108 -0.31487428 0.60000000 0.26149722 + 401 0.41906514 -0.31487428 0.70000000 0.24346060 + 476 0.41737467 -0.31487428 0.80000000 0.26839799 + 450 0.41734824 -0.31487428 0.90000000 0.25158405 + 456 0.41349654 -0.31487428 1.00000000 0.25803716 + 1505 0.61707614 -0.14359285 0.10000000 0.25254030 + 1504 0.61311610 -0.14359285 0.20000000 0.25054681 + 1440 0.62103284 -0.14359285 0.30000000 0.25218452 + 1475 0.61462101 -0.14359285 0.40000000 0.24692343 + 1464 0.61961859 -0.14359285 0.50000000 0.25008302 + 1358 0.61445237 -0.14359285 0.60000000 0.25381702 + 1460 0.61668094 -0.14359285 0.70000000 0.25965402 + 1463 0.61863830 -0.14359285 0.80000000 0.24329196 + 1486 0.61137980 -0.14359285 0.90000000 0.25247011 + 1535 0.61368170 -0.14359285 1.00000000 0.25148934 + 4840 0.91779324 0.02768858 0.10000000 0.25299581 + 4778 0.91437932 0.02768858 0.20000000 0.24907554 + 4892 0.91432586 0.02768858 0.30000000 0.25405492 + 4755 0.91472856 0.02768858 0.40000000 0.24244488 + 4861 0.91163300 0.02768858 0.50000000 0.24703680 + 4849 0.91536473 0.02768858 0.60000000 0.25107696 + 4905 0.91379350 0.02768858 0.70000000 0.25486661 + 4808 0.91496587 0.02768858 0.80000000 0.24922259 + 4731 0.91480235 0.02768858 0.90000000 0.25047345 + 4779 0.91572563 0.02768858 1.00000000 0.25095504 + 15677 1.35687313 0.19897000 0.10000000 0.24670153 + 15526 1.35632099 0.19897000 0.20000000 0.24716871 + 15417 1.35672219 0.19897000 0.30000000 0.24755408 + 15465 1.35756383 0.19897000 0.40000000 0.25058873 + 15516 1.35510867 0.19897000 0.50000000 0.25110275 + 15343 1.35326906 0.19897000 0.60000000 0.24583133 + 15448 1.35377296 0.19897000 0.70000000 0.24819576 + 15314 1.35778898 0.19897000 0.80000000 0.24877819 + 15363 1.35871066 0.19897000 0.90000000 0.25047418 + 15323 1.35394392 0.19897000 1.00000000 0.24727734 + 50173 2.01145005 0.37025143 0.10000000 0.24871628 + 50333 2.01282814 0.37025143 0.20000000 0.25029286 + 49672 2.01053447 0.37025143 0.30000000 0.24951873 + 50105 2.00933270 0.37025143 0.40000000 0.25016451 + 50514 2.01231758 0.37025143 0.50000000 0.24985593 + 50145 2.01411511 0.37025143 0.60000000 0.24999501 + 49984 2.01452099 0.37025143 0.70000000 0.25029335 + 50498 2.01730154 0.37025143 0.80000000 0.25006703 + 50131 2.01334515 0.37025143 0.90000000 0.24950389 + 50712 2.01184016 0.37025143 1.00000000 0.24930654 + 163798 2.98473787 0.54153286 0.10000000 0.24966735 + 163542 2.98247883 0.54153286 0.20000000 0.24918066 + 162483 2.98298113 0.54153286 0.30000000 0.25002588 + 163085 2.98424973 0.54153286 0.40000000 0.24952674 + 162497 2.98250022 0.54153286 0.50000000 0.24977827 + 161895 2.98464004 0.54153286 0.60000000 0.24968099 + 161978 2.98486263 0.54153286 0.70000000 0.25013319 + 162020 2.98285519 0.54153286 0.80000000 0.25021899 + 162310 2.98466942 0.54153286 0.90000000 0.24973058 + 162560 2.98386943 0.54153286 1.00000000 0.24988413 + 528585 4.42765399 0.71281429 0.10000000 0.25005917 + 526245 4.42612147 0.71281429 0.20000000 0.24960208 + 523747 4.42814285 0.71281429 0.30000000 0.25009919 + 524827 4.42735584 0.71281429 0.40000000 0.24995922 + 523306 4.42668377 0.71281429 0.50000000 0.24934124 + 520819 4.42788736 0.71281429 0.60000000 0.24973925 + 522375 4.42903017 0.71281429 0.70000000 0.24927569 + 519933 4.42551482 0.71281429 0.80000000 0.24964784 + 519286 4.42569628 0.71281429 0.90000000 0.24948366 + 523998 4.42690512 0.71281429 1.00000000 0.24982650 + 1701198 6.56664237 0.88409572 0.10000000 0.24981610 + 1695386 6.56648236 0.88409572 0.20000000 0.24980648 + 1689614 6.56550624 0.88409572 0.30000000 0.24970345 + 1680288 6.56638810 0.88409572 0.40000000 0.24980833 + 1676873 6.56532321 0.88409572 0.50000000 0.24982931 + 1672186 6.56493772 0.88409572 0.60000000 0.25029098 + 1669435 6.56505157 0.88409572 0.70000000 0.24980584 + 1667573 6.56448535 0.88409572 0.80000000 0.24978917 + 1666891 6.56614998 0.88409572 0.90000000 0.24970372 + 1681090 6.56497544 0.88409572 1.00000000 0.24942779 + 5469907 9.73967051 1.05537715 0.10000000 0.24980874 + 5427364 9.73822990 1.05537715 0.20000000 0.25010323 + 5392991 9.73920966 1.05537715 0.30000000 0.24976474 + 5362761 9.73853004 1.05537715 0.40000000 0.25003968 + 5336546 9.73822183 1.05537715 0.50000000 0.24989101 + 5309251 9.73639498 1.05537715 0.60000000 0.24982844 + 5290896 9.73706875 1.05537715 0.70000000 0.25010795 + 5281317 9.73621579 1.05537715 0.80000000 0.24995278 + 5275222 9.73482819 1.05537715 0.90000000 0.24979796 + 5314662 9.73598245 1.05537715 1.00000000 0.24971061 + 17319173 14.44149781 1.22665858 0.10000000 0.24983025 + 17152369 14.43951562 1.22665858 0.20000000 0.24972279 + 16982951 14.43988291 1.22665858 0.30000000 0.24975144 + 16852909 14.43762733 1.22665858 0.40000000 0.24973681 + 16728133 14.43549747 1.22665858 0.50000000 0.24975790 + 16615986 14.43435376 1.22665858 0.60000000 0.24969757 + 16520907 14.43406837 1.22665858 0.70000000 0.24973680 + 16439429 14.43382590 1.22665858 0.80000000 0.24977122 + 16409485 14.43244299 1.22665858 0.90000000 0.24970919 + 16544115 14.43296837 1.22665858 1.00000000 0.24992302 + 53981727 21.41166110 1.39794001 0.10000000 0.24972265 + 53169238 21.40803669 1.39794001 0.20000000 0.24970470 + 52467621 21.40305655 1.39794001 0.30000000 0.24966018 + 51795544 21.40063174 1.39794001 0.40000000 0.24964408 + 51210464 21.39874614 1.39794001 0.50000000 0.24965978 + 50699567 21.39540166 1.39794001 0.60000000 0.24966266 + 50268928 21.39214064 1.39794001 0.70000000 0.24956103 + 49994143 21.39417304 1.39794001 0.80000000 0.24963318 + 49913169 21.39489808 1.39794001 0.90000000 0.24972569 + 50385465 21.39401237 1.39794001 1.00000000 0.24966321 diff --git a/mocks/tests/Mr19_mock_DDsmu.RR b/mocks/tests/Mr19_mock_DDsmu.RR index 89c3e16e..43c858c3 100644 --- a/mocks/tests/Mr19_mock_DDsmu.RR +++ b/mocks/tests/Mr19_mock_DDsmu.RR @@ -1,140 +1,140 @@ - 160 0.12628979 -0.82871857 0.10000000 0.21743459 - 128 0.12837521 -0.82871857 0.20000000 0.22917674 - 132 0.12957688 -0.82871857 0.30000000 0.24310458 - 192 0.12604276 -0.82871857 0.40000000 0.22955525 - 168 0.13041355 -0.82871857 0.50000000 0.24816036 - 144 0.12665805 -0.82871857 0.60000000 0.25716712 - 150 0.12622404 -0.82871857 0.70000000 0.24221825 - 150 0.12508100 -0.82871857 0.80000000 0.24376147 - 146 0.12730893 -0.82871857 0.90000000 0.23014688 - 176 0.12536130 -0.82871857 1.00000000 0.27060385 - 482 0.18942787 -0.65743714 0.10000000 0.23813889 - 474 0.18732210 -0.65743714 0.20000000 0.24467089 - 490 0.18882176 -0.65743714 0.30000000 0.24940495 - 454 0.18995518 -0.65743714 0.40000000 0.22977090 - 442 0.19047925 -0.65743714 0.50000000 0.25555259 - 488 0.19030407 -0.65743714 0.60000000 0.23769962 - 428 0.18830197 -0.65743714 0.70000000 0.26006574 - 422 0.18943326 -0.65743714 0.80000000 0.25545760 - 478 0.19054173 -0.65743714 0.90000000 0.25111605 - 474 0.18991154 -0.65743714 1.00000000 0.25105800 - 1484 0.27946766 -0.48615571 0.10000000 0.25082409 - 1438 0.28084465 -0.48615571 0.20000000 0.24232445 - 1460 0.27912751 -0.48615571 0.30000000 0.25310631 - 1506 0.27976848 -0.48615571 0.40000000 0.25017242 - 1490 0.28071458 -0.48615571 0.50000000 0.25109175 - 1546 0.28270309 -0.48615571 0.60000000 0.24910759 - 1468 0.28041406 -0.48615571 0.70000000 0.23917503 - 1490 0.28144473 -0.48615571 0.80000000 0.24959235 - 1492 0.28068602 -0.48615571 0.90000000 0.24560202 - 1352 0.27975949 -0.48615571 1.00000000 0.26223559 - 4768 0.41541954 -0.31487428 0.10000000 0.24492959 - 4956 0.41445371 -0.31487428 0.20000000 0.24907868 - 4932 0.41585921 -0.31487428 0.30000000 0.24676711 - 4808 0.41517653 -0.31487428 0.40000000 0.24578592 - 4978 0.41643178 -0.31487428 0.50000000 0.25628214 - 4816 0.41488549 -0.31487428 0.60000000 0.24999633 - 4854 0.41539651 -0.31487428 0.70000000 0.25658033 - 4898 0.41408620 -0.31487428 0.80000000 0.24757377 - 4838 0.41570765 -0.31487428 0.90000000 0.24527180 - 4902 0.41619938 -0.31487428 1.00000000 0.24264299 - 15732 0.61643753 -0.14359285 0.10000000 0.25292104 - 15504 0.61570594 -0.14359285 0.20000000 0.25387814 - 15904 0.61623943 -0.14359285 0.30000000 0.24902701 - 15700 0.61557887 -0.14359285 0.40000000 0.25024467 - 15624 0.61583671 -0.14359285 0.50000000 0.25071424 - 15570 0.61572044 -0.14359285 0.60000000 0.24510102 - 15746 0.61665016 -0.14359285 0.70000000 0.24785056 - 15804 0.61562741 -0.14359285 0.80000000 0.25135713 - 15830 0.61613368 -0.14359285 0.90000000 0.25063374 - 15718 0.61683780 -0.14359285 1.00000000 0.25100202 - 51812 0.91488229 0.02768858 0.10000000 0.25160493 - 51628 0.91454455 0.02768858 0.20000000 0.25105392 - 51392 0.91383275 0.02768858 0.30000000 0.25054706 - 51458 0.91474181 0.02768858 0.40000000 0.25359633 - 51510 0.91360431 0.02768858 0.50000000 0.24926571 - 51262 0.91525552 0.02768858 0.60000000 0.25006126 - 51450 0.91358300 0.02768858 0.70000000 0.24833332 - 51728 0.91458395 0.02768858 0.80000000 0.25058864 - 51704 0.91366245 0.02768858 0.90000000 0.24943424 - 51702 0.91548296 0.02768858 1.00000000 0.25058458 - 167810 1.35672520 0.19897000 0.10000000 0.24946337 - 167526 1.35600111 0.19897000 0.20000000 0.25016147 - 166978 1.35523003 0.19897000 0.30000000 0.25021493 - 167926 1.35605349 0.19897000 0.40000000 0.24952661 - 166768 1.35587951 0.19897000 0.50000000 0.24994968 - 168016 1.35681133 0.19897000 0.60000000 0.25027993 - 167298 1.35605243 0.19897000 0.70000000 0.25044787 - 167312 1.35605190 0.19897000 0.80000000 0.25107847 - 167906 1.35544064 0.19897000 0.90000000 0.25092785 - 168506 1.35656696 0.19897000 1.00000000 0.24894104 - 548394 2.01171852 0.37025143 0.10000000 0.24953462 - 546334 2.01199335 0.37025143 0.20000000 0.25077123 - 545538 2.01137662 0.37025143 0.30000000 0.25072295 - 543310 2.01199925 0.37025143 0.40000000 0.24916730 - 543920 2.01212113 0.37025143 0.50000000 0.25095361 - 542280 2.01140194 0.37025143 0.60000000 0.25080692 - 541306 2.01175064 0.37025143 0.70000000 0.25040784 - 541920 2.01151853 0.37025143 0.80000000 0.25023523 - 542020 2.01248167 0.37025143 0.90000000 0.24994036 - 545146 2.01203497 0.37025143 1.00000000 0.25020849 - 1768270 2.98415267 0.54153286 0.10000000 0.25006886 - 1762308 2.98429495 0.54153286 0.20000000 0.24985701 - 1763662 2.98471507 0.54153286 0.30000000 0.25041549 - 1757430 2.98413600 0.54153286 0.40000000 0.24999589 - 1751516 2.98453668 0.54153286 0.50000000 0.25001992 - 1749338 2.98420092 0.54153286 0.60000000 0.24972907 - 1748874 2.98467465 0.54153286 0.70000000 0.25019810 - 1749772 2.98389924 0.54153286 0.80000000 0.25010485 - 1750794 2.98361099 0.54153286 0.90000000 0.24981918 - 1757564 2.98452942 0.54153286 1.00000000 0.24969792 - 5707512 4.42654360 0.71281429 0.10000000 0.25031193 - 5690564 4.42654992 0.71281429 0.20000000 0.25020124 - 5669400 4.42686268 0.71281429 0.30000000 0.24997916 - 5653936 4.42656855 0.71281429 0.40000000 0.24999317 - 5639318 4.42601444 0.71281429 0.50000000 0.24992769 - 5628352 4.42607913 0.71281429 0.60000000 0.25015125 - 5620152 4.42638127 0.71281429 0.70000000 0.24997355 - 5618500 4.42564675 0.71281429 0.80000000 0.24994699 - 5625284 4.42559179 0.71281429 0.90000000 0.24989487 - 5649710 4.42599173 0.71281429 1.00000000 0.24991835 - 18367070 6.56656610 0.88409572 0.10000000 0.25007834 - 18265436 6.56639756 0.88409572 0.20000000 0.24998823 - 18187802 6.56562711 0.88409572 0.30000000 0.25012303 - 18108114 6.56540420 0.88409572 0.40000000 0.25021503 - 18036148 6.56545726 0.88409572 0.50000000 0.25010607 - 17968856 6.56496478 0.88409572 0.60000000 0.24997142 - 17937552 6.56470001 0.88409572 0.70000000 0.25005255 - 17909324 6.56448033 0.88409572 0.80000000 0.25011287 - 17917216 6.56436568 0.88409572 0.90000000 0.24998481 - 18012276 6.56435986 0.88409572 1.00000000 0.24995248 - 58768132 9.73925834 1.05537715 0.10000000 0.25010973 - 58317582 9.73862576 1.05537715 0.20000000 0.25010661 - 57885266 9.73757417 1.05537715 0.30000000 0.25005669 - 57491968 9.73672770 1.05537715 0.40000000 0.25001275 - 57177014 9.73627117 1.05537715 0.50000000 0.25006929 - 56896508 9.73533655 1.05537715 0.60000000 0.25009712 - 56640136 9.73511776 1.05537715 0.70000000 0.25001196 - 56498546 9.73470899 1.05537715 0.80000000 0.25000736 - 56459498 9.73377809 1.05537715 0.90000000 0.24999043 - 56883826 9.73435806 1.05537715 1.00000000 0.25002170 - 186432122 14.44310499 1.22665858 0.10000000 0.25004933 - 184233678 14.44135371 1.22665858 0.20000000 0.25002489 - 182290138 14.43972295 1.22665858 0.30000000 0.24994850 - 180433056 14.43783328 1.22665858 0.40000000 0.24998143 - 178833330 14.43601495 1.22665858 0.50000000 0.25003258 - 177435368 14.43435874 1.22665858 0.60000000 0.25001640 - 176203780 14.43298254 1.22665858 0.70000000 0.25001632 - 175369724 14.43202719 1.22665858 0.80000000 0.25000012 - 175082112 14.43180162 1.22665858 0.90000000 0.24996348 - 176546470 14.43210484 1.22665858 1.00000000 0.24994666 - 582460056 21.41432667 1.39794001 0.10000000 0.25001249 - 572504788 21.41001671 1.39794001 0.20000000 0.24998329 - 563314804 21.40574110 1.39794001 0.30000000 0.25001709 - 554941466 21.40174330 1.39794001 0.40000000 0.25000411 - 547346358 21.39784700 1.39794001 0.50000000 0.24997044 - 540582506 21.39487204 1.39794001 0.60000000 0.24997578 - 535047050 21.39250791 1.39794001 0.70000000 0.24997567 - 530980264 21.39004662 1.39794001 0.80000000 0.24997634 - 529103668 21.38854786 1.39794001 0.90000000 0.25001065 - 534167788 21.38951334 1.39794001 1.00000000 0.25001138 + 160 0.12415323 -0.82871857 0.10000000 0.21743459 + 128 0.12415038 -0.82871857 0.20000000 0.22917674 + 132 0.13043609 -0.82871857 0.30000000 0.24310458 + 192 0.12709667 -0.82871857 0.40000000 0.22955525 + 168 0.12879524 -0.82871857 0.50000000 0.24816036 + 144 0.12636807 -0.82871857 0.60000000 0.25716712 + 150 0.12394385 -0.82871857 0.70000000 0.24221825 + 150 0.12437704 -0.82871857 0.80000000 0.24376147 + 146 0.12715591 -0.82871857 0.90000000 0.23014688 + 176 0.12676681 -0.82871857 1.00000000 0.27060385 + 482 0.19014196 -0.65743714 0.10000000 0.23813889 + 474 0.18618833 -0.65743714 0.20000000 0.24467089 + 490 0.18824991 -0.65743714 0.30000000 0.24940495 + 454 0.19079268 -0.65743714 0.40000000 0.22977090 + 442 0.18975760 -0.65743714 0.50000000 0.25555259 + 488 0.18913053 -0.65743714 0.60000000 0.23769962 + 428 0.18936075 -0.65743714 0.70000000 0.26006574 + 422 0.19091488 -0.65743714 0.80000000 0.25545760 + 478 0.18981709 -0.65743714 0.90000000 0.25111605 + 474 0.19140404 -0.65743714 1.00000000 0.25105800 + 1484 0.28110391 -0.48615571 0.10000000 0.25082409 + 1438 0.28085520 -0.48615571 0.20000000 0.24232445 + 1460 0.28007570 -0.48615571 0.30000000 0.25310631 + 1506 0.27881672 -0.48615571 0.40000000 0.25017242 + 1490 0.27968142 -0.48615571 0.50000000 0.25109175 + 1546 0.28153142 -0.48615571 0.60000000 0.24910759 + 1468 0.28019923 -0.48615571 0.70000000 0.23917503 + 1490 0.28170208 -0.48615571 0.80000000 0.24959235 + 1492 0.27928906 -0.48615571 0.90000000 0.24560202 + 1352 0.28089256 -0.48615571 1.00000000 0.26223559 + 4768 0.41475729 -0.31487428 0.10000000 0.24492959 + 4956 0.41452446 -0.31487428 0.20000000 0.24907868 + 4932 0.41626606 -0.31487428 0.30000000 0.24676711 + 4808 0.41651786 -0.31487428 0.40000000 0.24578592 + 4978 0.41667286 -0.31487428 0.50000000 0.25628214 + 4816 0.41560320 -0.31487428 0.60000000 0.24999633 + 4854 0.41546158 -0.31487428 0.70000000 0.25658033 + 4898 0.41358813 -0.31487428 0.80000000 0.24757377 + 4838 0.41485755 -0.31487428 0.90000000 0.24527180 + 4902 0.41665068 -0.31487428 1.00000000 0.24264299 + 15732 0.61543003 -0.14359285 0.10000000 0.25292104 + 15504 0.61584120 -0.14359285 0.20000000 0.25387814 + 15904 0.61552545 -0.14359285 0.30000000 0.24902701 + 15700 0.61568060 -0.14359285 0.40000000 0.25024467 + 15624 0.61692893 -0.14359285 0.50000000 0.25071424 + 15570 0.61701088 -0.14359285 0.60000000 0.24510102 + 15746 0.61638674 -0.14359285 0.70000000 0.24785056 + 15804 0.61570457 -0.14359285 0.80000000 0.25135713 + 15830 0.61566265 -0.14359285 0.90000000 0.25063374 + 15718 0.61782144 -0.14359285 1.00000000 0.25100202 + 51812 0.91453368 0.02768858 0.10000000 0.25160493 + 51628 0.91464408 0.02768858 0.20000000 0.25105392 + 51392 0.91366433 0.02768858 0.30000000 0.25054706 + 51458 0.91492129 0.02768858 0.40000000 0.25359633 + 51510 0.91342682 0.02768858 0.50000000 0.24926571 + 51262 0.91485648 0.02768858 0.60000000 0.25006126 + 51450 0.91437435 0.02768858 0.70000000 0.24833332 + 51728 0.91509835 0.02768858 0.80000000 0.25058864 + 51704 0.91450028 0.02768858 0.90000000 0.24943424 + 51702 0.91536618 0.02768858 1.00000000 0.25058458 + 167810 1.35699379 0.19897000 0.10000000 0.24946337 + 167526 1.35558855 0.19897000 0.20000000 0.25016147 + 166978 1.35461061 0.19897000 0.30000000 0.25021493 + 167926 1.35581940 0.19897000 0.40000000 0.24952661 + 166768 1.35617225 0.19897000 0.50000000 0.24994968 + 168016 1.35706725 0.19897000 0.60000000 0.25027993 + 167298 1.35644647 0.19897000 0.70000000 0.25044787 + 167312 1.35632798 0.19897000 0.80000000 0.25107847 + 167906 1.35467479 0.19897000 0.90000000 0.25092785 + 168506 1.35673431 0.19897000 1.00000000 0.24894104 + 548394 2.01138725 0.37025143 0.10000000 0.24953462 + 546334 2.01103616 0.37025143 0.20000000 0.25077123 + 545538 2.01059589 0.37025143 0.30000000 0.25072295 + 543310 2.01166135 0.37025143 0.40000000 0.24916730 + 543920 2.01246356 0.37025143 0.50000000 0.25095361 + 542280 2.01231597 0.37025143 0.60000000 0.25080692 + 541306 2.01218838 0.37025143 0.70000000 0.25040784 + 541920 2.01199926 0.37025143 0.80000000 0.25023523 + 542020 2.01272667 0.37025143 0.90000000 0.24994036 + 545146 2.01196147 0.37025143 1.00000000 0.25020849 + 1768270 2.98436815 0.54153286 0.10000000 0.25006886 + 1762308 2.98422750 0.54153286 0.20000000 0.24985701 + 1763662 2.98468398 0.54153286 0.30000000 0.25041549 + 1757430 2.98374943 0.54153286 0.40000000 0.24999589 + 1751516 2.98468764 0.54153286 0.50000000 0.25001992 + 1749338 2.98365074 0.54153286 0.60000000 0.24972907 + 1748874 2.98489924 0.54153286 0.70000000 0.25019810 + 1749772 2.98406629 0.54153286 0.80000000 0.25010485 + 1750794 2.98346468 0.54153286 0.90000000 0.24981918 + 1757564 2.98475170 0.54153286 1.00000000 0.24969792 + 5707512 4.42652004 0.71281429 0.10000000 0.25031193 + 5690564 4.42624298 0.71281429 0.20000000 0.25020124 + 5669400 4.42653900 0.71281429 0.30000000 0.24997916 + 5653936 4.42667103 0.71281429 0.40000000 0.24999317 + 5639318 4.42600273 0.71281429 0.50000000 0.24992769 + 5628352 4.42618385 0.71281429 0.60000000 0.25015125 + 5620152 4.42639865 0.71281429 0.70000000 0.24997355 + 5618500 4.42543874 0.71281429 0.80000000 0.24994699 + 5625284 4.42594740 0.71281429 0.90000000 0.24989487 + 5649710 4.42571952 0.71281429 1.00000000 0.24991835 + 18367070 6.56675603 0.88409572 0.10000000 0.25007834 + 18265436 6.56616120 0.88409572 0.20000000 0.24998823 + 18187802 6.56588085 0.88409572 0.30000000 0.25012303 + 18108114 6.56554892 0.88409572 0.40000000 0.25021503 + 18036148 6.56562550 0.88409572 0.50000000 0.25010607 + 17968856 6.56472696 0.88409572 0.60000000 0.24997142 + 17937552 6.56454822 0.88409572 0.70000000 0.25005255 + 17909324 6.56444124 0.88409572 0.80000000 0.25011287 + 17917216 6.56422530 0.88409572 0.90000000 0.24998481 + 18012276 6.56456891 0.88409572 1.00000000 0.24995248 + 58768132 9.73894639 1.05537715 0.10000000 0.25010973 + 58317582 9.73904544 1.05537715 0.20000000 0.25010661 + 57885266 9.73714856 1.05537715 0.30000000 0.25005669 + 57491968 9.73663492 1.05537715 0.40000000 0.25001275 + 57177014 9.73644871 1.05537715 0.50000000 0.25006929 + 56896508 9.73537331 1.05537715 0.60000000 0.25009712 + 56640136 9.73525035 1.05537715 0.70000000 0.25001196 + 56498546 9.73455375 1.05537715 0.80000000 0.25000736 + 56459498 9.73353068 1.05537715 0.90000000 0.24999043 + 56883826 9.73438123 1.05537715 1.00000000 0.25002170 + 186432122 14.44333203 1.22665858 0.10000000 0.25004933 + 184233678 14.44133855 1.22665858 0.20000000 0.25002489 + 182290138 14.43964869 1.22665858 0.30000000 0.24994850 + 180433056 14.43792907 1.22665858 0.40000000 0.24998143 + 178833330 14.43609588 1.22665858 0.50000000 0.25003258 + 177435368 14.43428514 1.22665858 0.60000000 0.25001640 + 176203780 14.43301687 1.22665858 0.70000000 0.25001632 + 175369724 14.43206459 1.22665858 0.80000000 0.25000012 + 175082112 14.43172794 1.22665858 0.90000000 0.24996348 + 176546470 14.43212132 1.22665858 1.00000000 0.24994666 + 582460056 21.41421756 1.39794001 0.10000000 0.25001249 + 572504788 21.41003639 1.39794001 0.20000000 0.24998329 + 563314804 21.40570558 1.39794001 0.30000000 0.25001709 + 554941466 21.40161318 1.39794001 0.40000000 0.25000411 + 547346358 21.39802242 1.39794001 0.50000000 0.24997044 + 540582506 21.39469475 1.39794001 0.60000000 0.24997578 + 535047050 21.39268178 1.39794001 0.70000000 0.24997567 + 530980264 21.39000913 1.39794001 0.80000000 0.24997634 + 529103668 21.38850800 1.39794001 0.90000000 0.25001065 + 534167788 21.38989242 1.39794001 1.00000000 0.25001138 diff --git a/mocks/tests/Mr19_mock_wtheta.DD b/mocks/tests/Mr19_mock_wtheta.DD index 6dce1773..4f4bae6c 100644 --- a/mocks/tests/Mr19_mock_wtheta.DD +++ b/mocks/tests/Mr19_mock_wtheta.DD @@ -1,20 +1,20 @@ - 2936 0.01207688 0.01000000 0.01412538 0.25077757 - 5062 0.01700963 0.01412538 0.01995262 0.25373562 - 8506 0.02417096 0.01995262 0.02818383 0.24530685 - 13778 0.03419236 0.02818383 0.03981072 0.25017743 - 23048 0.04825636 0.03981072 0.05623413 0.25228183 - 38528 0.06819978 0.05623413 0.07943282 0.25036740 - 65526 0.09631756 0.07943282 0.11220185 0.24989625 - 110272 0.13594077 0.11220185 0.15848932 0.24978269 - 187034 0.19202972 0.15848932 0.22387211 0.24962210 - 313508 0.27140789 0.22387211 0.31622777 0.24754937 - 530662 0.38369529 0.31622777 0.44668359 0.24781683 - 930214 0.54220094 0.44668359 0.63095734 0.24893846 - 1671728 0.76666682 0.63095734 0.89125094 0.24791310 - 3099042 1.08355906 0.89125094 1.25892541 0.24858059 - 5828652 1.53089476 1.25892541 1.77827941 0.24875674 - 10976410 2.16255637 1.77827941 2.51188643 0.24892780 - 20847164 3.05523249 2.51188643 3.54813389 0.24961533 - 39328118 4.31455474 3.54813389 5.01187234 0.24914003 - 74387848 6.09658625 5.01187234 7.07945784 0.24928205 - 139896124 8.60669794 7.07945784 10.00000000 0.24919054 + 2936 0.01210114 0.01000000 0.01412538 0.25077757 + 5062 0.01701808 0.01412538 0.01995262 0.25373562 + 8506 0.02418167 0.01995262 0.02818383 0.24530685 + 13778 0.03414613 0.02818383 0.03981072 0.25017743 + 23048 0.04827154 0.03981072 0.05623413 0.25228183 + 38528 0.06811332 0.05623413 0.07943282 0.25036740 + 65526 0.09628262 0.07943282 0.11220185 0.24989625 + 110272 0.13585347 0.11220185 0.15848932 0.24978269 + 187034 0.19213250 0.15848932 0.22387211 0.24962210 + 313508 0.27135131 0.22387211 0.31622777 0.24754937 + 530662 0.38368349 0.31622777 0.44668359 0.24781683 + 930214 0.54218557 0.44668359 0.63095734 0.24893846 + 1671728 0.76660685 0.63095734 0.89125094 0.24791310 + 3099042 1.08362772 0.89125094 1.25892541 0.24858059 + 5828652 1.53072692 1.25892541 1.77827941 0.24875674 + 10976410 2.16252557 1.77827941 2.51188643 0.24892780 + 20847164 3.05543227 2.51188643 3.54813389 0.24961533 + 39328118 4.31451892 3.54813389 5.01187234 0.24914003 + 74387848 6.09657154 5.01187234 7.07945784 0.24928205 + 139896124 8.60676731 7.07945784 10.00000000 0.24919054 diff --git a/mocks/tests/Mr19_mock_wtheta.DR b/mocks/tests/Mr19_mock_wtheta.DR index f193b3a6..94875d9c 100644 --- a/mocks/tests/Mr19_mock_wtheta.DR +++ b/mocks/tests/Mr19_mock_wtheta.DR @@ -1,20 +1,20 @@ - 3307 0.01220753 0.01000000 0.01412538 0.25135664 - 6771 0.01716219 0.01412538 0.01995262 0.25320638 - 13168 0.02433315 0.01995262 0.02818383 0.24634877 - 26347 0.03435183 0.02818383 0.03981072 0.24895144 - 52265 0.04849492 0.03981072 0.05623413 0.25155925 - 104479 0.06850782 0.05623413 0.07943282 0.25036414 - 208346 0.09673721 0.07943282 0.11220185 0.24970455 - 414103 0.13664325 0.11220185 0.15848932 0.24937376 - 823430 0.19303881 0.15848932 0.22387211 0.24937354 - 1640735 0.27266049 0.22387211 0.31622777 0.24964666 - 3266620 0.38515437 0.31622777 0.44668359 0.24963237 - 6497628 0.54402942 0.44668359 0.63095734 0.24975278 - 12919972 0.76841558 0.63095734 0.89125094 0.24984140 - 25615923 1.08535342 0.89125094 1.25892541 0.24977742 - 50765332 1.53307352 1.25892541 1.77827941 0.24988538 - 100260834 2.16530063 1.77827941 2.51188643 0.24982727 - 197415967 3.05824647 2.51188643 3.54813389 0.24974025 - 386523595 4.31917829 3.54813389 5.01187234 0.24973802 - 750988843 6.09907090 5.01187234 7.07945784 0.24970810 -1437638129 8.61111329 7.07945784 10.00000000 0.24960908 + 3307 0.01219161 0.01000000 0.01412538 0.25135664 + 6771 0.01716158 0.01412538 0.01995262 0.25320638 + 13168 0.02432678 0.01995262 0.02818383 0.24634877 + 26347 0.03436354 0.02818383 0.03981072 0.24895144 + 52265 0.04851418 0.03981072 0.05623413 0.25155925 + 104479 0.06850173 0.05623413 0.07943282 0.25036414 + 208346 0.09675203 0.07943282 0.11220185 0.24970455 + 414103 0.13666241 0.11220185 0.15848932 0.24937376 + 823430 0.19303964 0.15848932 0.22387211 0.24937354 + 1640735 0.27263619 0.22387211 0.31622777 0.24964666 + 3266620 0.38519014 0.31622777 0.44668359 0.24963237 + 6497628 0.54401376 0.44668359 0.63095734 0.24975278 + 12919972 0.76841976 0.63095734 0.89125094 0.24984140 + 25615923 1.08538759 0.89125094 1.25892541 0.24977742 + 50765332 1.53312140 1.25892541 1.77827941 0.24988538 + 100260834 2.16524045 1.77827941 2.51188643 0.24982727 + 197415967 3.05826736 2.51188643 3.54813389 0.24974025 + 386523595 4.31914105 3.54813389 5.01187234 0.24973802 + 750988843 6.09900355 5.01187234 7.07945784 0.24970810 +1437638129 8.61095617 7.07945784 10.00000000 0.24960908 diff --git a/mocks/tests/tests_mocks.c b/mocks/tests/tests_mocks.c index 1626b6d1..51973c02 100644 --- a/mocks/tests/tests_mocks.c +++ b/mocks/tests/tests_mocks.c @@ -37,6 +37,9 @@ double *RA1=NULL,*DEC1=NULL,*CZ1=NULL,*weights1=NULL; int64_t ND2; double *RA2=NULL,*DEC2=NULL,*CZ2=NULL,*weights2=NULL; +binarray bins; +binarray angular_bins; + const int cosmology_flag=1; char current_file1[MAXLEN+1],current_file2[MAXLEN+1]; @@ -62,8 +65,9 @@ int test_DDrppi_mocks(const char *correct_outputfile) ND2,RA2,DEC2,CZ2, nthreads, autocorr, - binfile, + &bins, pimax, + (int) pimax, cosmology_flag, &results, &options, @@ -152,7 +156,7 @@ int test_DDsmu_mocks(const char *correct_outputfile) ND2,RA2,DEC2,CZ2, nthreads, autocorr, - binfile, + &bins, mocks_mu_max, nmu_bins, cosmology_flag, @@ -241,7 +245,7 @@ int test_DDtheta_mocks(const char *correct_outputfile) ND2,RA2,DEC2, nthreads, autocorr, - angular_binfile, + &angular_bins, &results, &options, &extra); @@ -481,6 +485,9 @@ int main(int argc, char **argv) CZ2 = CZ1; weights2 = weights1; + read_binfile(binfile, &bins); + read_binfile(angular_binfile, &angular_bins); + strncpy(current_file1,file,MAXLEN); strncpy(current_file2,file,MAXLEN); reset_bin_refine_factors(&options); @@ -625,5 +632,6 @@ int main(int argc, char **argv) free(RA2);free(DEC2);free(CZ2); } free(RA1);free(DEC1);free(CZ1); + free_binarray(&bins); return EXIT_SUCCESS; } diff --git a/paper/scripts/generate_code_comparison.py b/paper/scripts/generate_code_comparison.py old mode 100755 new mode 100644 diff --git a/paper/scripts/generate_nthreads_scaling.py b/paper/scripts/generate_nthreads_scaling.py old mode 100755 new mode 100644 diff --git a/paper/scripts/generate_numpart_scaling.py b/paper/scripts/generate_numpart_scaling.py old mode 100755 new mode 100644 diff --git a/paper/scripts/generate_rmax_scaling.py b/paper/scripts/generate_rmax_scaling.py old mode 100755 new mode 100644 diff --git a/paper/scripts/get_speedups.py b/paper/scripts/get_speedups.py old mode 100755 new mode 100644 diff --git a/theory/DD/DD.c b/theory/DD/DD.c index ee40f177..bc79a2c1 100644 --- a/theory/DD/DD.c +++ b/theory/DD/DD.c @@ -156,7 +156,8 @@ int main(int argc, char *argv[]) } fprintf(stderr,"\t\t -------------------------------------\n"); - + binarray bins; + read_binfile(binfile, &bins); /*---Read-data1-file----------------------------------*/ gettimeofday(&t0,NULL); @@ -231,7 +232,7 @@ int main(int argc, char *argv[]) ND2,x2,y2,z2, nthreads, autocorr, - binfile, + &bins, &results, &options, &extra);/* This is for ABI compatibility */ @@ -247,6 +248,7 @@ int main(int argc, char *argv[]) free(weights2[w]); } } + free_binarray(&bins); if(status != EXIT_SUCCESS) { return status; } diff --git a/theory/DD/countpairs.c b/theory/DD/countpairs.c index ee8b3d42..ec35e02e 100644 --- a/theory/DD/countpairs.c +++ b/theory/DD/countpairs.c @@ -35,7 +35,7 @@ int countpairs(const int64_t ND1, void * restrict X1, void * restrict Y1, void const int64_t ND2, void * restrict X2, void * restrict Y2, void * restrict Z2, const int numthreads, const int autocorr, - const char *binfile, + binarray *bins, results_countpairs *results, struct config_options *options, struct extra_options *extra) @@ -59,7 +59,7 @@ int countpairs(const int64_t ND1, void * restrict X1, void * restrict Y1, void ND2, (float *) X2, (float *) Y2, (float *) Z2, numthreads, autocorr, - binfile, + bins, results, options, extra); @@ -68,7 +68,7 @@ int countpairs(const int64_t ND1, void * restrict X1, void * restrict Y1, void ND2, (double *) X2, (double *) Y2, (double *) Z2, numthreads, autocorr, - binfile, + bins, results, options, extra); diff --git a/theory/DD/countpairs.h b/theory/DD/countpairs.h index 3c13915e..43794754 100644 --- a/theory/DD/countpairs.h +++ b/theory/DD/countpairs.h @@ -12,8 +12,8 @@ extern "C" { #endif - -#include "defs.h"//for struct config_options + +#include "defs.h"//for struct config_options #include //for uint64_t //define the results structure @@ -24,16 +24,16 @@ extern "C" { double *weightavg; int nbin; } results_countpairs; - + extern int countpairs(const int64_t ND1, void *X1, void *Y1, void *Z1, const int64_t ND2, void *X2, void *Y2, void *Z2, const int numthreads, const int autocorr, - const char *binfile, + binarray *bins, results_countpairs *results, struct config_options *options, struct extra_options *extra) __attribute__((warn_unused_result)); - + extern void free_results(results_countpairs *results); #ifdef __cplusplus diff --git a/theory/DD/countpairs_impl.c.src b/theory/DD/countpairs_impl.c.src index b5edf401..abffbb39 100644 --- a/theory/DD/countpairs_impl.c.src +++ b/theory/DD/countpairs_impl.c.src @@ -137,7 +137,7 @@ int countpairs_DOUBLE(const int64_t ND1, DOUBLE *X1, DOUBLE *Y1, DOUBLE *Z1, const int64_t ND2, DOUBLE *X2, DOUBLE *Y2, DOUBLE *Z2, const int numthreads, const int autocorr, - const char *binfile, + binarray *bins, results_countpairs *results, struct config_options *options, struct extra_options *extra) @@ -195,17 +195,16 @@ int countpairs_DOUBLE(const int64_t ND1, DOUBLE *X1, DOUBLE *Y1, DOUBLE *Z1, /*********************** *initializing the bins ************************/ - double *rupp=NULL; - int nrpbin ; - double rpmin,rpmax; - setup_bins(binfile,&rpmin,&rpmax,&nrpbin,&rupp); - if( ! (rpmin >=0.0 && rpmax > 0.0 && rpmin < rpmax && nrpbin > 0)) { - fprintf(stderr,"Error: Could not setup with R bins correctly. (rmin = %lf, rmax = %lf, with nbins = %d). " + double *rupp = bins->edges; + int nrpbin = bins->nedges; + double rpmin=bins->edges[0], rpmax=bins->edges[bins->nedges-1]; + if( ! (rpmin >= 0.0 && rpmax > 0.0 && rpmin < rpmax && nrpbin > 0)) { + fprintf(stderr,"Error: Could not setup with r bins correctly. (rmin = %lf, rmax = %lf, with nbins = %d). " "Expected non-zero rmin/rmax with rmax > rmin and nbins >=1 \n", rpmin, rpmax, nrpbin); return EXIT_FAILURE; } - detect_bin_type(rupp, nrpbin, &(options->bin_type), options->verbose); + detect_bin_type(bins, &(options->bin_type), options->verbose); //Find the min/max of the data DOUBLE xmin, xmax, ymin, ymax, zmin, zmax; @@ -299,7 +298,7 @@ int countpairs_DOUBLE(const int64_t ND1, DOUBLE *X1, DOUBLE *Y1, DOUBLE *Z1, } cellarray_DOUBLE *lattice2 = NULL; - if(autocorr==0) { + if(autocorr == 0) { int ngrid2_x=0,ngrid2_y=0,ngrid2_z=0; lattice2 = gridlink_DOUBLE(ND2, X2, Y2, Z2, &(extra->weights1), xmin, xmax, ymin, ymax, zmin, zmax, @@ -336,7 +335,6 @@ int countpairs_DOUBLE(const int64_t ND1, DOUBLE *X1, DOUBLE *Y1, DOUBLE *Z1, if(autocorr == 0) { free_cellarray_DOUBLE(lattice2, totncells); } - free(rupp); return EXIT_FAILURE; } @@ -347,7 +345,6 @@ int countpairs_DOUBLE(const int64_t ND1, DOUBLE *X1, DOUBLE *Y1, DOUBLE *Z1, if(autocorr == 0) { free_cellarray_DOUBLE(lattice2, totncells); } - free(rupp); return EXIT_FAILURE; } @@ -379,7 +376,6 @@ int countpairs_DOUBLE(const int64_t ND1, DOUBLE *X1, DOUBLE *Y1, DOUBLE *Z1, if(need_weightavg) { matrix_free((void**) all_weightavg, numthreads); } - free(rupp); return EXIT_FAILURE; } #else @@ -470,7 +466,7 @@ int countpairs_DOUBLE(const int64_t ND1, DOUBLE *X1, DOUBLE *Y1, DOUBLE *Z1, this_cell_pair->min_dx, this_cell_pair->min_dy, this_cell_pair->min_dz, this_cell_pair->closest_x1, this_cell_pair->closest_y1, this_cell_pair->closest_z1, this_rpavg, npairs, - this_weightavg, extra->weight_method, options->bin_type); + this_weightavg, extra->weight_method, extra->pair_weight, options->bin_type); /* This actually causes a race condition under OpenMP - but mostly I care that an error occurred - rather than the exact value of the error status */ @@ -511,12 +507,11 @@ int countpairs_DOUBLE(const int64_t ND1, DOUBLE *X1, DOUBLE *Y1, DOUBLE *Z1, free_cellarray_DOUBLE(lattice1, totncells); - if(autocorr==0) { + if(autocorr == 0) { free_cellarray_DOUBLE(lattice2, totncells); } if(abort_status != EXIT_SUCCESS || interrupt_status_DOUBLE != EXIT_SUCCESS) { /* Cleanup memory here if aborting */ - free(rupp); #if defined(_OPENMP) matrix_free((void **) all_npairs, numthreads); if(options->need_avg_sep) { @@ -588,7 +583,7 @@ int countpairs_DOUBLE(const int64_t ND1, DOUBLE *X1, DOUBLE *Y1, DOUBLE *Z1, /* Is the min. requested separation 0.0 ?*/ /* The comparison is '<=' rather than '==' only to silence the compiler */ - if(rupp[0] <= 0.0) { + if(rupp[0] <= 0.) { /* Then, add all the self-pairs. This ensures that a cross-correlation with two identical datasets produces the same result as the auto-correlation */ @@ -599,10 +594,9 @@ int countpairs_DOUBLE(const int64_t ND1, DOUBLE *X1, DOUBLE *Y1, DOUBLE *Z1, // The self-pairs have non-zero weight, though. So, fix that here. if(need_weightavg){ // Keep in mind this is an autocorrelation (i.e. only one particle set to consider) + pair_struct_DOUBLE pair; + set_pair_struct_DOUBLE(&pair, (weight_struct_DOUBLE *) &(extra->weights0), (weight_struct_DOUBLE *) &(extra->weights0), &(extra->pair_weight)); weight_func_t_DOUBLE weight_func = get_weight_func_by_method_DOUBLE(extra->weight_method); - pair_struct_DOUBLE pair = {.num_weights = extra->weights0.num_weights, - .dx.d=0., .dy.d=0., .dz.d=0., // always 0 separation - .parx.d=0., .pary.d=0., .parz.d=0.}; for(int64_t j = 0; j < ND1; j++){ for(int w = 0; w < pair.num_weights; w++){ pair.weights0[w].d = ((DOUBLE *) extra->weights0.weights[w])[j]; @@ -618,7 +612,7 @@ int countpairs_DOUBLE(const int64_t ND1, DOUBLE *X1, DOUBLE *Y1, DOUBLE *Z1, for(int i=0;i 0) { if(options->need_avg_sep) { - rpavg[i] /= (DOUBLE) npairs[i] ; + rpavg[i] /= need_weightavg ? weightavg[i] : (DOUBLE) npairs[i]; } if(need_weightavg) { weightavg[i] /= (DOUBLE) npairs[i]; @@ -629,13 +623,12 @@ int countpairs_DOUBLE(const int64_t ND1, DOUBLE *X1, DOUBLE *Y1, DOUBLE *Z1, //Pack in the results results->nbin = nrpbin; results->npairs = my_malloc(sizeof(*(results->npairs)), nrpbin); - results->rupp = my_malloc(sizeof(*(results->rupp)) , nrpbin); - results->rpavg = my_calloc(sizeof(*(results->rpavg)) , nrpbin); - results->weightavg = my_calloc(sizeof(*(results->weightavg)) , nrpbin); + results->rupp = my_malloc(sizeof(*(results->rupp)), nrpbin); + results->rpavg = my_calloc(sizeof(*(results->rpavg)), nrpbin); + results->weightavg = my_calloc(sizeof(*(results->weightavg)), nrpbin); if(results->npairs == NULL || results->rupp == NULL || results->rpavg == NULL || results->weightavg == NULL) { free_results(results); - free(rupp); return EXIT_FAILURE; } @@ -652,9 +645,6 @@ int countpairs_DOUBLE(const int64_t ND1, DOUBLE *X1, DOUBLE *Y1, DOUBLE *Z1, } } - /* only the rupp is left to be freed */ - free(rupp); - /* reset interrupt handlers to default */ RESET_INTERRUPT_HANDLERS(); reset_bin_refine_factors(options); diff --git a/theory/DD/countpairs_impl.h.src b/theory/DD/countpairs_impl.h.src index 32ad74ba..0748a657 100644 --- a/theory/DD/countpairs_impl.h.src +++ b/theory/DD/countpairs_impl.h.src @@ -30,7 +30,8 @@ extern "C" { const DOUBLE min_xdiff, const DOUBLE min_ydiff, const DOUBLE min_zdiff, const DOUBLE closest_icell_xpos, const DOUBLE closest_icell_ypos, const DOUBLE closest_icell_zpos, DOUBLE *src_rpavg, uint64_t *src_npairs, - DOUBLE *src_weightavg, const weight_method_t weight_method, const bin_type_t bin_type); + DOUBLE *src_weightavg, const weight_method_t weight_method, const pair_weight_struct pair_weight, + const bin_type_t bin_type); extern countpairs_func_ptr_DOUBLE countpairs_driver_DOUBLE(const struct config_options *options) __attribute__((warn_unused_result)); @@ -38,7 +39,7 @@ extern "C" { const int64_t ND2, DOUBLE *X2, DOUBLE *Y2, DOUBLE *Z2, const int numthreads, const int autocorr, - const char *binfile, + binarray *bins, results_countpairs *results, struct config_options *options, struct extra_options *extra); diff --git a/theory/DD/countpairs_kernels.c.src b/theory/DD/countpairs_kernels.c.src index 6d776eea..00ad6172 100644 --- a/theory/DD/countpairs_kernels.c.src +++ b/theory/DD/countpairs_kernels.c.src @@ -30,7 +30,8 @@ static inline int countpairs_avx512_intrinsics_DOUBLE(const int64_t N0, DOUBLE * const DOUBLE min_xdiff, const DOUBLE min_ydiff, const DOUBLE min_zdiff, const DOUBLE closest_icell_xpos, const DOUBLE closest_icell_ypos, const DOUBLE closest_icell_zpos, DOUBLE *src_rpavg, uint64_t *src_npairs, - DOUBLE *src_weightavg, const weight_method_t weight_method, const bin_type_t bin_type) + DOUBLE *src_weightavg, const weight_method_t weight_method, const pair_weight_struct pair_weight, + const bin_type_t bin_type) { #ifdef COUNT_VECTORIZED @@ -49,6 +50,7 @@ static inline int countpairs_avx512_intrinsics_DOUBLE(const int64_t N0, DOUBLE * } const int32_t need_rpavg = src_rpavg != NULL; const int32_t need_weightavg = src_weightavg != NULL; + int32_t need_costheta = need_weightavg; const DOUBLE sqr_rpmax=rpmax*rpmax; AVX512_FLOATS m_inv_rpstep = AVX512_SETZERO_FLOAT(); AVX512_FLOATS m_rpmin_invstep = AVX512_SETZERO_FLOAT(); @@ -77,8 +79,16 @@ static inline int countpairs_avx512_intrinsics_DOUBLE(const int64_t N0, DOUBLE * local_w0 = *weights0; local_w1 = *weights1; - pair.num_weights = local_w0.num_weights; - avx512_weight_func = get_avx512_weight_func_by_method_DOUBLE(weight_method); + set_pair_struct_DOUBLE(&pair, &local_w0, &local_w1, &pair_weight); + need_costheta = pair_weight.num; + avx512_weight_func = get_avx512_weight_func_by_method_DOUBLE(weight_method); + } + DOUBLE *norm1 = NULL; + if (need_costheta) { + norm1 = (DOUBLE *) my_malloc(N1,sizeof(DOUBLE)); + for(int64_t i=0;i= AVX512_NVEC ? ~0:masks_per_misalignment_value_DOUBLE[N1-j]; const AVX512_FLOATS m_x1 = AVX512_MASKZ_LOAD_FLOATS_UNALIGNED(m_mask_left, localx1); const AVX512_FLOATS m_y1 = AVX512_MASKZ_LOAD_FLOATS_UNALIGNED(m_mask_left, localy1); const AVX512_FLOATS m_z1 = AVX512_MASKZ_LOAD_FLOATS_UNALIGNED(m_mask_left, localz1); + if(need_costheta) { + const AVX512_FLOATS m_norm1 = AVX512_MASKZ_LOAD_FLOATS_UNALIGNED(m_mask_left, norm1 + j); + pair.costheta.a512 = AVX512_MASKZ_ADD_FLOATS(m_mask_left, AVX512_MASKZ_ADD_FLOATS(AVX512_MASKZ_MULTIPLY_FLOATS(m_mask_left, m_x1, m_xpos), AVX512_MASKZ_MULTIPLY_FLOATS(m_mask_left, m_y1, m_ypos)), AVX512_MASKZ_MULTIPLY_FLOATS(m_mask_left, m_z1, m_zpos)); + pair.costheta.a512 = AVX512_MASKZ_DIVIDE_FLOATS(m_mask_left, pair.costheta.a512, AVX512_MASKZ_MULTIPLY_FLOATS(m_mask_left, m_norm1, m_norm0)); + } union int16 union_rpbin; union float16 union_mDperp; @@ -245,6 +263,7 @@ static inline int countpairs_avx512_intrinsics_DOUBLE(const int64_t N0, DOUBLE * } }//backwards loop over the bins } + if(need_rpavg && need_weightavg) union_mDperp.m_Dperp = AVX512_MASKZ_MULTIPLY_FLOATS(m_mask_left, union_mDperp.m_Dperp, union_mweight.m_weights); if(need_rpavg || need_weightavg || bin_type == BIN_LIN) { //Do I need this step of going via the union? accessing int[] -> AVX* vector might //cause alignment problems but accessing the ints from an AVX* @@ -306,10 +325,12 @@ static inline int countpairs_avx_intrinsics_DOUBLE(const int64_t N0, DOUBLE *x0, const DOUBLE min_xdiff, const DOUBLE min_ydiff, const DOUBLE min_zdiff, const DOUBLE closest_icell_xpos, const DOUBLE closest_icell_ypos, const DOUBLE closest_icell_zpos, DOUBLE *src_rpavg, uint64_t *src_npairs, - DOUBLE *src_weightavg, const weight_method_t weight_method, const bin_type_t bin_type) + DOUBLE *src_weightavg, const weight_method_t weight_method, const pair_weight_struct pair_weight, + const bin_type_t bin_type) { const int32_t need_rpavg = src_rpavg != NULL; const int32_t need_weightavg = src_weightavg != NULL; + int32_t need_costheta = need_weightavg; const DOUBLE sqr_rpmin=rpmin*rpmin, sqr_rpmax=rpmax*rpmax; DOUBLE inv_rpstep=0., rpmin_invstep=0.; const AVX_FLOATS m_zero = AVX_SETZERO_FLOAT(); @@ -357,11 +378,18 @@ static inline int countpairs_avx_intrinsics_DOUBLE(const int64_t N0, DOUBLE *x0, local_w0 = *weights0; local_w1 = *weights1; - pair.num_weights = local_w0.num_weights; - + set_pair_struct_DOUBLE(&pair, &local_w0, &local_w1, &pair_weight); + need_costheta = pair_weight.num; avx_weight_func = get_avx_weight_func_by_method_DOUBLE(weight_method); fallback_weight_func = get_weight_func_by_method_DOUBLE(weight_method); } + DOUBLE *norm1 = NULL; + if (need_costheta) { + norm1 = (DOUBLE *) my_malloc(N1,sizeof(DOUBLE)); + for(int64_t i=0;i=1;kbin--) { @@ -849,7 +909,6 @@ static inline int countpairs_sse_intrinsics_DOUBLE(const int64_t N0, DOUBLE *x0, npairs[kbin] += SSE_BIT_COUNT_INT(test2); if(need_rpavg || need_weightavg){ m_rpbin = SSE_BLEND_FLOATS_WITH_MASK(m_rpbin,m_kbin[kbin], m_bin_mask); - union_rpbin.m_ibin = SSE_TRUNCATE_FLOAT_TO_INT(m_rpbin); } int test3 = SSE_TEST_COMPARISON(m_mask_left); if(test3 == 0) { @@ -857,7 +916,9 @@ static inline int countpairs_sse_intrinsics_DOUBLE(const int64_t N0, DOUBLE *x0, } } } + if(need_rpavg && need_weightavg) union_mDperp.m_Dperp = SSE_MULTIPLY_FLOATS(union_mDperp.m_Dperp, union_mweight.m_weights); if(need_rpavg || need_weightavg || bin_type == BIN_LIN) { + union_rpbin.m_ibin = SSE_TRUNCATE_FLOAT_TO_INT(m_rpbin); //protect the unroll pragma in case compiler is not icc. #if __INTEL_COMPILER #pragma unroll(SSE_NVEC) @@ -880,6 +941,12 @@ static inline int countpairs_sse_intrinsics_DOUBLE(const int64_t N0, DOUBLE *x0, } for(;j //for uint64_t //define the results structure @@ -30,12 +30,13 @@ extern "C" { const int64_t ND2, void *X2, void *Y2, void *Z2, const int numthreads, const int autocorr, - const char *binfile, + binarray *bins, const double pimax, + const int npibins, results_countpairs_rp_pi *results, struct config_options *options, struct extra_options *extra); - + extern void free_results_rp_pi(results_countpairs_rp_pi *results); #ifdef __cplusplus diff --git a/theory/DDrppi/countpairs_rp_pi_impl.c.src b/theory/DDrppi/countpairs_rp_pi_impl.c.src index bc8991e6..23b019ec 100644 --- a/theory/DDrppi/countpairs_rp_pi_impl.c.src +++ b/theory/DDrppi/countpairs_rp_pi_impl.c.src @@ -136,8 +136,9 @@ int countpairs_rp_pi_DOUBLE(const int64_t ND1, DOUBLE *X1, DOUBLE *Y1, DOUBLE *Z const int64_t ND2, DOUBLE *X2, DOUBLE *Y2, DOUBLE *Z2, const int numthreads, const int autocorr, - const char *binfile, + binarray *bins, const DOUBLE pimax, + const int npibin, results_countpairs_rp_pi *results, struct config_options *options, struct extra_options *extra) @@ -185,8 +186,6 @@ int countpairs_rp_pi_DOUBLE(const int64_t ND1, DOUBLE *X1, DOUBLE *Y1, DOUBLE *Z options->max_cells_per_dim = NLATMAX; } - const int npibin = (int) pimax; - /* setup interrupt handler -> mostly useful during the python execution. Let's Ctrl-C abort the extension */ SETUP_INTERRUPT_HANDLERS(interrupt_handler_countpairs_rp_pi_DOUBLE); @@ -194,16 +193,15 @@ int countpairs_rp_pi_DOUBLE(const int64_t ND1, DOUBLE *X1, DOUBLE *Y1, DOUBLE *Z /*********************** *initializing the bins ************************/ - double *rupp; - int nrpbin ; - double rpmin,rpmax; - setup_bins(binfile,&rpmin,&rpmax,&nrpbin,&rupp); + double *rupp = bins->edges; + int nrpbin = bins->nedges; + double rpmin=bins->edges[0], rpmax=bins->edges[bins->nedges-1]; if( ! (rpmin >= 0.0 && rpmax > 0.0 && rpmin < rpmax && nrpbin > 0)) { - fprintf(stderr,"Error: Could not setup with R bins correctly. (rmin = %lf, rmax = %lf, with nbins = %d). Expected non-zero rmin/rmax with rmax > rmin and nbins >=1 \n", + fprintf(stderr,"Error: Could not setup with r bins correctly. (rmin = %lf, rmax = %lf, with nbins = %d). Expected positive rmin/rmax with rmax > rmin and nbins >=1 \n", rpmin, rpmax, nrpbin); return EXIT_FAILURE; } - detect_bin_type(rupp, nrpbin, &(options->bin_type), options->verbose); + detect_bin_type(bins, &(options->bin_type), options->verbose); DOUBLE rupp_sqr[nrpbin]; const int64_t totnbins = (npibin+1)*(nrpbin+1); @@ -339,7 +337,6 @@ int countpairs_rp_pi_DOUBLE(const int64_t ND1, DOUBLE *X1, DOUBLE *Y1, DOUBLE *Z if(autocorr == 0) { free_cellarray_DOUBLE(lattice2, totncells); } - free(rupp); return EXIT_FAILURE; } @@ -350,7 +347,6 @@ int countpairs_rp_pi_DOUBLE(const int64_t ND1, DOUBLE *X1, DOUBLE *Y1, DOUBLE *Z if(autocorr == 0) { free_cellarray_DOUBLE(lattice2, totncells); } - free(rupp); return EXIT_FAILURE; } @@ -380,7 +376,6 @@ int countpairs_rp_pi_DOUBLE(const int64_t ND1, DOUBLE *X1, DOUBLE *Y1, DOUBLE *Z if(need_weightavg) { matrix_free((void**) all_weightavg, numthreads); } - free(rupp); return EXIT_FAILURE; } #else @@ -463,7 +458,7 @@ int countpairs_rp_pi_DOUBLE(const int64_t ND1, DOUBLE *X1, DOUBLE *Y1, DOUBLE *Z this_cell_pair->min_dx, this_cell_pair->min_dy, this_cell_pair->min_dz, this_cell_pair->closest_x1, this_cell_pair->closest_y1, this_cell_pair->closest_z1, this_rpavg, npairs, - this_weightavg, extra->weight_method, options->bin_type); + this_weightavg, extra->weight_method, extra->pair_weight, options->bin_type); /* This actually causes a race condition under OpenMP - but mostly I care that an error occurred - rather than the exact value of @@ -510,7 +505,6 @@ int countpairs_rp_pi_DOUBLE(const int64_t ND1, DOUBLE *X1, DOUBLE *Y1, DOUBLE *Z if(abort_status != EXIT_SUCCESS || interrupt_status_DDrppi_DOUBLE != EXIT_SUCCESS) { /* Cleanup memory here if aborting */ - free(rupp); #if defined(_OPENMP) matrix_free((void **) all_npairs, numthreads); if(options->need_avg_sep) { @@ -582,27 +576,25 @@ int countpairs_rp_pi_DOUBLE(const int64_t ND1, DOUBLE *X1, DOUBLE *Y1, DOUBLE *Z /* The comparison is '<=' rather than '==' only to silence the compiler */ if(rupp[0] <= 0.0) { - int index = (npibin+1);//first valid rp bin (with 0-dpi depth in pi) /* Then, add all the self-pairs. This ensures that a cross-correlation with two identical datasets produces the same result as the auto-correlation */ - npairs[index] += ND1; + npairs[npibin+1] += ND1; // Increasing npairs affects rpavg and weightavg. // We don't need to add anything to rpavg; all the self-pairs have 0 separation! // The self-pairs have non-zero weight, though. So, fix that here. if(need_weightavg){ // Keep in mind this is an autocorrelation (i.e. only one particle set to consider) + pair_struct_DOUBLE pair; + set_pair_struct_DOUBLE(&pair, (weight_struct_DOUBLE *) &(extra->weights0), (weight_struct_DOUBLE *) &(extra->weights0), &(extra->pair_weight)); weight_func_t_DOUBLE weight_func = get_weight_func_by_method_DOUBLE(extra->weight_method); - pair_struct_DOUBLE pair = {.num_weights = extra->weights0.num_weights, - .dx.d=0., .dy.d=0., .dz.d=0., // always 0 separation - .parx.d=0., .pary.d=0., .parz.d=0.}; for(int64_t j = 0; j < ND1; j++){ for(int w = 0; w < pair.num_weights; w++){ pair.weights0[w].d = ((DOUBLE *) extra->weights0.weights[w])[j]; pair.weights1[w].d = ((DOUBLE *) extra->weights0.weights[w])[j]; } - weightavg[1] += weight_func(&pair); + weightavg[npibin+1] += weight_func(&pair); } } } @@ -612,7 +604,7 @@ int countpairs_rp_pi_DOUBLE(const int64_t ND1, DOUBLE *X1, DOUBLE *Y1, DOUBLE *Z for(int i=0;i 0) { if(options->need_avg_sep) { - rpavg[i] /= (DOUBLE) npairs[i] ; + rpavg[i] /= need_weightavg ? weightavg[i] : (DOUBLE) npairs[i]; } if(need_weightavg) { weightavg[i] /= (DOUBLE) npairs[i]; @@ -632,7 +624,6 @@ int countpairs_rp_pi_DOUBLE(const int64_t ND1, DOUBLE *X1, DOUBLE *Y1, DOUBLE *Z if(results->npairs == NULL || results->rupp == NULL || results->rpavg == NULL || results->weightavg == NULL) { free_results_rp_pi(results); - free(rupp); return EXIT_FAILURE; } @@ -657,7 +648,6 @@ int countpairs_rp_pi_DOUBLE(const int64_t ND1, DOUBLE *X1, DOUBLE *Y1, DOUBLE *Z } } } - free(rupp); /* reset interrupt handlers to default */ RESET_INTERRUPT_HANDLERS(); diff --git a/theory/DDrppi/countpairs_rp_pi_impl.h.src b/theory/DDrppi/countpairs_rp_pi_impl.h.src index 929c5a88..120cd70c 100644 --- a/theory/DDrppi/countpairs_rp_pi_impl.h.src +++ b/theory/DDrppi/countpairs_rp_pi_impl.h.src @@ -29,7 +29,8 @@ extern "C" { const DOUBLE min_xdiff, const DOUBLE min_ydiff, const DOUBLE min_zdiff, const DOUBLE closest_icell_xpos, const DOUBLE closest_icell_ypos, const DOUBLE closest_icell_zpos, DOUBLE *src_rpavg, uint64_t *src_npairs, - DOUBLE *src_weightavg, const weight_method_t weight_method, const bin_type_t bin_type); + DOUBLE *src_weightavg, const weight_method_t weight_method, const pair_weight_struct pair_weight, + const bin_type_t bin_type); extern countpairs_rp_pi_func_ptr_DOUBLE countpairs_rp_pi_driver_DOUBLE(const struct config_options *options) __attribute__((warn_unused_result)); @@ -38,8 +39,9 @@ extern "C" { const int64_t ND2, DOUBLE *X2, DOUBLE *Y2, DOUBLE *Z2, const int numthreads, const int autocorr, - const char *binfile, + binarray *bins, const DOUBLE pimax, + const int npibins, results_countpairs_rp_pi *results, struct config_options *options, struct extra_options *extra); diff --git a/theory/DDrppi/countpairs_rp_pi_kernels.c.src b/theory/DDrppi/countpairs_rp_pi_kernels.c.src index 8a275b4e..e489076a 100644 --- a/theory/DDrppi/countpairs_rp_pi_kernels.c.src +++ b/theory/DDrppi/countpairs_rp_pi_kernels.c.src @@ -30,7 +30,8 @@ static inline int countpairs_rp_pi_avx512_intrinsics_DOUBLE(const int64_t N0, DO const DOUBLE min_xdiff, const DOUBLE min_ydiff, const DOUBLE min_zdiff, const DOUBLE closest_icell_xpos, const DOUBLE closest_icell_ypos, const DOUBLE closest_icell_zpos, DOUBLE *src_rpavg, uint64_t *src_npairs, - DOUBLE *src_weightavg, const weight_method_t weight_method, const bin_type_t bin_type) + DOUBLE *src_weightavg, const weight_method_t weight_method, const pair_weight_struct pair_weight, + const bin_type_t bin_type) { if(N0 == 0 || N1 == 0) { @@ -43,6 +44,7 @@ static inline int countpairs_rp_pi_avx512_intrinsics_DOUBLE(const int64_t N0, DO const int32_t need_rpavg = src_rpavg != NULL; const int32_t need_weightavg = src_weightavg != NULL; + int32_t need_costheta = need_weightavg; const DOUBLE sqr_rpmax=rpmax*rpmax; AVX512_FLOATS m_inv_rpstep = AVX512_SETZERO_FLOAT(); AVX512_FLOATS m_rpmin_invstep = AVX512_SETZERO_FLOAT(); @@ -83,8 +85,16 @@ static inline int countpairs_rp_pi_avx512_intrinsics_DOUBLE(const int64_t N0, DO local_w0 = *weights0; local_w1 = *weights1; - pair.num_weights = local_w0.num_weights; - avx512_weight_func = get_avx512_weight_func_by_method_DOUBLE(weight_method); + set_pair_struct_DOUBLE(&pair, &local_w0, &local_w1, &pair_weight); + need_costheta = pair_weight.num; + avx512_weight_func = get_avx512_weight_func_by_method_DOUBLE(weight_method); + } + DOUBLE *norm1 = NULL; + if (need_costheta) { + norm1 = (DOUBLE *) my_malloc(N1,sizeof(DOUBLE)); + for(int64_t i=0;i= AVX512_NVEC ? ~0:masks_per_misalignment_value_DOUBLE[N1-j]; + + const AVX512_FLOATS m_xpos = AVX512_SET_FLOAT(xpos); + const AVX512_FLOATS m_ypos = AVX512_SET_FLOAT(ypos); + const AVX512_FLOATS m_zpos = AVX512_SET_FLOAT(zpos); + const AVX512_FLOATS m_norm0 = AVX512_SET_FLOAT(norm0); + const AVX512_FLOATS m_x1 = AVX512_MASKZ_LOAD_FLOATS_UNALIGNED(m_mask_left, localx1); const AVX512_FLOATS m_y1 = AVX512_MASKZ_LOAD_FLOATS_UNALIGNED(m_mask_left, localy1); const AVX512_FLOATS m_z1 = AVX512_MASKZ_LOAD_FLOATS_UNALIGNED(m_mask_left, localz1); + if(need_costheta) { + const AVX512_FLOATS m_norm1 = AVX512_MASKZ_LOAD_FLOATS_UNALIGNED(m_mask_left, norm1 + j); + pair.costheta.a512 = AVX512_MASKZ_ADD_FLOATS(m_mask_left, AVX512_MASKZ_ADD_FLOATS(AVX512_MASKZ_MULTIPLY_FLOATS(m_mask_left, m_x1, m_xpos), AVX512_MASKZ_MULTIPLY_FLOATS(m_mask_left, m_y1, m_ypos)), AVX512_MASKZ_MULTIPLY_FLOATS(m_mask_left, m_z1, m_zpos)); + pair.costheta.a512 = AVX512_MASKZ_DIVIDE_FLOATS(m_mask_left, pair.costheta.a512, AVX512_MASKZ_MULTIPLY_FLOATS(m_mask_left, m_norm1, m_norm0)); + } localx1 += AVX512_NVEC;//this might actually exceed the allocated range but we will never dereference that localy1 += AVX512_NVEC; localz1 += AVX512_NVEC; - const AVX512_FLOATS m_xpos = AVX512_SET_FLOAT(xpos); - const AVX512_FLOATS m_ypos = AVX512_SET_FLOAT(ypos); - const AVX512_FLOATS m_zpos = AVX512_SET_FLOAT(zpos); - union int16 union_finalbin; union float16 union_mDperp; union float16_weights union_mweight; @@ -272,6 +291,7 @@ static inline int countpairs_rp_pi_avx512_intrinsics_DOUBLE(const int64_t N0, DO const AVX512_FLOATS m_rpbin_linear_index = AVX512_MULTIPLY_FLOATS(m_rpbin, m_npibin_p1); const AVX512_FLOATS m_finalbin = AVX512_MASK_ADD_FLOATS(m_npibin, m_mask, m_rpbin_linear_index, m_pibin); union_finalbin.m_ibin = AVX512_TRUNCATE_FLOAT_TO_INT(m_finalbin); + if(need_rpavg && need_weightavg) union_mDperp.m_Dperp = AVX512_MASKZ_MULTIPLY_FLOATS(m_mask_left, union_mDperp.m_Dperp, union_mweight.m_weights); #if __INTEL_COMPILER #pragma unroll(AVX512_NVEC) @@ -283,8 +303,7 @@ static inline int countpairs_rp_pi_avx512_intrinsics_DOUBLE(const int64_t N0, DO rpavg[ibin] += union_mDperp.Dperp[jj]; } if(need_weightavg){ - const DOUBLE weight = union_mweight.weights[jj]; - weightavg[ibin] += weight; + weightavg[ibin] += union_mweight.weights[jj]; } } }//AVX512 j loop @@ -316,7 +335,8 @@ static inline int countpairs_rp_pi_avx_intrinsics_DOUBLE(const int64_t N0, DOUBL const DOUBLE min_xdiff, const DOUBLE min_ydiff, const DOUBLE min_zdiff, const DOUBLE closest_icell_xpos, const DOUBLE closest_icell_ypos, const DOUBLE closest_icell_zpos, DOUBLE *src_rpavg, uint64_t *src_npairs, - DOUBLE *src_weightavg, const weight_method_t weight_method, const bin_type_t bin_type) + DOUBLE *src_weightavg, const weight_method_t weight_method, const pair_weight_struct pair_weight, + const bin_type_t bin_type) { if(N0 == 0 || N1 == 0) { return EXIT_SUCCESS; @@ -328,6 +348,7 @@ static inline int countpairs_rp_pi_avx_intrinsics_DOUBLE(const int64_t N0, DOUBL const int32_t need_rpavg = src_rpavg != NULL; const int32_t need_weightavg = src_weightavg != NULL; + int32_t need_costheta = need_weightavg; const DOUBLE sqr_rpmin=rpmin*rpmin, sqr_rpmax=rpmax*rpmax; DOUBLE inv_rpstep=0., rpmin_invstep=0.; const AVX_FLOATS m_zero = AVX_SETZERO_FLOAT(); @@ -374,11 +395,18 @@ static inline int countpairs_rp_pi_avx_intrinsics_DOUBLE(const int64_t N0, DOUBL local_w0 = *weights0; local_w1 = *weights1; - pair.num_weights = local_w0.num_weights; - + set_pair_struct_DOUBLE(&pair, &local_w0, &local_w1, &pair_weight); + need_costheta = pair_weight.num; avx_weight_func = get_avx_weight_func_by_method_DOUBLE(weight_method); fallback_weight_func = get_weight_func_by_method_DOUBLE(weight_method); } + DOUBLE *norm1 = NULL; + if (need_costheta) { + norm1 = (DOUBLE *) my_malloc(N1,sizeof(DOUBLE)); + for(int64_t i=0;i npibin ? npibin:pibin; @@ -642,6 +685,7 @@ static inline int countpairs_rp_pi_avx_intrinsics_DOUBLE(const int64_t N0, DOUBL const int ibin = kbin*(npibin+1) + pibin; npairs[ibin]++; if(need_rpavg) { + if(need_weightavg) r *= pairweight; rpavg[ibin] += r; } if(need_weightavg){ @@ -678,7 +722,8 @@ static inline int countpairs_rp_pi_sse_intrinsics_DOUBLE(const int64_t N0, DOUBL const DOUBLE min_xdiff, const DOUBLE min_ydiff, const DOUBLE min_zdiff, const DOUBLE closest_icell_xpos, const DOUBLE closest_icell_ypos, const DOUBLE closest_icell_zpos, DOUBLE *src_rpavg, uint64_t *src_npairs, - DOUBLE *src_weightavg, const weight_method_t weight_method, const bin_type_t bin_type) + DOUBLE *src_weightavg, const weight_method_t weight_method, const pair_weight_struct pair_weight, + const bin_type_t bin_type) { if(N0 == 0 || N1 == 0) { return EXIT_SUCCESS; @@ -690,6 +735,7 @@ static inline int countpairs_rp_pi_sse_intrinsics_DOUBLE(const int64_t N0, DOUBL const int32_t need_rpavg = src_rpavg != NULL; const int32_t need_weightavg = src_weightavg != NULL; + int32_t need_costheta = need_weightavg; const DOUBLE sqr_rpmin=rpmin*rpmin, sqr_rpmax=rpmax*rpmax; DOUBLE inv_rpstep=0., rpmin_invstep=0.; SSE_FLOATS m_inv_rpstep = SSE_SETZERO_FLOAT(); @@ -729,14 +775,21 @@ static inline int countpairs_rp_pi_sse_intrinsics_DOUBLE(const int64_t N0, DOUBL sse_weight_func_t_DOUBLE sse_weight_func = NULL; weight_func_t_DOUBLE fallback_weight_func = NULL; if(need_weightavg){ - // Same particle list, new copy of num_weights pointers into that list - local_w0 = *weights0; - local_w1 = *weights1; - - pair.num_weights = local_w0.num_weights; + // Same particle list, new copy of num_weights pointers into that list + local_w0 = *weights0; + local_w1 = *weights1; - sse_weight_func = get_sse_weight_func_by_method_DOUBLE(weight_method); - fallback_weight_func = get_weight_func_by_method_DOUBLE(weight_method); + set_pair_struct_DOUBLE(&pair, &local_w0, &local_w1, &pair_weight); + need_costheta = pair_weight.num; + sse_weight_func = get_sse_weight_func_by_method_DOUBLE(weight_method); + fallback_weight_func = get_weight_func_by_method_DOUBLE(weight_method); + } + DOUBLE *norm1 = NULL; + if (need_costheta) { + norm1 = (DOUBLE *) my_malloc(N1,sizeof(DOUBLE)); + for(int64_t i=0;i dz = max(dz, -dz); @@ -943,6 +1005,7 @@ static inline int countpairs_rp_pi_sse_intrinsics_DOUBLE(const int64_t N0, DOUBL const SSE_FLOATS m_npibin_p1 = SSE_ADD_FLOATS(m_npibin,m_one); const SSE_FLOATS m_binproduct = SSE_ADD_FLOATS(SSE_MULTIPLY_FLOATS(m_rpbin,m_npibin_p1),m_pibin); union_finalbin.m_ibin = SSE_TRUNCATE_FLOAT_TO_INT(m_binproduct); + if(need_rpavg && need_weightavg) union_mDperp.m_Dperp = SSE_MULTIPLY_FLOATS(union_mDperp.m_Dperp, union_mweight.m_weights); //update the histograms #if defined(__ICC) || defined(__INTEL_COMPILER) @@ -955,14 +1018,20 @@ static inline int countpairs_rp_pi_sse_intrinsics_DOUBLE(const int64_t N0, DOUBL rpavg[ibin] += union_mDperp.Dperp[jj]; } if(need_weightavg){ - const DOUBLE weight = union_mweight.weights[jj]; - weightavg[ibin] += weight; + weightavg[ibin] += union_mweight.weights[jj]; } } } for(;j //for uint64_t //define the results structure @@ -31,13 +31,13 @@ extern "C" { const int64_t ND2, void *X2, void *Y2, void *Z2, const int numthreads, const int autocorr, - const char *sbinfile, + binarray *bins, const double mu_max, - const int nmu_bins, + const int nmu_bins, results_countpairs_s_mu *results, struct config_options *options, struct extra_options *extra); - + extern void free_results_s_mu(results_countpairs_s_mu *results); #ifdef __cplusplus diff --git a/theory/DDsmu/countpairs_s_mu_impl.c.src b/theory/DDsmu/countpairs_s_mu_impl.c.src index 089016d0..9fdceffc 100644 --- a/theory/DDsmu/countpairs_s_mu_impl.c.src +++ b/theory/DDsmu/countpairs_s_mu_impl.c.src @@ -137,7 +137,7 @@ int countpairs_s_mu_DOUBLE(const int64_t ND1, DOUBLE *X1, DOUBLE *Y1, DOUBLE *Z1 const int64_t ND2, DOUBLE *X2, DOUBLE *Y2, DOUBLE *Z2, const int numthreads, const int autocorr, - const char *sbinfile, + binarray *bins, const double max_mu, const int nmu_bins, results_countpairs_s_mu *results, @@ -201,16 +201,15 @@ int countpairs_s_mu_DOUBLE(const int64_t ND1, DOUBLE *X1, DOUBLE *Y1, DOUBLE *Z1 /*********************** *initializing the bins ************************/ - double *supp; - int nsbin; - double smin,smax; - setup_bins(sbinfile,&smin,&smax,&nsbin,&supp); + double *supp = bins->edges; + int nsbin = bins->nedges; + double smin=bins->edges[0], smax=bins->edges[bins->nedges-1]; if( ! (smin >= 0.0 && smax > 0.0 && smin < smax && nsbin > 0)) { - fprintf(stderr,"Error: Could not setup with R bins correctly. (rmin = %lf, rmax = %lf, with nbins = %d). Expected non-zero rmin/rmax with rmax > rmin and nbins >=1 \n", + fprintf(stderr,"Error: Could not setup with s bins correctly. (rmin = %lf, rmax = %lf, with nbins = %d). Expected non-zero rmin/rmax with rmax > rmin and nbins >=1 \n", smin, smax, nsbin); return EXIT_FAILURE; } - detect_bin_type(supp, nsbin, &(options->bin_type), options->verbose); + detect_bin_type(bins, &(options->bin_type), options->verbose); if(max_mu <= 0.0 || max_mu > 1.0) { fprintf(stderr,"Error: max_mu (max. value for the cosine of the angle with line of sight) must be greater than 0 and at most 1).\n" @@ -357,7 +356,6 @@ int countpairs_s_mu_DOUBLE(const int64_t ND1, DOUBLE *X1, DOUBLE *Y1, DOUBLE *Z1 if(autocorr == 0) { free_cellarray_DOUBLE(lattice2, totncells); } - free(supp); return EXIT_FAILURE; } @@ -369,7 +367,6 @@ int countpairs_s_mu_DOUBLE(const int64_t ND1, DOUBLE *X1, DOUBLE *Y1, DOUBLE *Z1 if(autocorr == 0) { free_cellarray_DOUBLE(lattice2, totncells); } - free(supp); return EXIT_FAILURE; } @@ -399,7 +396,6 @@ int countpairs_s_mu_DOUBLE(const int64_t ND1, DOUBLE *X1, DOUBLE *Y1, DOUBLE *Z1 if(need_weightavg) { matrix_free((void**) all_weightavg, numthreads); } - free(supp); return EXIT_FAILURE; } #else @@ -484,7 +480,7 @@ int countpairs_s_mu_DOUBLE(const int64_t ND1, DOUBLE *X1, DOUBLE *Y1, DOUBLE *Z1 this_cell_pair->min_dx, this_cell_pair->min_dy, this_cell_pair->min_dz, this_cell_pair->closest_x1, this_cell_pair->closest_y1, this_cell_pair->closest_z1, this_rpavg, npairs, - this_weightavg, extra->weight_method, options->bin_type); + this_weightavg, extra->weight_method, extra->pair_weight, options->bin_type); /* This actually causes a race condition under OpenMP - but mostly I care that an error occurred - rather than the exact value of @@ -530,7 +526,6 @@ int countpairs_s_mu_DOUBLE(const int64_t ND1, DOUBLE *X1, DOUBLE *Y1, DOUBLE *Z1 if(abort_status != EXIT_SUCCESS || interrupt_status_DDsmu_DOUBLE != EXIT_SUCCESS) { /* Cleanup memory here if aborting */ - free(supp); #if defined(_OPENMP) matrix_free((void **) all_npairs, numthreads); if(options->need_avg_sep) { @@ -602,27 +597,25 @@ int countpairs_s_mu_DOUBLE(const int64_t ND1, DOUBLE *X1, DOUBLE *Y1, DOUBLE *Z1 /* The comparison is '<=' rather than '==' only to silence the compiler */ if(supp[0] <= 0.0) { - int index = (nmu_bins + 1);//first valid s bin (with 0-dpi depth in pi) /* Then, add all the self-pairs. This ensures that a cross-correlation with two identical datasets produces the same result as the auto-correlation */ - npairs[index] += ND1; + npairs[nmu_bins+1] += ND1; // Increasing npairs affects savg and weightavg. // We don't need to add anything to savg; all the self-pairs have 0 separation! // The self-pairs have non-zero weight, though. So, fix that here. if(need_weightavg){ // Keep in mind this is an autocorrelation (i.e. only one particle set to consider) + pair_struct_DOUBLE pair; + set_pair_struct_DOUBLE(&pair, (weight_struct_DOUBLE *) &(extra->weights0), (weight_struct_DOUBLE *) &(extra->weights0), &(extra->pair_weight)); weight_func_t_DOUBLE weight_func = get_weight_func_by_method_DOUBLE(extra->weight_method); - pair_struct_DOUBLE pair = {.num_weights = extra->weights0.num_weights, - .dx.d=0., .dy.d=0., .dz.d=0., // always 0 separation - .parx.d=0., .pary.d=0., .parz.d=0.}; for(int64_t j = 0; j < ND1; j++){ for(int w = 0; w < pair.num_weights; w++){ pair.weights0[w].d = ((DOUBLE *) extra->weights0.weights[w])[j]; pair.weights1[w].d = ((DOUBLE *) extra->weights0.weights[w])[j]; } - weightavg[1] += weight_func(&pair); + weightavg[nmu_bins+1] += weight_func(&pair); } } } @@ -632,7 +625,7 @@ int countpairs_s_mu_DOUBLE(const int64_t ND1, DOUBLE *X1, DOUBLE *Y1, DOUBLE *Z1 for(int i=0;i 0) { if(options->need_avg_sep) { - savg[i] /= (DOUBLE) npairs[i] ; + savg[i] /= need_weightavg ? weightavg[i] : (DOUBLE) npairs[i]; } if(need_weightavg) { weightavg[i] /= (DOUBLE) npairs[i]; @@ -653,7 +646,6 @@ int countpairs_s_mu_DOUBLE(const int64_t ND1, DOUBLE *X1, DOUBLE *Y1, DOUBLE *Z1 if(results->npairs == NULL || results->supp == NULL || results->savg == NULL || results->weightavg == NULL) { free_results_s_mu(results); - free(supp); return EXIT_FAILURE; } @@ -678,7 +670,6 @@ int countpairs_s_mu_DOUBLE(const int64_t ND1, DOUBLE *X1, DOUBLE *Y1, DOUBLE *Z1 } } } - free(supp); /* reset interrupt handlers to default */ RESET_INTERRUPT_HANDLERS(); diff --git a/theory/DDsmu/countpairs_s_mu_impl.h.src b/theory/DDsmu/countpairs_s_mu_impl.h.src index 9d027945..3bd6bc20 100644 --- a/theory/DDsmu/countpairs_s_mu_impl.h.src +++ b/theory/DDsmu/countpairs_s_mu_impl.h.src @@ -31,7 +31,8 @@ extern "C" { const DOUBLE min_xdiff, const DOUBLE min_ydiff, const DOUBLE min_zdiff, const DOUBLE closest_icell_xpos, const DOUBLE closest_icell_ypos, const DOUBLE closest_icell_zpos, DOUBLE *src_savg, uint64_t *src_npairs, - DOUBLE *src_weightavg, const weight_method_t weight_method, const bin_type_t bin_type); + DOUBLE *src_weightavg, const weight_method_t weight_method, const pair_weight_struct pair_weight, + const bin_type_t bin_type); extern countpairs_s_mu_func_ptr_DOUBLE countpairs_s_mu_driver_DOUBLE(const struct config_options *options) __attribute__((warn_unused_result)); @@ -40,7 +41,7 @@ extern "C" { const int64_t ND2, DOUBLE *X2, DOUBLE *Y2, DOUBLE *Z2, const int numthreads, const int autocorr, - const char *sbinfile, + binarray *bins, const double mu_max, const int nmu_bins, results_countpairs_s_mu *results, diff --git a/theory/DDsmu/countpairs_s_mu_kernels.c.src b/theory/DDsmu/countpairs_s_mu_kernels.c.src index 78c77a2f..0538406c 100644 --- a/theory/DDsmu/countpairs_s_mu_kernels.c.src +++ b/theory/DDsmu/countpairs_s_mu_kernels.c.src @@ -31,7 +31,8 @@ static inline int countpairs_s_mu_avx512_intrinsics_DOUBLE(const int64_t N0, DOU const DOUBLE min_xdiff, const DOUBLE min_ydiff, const DOUBLE min_zdiff, const DOUBLE closest_icell_xpos, const DOUBLE closest_icell_ypos, const DOUBLE closest_icell_zpos, DOUBLE *src_savg, uint64_t *src_npairs, - DOUBLE *src_weightavg, const weight_method_t weight_method, const bin_type_t bin_type) + DOUBLE *src_weightavg, const weight_method_t weight_method, const pair_weight_struct pair_weight, + const bin_type_t bin_type) { if(N0 == 0 || N1 == 0) { return EXIT_SUCCESS; @@ -43,7 +44,8 @@ static inline int countpairs_s_mu_avx512_intrinsics_DOUBLE(const int64_t N0, DOU const int32_t need_savg = src_savg != NULL; const int32_t need_weightavg = src_weightavg != NULL; - const DOUBLE sqr_smax=smax*smax; + int32_t need_costheta = need_weightavg; + const DOUBLE sqr_smin=smin*smin, sqr_smax=smax*smax; AVX512_FLOATS m_inv_sstep = AVX512_SETZERO_FLOAT(); AVX512_FLOATS m_smin_invstep = AVX512_SETZERO_FLOAT(); if (bin_type == BIN_LIN) { @@ -84,8 +86,16 @@ static inline int countpairs_s_mu_avx512_intrinsics_DOUBLE(const int64_t N0, DOU local_w0 = *weights0; local_w1 = *weights1; - pair.num_weights = local_w0.num_weights; - avx512_weight_func = get_avx512_weight_func_by_method_DOUBLE(weight_method); + set_pair_struct_DOUBLE(&pair, &local_w0, &local_w1, &pair_weight); + need_costheta = pair_weight.num; + avx512_weight_func = get_avx512_weight_func_by_method_DOUBLE(weight_method); + } + DOUBLE *norm1 = NULL; + if (need_costheta) { + norm1 = (DOUBLE *) my_malloc(N1,sizeof(DOUBLE)); + for(int64_t i=0;i= AVX512_NVEC ? ~0:masks_per_misalignment_value_DOUBLE[N1-j]; + + const AVX512_FLOATS m_xpos = AVX512_SET_FLOAT(xpos); + const AVX512_FLOATS m_ypos = AVX512_SET_FLOAT(ypos); + const AVX512_FLOATS m_zpos = AVX512_SET_FLOAT(zpos); + const AVX512_FLOATS m_norm0 = AVX512_SET_FLOAT(norm0); + const AVX512_FLOATS m_x1 = AVX512_MASKZ_LOAD_FLOATS_UNALIGNED(m_mask_left, localx1); const AVX512_FLOATS m_y1 = AVX512_MASKZ_LOAD_FLOATS_UNALIGNED(m_mask_left, localy1); const AVX512_FLOATS m_z1 = AVX512_MASKZ_LOAD_FLOATS_UNALIGNED(m_mask_left, localz1); + if(need_costheta) { + const AVX512_FLOATS m_norm1 = AVX512_MASKZ_LOAD_FLOATS_UNALIGNED(m_mask_left, norm1 + j); + pair.costheta.a512 = AVX512_MASKZ_ADD_FLOATS(m_mask_left, AVX512_MASKZ_ADD_FLOATS(AVX512_MASKZ_MULTIPLY_FLOATS(m_mask_left, m_xpos, m_x1), AVX512_MASKZ_MULTIPLY_FLOATS(m_mask_left, m_ypos, m_y1)), AVX512_MASKZ_MULTIPLY_FLOATS(m_mask_left, m_zpos, m_z1)); + pair.costheta.a512 = AVX512_MASKZ_DIVIDE_FLOATS(m_mask_left, pair.costheta.a512, AVX512_MASKZ_MULTIPLY_FLOATS(m_mask_left, m_norm0, m_norm1)); + } + localx1 += AVX512_NVEC;//this might actually exceed the allocated range but we will never dereference that localy1 += AVX512_NVEC; localz1 += AVX512_NVEC; @@ -200,10 +224,6 @@ static inline int countpairs_s_mu_avx512_intrinsics_DOUBLE(const int64_t N0, DOU local_w1.weights[w] += AVX512_NVEC; } - const AVX512_FLOATS m_xpos = AVX512_SET_FLOAT(xpos); - const AVX512_FLOATS m_ypos = AVX512_SET_FLOAT(ypos); - const AVX512_FLOATS m_zpos = AVX512_SET_FLOAT(zpos); - union int16 union_finalbin; union float16 union_mDperp; union float16_weights union_mweight; @@ -212,6 +232,8 @@ static inline int countpairs_s_mu_avx512_intrinsics_DOUBLE(const int64_t N0, DOU const AVX512_FLOATS m_sqr_smax = m_supp_sqr[nsbin-1]; const AVX512_FLOATS m_sqr_smin = m_supp_sqr[0]; const AVX512_FLOATS m_sqr_mumax = AVX512_SET_FLOAT(sqr_mumax); + const AVX512_FLOATS m_zero = AVX_SETZERO_FLOAT(); + const AVX512_FLOATS m_one = AVX_SET_FLOAT((DOUBLE) 1); const AVX512_FLOATS m_xdiff = AVX512_SUBTRACT_FLOATS(m_x1, m_xpos); //(x1[j:j+NVEC-1] - x0) const AVX512_FLOATS m_ydiff = AVX512_SUBTRACT_FLOATS(m_y1, m_ypos); //(y1[j:j+NVEC-1] - y0) @@ -219,7 +241,7 @@ static inline int countpairs_s_mu_avx512_intrinsics_DOUBLE(const int64_t N0, DOU const AVX512_FLOATS m_sqr_zdiff = AVX512_SQUARE_FLOAT(m_zdiff); //(z[j] - z0)^2 const AVX512_FLOATS m_sqr_z_p_sqr_y = AVX512_FMA_ADD_FLOATS(m_ydiff, m_ydiff, m_sqr_zdiff); //dy*dy + dz^2 - const AVX512_FLOATS s2 = AVX512_FMA_ADD_FLOATS(m_xdiff, m_xdiff, m_sqr_z_p_sqr_y);//s^2 = dx*dx + (dz^2 + dy^2) + const AVX512_FLOATS s2 = AVX512_FMA_ADD_FLOATS(m_xdiff, m_xdiff, m_sqr_z_p_sqr_y);//s^2 = dx*dx + (dz^2 + dy^2) const AVX512_FLOATS max_sqr_dz = AVX512_MULTIPLY_FLOATS(s2, m_sqr_mumax); @@ -233,7 +255,7 @@ static inline int countpairs_s_mu_avx512_intrinsics_DOUBLE(const int64_t N0, DOU j=N1;//but do not break yet, there might be valid pairs in this chunk } - const AVX512_MASK m_mu_mask = AVX512_MASK_COMPARE_FLOATS(m_mask_left, m_sqr_zdiff, max_sqr_dz, _CMP_LT_OQ); + const AVX512_MASK m_mu_mask = AVX512_MASK_COMPARE_FLOATS(m_sqr_zdiff, m_mask_left, max_sqr_dz, _CMP_GE_OQ); const AVX512_MASK m_smax_mask = AVX512_MASK_COMPARE_FLOATS(m_mask_left, s2, m_sqr_smax, _CMP_LT_OQ);//check for s2 < sqr_smax const AVX512_MASK m_smin_mask = AVX512_MASK_COMPARE_FLOATS(m_mask_left, s2, m_sqr_smin, _CMP_GE_OQ);//check for s2 >= sqr_smin const AVX512_MASK m_s2_mask = AVX512_MASK_BITWISE_AND(m_smax_mask, m_smin_mask); @@ -250,7 +272,9 @@ static inline int countpairs_s_mu_avx512_intrinsics_DOUBLE(const int64_t N0, DOU /*m_mu := sqrt(dz^2/s2) (with masked elements set to mu_max */ AVX512_FLOATS m_sqr_mu = AVX512_SETZERO_FLOAT(); - CHECK_AND_FAST_DIVIDE_AVX512(m_sqr_mu, m_sqr_zdiff, s2, m_mask_left, fast_divide_and_NR_steps); + const AVX512_FLOATS m_mask_szero = AVX512_COMPARE_FLOATS(m_zero, s2, _CMP_LT_OQ); + const AVX512_FLOATS m_sqr_norm_s = AVX512_BLEND_FLOATS_WITH_MASK(m_one, s2, m_mask_szero); // to avoid division by 0 + CHECK_AND_FAST_DIVIDE_AVX512(m_sqr_mu, m_sqr_zdiff, m_sqr_norm_s, m_mask_left, fast_divide_and_NR_steps); const AVX512_FLOATS m_mu = AVX512_MASKZ_SQRT_FLOAT(m_mask_left, m_sqr_mu); if(need_savg || bin_type == BIN_LIN) { @@ -284,7 +308,7 @@ static inline int countpairs_s_mu_avx512_intrinsics_DOUBLE(const int64_t N0, DOU } } } - const AVX512_FLOATS m_inv_dmu = AVX512_SET_FLOAT(inv_dmu); + const AVX512_FLOATS m_inv_dmu = AVX512_SET_FLOAT(inv_dmu); const AVX512_FLOATS m_nmu_bins = AVX512_SET_FLOAT((DOUBLE) nmu_bins); const AVX512_FLOATS m_nmu_bins_p1 = AVX512_SET_FLOAT((DOUBLE) (nmu_bins + 1)); const AVX512_FLOATS m_mubin = AVX512_MULTIPLY_FLOATS(m_mu,m_inv_dmu); @@ -293,6 +317,7 @@ static inline int countpairs_s_mu_avx512_intrinsics_DOUBLE(const int64_t N0, DOU const AVX512_FLOATS m_sbin_linear_index = AVX512_MULTIPLY_FLOATS(m_sbin, m_nmu_bins_p1); const AVX512_FLOATS m_finalbin = AVX512_MASK_ADD_FLOATS(m_nmu_bins, m_mask, m_sbin_linear_index, m_mubin); union_finalbin.m_ibin = AVX512_TRUNCATE_FLOAT_TO_INT(m_finalbin); + if(need_savg && need_weightavg) union_mDperp.m_Dperp = AVX512_MASKZ_MULTIPLY_FLOATS(m_mask_left, union_mDperp.m_Dperp, union_mweight.m_weights); //update the histograms #if defined(__ICC) || defined(__INTEL_COMPILER) @@ -305,8 +330,7 @@ static inline int countpairs_s_mu_avx512_intrinsics_DOUBLE(const int64_t N0, DOU savg[ibin] += union_mDperp.Dperp[jj]; } if(need_weightavg){ - const DOUBLE weight = union_mweight.weights[jj]; - weightavg[ibin] += weight; + weightavg[ibin] += union_mweight.weights[jj]; } } }//loop over second set of particles @@ -340,7 +364,8 @@ static inline int countpairs_s_mu_avx_intrinsics_DOUBLE(const int64_t N0, DOUBLE const DOUBLE min_xdiff, const DOUBLE min_ydiff, const DOUBLE min_zdiff, const DOUBLE closest_icell_xpos, const DOUBLE closest_icell_ypos, const DOUBLE closest_icell_zpos, DOUBLE *src_savg, uint64_t *src_npairs, - DOUBLE *src_weightavg, const weight_method_t weight_method, const bin_type_t bin_type) + DOUBLE *src_weightavg, const weight_method_t weight_method, const pair_weight_struct pair_weight, + const bin_type_t bin_type) { if(N0 == 0 || N1 == 0) { return EXIT_SUCCESS; @@ -352,9 +377,9 @@ static inline int countpairs_s_mu_avx_intrinsics_DOUBLE(const int64_t N0, DOUBLE const int32_t need_savg = src_savg != NULL; const int32_t need_weightavg = src_weightavg != NULL; + int32_t need_costheta = need_weightavg; const DOUBLE sqr_smin=smin*smin, sqr_smax=smax*smax; DOUBLE inv_sstep=0., smin_invstep=0.; - const AVX_FLOATS m_zero = AVX_SETZERO_FLOAT(); AVX_FLOATS m_inv_sstep = AVX_SETZERO_FLOAT(); AVX_FLOATS m_smin_invstep = AVX_SETZERO_FLOAT(); if (bin_type == BIN_LIN) { @@ -399,11 +424,18 @@ static inline int countpairs_s_mu_avx_intrinsics_DOUBLE(const int64_t N0, DOUBLE local_w0 = *weights0; local_w1 = *weights1; - pair.num_weights = local_w0.num_weights; - + set_pair_struct_DOUBLE(&pair, &local_w0, &local_w1, &pair_weight); + need_costheta = pair_weight.num; avx_weight_func = get_avx_weight_func_by_method_DOUBLE(weight_method); fallback_weight_func = get_weight_func_by_method_DOUBLE(weight_method); } + DOUBLE *norm1 = NULL; + if (need_costheta) { + norm1 = (DOUBLE *) my_malloc(N1,sizeof(DOUBLE)); + for(int64_t i=0;i= sqr_smin const AVX_FLOATS m_s2_mask = AVX_BITWISE_AND(m_smax_mask,m_smin_mask); @@ -573,6 +614,8 @@ static inline int countpairs_s_mu_avx_intrinsics_DOUBLE(const int64_t N0, DOUBLE //There is some s2 that satisfies sqr_smin <= s2 < sqr_smax && mu_min <= |dz| < mu_max s2 = AVX_BLEND_FLOATS_WITH_MASK(m_sqr_smax, s2, m_mask_left); /*m_sqr_mu := dz^2/s^2 (with masked elements set to mu_max */ + const AVX_FLOATS m_mask_szero = AVX_COMPARE_FLOATS(m_zero, s2, _CMP_LT_OQ); + const AVX_FLOATS m_sqr_norm_s = AVX_BLEND_FLOATS_WITH_MASK(m_one, s2, m_mask_szero); // to avoid division by 0 AVX_FLOATS m_sqr_mu = AVX_SETZERO_FLOAT(); /* Check if fast_divide is enabled and either use the normal divide or @@ -581,7 +624,7 @@ static inline int countpairs_s_mu_avx_intrinsics_DOUBLE(const int64_t N0, DOUBLE macro is defined in `avx_calls.h` */ - CHECK_AND_FAST_DIVIDE_AVX(m_sqr_mu, m_sqr_zdiff, s2, fast_divide_and_NR_steps); + CHECK_AND_FAST_DIVIDE_AVX(m_sqr_mu, m_sqr_zdiff, m_sqr_norm_s, fast_divide_and_NR_steps); const AVX_FLOATS m_mu = AVX_SQRT_FLOAT(AVX_BLEND_FLOATS_WITH_MASK(m_sqr_mumax, m_sqr_mu, m_mask_left)); @@ -597,7 +640,7 @@ static inline int countpairs_s_mu_avx_intrinsics_DOUBLE(const int64_t N0, DOUBLE } const AVX_FLOATS m_mubin = AVX_MULTIPLY_FLOATS(m_mu,m_inv_dmu); - AVX_FLOATS m_sbin = AVX_SETZERO_FLOAT(); + AVX_FLOATS m_sbin = AVX_SETZERO_FLOAT(); //AVX_FLOATS m_all_ones = AVX_CAST_INT_TO_FLOAT(AVX_SET_INT(-1)); if (bin_type == BIN_LIN) { m_sbin = AVX_FMA_ADD_TRUNCATE_FLOATS(union_mDperp.m_Dperp, m_inv_sstep, m_smin_invstep); // s2, then union_mDperp.m_Dperp aready clipped @@ -619,6 +662,7 @@ static inline int countpairs_s_mu_avx_intrinsics_DOUBLE(const int64_t N0, DOUBLE const AVX_FLOATS m_nmu_bins_p1 = AVX_ADD_FLOATS(m_nmu_bins,m_one); const AVX_FLOATS m_binproduct = AVX_ADD_FLOATS(AVX_MULTIPLY_FLOATS(m_sbin,m_nmu_bins_p1),m_mubin); union_finalbin.m_ibin = AVX_TRUNCATE_FLOAT_TO_INT(m_binproduct); + if(need_savg && need_weightavg) union_mDperp.m_Dperp = AVX_MULTIPLY_FLOATS(union_mDperp.m_Dperp, union_mweight.m_weights); //update the histograms #if defined(__ICC) || defined(__INTEL_COMPILER) @@ -631,8 +675,7 @@ static inline int countpairs_s_mu_avx_intrinsics_DOUBLE(const int64_t N0, DOUBLE savg[ibin] += union_mDperp.Dperp[jj]; } if(need_weightavg){ - const DOUBLE weight = union_mweight.weights[jj]; - weightavg[ibin] += weight; + weightavg[ibin] += union_mweight.weights[jj]; } } } @@ -640,6 +683,13 @@ static inline int countpairs_s_mu_avx_intrinsics_DOUBLE(const int64_t N0, DOUBLE //remainder loop for(;j= sqr_smax || s2 < sqr_smin) continue; - if(sqr_dz >= s2 * sqr_mumax) continue; - - const DOUBLE mu = SQRT(sqr_dz/s2); + if(sqr_dz > s2 * sqr_mumax) continue; // gt in case s2 (hence sqr_dz) is 0. + const DOUBLE mu = s2 > 0. ? SQRT(sqr_dz/s2) : 0.; DOUBLE s = ZERO, pairweight = ZERO; if(need_savg || bin_type == BIN_LIN) { @@ -685,6 +734,7 @@ static inline int countpairs_s_mu_avx_intrinsics_DOUBLE(const int64_t N0, DOUBLE const int ibin = kbin*(nmu_bins+1) + mu_bin; npairs[ibin]++; if(need_savg) { + if(need_weightavg) s *= pairweight; savg[ibin] += s; } if(need_weightavg){ @@ -722,7 +772,8 @@ static inline int countpairs_s_mu_sse_intrinsics_DOUBLE(const int64_t N0, DOUBLE const DOUBLE min_xdiff, const DOUBLE min_ydiff, const DOUBLE min_zdiff, const DOUBLE closest_icell_xpos, const DOUBLE closest_icell_ypos, const DOUBLE closest_icell_zpos, DOUBLE *src_savg, uint64_t *src_npairs, - DOUBLE *src_weightavg, const weight_method_t weight_method, const bin_type_t bin_type) + DOUBLE *src_weightavg, const weight_method_t weight_method, const pair_weight_struct pair_weight, + const bin_type_t bin_type) { (void) fast_divide_and_NR_steps; @@ -736,6 +787,7 @@ static inline int countpairs_s_mu_sse_intrinsics_DOUBLE(const int64_t N0, DOUBLE const int32_t need_savg = src_savg != NULL; const int32_t need_weightavg = src_weightavg != NULL; + int32_t need_costheta = need_weightavg; const DOUBLE sqr_smin=smin*smin, sqr_smax=smax*smax; DOUBLE inv_sstep=0., smin_invstep=0.; SSE_FLOATS m_inv_sstep = SSE_SETZERO_FLOAT(); @@ -782,11 +834,18 @@ static inline int countpairs_s_mu_sse_intrinsics_DOUBLE(const int64_t N0, DOUBLE local_w0 = *weights0; local_w1 = *weights1; - pair.num_weights = local_w0.num_weights; - + set_pair_struct_DOUBLE(&pair, &local_w0, &local_w1, &pair_weight); + need_costheta = pair_weight.num; sse_weight_func = get_sse_weight_func_by_method_DOUBLE(weight_method); fallback_weight_func = get_weight_func_by_method_DOUBLE(weight_method); } + DOUBLE *norm1 = NULL; + if (need_costheta) { + norm1 = (DOUBLE *) my_malloc(N1,sizeof(DOUBLE)); + for(int64_t i=0;i= max_dz, then //no future iteration in j can produce a zdiff value less than pimax. - SSE_FLOATS m_mask_geq_pimax = SSE_COMPARE_FLOATS_GE(m_zdiff,m_max_dz); + SSE_FLOATS m_mask_geq_pimax = SSE_COMPARE_FLOATS_GE(m_zdiff, m_max_dz); if(SSE_TEST_COMPARISON(m_mask_geq_pimax) > 0) { j=N1;//but do not break yet, this chunk might contain valid pairs } - const SSE_FLOATS m_mu_mask = SSE_COMPARE_FLOATS_LT(m_sqr_zdiff, max_sqr_dz); + const SSE_FLOATS m_mu_mask = SSE_COMPARE_FLOATS_GE(max_sqr_dz, m_sqr_zdiff); const SSE_FLOATS m_smax_mask = SSE_COMPARE_FLOATS_LT(s2, m_sqr_smax); const SSE_FLOATS m_smin_mask = SSE_COMPARE_FLOATS_GE(s2, m_sqr_smin); - const SSE_FLOATS m_s2_mask = SSE_BITWISE_AND(m_smax_mask,m_smin_mask); + const SSE_FLOATS m_s2_mask = SSE_BITWISE_AND(m_smax_mask, m_smin_mask); //Create a combined mask by bitwise and of m1 and m_mask_left. //This gives us the mask for all sqr_smin <= s2 < sqr_smax @@ -957,7 +1026,9 @@ static inline int countpairs_s_mu_sse_intrinsics_DOUBLE(const int64_t N0, DOUBLE //There is some s2 that satisfies sqr_smin <= s2 < sqr_smax && mu_min <= |dz| < mu_max s2 = SSE_BLEND_FLOATS_WITH_MASK(m_sqr_smax, s2, m_mask_left); - const SSE_FLOATS m_mu = SSE_SQRT_FLOAT(SSE_BLEND_FLOATS_WITH_MASK(m_sqr_mumax, SSE_DIVIDE_FLOATS(m_sqr_zdiff, s2), m_mask_left)); + const SSE_FLOATS m_mask_szero = SSE_COMPARE_FLOATS_LT(m_zero, s2); + const SSE_FLOATS m_sqr_norm_s = SSE_BLEND_FLOATS_WITH_MASK(m_one, s2, m_mask_szero); // to avoid division by 0 + const SSE_FLOATS m_mu = SSE_SQRT_FLOAT(SSE_BLEND_FLOATS_WITH_MASK(m_sqr_mumax, SSE_DIVIDE_FLOATS(m_sqr_zdiff, m_sqr_norm_s), m_mask_left)); if(need_savg || bin_type == BIN_LIN) { union_mDperp.m_Dperp = SSE_SQRT_FLOAT(s2); @@ -985,7 +1056,7 @@ static inline int countpairs_s_mu_sse_intrinsics_DOUBLE(const int64_t N0, DOUBLE //XOR with 0xFFFF... gives the bins that are smaller than m_supp_sqr[kbin] (and is faster than cmp_p(s/d) in theory) //m_mask_left = SSE_XOR_FLOATS(m_mask_low, m_all_ones); const int test = SSE_TEST_COMPARISON(m_mask_left); - if(test==0) { + if(test == 0) { break; } } @@ -993,6 +1064,7 @@ static inline int countpairs_s_mu_sse_intrinsics_DOUBLE(const int64_t N0, DOUBLE const SSE_FLOATS m_nmu_bins_p1 = SSE_ADD_FLOATS(m_nmu_bins,m_one); const SSE_FLOATS m_binproduct = SSE_ADD_FLOATS(SSE_MULTIPLY_FLOATS(m_sbin,m_nmu_bins_p1),m_mubin); union_finalbin.m_ibin = SSE_TRUNCATE_FLOAT_TO_INT(m_binproduct); + if(need_savg && need_weightavg) union_mDperp.m_Dperp = SSE_MULTIPLY_FLOATS(union_mDperp.m_Dperp, union_mweight.m_weights); //update the histograms #if defined(__ICC) || defined(__INTEL_COMPILER) @@ -1005,14 +1077,20 @@ static inline int countpairs_s_mu_sse_intrinsics_DOUBLE(const int64_t N0, DOUBLE savg[ibin] += union_mDperp.Dperp[jj]; } if(need_weightavg){ - const DOUBLE weight = union_mweight.weights[jj]; - weightavg[ibin] += weight; + weightavg[ibin] += union_mweight.weights[jj]; } } } for(;j= sqr_smax || s2 < sqr_smin) continue; - if(sqr_dz >= s2 * sqr_mumax) continue; - const DOUBLE mu = SQRT(sqr_dz/s2); + if(sqr_dz > s2 * sqr_mumax) continue; + const DOUBLE mu = s2 > 0. ? SQRT(sqr_dz/s2) : 0.; DOUBLE s = ZERO, pairweight = ZERO; if(need_weightavg){ @@ -1057,6 +1136,7 @@ static inline int countpairs_s_mu_sse_intrinsics_DOUBLE(const int64_t N0, DOUBLE const int ibin = kbin*(nmu_bins+1) + mu_bin; npairs[ibin]++; if(need_savg) { + if(need_weightavg) s *= pairweight; savg[ibin] += s; } if(need_weightavg){ @@ -1090,7 +1170,8 @@ static inline int countpairs_s_mu_fallback_DOUBLE(const int64_t N0, DOUBLE *x0, const DOUBLE min_xdiff, const DOUBLE min_ydiff, const DOUBLE min_zdiff, const DOUBLE closest_icell_xpos, const DOUBLE closest_icell_ypos, const DOUBLE closest_icell_zpos, DOUBLE *src_savg, uint64_t *src_npairs, - DOUBLE *src_weightavg, const weight_method_t weight_method, const bin_type_t bin_type) + DOUBLE *src_weightavg, const weight_method_t weight_method, const pair_weight_struct pair_weight, + const bin_type_t bin_type) { (void) fast_divide_and_NR_steps; @@ -1106,6 +1187,7 @@ static inline int countpairs_s_mu_fallback_DOUBLE(const int64_t N0, DOUBLE *x0, /*----------------- FALLBACK CODE --------------------*/ const int32_t need_savg = src_savg != NULL; const int32_t need_weightavg = src_weightavg != NULL; + int32_t need_costheta = need_weightavg; const DOUBLE sqr_smin=smin*smin, sqr_smax=smax*smax; DOUBLE inv_sstep=0., smin_invstep=0.; if (bin_type == BIN_LIN) { @@ -1135,10 +1217,17 @@ static inline int countpairs_s_mu_fallback_DOUBLE(const int64_t N0, DOUBLE *x0, local_w0 = *weights0; local_w1 = *weights1; - pair.num_weights = local_w0.num_weights; - + set_pair_struct_DOUBLE(&pair, &local_w0, &local_w1, &pair_weight); + need_costheta = pair_weight.num; weight_func = get_weight_func_by_method_DOUBLE(weight_method); } + DOUBLE *norm1 = NULL; + if (need_costheta) { + norm1 = (DOUBLE *) my_malloc(N1,sizeof(DOUBLE)); + for(int64_t i=0;i= sqr_smax || s2 < sqr_smin) continue; - if(sqr_dz >= s2 * sqr_mu_max) continue; + if(sqr_dz > s2 * sqr_mu_max) continue; // gt in case s2 (hence sqr_dz) is 0. + const DOUBLE mu = s2 > 0. ? SQRT(sqr_dz/s2) : 0.; - const DOUBLE mu = SQRT(sqr_dz/s2); DOUBLE s = ZERO, pairweight = ZERO; if(need_savg || bin_type == BIN_LIN) { s = SQRT(s2); @@ -1266,7 +1364,7 @@ static inline int countpairs_s_mu_fallback_DOUBLE(const int64_t N0, DOUBLE *x0, } int mu_bin = (int) (mu*inv_dmu); - mu_bin = mu_bin > nmu_bins ? nmu_bins:mu_bin; + mu_bin = mu_bin > nmu_bins ? nmu_bins : mu_bin; int kbin = 0; if (bin_type == BIN_LIN) { @@ -1282,6 +1380,7 @@ static inline int countpairs_s_mu_fallback_DOUBLE(const int64_t N0, DOUBLE *x0, const int ibin = kbin*(nmu_bins+1) + mu_bin; npairs[ibin]++; if(need_savg) { + if(need_weightavg) s *= pairweight; savg[ibin] += s; } if(need_weightavg){ diff --git a/theory/Makefile b/theory/Makefile index 53e7b97b..97e9664c 100644 --- a/theory/Makefile +++ b/theory/Makefile @@ -6,7 +6,7 @@ PYTHON_EXT_DIR:= ifneq ($(COMPILE_PYTHON_EXT), 0) PYTHON_EXT_DIR:=python_bindings else - $(warning $(ccmagenta) Not compiling C extensions for mocks. Either python or numpy not available $(ccreset)) + $(warning $(ccmagenta) Not compiling C extensions for theory. Either python or numpy not available $(ccreset)) endif TARGETS:=DD DDrppi DDsmu wp xi vpf examples $(PYTHON_EXT_DIR) diff --git a/theory/examples/run_correlations.c b/theory/examples/run_correlations.c index 6692caa7..f21604e0 100644 --- a/theory/examples/run_correlations.c +++ b/theory/examples/run_correlations.c @@ -131,6 +131,9 @@ int main(int argc, char **argv) #endif fprintf(stderr,"\t\t -------------------------------------" ANSI_COLOR_RESET "\n"); + binarray bins; + read_binfile(binfile, &bins); + //Read-in the data const int64_t ND1 = read_positions(file,fileformat,sizeof(*x1),3, &x1, &y1, &z1); @@ -156,7 +159,7 @@ int main(int argc, char **argv) ND2,x2,y2,z2, nthreads, autocorr, - binfile, + &bins, &results, &options, NULL); if(status != EXIT_SUCCESS) { @@ -196,8 +199,9 @@ int main(int argc, char **argv) ND2,x2,y2,z2, nthreads, autocorr, - binfile, + &bins, pimax, + (int) pimax, &results, &options, NULL); if(status != EXIT_SUCCESS) { @@ -241,7 +245,7 @@ int main(int argc, char **argv) ND2,x2,y2,z2, nthreads, autocorr, - binfile, + &bins, mu_max, nmu_bins, &results, @@ -289,7 +293,7 @@ int main(int argc, char **argv) int status = countpairs_wp(ND1,x1,y1,z1, boxsize, nthreads, - binfile, + &bins, pimax, &results, &options, NULL); @@ -328,7 +332,7 @@ int main(int argc, char **argv) int status = countpairs_xi(ND1,x1,y1,z1, boxsize, nthreads, - binfile, + &bins, &results, &options, NULL); if(status != EXIT_SUCCESS) { @@ -394,5 +398,6 @@ int main(int argc, char **argv) } free(x1);free(y1);free(z1); + free_binarray(&bins); return EXIT_SUCCESS; } diff --git a/theory/python_bindings/_countpairs.c b/theory/python_bindings/_countpairs.c index 069311ed..9b03e465 100644 --- a/theory/python_bindings/_countpairs.c +++ b/theory/python_bindings/_countpairs.c @@ -32,6 +32,7 @@ //for unicode characters #include "macros.h" +#include "defs.h" struct module_state { PyObject *error; @@ -994,15 +995,12 @@ PyMODINIT_FUNC init_countpairs(void) #endif } - // weights1_obj may be NULL, in which case it is ignored. // If it is not NULL, it will be checked alongside the positions -static int64_t check_dims_and_datatype(PyObject *module, PyArrayObject *x1_obj, PyArrayObject *y1_obj, PyArrayObject *z1_obj, PyArrayObject *weights1_obj, size_t *element_size) +static int64_t check_dims_and_datatype(PyObject *module, PyArrayObject *x1_obj, PyArrayObject *y1_obj, PyArrayObject *z1_obj, size_t *element_size) { char msg[1024]; - const int check_weights = weights1_obj != NULL; - /* All the position arrays should be 1-D*/ const int nxdims = PyArray_NDIM(x1_obj); const int nydims = PyArray_NDIM(y1_obj); @@ -1015,59 +1013,46 @@ static int64_t check_dims_and_datatype(PyObject *module, PyArrayObject *x1_obj, return -1; } - /* The weights array must be 2-D of shape (n_weights, n_particles) */ - const int n_weight_dims = check_weights ? PyArray_NDIM(weights1_obj) : 2; - - if(n_weight_dims != 2) { - snprintf(msg, 1024, "ERROR: Expected 2-D weight array, shape (n_weights_per_particle,n_particles).\nFound n_weight_dims = %d instead", n_weight_dims); - countpairs_error_out(module, msg); - return -1; - } - /* All the arrays should be floating point (only float32 and float64 are allowed) */ const int x_type = PyArray_TYPE(x1_obj); const int y_type = PyArray_TYPE(y1_obj); const int z_type = PyArray_TYPE(z1_obj); - const int weights_type = check_weights ? PyArray_TYPE(weights1_obj) : NPY_NOTYPE; if( ! ((x_type == NPY_FLOAT || x_type == NPY_DOUBLE) && (y_type == NPY_FLOAT || y_type == NPY_DOUBLE) && - (z_type == NPY_FLOAT || z_type == NPY_DOUBLE) && - (!check_weights || weights_type == NPY_FLOAT || weights_type == NPY_DOUBLE)) + (z_type == NPY_FLOAT || z_type == NPY_DOUBLE)) ) { PyArray_Descr *x_descr = PyArray_DescrFromType(x_type); PyArray_Descr *y_descr = PyArray_DescrFromType(y_type); PyArray_Descr *z_descr = PyArray_DescrFromType(z_type); - PyArray_Descr *weights_descr = PyArray_DescrFromType(weights_type); - if(x_descr == NULL || y_descr == NULL || z_descr == NULL || weights_descr == NULL) { + if(x_descr == NULL || y_descr == NULL || z_descr == NULL) { /* Generating the dtype descriptor failed somehow. At least provide some information */ - snprintf(msg, 1024, "TypeError: Expected floating point arrays (allowed types = %d or %d). Instead found type-nums (%d, %d, %d, %d)\n", - NPY_FLOAT, NPY_DOUBLE, x_type, y_type, z_type, weights_type); + snprintf(msg, 1024, "TypeError: Expected floating point arrays (allowed types = %d or %d). Instead found type-nums (%d, %d, %d)\n", + NPY_FLOAT, NPY_DOUBLE, x_type, y_type, z_type); } else { - snprintf(msg, 1024, "TypeError: Expected floating point arrays (allowed types = %d or %d). Instead found type-nums (%d, %d, %d, %d) " - "with type-names = (%s, %s, %s, %s)\n", - NPY_FLOAT, NPY_DOUBLE, x_type, y_type, z_type, weights_type, x_descr->typeobj->tp_name, y_descr->typeobj->tp_name, z_descr->typeobj->tp_name, weights_descr->typeobj->tp_name); + snprintf(msg, 1024, "TypeError: Expected floating point arrays (allowed types = %d or %d). Instead found type-nums (%d, %d, %d) " + "with type-names = (%s, %s, %s)\n", + NPY_FLOAT, NPY_DOUBLE, x_type, y_type, z_type, x_descr->typeobj->tp_name, y_descr->typeobj->tp_name, z_descr->typeobj->tp_name); } - Py_XDECREF(x_descr);Py_XDECREF(y_descr);Py_XDECREF(z_descr);Py_XDECREF(weights_descr); + Py_XDECREF(x_descr);Py_XDECREF(y_descr);Py_XDECREF(z_descr); countpairs_error_out(module, msg); return -1; } // Current version of the code only supports weights of the same dtype as positions - if( x_type != y_type || y_type != z_type || (check_weights && z_type != weights_type)) { + if( x_type != y_type || y_type != z_type) { PyArray_Descr *x_descr = PyArray_DescrFromType(x_type); PyArray_Descr *y_descr = PyArray_DescrFromType(y_type); PyArray_Descr *z_descr = PyArray_DescrFromType(z_type); - PyArray_Descr *weights_descr = PyArray_DescrFromType(weights_type); - if(x_descr == NULL || y_descr == NULL || z_descr == NULL || weights_descr == NULL) { + if(x_descr == NULL || y_descr == NULL || z_descr == NULL) { /* Generating the dtype descriptor failed somehow. At least provide some information */ - snprintf(msg, 1024, "TypeError: Expected *ALL* 3 floating point arrays to be the same type (allowed types = %d or %d). Instead found type-nums (%d, %d, %d, %d)\n", - NPY_FLOAT, NPY_DOUBLE, x_type, y_type, z_type, weights_type); + snprintf(msg, 1024, "TypeError: Expected *ALL* 3 floating point arrays to be the same type (allowed types = %d or %d). Instead found type-nums (%d, %d, %d)\n", + NPY_FLOAT, NPY_DOUBLE, x_type, y_type, z_type); } else { - snprintf(msg, 1024, "TypeError: Expected *ALL* 3 floating point arrays to be the same type (allowed types = %d or %d). Instead found type-nums (%d, %d, %d, %d) " - "with type-names = (%s, %s, %s, %s)\n", - NPY_FLOAT, NPY_DOUBLE, x_type, y_type, z_type, weights_type, x_descr->typeobj->tp_name, y_descr->typeobj->tp_name, z_descr->typeobj->tp_name, weights_descr->typeobj->tp_name); + snprintf(msg, 1024, "TypeError: Expected *ALL* 3 floating point arrays to be the same type (allowed types = %d or %d). Instead found type-nums (%d, %d, %d) " + "with type-names = (%s, %s, %s)\n", + NPY_FLOAT, NPY_DOUBLE, x_type, y_type, z_type, x_descr->typeobj->tp_name, y_descr->typeobj->tp_name, z_descr->typeobj->tp_name); } - Py_XDECREF(x_descr);Py_XDECREF(y_descr);Py_XDECREF(z_descr);Py_XDECREF(weights_descr); + Py_XDECREF(x_descr);Py_XDECREF(y_descr);Py_XDECREF(z_descr); countpairs_error_out(module, msg); return -1; } @@ -1084,17 +1069,6 @@ static int64_t check_dims_and_datatype(PyObject *module, PyArrayObject *x1_obj, return -1; } - // The last dimension of the weights array must match the number of positions - if(check_weights){ - const int64_t n_weights1 = (int64_t) PyArray_DIMS(weights1_obj)[n_weight_dims-1]; - if(nx1 != n_weights1){ - snprintf(msg, 1024, "ERROR: the last dimension of `weights` must match the number of positions. Instead found n_weights=%"PRId64", nx=%"PRId64, - n_weights1, nx1); - countpairs_error_out(module, msg); - return -1; - } - } - /* Return the size of each element of the data object */ if(x_type == NPY_FLOAT) { *element_size = sizeof(float); @@ -1105,6 +1079,7 @@ static int64_t check_dims_and_datatype(PyObject *module, PyArrayObject *x1_obj, return nx1; } + static int print_kwlist_into_msg(char *msg, const size_t totsize, size_t len, char *kwlist[], const size_t nitems) { for(size_t i=0;iweights[w] = (void *) PyArray_DATA(array); + w++; + goto finally_iter; +except_iter: + Py_XDECREF(array_obj); + Py_XDECREF(array); + goto except; +finally_iter: + Py_XDECREF(array_obj); + Py_XDECREF(array); + } + status = set_weight_struct(weight_st, method, itemtype, w); + goto finally; +except: + countpairs_error_out(module, msg); + return EXIT_FAILURE; +finally: + Py_XDECREF(iter_arrays); + return status; +} + + +static int check_pair_weight(PyObject *module, pair_weight_struct *pair_weight_st, PyObject *sep_obj, PyObject *weight_obj, size_t element_size, PyObject *weight_attrs) +{ + int status = EXIT_SUCCESS; + char msg[1024]; + pair_weight_st->noffset = 1; + pair_weight_st->default_value = 0.; + if (weight_attrs != NULL) { + if (!PySequence_Check(weight_attrs)) { + snprintf(msg, 1024, "Please input tuple/list of weight attributes"); + return EXIT_FAILURE; + } + pair_weight_st->noffset = PyLong_AsLong(PySequence_Fast_GET_ITEM(weight_attrs,0)); + pair_weight_st->default_value = PyFloat_AsDouble(PySequence_Fast_GET_ITEM(weight_attrs,1)); + if (PyErr_Occurred() != NULL) { + snprintf(msg, 1024, "Please provide tuple of integers (noffset, default_value) as weight attributes"); + return EXIT_FAILURE; + } + } + if (weight_obj == NULL) return status; + const int requirements = NPY_ARRAY_IN_ARRAY; + PyArrayObject *sep = (PyArrayObject *) PyArray_FromArray((PyArrayObject *) sep_obj, NOTYPE_DESCR, requirements); + PyArrayObject *weight = (PyArrayObject *) PyArray_FromArray((PyArrayObject *) weight_obj, NOTYPE_DESCR, requirements); + PyArrayObject *arrays[2] = {sep, weight}; + for (int ii=0; ii<2; ii++) { + PyArrayObject *array = arrays[ii]; + if (array == NULL) { + snprintf(msg, 1024, "TypeError: Could not convert input pair weight to array. Are you passing numpy array?\n"); + goto except; + } + const int ndims = PyArray_NDIM(array); + if (ndims != 1) { + snprintf(msg, 1024, "ERROR: Expected 1-D numpy arrays.\nFound ndims = %d instead.\n", ndims); + goto except; + } + const int array_type = PyArray_TYPE(array); + switch (array_type) { + case NPY_FLOAT: + if (element_size != sizeof(float)) { + snprintf(msg, 1024, "ERROR: Input coordinates are float32 but provided pair weight is float64. Please use the same size.\n"); + goto except; + } + break; + case NPY_DOUBLE: + if (element_size != sizeof(double)) { + snprintf(msg, 1024, "ERROR: Input coordinates are float64 but provided pair weight is float32. Please use the same size.\n"); + goto except; + } + break; + default: + snprintf(msg, 1024, "TypeError: Expected floating array for pair weight. Instead found type-num %d.\n", array_type); + goto except; + } + } + const int num = (int) PyArray_SIZE((PyArrayObject *) sep); + const int num_weight = (int) PyArray_SIZE((PyArrayObject *) weight); + if (num_weight != num) { + snprintf(msg, 1024, "ERROR: Expected pair weight array and separation array to be of same size.\nFound %d and %d instead.\n", num_weight, num); + goto except; + } + set_pair_weight_struct(pair_weight_st, (void *) PyArray_DATA(sep), (void *) PyArray_DATA(weight), num, pair_weight_st->noffset, pair_weight_st->default_value); + goto finally; +except: + countpairs_error_out(module, msg); + return EXIT_FAILURE; +finally: + Py_XDECREF(sep); + Py_XDECREF(weight); + return status; +} + + +static int check_binarray(PyObject *module, binarray* bins, PyArrayObject *bins_obj) { + + char msg[1024]; + + /* All the arrays should be 1-D*/ + const int ndims = PyArray_NDIM(bins_obj); + + if(ndims != 1) { + snprintf(msg, 1024, "ERROR: Expected 1-D numpy arrays.\nFound ndims = %d instead", ndims); + countpairs_error_out(module, msg); + return EXIT_FAILURE; + } + return set_binarray(bins, (double *) PyArray_DATA(bins_obj), (int) PyArray_SIZE(bins_obj)); +} + + static PyObject *countpairs_countpairs(PyObject *self, PyObject *args, PyObject *kwargs) { //Error-handling is global in python2 -> stored in struct module_state _struct declared at the top of this file @@ -1135,12 +1296,16 @@ static PyObject *countpairs_countpairs(PyObject *self, PyObject *args, PyObject //In python3, self is simply the module object that was returned earlier by init PyObject *module = self; #endif - PyArrayObject *x1_obj=NULL, *y1_obj=NULL, *z1_obj=NULL, *weights1_obj=NULL; - PyArrayObject *x2_obj=NULL, *y2_obj=NULL, *z2_obj=NULL, *weights2_obj=NULL; + PyArrayObject *x1_obj=NULL, *y1_obj=NULL, *z1_obj=NULL; + PyArrayObject *x2_obj=NULL, *y2_obj=NULL, *z2_obj=NULL; + PyArrayObject *bins_obj=NULL; + PyObject *weights1_obj=NULL, *weights2_obj=NULL; int autocorr=0; int nthreads=4; - char *binfile, *weighting_method_str = NULL; + char *weighting_method_str = NULL; + + PyObject *pair_weight_obj=NULL, *sep_pair_weight_obj=NULL, *attrs_pair_weight=NULL; struct config_options options = get_config_options(); options.verbose = 0; @@ -1180,21 +1345,25 @@ static PyObject *countpairs_countpairs(PyObject *self, PyObject *args, PyObject "c_api_timer", "isa",/* instruction set to use of type enum isa; valid values are AVX512F, AVX, SSE, FALLBACK */ "weight_type", + "pair_weights", + "sep_pair_weights", + "attrs_pair_weights", "bin_type", NULL }; // Note: type 'O!' doesn't allow for None to be passed, which we might want to do. - if ( ! PyArg_ParseTupleAndKeywords(args, kwargs, "iisO!O!O!|O!O!O!O!O!bbdbbbbhbbbisI", kwlist, - &autocorr,&nthreads,&binfile, + if ( ! PyArg_ParseTupleAndKeywords(args, kwargs, "iiO!O!O!O!|OO!O!O!ObbdbbbbhbbbisO!O!OI", kwlist, + &autocorr,&nthreads, + &PyArray_Type,&bins_obj, &PyArray_Type,&x1_obj, &PyArray_Type,&y1_obj, &PyArray_Type,&z1_obj, - &PyArray_Type,&weights1_obj, + &weights1_obj, &PyArray_Type,&x2_obj, &PyArray_Type,&y2_obj, &PyArray_Type,&z2_obj, - &PyArray_Type,&weights2_obj, + &weights2_obj, &(options.periodic), &(options.verbose), &(options.boxsize), @@ -1206,6 +1375,9 @@ static PyObject *countpairs_countpairs(PyObject *self, PyObject *args, PyObject &(options.c_api_timer), &(options.instruction_set), &weighting_method_str, + &PyArray_Type,&pair_weight_obj, + &PyArray_Type,&sep_pair_weight_obj, + &attrs_pair_weight, &(options.bin_type)) ) { @@ -1260,14 +1432,15 @@ static PyObject *countpairs_countpairs(PyObject *self, PyObject *args, PyObject /* We have numpy arrays and all the required inputs*/ /* How many data points are there? And are they all of floating point type */ size_t element_size; - const int64_t ND1 = check_dims_and_datatype(module, x1_obj, y1_obj, z1_obj, weights1_obj, &element_size); + const int64_t ND1 = check_dims_and_datatype(module, x1_obj, y1_obj, z1_obj, &element_size); if(ND1 == -1) { //Error has already been set -> simply return Py_RETURN_NONE; } + struct extra_options extra = get_extra_options(weighting_method); /* Validate the user's choice of weighting method */ - int found_weights = weights1_obj == NULL ? 0 : PyArray_SHAPE(weights1_obj)[0]; + /*int found_weights = weights1_obj == NULL ? 0 : PyArray_SHAPE(weights1_obj)[0]; struct extra_options extra = get_extra_options(weighting_method); if(extra.weights0.num_weights > 0 && extra.weights0.num_weights != found_weights){ char msg[1024]; @@ -1283,7 +1456,7 @@ static PyObject *countpairs_countpairs(PyObject *self, PyObject *args, PyObject __FUNCTION__, found_weights, MAX_NUM_WEIGHTS); countpairs_error_out(module, msg); Py_RETURN_NONE; - } + }*/ int64_t ND2 = 0; if(autocorr == 0) { @@ -1301,7 +1474,7 @@ static PyObject *countpairs_countpairs(PyObject *self, PyObject *args, PyObject Py_RETURN_NONE; } size_t element_size2; - ND2 = check_dims_and_datatype(module, x2_obj, y2_obj, z2_obj, weights2_obj, &element_size2); + ND2 = check_dims_and_datatype(module, x2_obj, y2_obj, z2_obj, &element_size2); if(ND2 == -1) { //Error has already been set -> simply return Py_RETURN_NONE; @@ -1324,20 +1497,20 @@ static PyObject *countpairs_countpairs(PyObject *self, PyObject *args, PyObject PyObject *x1_array = PyArray_FromArray(x1_obj, NOTYPE_DESCR, requirements); PyObject *y1_array = PyArray_FromArray(y1_obj, NOTYPE_DESCR, requirements); PyObject *z1_array = PyArray_FromArray(z1_obj, NOTYPE_DESCR, requirements); - PyObject *weights1_array = NULL; + /*PyObject *weights1_array = NULL; if(weights1_obj != NULL){ weights1_array = PyArray_FromArray(weights1_obj, NOTYPE_DESCR, requirements); - } + }*/ /* NULL initialization is necessary since we might be calling XDECREF*/ - PyObject *x2_array = NULL, *y2_array = NULL, *z2_array = NULL, *weights2_array = NULL; + PyObject *x2_array = NULL, *y2_array = NULL, *z2_array = NULL; if(autocorr == 0) { x2_array = PyArray_FromArray(x2_obj, NOTYPE_DESCR, requirements); y2_array = PyArray_FromArray(y2_obj, NOTYPE_DESCR, requirements); z2_array = PyArray_FromArray(z2_obj, NOTYPE_DESCR, requirements); - if(weights2_obj != NULL){ + /*if(weights2_obj != NULL){ weights2_array = PyArray_FromArray(weights2_obj, NOTYPE_DESCR, requirements); - } + }*/ } if (x1_array == NULL || y1_array == NULL || z1_array == NULL || @@ -1345,12 +1518,12 @@ static PyObject *countpairs_countpairs(PyObject *self, PyObject *args, PyObject Py_XDECREF(x1_array); Py_XDECREF(y1_array); Py_XDECREF(z1_array); - Py_XDECREF(weights1_array); + //Py_XDECREF(weights1_array); Py_XDECREF(x2_array); Py_XDECREF(y2_array); Py_XDECREF(z2_array); - Py_XDECREF(weights2_array); + //Py_XDECREF(weights2_array); char msg[1024]; snprintf(msg, 1024, "TypeError: In %s: Could not convert input to arrays of allowed floating point types (doubles or floats). Are you passing numpy arrays?", __FUNCTION__); @@ -1358,32 +1531,44 @@ static PyObject *countpairs_countpairs(PyObject *self, PyObject *args, PyObject Py_RETURN_NONE; } - /* Get pointers to the data */ void *X1 = PyArray_DATA((PyArrayObject *) x1_array); void *Y1 = PyArray_DATA((PyArrayObject *) y1_array); void *Z1 = PyArray_DATA((PyArrayObject *) z1_array); - void *weights1=NULL; + /*void *weights1=NULL; if(weights1_array != NULL){ weights1 = PyArray_DATA((PyArrayObject *) weights1_array); - } + }*/ + if (weights1_obj != NULL) wstatus = check_weights(module, weights1_obj, &(extra.weights0), extra.weight_method, ND1, element_size); - void *X2 = NULL, *Y2=NULL, *Z2=NULL, *weights2=NULL; + void *X2 = NULL, *Y2=NULL, *Z2=NULL; if(autocorr==0) { X2 = PyArray_DATA((PyArrayObject *) x2_array); Y2 = PyArray_DATA((PyArrayObject *) y2_array); Z2 = PyArray_DATA((PyArrayObject *) z2_array); - if(weights2_array != NULL){ + /*if(weights2_array != NULL){ weights2 = PyArray_DATA((PyArrayObject *) weights2_array); - } + }*/ + if (weights2_obj != NULL) wstatus = check_weights(module, weights2_obj, &(extra.weights1), extra.weight_method, ND2, element_size); } + wstatus = check_pair_weight(module, &(extra.pair_weight), sep_pair_weight_obj, pair_weight_obj, element_size, attrs_pair_weight); /* Pack the weights into extra_options */ - for(int64_t w = 0; w < extra.weights0.num_weights; w++){ + /*for(int64_t w = 0; w < extra.weights0.num_weights; w++){ extra.weights0.weights[w] = (char *) weights1 + w*ND1*element_size; if(autocorr == 0){ extra.weights1.weights[w] = (char *) weights2 + w*ND2*element_size; } + }*/ + if(wstatus != EXIT_SUCCESS) { + Py_RETURN_NONE; + } + + binarray bins; + wstatus = check_binarray(module, &bins, bins_obj); + + if(wstatus != EXIT_SUCCESS) { + Py_RETURN_NONE; } NPY_BEGIN_THREADS_DEF; @@ -1396,7 +1581,7 @@ static PyObject *countpairs_countpairs(PyObject *self, PyObject *args, PyObject ND2,X2,Y2,Z2, nthreads, autocorr, - binfile, + &bins, &results, &options, &extra); @@ -1406,8 +1591,9 @@ static PyObject *countpairs_countpairs(PyObject *self, PyObject *args, PyObject NPY_END_THREADS; /* Clean up. */ - Py_DECREF(x1_array);Py_DECREF(y1_array);Py_DECREF(z1_array);Py_XDECREF(weights1_array); - Py_XDECREF(x2_array);Py_XDECREF(y2_array);Py_XDECREF(z2_array);Py_XDECREF(weights2_array); + Py_DECREF(x1_array);Py_DECREF(y1_array);Py_DECREF(z1_array); + Py_XDECREF(x2_array);Py_XDECREF(y2_array);Py_XDECREF(z2_array); + free_binarray(&bins); if(status != EXIT_SUCCESS) { Py_RETURN_NONE; @@ -1442,13 +1628,18 @@ static PyObject *countpairs_countpairs_rp_pi(PyObject *self, PyObject *args, PyO //In python3, self is simply the module object that was returned earlier by init PyObject *module = self; #endif - PyArrayObject *x1_obj=NULL, *y1_obj=NULL, *z1_obj=NULL, *weights1_obj=NULL; - PyArrayObject *x2_obj=NULL, *y2_obj=NULL, *z2_obj=NULL, *weights2_obj=NULL; + PyArrayObject *x1_obj=NULL, *y1_obj=NULL, *z1_obj=NULL; + PyArrayObject *x2_obj=NULL, *y2_obj=NULL, *z2_obj=NULL; + PyArrayObject *bins_obj=NULL; + PyObject *weights1_obj=NULL, *weights2_obj=NULL; int autocorr=0; int nthreads=4; double pimax; - char *binfile, *weighting_method_str = NULL; + int npibins; + char *weighting_method_str = NULL; + PyObject *pair_weight_obj=NULL, *sep_pair_weight_obj=NULL, *attrs_pair_weight=NULL; + struct config_options options = get_config_options(); options.verbose = 0; options.instruction_set = -1; @@ -1463,8 +1654,9 @@ static PyObject *countpairs_countpairs_rp_pi(PyObject *self, PyObject *args, PyO static char *kwlist[] = { "autocorr", "nthreads", - "pimax", "binfile", + "pimax", + "npibins", "X1", "Y1", "Z1", @@ -1486,20 +1678,25 @@ static PyObject *countpairs_countpairs_rp_pi(PyObject *self, PyObject *args, PyO "c_api_timer", "isa",/* instruction set to use of type enum isa; valid values are AVX512F, AVX, SSE, FALLBACK */ "weight_type", + "pair_weights", + "sep_pair_weights", + "attrs_pair_weights", "bin_type", NULL }; - if ( ! PyArg_ParseTupleAndKeywords(args, kwargs, "iidsO!O!O!|O!O!O!O!O!bbdbbbbhbbbisI", kwlist, - &autocorr,&nthreads,&pimax,&binfile, + if ( ! PyArg_ParseTupleAndKeywords(args, kwargs, "iiO!diO!O!O!|OO!O!O!ObbdbbbbhbbbisO!O!OI", kwlist, + &autocorr,&nthreads, + &PyArray_Type,&bins_obj, + &pimax,&npibins, &PyArray_Type,&x1_obj, &PyArray_Type,&y1_obj, &PyArray_Type,&z1_obj, - &PyArray_Type,&weights1_obj, + &weights1_obj, &PyArray_Type,&x2_obj, &PyArray_Type,&y2_obj, &PyArray_Type,&z2_obj, - &PyArray_Type,&weights2_obj, + &weights2_obj, &(options.periodic), &(options.verbose), &(options.boxsize), @@ -1511,6 +1708,9 @@ static PyObject *countpairs_countpairs_rp_pi(PyObject *self, PyObject *args, PyO &(options.c_api_timer), &(options.instruction_set), &weighting_method_str, + &PyArray_Type,&pair_weight_obj, + &PyArray_Type,&sep_pair_weight_obj, + &attrs_pair_weight, &(options.bin_type)) ) { @@ -1562,29 +1762,12 @@ static PyObject *countpairs_countpairs_rp_pi(PyObject *self, PyObject *args, PyO size_t element_size; /* How many data points are there? And are they all of floating point type */ - const int64_t ND1 = check_dims_and_datatype(module, x1_obj, y1_obj, z1_obj, weights1_obj, &element_size); + const int64_t ND1 = check_dims_and_datatype(module, x1_obj, y1_obj, z1_obj, &element_size); if(ND1 == -1) { //Error has already been set -> simply return Py_RETURN_NONE; } - - int found_weights = weights1_obj == NULL ? 0 : PyArray_SHAPE(weights1_obj)[0]; struct extra_options extra = get_extra_options(weighting_method); - if(extra.weights0.num_weights > 0 && extra.weights0.num_weights != found_weights){ - char msg[1024]; - snprintf(msg, 1024, "ValueError: In %s: specified weighting method %s which requires %"PRId64" weight(s)-per-particle, but found %d weight(s) instead!\n", - __FUNCTION__, weighting_method_str, extra.weights0.num_weights, found_weights); - countpairs_error_out(module, msg); - Py_RETURN_NONE; - } - - if(extra.weights0.num_weights > 0 && found_weights > MAX_NUM_WEIGHTS){ - char msg[1024]; - snprintf(msg, 1024, "ValueError: In %s: Provided %d weights-per-particle, but the code was compiled with MAX_NUM_WEIGHTS=%d.\n", - __FUNCTION__, found_weights, MAX_NUM_WEIGHTS); - countpairs_error_out(module, msg); - Py_RETURN_NONE; - } int64_t ND2=ND1; if(autocorr == 0) { @@ -1603,7 +1786,7 @@ static PyObject *countpairs_countpairs_rp_pi(PyObject *self, PyObject *args, PyO } size_t element_size2; - ND2 = check_dims_and_datatype(module, x2_obj, y2_obj, z2_obj, weights2_obj, &element_size2); + ND2 = check_dims_and_datatype(module, x2_obj, y2_obj, z2_obj, &element_size2); if(ND2 == -1) { //Error has already been set -> simply return Py_RETURN_NONE; @@ -1622,19 +1805,12 @@ static PyObject *countpairs_countpairs_rp_pi(PyObject *self, PyObject *args, PyO PyObject *x1_array = PyArray_FromArray(x1_obj, NOTYPE_DESCR, requirements); PyObject *y1_array = PyArray_FromArray(y1_obj, NOTYPE_DESCR, requirements); PyObject *z1_array = PyArray_FromArray(z1_obj, NOTYPE_DESCR, requirements); - PyObject *weights1_array = NULL; - if(weights1_obj != NULL){ - weights1_array = PyArray_FromArray(weights1_obj, NOTYPE_DESCR, requirements); - } - PyObject *x2_array = NULL, *y2_array = NULL, *z2_array = NULL, *weights2_array = NULL; + PyObject *x2_array = NULL, *y2_array = NULL, *z2_array = NULL; if(autocorr == 0) { x2_array = PyArray_FromArray(x2_obj, NOTYPE_DESCR, requirements); y2_array = PyArray_FromArray(y2_obj, NOTYPE_DESCR, requirements); z2_array = PyArray_FromArray(z2_obj, NOTYPE_DESCR, requirements); - if(weights2_obj != NULL){ - weights2_array = PyArray_FromArray(weights2_obj, NOTYPE_DESCR, requirements); - } } if (x1_array == NULL || y1_array == NULL || z1_array == NULL || @@ -1642,12 +1818,10 @@ static PyObject *countpairs_countpairs_rp_pi(PyObject *self, PyObject *args, PyO Py_XDECREF(x1_array); Py_XDECREF(y1_array); Py_XDECREF(z1_array); - Py_XDECREF(weights1_array); Py_XDECREF(x2_array); Py_XDECREF(y2_array); Py_XDECREF(z2_array); - Py_XDECREF(weights2_array); char msg[1024]; snprintf(msg, 1024, "TypeError: In %s: Could not convert input to arrays of allowed floating point types (doubles or floats). Are you passing numpy arrays?", __FUNCTION__); @@ -1660,27 +1834,27 @@ static PyObject *countpairs_countpairs_rp_pi(PyObject *self, PyObject *args, PyO void *X1 = PyArray_DATA((PyArrayObject *) x1_array); void *Y1 = PyArray_DATA((PyArrayObject *) y1_array); void *Z1 = PyArray_DATA((PyArrayObject *) z1_array); - void *weights1=NULL; - if(weights1_array != NULL){ - weights1 = PyArray_DATA((PyArrayObject *) weights1_array); - } - void *X2 = NULL, *Y2 = NULL, *Z2 = NULL, *weights2=NULL; + if (weights1_obj != NULL) wstatus = check_weights(module, weights1_obj, &(extra.weights0), extra.weight_method, ND1, element_size); + + void *X2 = NULL, *Y2 = NULL, *Z2 = NULL; if(autocorr == 0) { X2 = PyArray_DATA((PyArrayObject *) x2_array); Y2 = PyArray_DATA((PyArrayObject *) y2_array); Z2 = PyArray_DATA((PyArrayObject *) z2_array); - if(weights2_array != NULL){ - weights2 = PyArray_DATA((PyArrayObject *) weights2_array); - } + + if (weights2_obj != NULL) wstatus = check_weights(module, weights2_obj, &(extra.weights1), extra.weight_method, ND2, element_size); } + wstatus = check_pair_weight(module, &(extra.pair_weight), sep_pair_weight_obj, pair_weight_obj, element_size, attrs_pair_weight); - /* Pack the weights into extra_options */ - for(int64_t w = 0; w < extra.weights0.num_weights; w++){ - extra.weights0.weights[w] = (char *) weights1 + w*ND1*element_size; - if(autocorr == 0){ - extra.weights1.weights[w] = (char *) weights2 + w*ND2*element_size; - } + if(wstatus != EXIT_SUCCESS) { + Py_RETURN_NONE; + } + binarray bins; + wstatus = check_binarray(module, &bins, bins_obj); + + if(wstatus != EXIT_SUCCESS) { + Py_RETURN_NONE; } NPY_BEGIN_THREADS_DEF; @@ -1693,8 +1867,9 @@ static PyObject *countpairs_countpairs_rp_pi(PyObject *self, PyObject *args, PyO ND2,X2,Y2,Z2, nthreads, autocorr, - binfile, + &bins, pimax, + npibins, &results, &options, &extra); @@ -1704,8 +1879,9 @@ static PyObject *countpairs_countpairs_rp_pi(PyObject *self, PyObject *args, PyO NPY_END_THREADS; /* Clean up. */ - Py_DECREF(x1_array);Py_DECREF(y1_array);Py_DECREF(z1_array);Py_XDECREF(weights1_array);//x1 should absolutely not be NULL - Py_XDECREF(x2_array);Py_XDECREF(y2_array);Py_XDECREF(z2_array);Py_XDECREF(weights2_array);//x2 might be NULL depending on value of autocorr + Py_DECREF(x1_array);Py_DECREF(y1_array);Py_DECREF(z1_array);//x1 should absolutely not be NULL + Py_XDECREF(x2_array);Py_XDECREF(y2_array);Py_XDECREF(z2_array);//x2 might be NULL depending on value of autocorr + free_binarray(&bins); if(status != EXIT_SUCCESS) { Py_RETURN_NONE; } @@ -1734,6 +1910,7 @@ static PyObject *countpairs_countpairs_rp_pi(PyObject *self, PyObject *args, PyO return rettuple; } + static PyObject *countpairs_countpairs_wp(PyObject *self, PyObject *args, PyObject *kwargs) { #if PY_MAJOR_VERSION < 3 @@ -1743,10 +1920,13 @@ static PyObject *countpairs_countpairs_wp(PyObject *self, PyObject *args, PyObje //In python3, self is simply the module object that was returned earlier by init PyObject *module = self; #endif - PyArrayObject *x1_obj=NULL, *y1_obj=NULL, *z1_obj=NULL, *weights1_obj=NULL; + PyArrayObject *x1_obj=NULL, *y1_obj=NULL, *z1_obj=NULL; + PyArrayObject *bins_obj=NULL; + PyObject *weights1_obj=NULL; double boxsize,pimax; int nthreads=1; - char *binfile, *weighting_method_str = NULL; + char *weighting_method_str = NULL; + PyObject *pair_weight_obj=NULL, *sep_pair_weight_obj=NULL, *attrs_pair_weight=NULL; size_t element_size; struct config_options options = get_config_options(); @@ -1764,9 +1944,9 @@ static PyObject *countpairs_countpairs_wp(PyObject *self, PyObject *args, PyObje static char *kwlist[] = { "boxsize", - "pimax", "nthreads", "binfile", + "pimax", "X", "Y", "Z", @@ -1783,16 +1963,21 @@ static PyObject *countpairs_countpairs_wp(PyObject *self, PyObject *args, PyObje "c_api_timer", "c_cell_timer", "isa",/* instruction set to use of type enum isa; valid values are AVX512F, AVX, SSE, FALLBACK */ + "pair_weights", + "sep_pair_weights", + "attrs_pair_weights", "bin_type", NULL }; - if( ! PyArg_ParseTupleAndKeywords(args, kwargs, "ddisO!O!O!|O!sbbbbbhbbbbiI", kwlist, - &boxsize,&pimax,&nthreads,&binfile, + if( ! PyArg_ParseTupleAndKeywords(args, kwargs, "diO!dO!O!O!|OsbbbbbhbbbbiO!O!OI", kwlist, + &boxsize,&nthreads, + &PyArray_Type,&bins_obj, + &pimax, &PyArray_Type,&x1_obj, &PyArray_Type,&y1_obj, &PyArray_Type,&z1_obj, - &PyArray_Type,&weights1_obj, + &weights1_obj, &weighting_method_str, &(options.verbose), &(options.need_avg_sep), @@ -1803,6 +1988,9 @@ static PyObject *countpairs_countpairs_wp(PyObject *self, PyObject *args, PyObje &(options.c_api_timer), &(options.c_cell_timer), &(options.instruction_set), + &PyArray_Type,&pair_weight_obj, + &PyArray_Type,&sep_pair_weight_obj, + &attrs_pair_weight, &(options.bin_type)) ){ @@ -1853,46 +2041,23 @@ static PyObject *countpairs_countpairs_wp(PyObject *self, PyObject *args, PyObje } /* How many data points are there? And are they all of floating point type */ - const int64_t ND1 = check_dims_and_datatype(module, x1_obj, y1_obj, z1_obj, weights1_obj, &element_size); + const int64_t ND1 = check_dims_and_datatype(module, x1_obj, y1_obj, z1_obj, &element_size); if(ND1 == -1) { //Error has already been set -> simply return Py_RETURN_NONE; } - - int found_weights = weights1_obj == NULL ? 0 : PyArray_SHAPE(weights1_obj)[0]; struct extra_options extra = get_extra_options(weighting_method); - if(extra.weights0.num_weights > 0 && extra.weights0.num_weights != found_weights){ - char msg[1024]; - snprintf(msg, 1024, "ValueError: In %s: specified weighting method %s which requires %"PRId64" weight(s)-per-particle, but found %d weight(s) instead!\n", - __FUNCTION__, weighting_method_str, extra.weights0.num_weights, found_weights); - countpairs_error_out(module, msg); - Py_RETURN_NONE; - } - - if(extra.weights0.num_weights > 0 && found_weights > MAX_NUM_WEIGHTS){ - char msg[1024]; - snprintf(msg, 1024, "ValueError: In %s: Provided %d weights-per-particle, but the code was compiled with MAX_NUM_WEIGHTS=%d.\n", - __FUNCTION__, found_weights, MAX_NUM_WEIGHTS); - countpairs_error_out(module, msg); - Py_RETURN_NONE; - } /* Interpret the input objects as numpy arrays. */ const int requirements = NPY_ARRAY_IN_ARRAY; PyObject *x1_array = PyArray_FromArray(x1_obj, NOTYPE_DESCR, requirements); PyObject *y1_array = PyArray_FromArray(y1_obj, NOTYPE_DESCR, requirements); PyObject *z1_array = PyArray_FromArray(z1_obj, NOTYPE_DESCR, requirements); - PyObject *weights1_array = NULL; - if(weights1_obj != NULL){ - weights1_array = PyArray_FromArray(weights1_obj, NOTYPE_DESCR, requirements); - } - if (x1_array == NULL || y1_array == NULL || z1_array == NULL) { Py_XDECREF(x1_array); Py_XDECREF(y1_array); Py_XDECREF(z1_array); - Py_XDECREF(weights1_array); char msg[1024]; snprintf(msg, 1024, "TypeError: In %s: Could not convert input array to allowed floating point types (doubles or floats). Are you passing numpy arrays?", __FUNCTION__); @@ -1906,27 +2071,30 @@ static PyObject *countpairs_countpairs_wp(PyObject *self, PyObject *args, PyObje void *X1 = PyArray_DATA((PyArrayObject *) x1_array); void *Y1 = PyArray_DATA((PyArrayObject *) y1_array); void *Z1 = PyArray_DATA((PyArrayObject *) z1_array); - void *weights1 = NULL; - if(weights1_array != NULL){ - weights1 = PyArray_DATA((PyArrayObject *) weights1_array); + + if (weights1_obj != NULL) wstatus = check_weights(module, weights1_obj, &(extra.weights0), extra.weight_method, ND1, element_size); + wstatus = check_pair_weight(module, &(extra.pair_weight), sep_pair_weight_obj, pair_weight_obj, element_size, attrs_pair_weight); + + if(wstatus != EXIT_SUCCESS) { + Py_RETURN_NONE; } + binarray bins; + wstatus = check_binarray(module, &bins, bins_obj); - /* Pack the weights into extra_options */ - for(int64_t w = 0; w < extra.weights0.num_weights; w++){ - extra.weights0.weights[w] = (char *) weights1 + w*ND1*element_size; + if(wstatus != EXIT_SUCCESS) { + Py_RETURN_NONE; } NPY_BEGIN_THREADS_DEF; NPY_BEGIN_THREADS; - results_countpairs_wp results; options.float_type = element_size; double c_api_time = 0.0; int status = countpairs_wp(ND1,X1,Y1,Z1, boxsize, nthreads, - binfile, + &bins, pimax, &results, &options, @@ -1937,7 +2105,8 @@ static PyObject *countpairs_countpairs_wp(PyObject *self, PyObject *args, PyObje NPY_END_THREADS; /* Clean up. */ - Py_DECREF(x1_array);Py_DECREF(y1_array);Py_DECREF(z1_array);Py_XDECREF(weights1_array); + Py_DECREF(x1_array);Py_DECREF(y1_array);Py_DECREF(z1_array); + free_binarray(&bins); if(status != EXIT_SUCCESS) { Py_RETURN_NONE; @@ -1991,10 +2160,14 @@ static PyObject *countpairs_countpairs_xi(PyObject *self, PyObject *args, PyObje PyObject *module = self; #endif - PyArrayObject *x1_obj, *y1_obj, *z1_obj, *weights1_obj = NULL; + PyArrayObject *x1_obj=NULL, *y1_obj=NULL, *z1_obj=NULL; + PyArrayObject *bins_obj=NULL; + PyObject *weights1_obj=NULL; double boxsize; int nthreads=4; - char *binfile, *weighting_method_str = NULL; + char *weighting_method_str = NULL; + PyObject *pair_weight_obj=NULL, *sep_pair_weight_obj=NULL, *attrs_pair_weight=NULL; + struct config_options options = get_config_options(); options.verbose = 0; options.periodic=1; @@ -2025,17 +2198,21 @@ static PyObject *countpairs_countpairs_xi(PyObject *self, PyObject *args, PyObje "enable_min_sep_opt", "c_api_timer", "isa",/* instruction set to use of type enum isa; valid values are AVX512F, AVX, SSE, FALLBACK */ + "pair_weights", + "sep_pair_weights", + "attrs_pair_weights", "bin_type", NULL }; - if( ! PyArg_ParseTupleAndKeywords(args, kwargs, "disO!O!O!|O!sbbbbbhbbbiI", kwlist, - &boxsize,&nthreads,&binfile, + if( ! PyArg_ParseTupleAndKeywords(args, kwargs, "diO!O!O!O!|OsbbbbbhbbbiO!O!OI", kwlist, + &boxsize,&nthreads, + &PyArray_Type,&bins_obj, &PyArray_Type,&x1_obj, &PyArray_Type,&y1_obj, &PyArray_Type,&z1_obj, - &PyArray_Type,&weights1_obj, + &weights1_obj, &weighting_method_str, &(options.verbose), &(options.need_avg_sep), @@ -2045,6 +2222,9 @@ static PyObject *countpairs_countpairs_xi(PyObject *self, PyObject *args, PyObje &(options.enable_min_sep_opt), &(options.c_api_timer), &(options.instruction_set), + &PyArray_Type,&pair_weight_obj, + &PyArray_Type,&sep_pair_weight_obj, + &attrs_pair_weight, &(options.bin_type)) ) { @@ -2095,45 +2275,23 @@ static PyObject *countpairs_countpairs_xi(PyObject *self, PyObject *args, PyObje /* How many data points are there? And are they all of floating point type */ size_t element_size; - const int64_t ND1 = check_dims_and_datatype(module, x1_obj, y1_obj, z1_obj, weights1_obj, &element_size); + const int64_t ND1 = check_dims_and_datatype(module, x1_obj, y1_obj, z1_obj, &element_size); if(ND1 == -1) { //Error has already been set -> simply return Py_RETURN_NONE; } - - int found_weights = weights1_obj == NULL ? 0 : PyArray_SHAPE(weights1_obj)[0]; struct extra_options extra = get_extra_options(weighting_method); - if(extra.weights0.num_weights > 0 && extra.weights0.num_weights != found_weights){ - char msg[1024]; - snprintf(msg, 1024, "ValueError: In %s: specified weighting method %s which requires %"PRId64" weight(s)-per-particle, but found %d weight(s) instead!\n", - __FUNCTION__, weighting_method_str, extra.weights0.num_weights, found_weights); - countpairs_error_out(module, msg); - Py_RETURN_NONE; - } - - if(extra.weights0.num_weights > 0 && found_weights > MAX_NUM_WEIGHTS){ - char msg[1024]; - snprintf(msg, 1024, "ValueError: In %s: Provided %d weights-per-particle, but the code was compiled with MAX_NUM_WEIGHTS=%d.\n", - __FUNCTION__, found_weights, MAX_NUM_WEIGHTS); - countpairs_error_out(module, msg); - Py_RETURN_NONE; - } /* Interpret the input objects as numpy arrays. */ const int requirements = NPY_ARRAY_IN_ARRAY; PyObject *x1_array = PyArray_FromArray(x1_obj, NOTYPE_DESCR, requirements); PyObject *y1_array = PyArray_FromArray(y1_obj, NOTYPE_DESCR, requirements); PyObject *z1_array = PyArray_FromArray(z1_obj, NOTYPE_DESCR, requirements); - PyObject *weights1_array = NULL; - if(weights1_obj != NULL){ - weights1_array = PyArray_FromArray(weights1_obj, NOTYPE_DESCR, requirements); - } if (x1_array == NULL || y1_array == NULL || z1_array == NULL) { Py_XDECREF(x1_array); Py_XDECREF(y1_array); Py_XDECREF(z1_array); - Py_XDECREF(weights1_array); char msg[1024]; snprintf(msg, 1024, "TypeError: In %s: Could not convert to array of allowed floating point type (doubles or floats). Are you passing numpy arrays?", __FUNCTION__); @@ -2145,14 +2303,18 @@ static PyObject *countpairs_countpairs_xi(PyObject *self, PyObject *args, PyObje void *X1 = PyArray_DATA((PyArrayObject *) x1_array); void *Y1 = PyArray_DATA((PyArrayObject *) y1_array); void *Z1 = PyArray_DATA((PyArrayObject *) z1_array); - void *weights1 = NULL; - if(weights1_array != NULL){ - weights1 = PyArray_DATA((PyArrayObject *) weights1_array); + + if (weights1_obj != NULL) wstatus = check_weights(module, weights1_obj, &(extra.weights0), extra.weight_method, ND1, element_size); + wstatus = check_pair_weight(module, &(extra.pair_weight), sep_pair_weight_obj, pair_weight_obj, element_size, attrs_pair_weight); + + if(wstatus != EXIT_SUCCESS) { + Py_RETURN_NONE; } + binarray bins; + wstatus = check_binarray(module, &bins, bins_obj); - /* Pack the weights into extra_options */ - for(int64_t w = 0; w < extra.weights0.num_weights; w++){ - extra.weights0.weights[w] = (char *) weights1 + w*ND1*element_size; + if(wstatus != EXIT_SUCCESS) { + Py_RETURN_NONE; } NPY_BEGIN_THREADS_DEF; @@ -2165,7 +2327,7 @@ static PyObject *countpairs_countpairs_xi(PyObject *self, PyObject *args, PyObje int status = countpairs_xi(ND1,X1,Y1,Z1, boxsize, nthreads, - binfile, + &bins, &results, &options, &extra); @@ -2175,7 +2337,8 @@ static PyObject *countpairs_countpairs_xi(PyObject *self, PyObject *args, PyObje NPY_END_THREADS; /* Clean up. */ - Py_DECREF(x1_array);Py_DECREF(y1_array);Py_DECREF(z1_array);Py_XDECREF(weights1_array); + Py_DECREF(x1_array);Py_DECREF(y1_array);Py_DECREF(z1_array); + free_binarray(&bins); if(status != EXIT_SUCCESS) { Py_RETURN_NONE; } @@ -2216,14 +2379,18 @@ static PyObject *countpairs_countpairs_s_mu(PyObject *self, PyObject *args, PyOb //In python3, self is simply the module object that was returned earlier by init PyObject *module = self; #endif - PyArrayObject *x1_obj=NULL, *y1_obj=NULL, *z1_obj=NULL, *weights1_obj=NULL; - PyArrayObject *x2_obj=NULL, *y2_obj=NULL, *z2_obj=NULL, *weights2_obj=NULL; + PyArrayObject *x1_obj=NULL, *y1_obj=NULL, *z1_obj=NULL; + PyArrayObject *x2_obj=NULL, *y2_obj=NULL, *z2_obj=NULL; + PyArrayObject *bins_obj=NULL; + PyObject *weights1_obj=NULL, *weights2_obj=NULL; int autocorr=0; int nthreads=4; double mu_max; int nmu_bins; - char *binfile, *weighting_method_str = NULL; + char *weighting_method_str = NULL; + PyObject *pair_weight_obj=NULL, *sep_pair_weight_obj=NULL, *attrs_pair_weight=NULL; + struct config_options options = get_config_options(); options.verbose = 0; options.instruction_set = -1; @@ -2264,20 +2431,25 @@ static PyObject *countpairs_countpairs_s_mu(PyObject *self, PyObject *args, PyOb "c_api_timer", "isa",/* instruction set to use of type enum isa; valid values are AVX512F, AVX, SSE, FALLBACK */ "weight_type", + "pair_weights", + "sep_pair_weights", + "attrs_pair_weights", "bin_type", NULL }; - if ( ! PyArg_ParseTupleAndKeywords(args, kwargs, "iisdiO!O!O!|O!O!O!O!O!bbdbbbbbhbbbisI", kwlist, - &autocorr,&nthreads,&binfile, &mu_max, &nmu_bins, + if ( ! PyArg_ParseTupleAndKeywords(args, kwargs, "iiO!diO!O!O!|OO!O!O!ObbdbbbbbhbbbisO!O!OI", kwlist, + &autocorr,&nthreads, + &PyArray_Type,&bins_obj, + &mu_max, &nmu_bins, &PyArray_Type,&x1_obj, &PyArray_Type,&y1_obj, &PyArray_Type,&z1_obj, - &PyArray_Type,&weights1_obj, + &weights1_obj, &PyArray_Type,&x2_obj, &PyArray_Type,&y2_obj, &PyArray_Type,&z2_obj, - &PyArray_Type,&weights2_obj, + &weights2_obj, &(options.periodic), &(options.verbose), &(options.boxsize), @@ -2290,6 +2462,9 @@ static PyObject *countpairs_countpairs_s_mu(PyObject *self, PyObject *args, PyOb &(options.c_api_timer), &(options.instruction_set), &weighting_method_str, + &PyArray_Type,&pair_weight_obj, + &PyArray_Type,&sep_pair_weight_obj, + &attrs_pair_weight, &(options.bin_type)) ) { @@ -2341,29 +2516,12 @@ static PyObject *countpairs_countpairs_s_mu(PyObject *self, PyObject *args, PyOb size_t element_size; /* How many data points are there? And are they all of floating point type */ - const int64_t ND1 = check_dims_and_datatype(module, x1_obj, y1_obj, z1_obj, weights1_obj, &element_size); + const int64_t ND1 = check_dims_and_datatype(module, x1_obj, y1_obj, z1_obj, &element_size); if(ND1 == -1) { //Error has already been set -> simply return Py_RETURN_NONE; } - - int found_weights = weights1_obj == NULL ? 0 : PyArray_SHAPE(weights1_obj)[0]; struct extra_options extra = get_extra_options(weighting_method); - if(extra.weights0.num_weights > 0 && extra.weights0.num_weights != found_weights){ - char msg[1024]; - snprintf(msg, 1024, "ValueError: In %s: specified weighting method %s which requires %"PRId64" weight(s)-per-particle, but found %d weight(s) instead!\n", - __FUNCTION__, weighting_method_str, extra.weights0.num_weights, found_weights); - countpairs_error_out(module, msg); - Py_RETURN_NONE; - } - - if(extra.weights0.num_weights > 0 && found_weights > MAX_NUM_WEIGHTS){ - char msg[1024]; - snprintf(msg, 1024, "ValueError: In %s: Provided %d weights-per-particle, but the code was compiled with MAX_NUM_WEIGHTS=%d.\n", - __FUNCTION__, found_weights, MAX_NUM_WEIGHTS); - countpairs_error_out(module, msg); - Py_RETURN_NONE; - } int64_t ND2=ND1; if(autocorr == 0) { @@ -2382,7 +2540,7 @@ static PyObject *countpairs_countpairs_s_mu(PyObject *self, PyObject *args, PyOb } size_t element_size2; - ND2 = check_dims_and_datatype(module, x2_obj, y2_obj, z2_obj, weights2_obj, &element_size2); + ND2 = check_dims_and_datatype(module, x2_obj, y2_obj, z2_obj, &element_size2); if(ND2 == -1) { //Error has already been set -> simply return Py_RETURN_NONE; @@ -2401,19 +2559,12 @@ static PyObject *countpairs_countpairs_s_mu(PyObject *self, PyObject *args, PyOb PyObject *x1_array = PyArray_FromArray(x1_obj, NOTYPE_DESCR, requirements); PyObject *y1_array = PyArray_FromArray(y1_obj, NOTYPE_DESCR, requirements); PyObject *z1_array = PyArray_FromArray(z1_obj, NOTYPE_DESCR, requirements); - PyObject *weights1_array = NULL; - if(weights1_obj != NULL){ - weights1_array = PyArray_FromArray(weights1_obj, NOTYPE_DESCR, requirements); - } - PyObject *x2_array = NULL, *y2_array = NULL, *z2_array = NULL, *weights2_array = NULL; + PyObject *x2_array = NULL, *y2_array = NULL, *z2_array = NULL; if(autocorr == 0) { x2_array = PyArray_FromArray(x2_obj, NOTYPE_DESCR, requirements); y2_array = PyArray_FromArray(y2_obj, NOTYPE_DESCR, requirements); z2_array = PyArray_FromArray(z2_obj, NOTYPE_DESCR, requirements); - if(weights2_obj != NULL){ - weights2_array = PyArray_FromArray(weights2_obj, NOTYPE_DESCR, requirements); - } } if (x1_array == NULL || y1_array == NULL || z1_array == NULL || @@ -2421,12 +2572,10 @@ static PyObject *countpairs_countpairs_s_mu(PyObject *self, PyObject *args, PyOb Py_XDECREF(x1_array); Py_XDECREF(y1_array); Py_XDECREF(z1_array); - Py_XDECREF(weights1_array); Py_XDECREF(x2_array); Py_XDECREF(y2_array); Py_XDECREF(z2_array); - Py_XDECREF(weights2_array); char msg[1024]; snprintf(msg, 1024, "TypeError: In %s: Could not convert input to arrays of allowed floating point types (doubles or floats). Are you passing numpy arrays?", __FUNCTION__); @@ -2439,27 +2588,27 @@ static PyObject *countpairs_countpairs_s_mu(PyObject *self, PyObject *args, PyOb void *X1 = PyArray_DATA((PyArrayObject *) x1_array); void *Y1 = PyArray_DATA((PyArrayObject *) y1_array); void *Z1 = PyArray_DATA((PyArrayObject *) z1_array); - void *weights1=NULL; - if(weights1_array != NULL){ - weights1 = PyArray_DATA((PyArrayObject *) weights1_array); - } - void *X2 = NULL, *Y2 = NULL, *Z2 = NULL, *weights2=NULL; + if (weights1_obj != NULL) wstatus = check_weights(module, weights1_obj, &(extra.weights0), extra.weight_method, ND1, element_size); + + void *X2 = NULL, *Y2 = NULL, *Z2 = NULL; if(autocorr == 0) { X2 = PyArray_DATA((PyArrayObject *) x2_array); Y2 = PyArray_DATA((PyArrayObject *) y2_array); Z2 = PyArray_DATA((PyArrayObject *) z2_array); - if(weights2_array != NULL){ - weights2 = PyArray_DATA((PyArrayObject *) weights2_array); - } + + if (weights2_obj != NULL) wstatus = check_weights(module, weights2_obj, &(extra.weights1), extra.weight_method, ND2, element_size); } + wstatus = check_pair_weight(module, &(extra.pair_weight), sep_pair_weight_obj, pair_weight_obj, element_size, attrs_pair_weight); - /* Pack the weights into extra_options */ - for(int64_t w = 0; w < extra.weights0.num_weights; w++){ - extra.weights0.weights[w] = (char *) weights1 + w*ND1*element_size; - if(autocorr == 0){ - extra.weights1.weights[w] = (char *) weights2 + w*ND2*element_size; - } + if(wstatus != EXIT_SUCCESS) { + Py_RETURN_NONE; + } + binarray bins; + wstatus = check_binarray(module, &bins, bins_obj); + + if(wstatus != EXIT_SUCCESS) { + Py_RETURN_NONE; } NPY_BEGIN_THREADS_DEF; @@ -2472,7 +2621,7 @@ static PyObject *countpairs_countpairs_s_mu(PyObject *self, PyObject *args, PyOb ND2,X2,Y2,Z2, nthreads, autocorr, - binfile, + &bins, mu_max, nmu_bins, &results, @@ -2484,8 +2633,9 @@ static PyObject *countpairs_countpairs_s_mu(PyObject *self, PyObject *args, PyOb NPY_END_THREADS; /* Clean up. */ - Py_DECREF(x1_array);Py_DECREF(y1_array);Py_DECREF(z1_array);Py_XDECREF(weights1_array);//x1 should absolutely not be NULL - Py_XDECREF(x2_array);Py_XDECREF(y2_array);Py_XDECREF(z2_array);Py_XDECREF(weights2_array);//x2 might be NULL depending on value of autocorr + Py_DECREF(x1_array);Py_DECREF(y1_array);Py_DECREF(z1_array);//x1 should absolutely not be NULL + Py_XDECREF(x2_array);Py_XDECREF(y2_array);Py_XDECREF(z2_array);//x2 might be NULL depending on value of autocorr + free_binarray(&bins); if(status != EXIT_SUCCESS) { Py_RETURN_NONE; } @@ -2615,7 +2765,7 @@ static PyObject *countpairs_countspheres_vpf(PyObject *self, PyObject *args, PyO /* How many data points are there? And are they all of floating point type */ size_t element_size; - const int64_t ND1 = check_dims_and_datatype(module, x1_obj, y1_obj, z1_obj, NULL, &element_size); + const int64_t ND1 = check_dims_and_datatype(module, x1_obj, y1_obj, z1_obj, &element_size); if(ND1 == -1) { //Error has already been set -> simply return Py_RETURN_NONE; diff --git a/theory/python_bindings/call_correlation_functions.py b/theory/python_bindings/call_correlation_functions.py index 8b41379c..05e0f02b 100644 --- a/theory/python_bindings/call_correlation_functions.py +++ b/theory/python_bindings/call_correlation_functions.py @@ -17,6 +17,7 @@ raise from os.path import dirname, abspath, exists, splitext, join as pjoin +from os.path import exists as file_exists import time import numpy as np @@ -187,6 +188,49 @@ def read_fastfood_catalog(filename, return_dtype=None, need_header=None): raise IOError("Could not locate file {0}", filebase) +def get_edges(binfile): + """ + Helper function to return edges corresponding to ``binfile``. + + Parameters + ----------- + binfile : string or array-like + Expected to be a path to a bin file (two columns, lower and upper) or an array containing the bins. + + Returns + ------- + edges : array + """ + if isinstance(binfile, str): + if file_exists(binfile): + # The equivalent of read_binfile() in io.c + with open(binfile, 'r') as file: + binfile = [] + for iline, line in enumerate(file): + lowhi = line.split() + if len(lowhi) == 2: + low, hi = lowhi + if iline == 0: + binfile.append(low) + binfile.append(hi) + else: + break + else: + msg = "Could not find file = `{0}` containing the bins"\ + .format(binfile) + raise IOError(msg) + + # For a valid bin specifier, there must be at least 1 bin. + if len(binfile) >= 1: + binfile = np.array(binfile, dtype='f8') + binfile.sort() + return binfile + + msg = "Input `binfile` was not a valid array (>= 1 element)."\ + "Num elements = {0}".format(len(binfile)) + raise TypeError(msg) + + def main(): tstart = time.time() t0 = tstart @@ -201,6 +245,7 @@ def main(): pimax = 40.0 binfile = pjoin(dirname(abspath(_countpairs.__file__)), "../tests/", "bins") + binfile = get_edges(binfile) autocorr = 1 periodic = 1 numbins_to_print = 5 @@ -255,8 +300,8 @@ def main(): print("\nRunning 2-D correlation function DD(rp,pi)") results_DDrppi, _ = DDrppi(autocorr=autocorr, nthreads=nthreads, - pimax=pimax, binfile=binfile, + pimax=pimax, npibins=int(pimax), X1=x, Y1=y, Z1=z, weights1=w, X2=x, Y2=y, Z2=z, weights2=w, periodic=periodic, @@ -306,8 +351,8 @@ def main(): print("\nRunning 2-D projected correlation function wp(rp)") - results_wp, _, _ = wp(boxsize=boxsize, pimax=pimax, nthreads=nthreads, - binfile=binfile, X=x, Y=y, Z=z, + results_wp, _, _ = wp(boxsize=boxsize, nthreads=nthreads, + binfile=binfile, pimax=pimax, X=x, Y=y, Z=z, weights=w, weight_type='pair_product', verbose=True, output_rpavg=True) print("\n# ****** wp: first {0} bins ******* " diff --git a/theory/tests/Mr19_DD_nonperiodic b/theory/tests/Mr19_DD_nonperiodic index 645e06e0..5307f61d 100644 --- a/theory/tests/Mr19_DD_nonperiodic +++ b/theory/tests/Mr19_DD_nonperiodic @@ -1,14 +1,14 @@ - 325640 0.20357280 0.16753600 0.23875500 0.24973106 - 498414 0.29008372 0.23875500 0.34025100 0.24997331 - 769746 0.41363735 0.34025100 0.48489200 0.24934935 - 1170894 0.58869679 0.48489200 0.69102100 0.24848177 - 1704536 0.83796609 0.69102100 0.98477700 0.24899669 - 2411576 1.19351339 0.98477700 1.40341000 0.24956555 - 3505854 1.70506322 1.40341000 2.00000000 0.24989787 - 5739038 2.43951016 2.00000000 2.85020000 0.24977327 - 10793124 3.49086394 2.85020000 4.06184000 0.24965781 - 22749830 4.98471652 4.06184000 5.78853000 0.24988349 - 51059996 7.11666534 5.78853000 8.24925000 0.24992131 - 121883910 10.15844831 8.24925000 11.75600000 0.24958935 - 302985592 14.49068123 11.75600000 16.75360000 0.24975544 - 781177412 20.66896483 16.75360000 23.87550000 0.24967177 + 325640 0.20354069 0.16753600 0.23875500 0.24973106 + 498414 0.29007851 0.23875500 0.34025100 0.24997331 + 769746 0.41352625 0.34025100 0.48489200 0.24934935 + 1170894 0.58868152 0.48489200 0.69102100 0.24848177 + 1704536 0.83801282 0.69102100 0.98477700 0.24899669 + 2411576 1.19336802 0.98477700 1.40341000 0.24956555 + 3505854 1.70492207 1.40341000 2.00000000 0.24989787 + 5739038 2.43941741 2.00000000 2.85020000 0.24977327 + 10793124 3.49082629 2.85020000 4.06184000 0.24965781 + 22749830 4.98447139 4.06184000 5.78853000 0.24988349 + 51059996 7.11631672 5.78853000 8.24925000 0.24992131 + 121883910 10.15857537 8.24925000 11.75600000 0.24958935 + 302985592 14.49047804 11.75600000 16.75360000 0.24975544 + 781177412 20.66882316 16.75360000 23.87550000 0.24967177 diff --git a/theory/tests/Mr19_DD_periodic b/theory/tests/Mr19_DD_periodic index 209df059..8a50cb68 100644 --- a/theory/tests/Mr19_DD_periodic +++ b/theory/tests/Mr19_DD_periodic @@ -1,14 +1,14 @@ - 325832 0.20357600 0.16753600 0.23875500 0.24971724 - 498880 0.29008907 0.23875500 0.34025100 0.24996420 - 770944 0.41364618 0.34025100 0.48489200 0.24931388 - 1173536 0.58870591 0.48489200 0.69102100 0.24848228 - 1709944 0.83800167 0.69102100 0.98477700 0.24900882 - 2422830 1.19355898 0.98477700 1.40341000 0.24958498 - 3528698 1.70519922 1.40341000 2.00000000 0.24992957 - 5796092 2.43974248 2.00000000 2.85020000 0.24978845 - 10947552 3.49145413 2.85020000 4.06184000 0.24969650 - 23216926 4.98555858 4.06184000 5.78853000 0.24990470 - 52507764 7.11851095 5.78853000 8.24925000 0.24993541 - 126815898 10.16239251 8.24925000 11.75600000 0.24960042 - 320569752 14.49845428 11.75600000 16.75360000 0.24974869 - 846825238 20.68553473 16.75360000 23.87550000 0.24963279 + 325832 0.20354343 0.16753600 0.23875500 0.24971724 + 498880 0.29008327 0.23875500 0.34025100 0.24996420 + 770944 0.41353494 0.34025100 0.48489200 0.24931388 + 1173536 0.58869424 0.48489200 0.69102100 0.24848228 + 1709944 0.83805008 0.69102100 0.98477700 0.24900882 + 2422830 1.19342336 0.98477700 1.40341000 0.24958498 + 3528698 1.70505541 1.40341000 2.00000000 0.24992957 + 5796092 2.43964595 2.00000000 2.85020000 0.24978845 + 10947552 3.49139426 2.85020000 4.06184000 0.24969650 + 23216926 4.98527381 4.06184000 5.78853000 0.24990470 + 52507764 7.11819246 5.78853000 8.24925000 0.24993541 + 126815898 10.16253499 8.24925000 11.75600000 0.24960042 + 320569752 14.49814735 11.75600000 16.75360000 0.24974869 + 846825238 20.68519675 16.75360000 23.87550000 0.24963279 diff --git a/theory/tests/Mr19_DD_periodic_lin b/theory/tests/Mr19_DD_periodic_lin index 355760cc..55a29996 100644 --- a/theory/tests/Mr19_DD_periodic_lin +++ b/theory/tests/Mr19_DD_periodic_lin @@ -1,7 +1,7 @@ - 5863148 1.50451885 1.00000000 2.00000000 0.24978920 - 6952730 2.52057875 2.00000000 3.00000000 0.24972623 - 9133890 3.52428951 3.00000000 4.00000000 0.24968642 - 12057668 4.52153113 4.00000000 5.00000000 0.25009965 - 15363382 5.51893722 5.00000000 6.00000000 0.24978497 - 19118472 6.51709008 6.00000000 7.00000000 0.25013108 - 23324428 7.51609833 7.00000000 8.00000000 0.24981324 + 5863148 1.50454943 1.00000000 2.00000000 0.24978920 + 6952730 2.52039544 2.00000000 3.00000000 0.24972623 + 9133890 3.52404430 3.00000000 4.00000000 0.24968642 + 12057668 4.52154773 4.00000000 5.00000000 0.25009965 + 15363382 5.51902701 5.00000000 6.00000000 0.24978497 + 19118472 6.51735267 6.00000000 7.00000000 0.25013108 + 23324428 7.51594397 7.00000000 8.00000000 0.24981324 diff --git a/theory/tests/Mr19_DDrppi_nonperiodic b/theory/tests/Mr19_DDrppi_nonperiodic index c0842622..21bac5a7 100644 --- a/theory/tests/Mr19_DDrppi_nonperiodic +++ b/theory/tests/Mr19_DDrppi_nonperiodic @@ -1,560 +1,560 @@ - 488066 0.20310924 -0.62204752 1.00000000 0.24862902 - 41656 0.20515348 -0.62204752 2.00000000 0.24644309 - 16184 0.20510110 -0.62204752 3.00000000 0.24889319 - 10584 0.20499838 -0.62204752 4.00000000 0.24322107 - 8396 0.20502102 -0.62204752 5.00000000 0.24629021 - 6982 0.20473999 -0.62204752 6.00000000 0.25120813 - 6170 0.20499993 -0.62204752 7.00000000 0.24544327 - 5848 0.20417910 -0.62204752 8.00000000 0.24921037 - 5406 0.20533653 -0.62204752 9.00000000 0.25491629 - 5382 0.20484839 -0.62204752 10.00000000 0.25367502 - 5030 0.20529510 -0.62204752 11.00000000 0.24666883 - 4656 0.20487463 -0.62204752 12.00000000 0.24898980 - 4570 0.20488817 -0.62204752 13.00000000 0.24827068 - 4364 0.20480464 -0.62204752 14.00000000 0.24868488 - 4366 0.20534010 -0.62204752 15.00000000 0.25468828 - 4482 0.20555866 -0.62204752 16.00000000 0.24245425 - 4438 0.20528244 -0.62204752 17.00000000 0.24754097 - 4218 0.20516855 -0.62204752 18.00000000 0.24541094 - 4058 0.20522065 -0.62204752 19.00000000 0.25567387 - 3936 0.20501489 -0.62204752 20.00000000 0.25281715 - 3820 0.20559275 -0.62204752 21.00000000 0.25082978 - 3856 0.20559308 -0.62204752 22.00000000 0.24943361 - 3780 0.20514094 -0.62204752 23.00000000 0.25048518 - 3782 0.20515136 -0.62204752 24.00000000 0.24588815 - 3774 0.20565223 -0.62204752 25.00000000 0.24635308 - 3774 0.20497108 -0.62204752 26.00000000 0.24768164 - 3954 0.20588577 -0.62204752 27.00000000 0.25124951 - 3642 0.20516531 -0.62204752 28.00000000 0.24174862 - 3548 0.20466417 -0.62204752 29.00000000 0.24146525 - 3610 0.20514916 -0.62204752 30.00000000 0.24422508 - 3574 0.20637796 -0.62204752 31.00000000 0.24899307 - 3628 0.20498063 -0.62204752 32.00000000 0.25439770 - 3696 0.20544617 -0.62204752 33.00000000 0.24118418 - 3390 0.20413314 -0.62204752 34.00000000 0.24123325 - 3602 0.20513065 -0.62204752 35.00000000 0.25898545 - 3016 0.20511593 -0.62204752 36.00000000 0.25540781 - 3306 0.20566682 -0.62204752 37.00000000 0.25245662 - 3168 0.20640998 -0.62204752 38.00000000 0.25493572 - 3442 0.20499133 -0.62204752 39.00000000 0.25385113 - 3294 0.20429680 -0.62204752 40.00000000 0.24518968 - 690488 0.28933927 -0.46820059 1.00000000 0.24912509 - 81848 0.29226280 -0.46820059 2.00000000 0.24994148 - 32496 0.29219256 -0.46820059 3.00000000 0.25182244 - 21932 0.29236630 -0.46820059 4.00000000 0.24748303 - 17028 0.29248268 -0.46820059 5.00000000 0.25078326 - 14666 0.29223699 -0.46820059 6.00000000 0.25041049 - 12508 0.29198361 -0.46820059 7.00000000 0.25253244 - 11970 0.29269541 -0.46820059 8.00000000 0.25440571 - 10840 0.29270877 -0.46820059 9.00000000 0.24797036 - 10616 0.29247716 -0.46820059 10.00000000 0.24527902 - 10238 0.29171512 -0.46820059 11.00000000 0.25056839 - 9870 0.29262776 -0.46820059 12.00000000 0.24874245 - 9132 0.29181334 -0.46820059 13.00000000 0.24704608 - 9040 0.29249533 -0.46820059 14.00000000 0.24495873 - 8892 0.29231837 -0.46820059 15.00000000 0.24763526 - 8808 0.29188853 -0.46820059 16.00000000 0.24343500 - 8646 0.29278542 -0.46820059 17.00000000 0.24526983 - 8488 0.29341445 -0.46820059 18.00000000 0.24559173 - 8180 0.29281966 -0.46820059 19.00000000 0.24738499 - 8060 0.29333716 -0.46820059 20.00000000 0.25094053 - 7952 0.29261424 -0.46820059 21.00000000 0.24686670 - 7772 0.29258534 -0.46820059 22.00000000 0.24928048 - 7742 0.29212003 -0.46820059 23.00000000 0.25520090 - 7418 0.29248385 -0.46820059 24.00000000 0.25493448 - 7524 0.29185738 -0.46820059 25.00000000 0.24997583 - 7908 0.29221381 -0.46820059 26.00000000 0.24701805 - 7526 0.29222106 -0.46820059 27.00000000 0.24174406 - 7408 0.29301788 -0.46820059 28.00000000 0.24805010 - 7634 0.29206081 -0.46820059 29.00000000 0.24874757 - 7030 0.29221267 -0.46820059 30.00000000 0.25114544 - 6898 0.29214415 -0.46820059 31.00000000 0.23956873 - 7140 0.29194696 -0.46820059 32.00000000 0.25353912 - 7334 0.29173910 -0.46820059 33.00000000 0.26264129 - 6868 0.29230466 -0.46820059 34.00000000 0.25307358 - 7336 0.29285130 -0.46820059 35.00000000 0.25374737 - 6696 0.29254131 -0.46820059 36.00000000 0.25724889 - 6846 0.29274051 -0.46820059 37.00000000 0.25375913 - 6740 0.29295381 -0.46820059 38.00000000 0.25362796 - 6854 0.29333755 -0.46820059 39.00000000 0.25576816 - 6844 0.29295679 -0.46820059 40.00000000 0.25067906 - 950060 0.41181555 -0.31435498 1.00000000 0.24833178 - 159628 0.41623083 -0.31435498 2.00000000 0.24884199 - 66576 0.41640999 -0.31435498 3.00000000 0.25107473 - 44234 0.41680080 -0.31435498 4.00000000 0.24733408 - 34540 0.41673201 -0.31435498 5.00000000 0.25261616 - 29238 0.41652408 -0.31435498 6.00000000 0.24805261 - 26060 0.41615624 -0.31435498 7.00000000 0.25258914 - 23838 0.41708525 -0.31435498 8.00000000 0.24862818 - 22710 0.41681135 -0.31435498 9.00000000 0.25142248 - 21212 0.41727034 -0.31435498 10.00000000 0.24661018 - 20614 0.41735860 -0.31435498 11.00000000 0.24405571 - 20208 0.41669460 -0.31435498 12.00000000 0.25096407 - 18940 0.41705626 -0.31435498 13.00000000 0.25029670 - 18692 0.41623154 -0.31435498 14.00000000 0.25296175 - 17796 0.41796446 -0.31435498 15.00000000 0.24538758 - 17594 0.41730982 -0.31435498 16.00000000 0.25179804 - 17316 0.41666165 -0.31435498 17.00000000 0.24883526 - 17678 0.41643928 -0.31435498 18.00000000 0.25279558 - 17098 0.41744294 -0.31435498 19.00000000 0.24608772 - 16642 0.41718042 -0.31435498 20.00000000 0.24559283 - 16286 0.41749175 -0.31435498 21.00000000 0.24326962 - 15772 0.41587357 -0.31435498 22.00000000 0.24572159 - 15486 0.41627728 -0.31435498 23.00000000 0.24639672 - 15194 0.41739176 -0.31435498 24.00000000 0.25432365 - 14948 0.41641151 -0.31435498 25.00000000 0.24575842 - 15822 0.41759882 -0.31435498 26.00000000 0.24983822 - 15476 0.41771740 -0.31435498 27.00000000 0.25101266 - 15226 0.41649567 -0.31435498 28.00000000 0.24987395 - 14980 0.41680746 -0.31435498 29.00000000 0.24956674 - 14706 0.41753662 -0.31435498 30.00000000 0.24572517 - 14750 0.41741890 -0.31435498 31.00000000 0.24360372 - 14444 0.41666869 -0.31435498 32.00000000 0.24662189 - 14592 0.41643682 -0.31435498 33.00000000 0.24928189 - 13964 0.41648887 -0.31435498 34.00000000 0.24851535 - 14928 0.41598013 -0.31435498 35.00000000 0.24918344 - 13662 0.41645874 -0.31435498 36.00000000 0.25614598 - 13806 0.41789040 -0.31435498 37.00000000 0.25473619 - 14004 0.41796474 -0.31435498 38.00000000 0.25323752 - 13554 0.41648767 -0.31435498 39.00000000 0.25097167 - 13522 0.41745157 -0.31435498 40.00000000 0.24553638 - 1232470 0.58561130 -0.16050875 1.00000000 0.24922801 - 300484 0.59213577 -0.16050875 2.00000000 0.24914132 - 132834 0.59321183 -0.16050875 3.00000000 0.25093564 - 89308 0.59388802 -0.16050875 4.00000000 0.24982603 - 70780 0.59379977 -0.16050875 5.00000000 0.25161201 - 58652 0.59406236 -0.16050875 6.00000000 0.25178867 - 53712 0.59364869 -0.16050875 7.00000000 0.25149526 - 49146 0.59422386 -0.16050875 8.00000000 0.24766905 - 45854 0.59443366 -0.16050875 9.00000000 0.24935384 - 43406 0.59425597 -0.16050875 10.00000000 0.24806177 - 42852 0.59346452 -0.16050875 11.00000000 0.24705023 - 40028 0.59309235 -0.16050875 12.00000000 0.24918508 - 39434 0.59397149 -0.16050875 13.00000000 0.25011780 - 36800 0.59456959 -0.16050875 14.00000000 0.25083808 - 36580 0.59401096 -0.16050875 15.00000000 0.24953244 - 36080 0.59307251 -0.16050875 16.00000000 0.25152013 - 34974 0.59428367 -0.16050875 17.00000000 0.25101102 - 35152 0.59409626 -0.16050875 18.00000000 0.24905663 - 33814 0.59337717 -0.16050875 19.00000000 0.24437216 - 33398 0.59386038 -0.16050875 20.00000000 0.24930690 - 32126 0.59325358 -0.16050875 21.00000000 0.25077099 - 31864 0.59453247 -0.16050875 22.00000000 0.24974047 - 32108 0.59420653 -0.16050875 23.00000000 0.24787806 - 31094 0.59436798 -0.16050875 24.00000000 0.25480197 - 30316 0.59470014 -0.16050875 25.00000000 0.24866108 - 31038 0.59481956 -0.16050875 26.00000000 0.25002495 - 31400 0.59339398 -0.16050875 27.00000000 0.24923410 - 30978 0.59291050 -0.16050875 28.00000000 0.25071048 - 29708 0.59370046 -0.16050875 29.00000000 0.25130391 - 29562 0.59379915 -0.16050875 30.00000000 0.24378476 - 29804 0.59482044 -0.16050875 31.00000000 0.24924228 - 29600 0.59450704 -0.16050875 32.00000000 0.24606868 - 29508 0.59382304 -0.16050875 33.00000000 0.25109106 - 28736 0.59439308 -0.16050875 34.00000000 0.24963482 - 29422 0.59476830 -0.16050875 35.00000000 0.25388781 - 27698 0.59397277 -0.16050875 36.00000000 0.25077457 - 28620 0.59341531 -0.16050875 37.00000000 0.25422474 - 28558 0.59366832 -0.16050875 38.00000000 0.24941147 - 28188 0.59326143 -0.16050875 39.00000000 0.25157486 - 28532 0.59453417 -0.16050875 40.00000000 0.25369103 - 1484528 0.83293229 -0.00666210 1.00000000 0.24983292 - 524110 0.84228616 -0.00666210 2.00000000 0.24961068 - 260870 0.84559664 -0.00666210 3.00000000 0.25028967 - 179354 0.84619652 -0.00666210 4.00000000 0.25001410 - 141384 0.84644534 -0.00666210 5.00000000 0.25127892 - 120300 0.84621711 -0.00666210 6.00000000 0.25039144 - 109118 0.84712315 -0.00666210 7.00000000 0.24977455 - 100084 0.84605504 -0.00666210 8.00000000 0.25139763 - 93468 0.84585700 -0.00666210 9.00000000 0.25271574 - 88806 0.84616756 -0.00666210 10.00000000 0.25154091 - 84934 0.84628779 -0.00666210 11.00000000 0.24844611 - 80674 0.84654152 -0.00666210 12.00000000 0.24961746 - 78158 0.84543098 -0.00666210 13.00000000 0.24858575 - 76320 0.84668225 -0.00666210 14.00000000 0.25051655 - 75410 0.84627296 -0.00666210 15.00000000 0.25030395 - 72028 0.84691972 -0.00666210 16.00000000 0.25062788 - 71260 0.84626779 -0.00666210 17.00000000 0.24711020 - 71654 0.84575233 -0.00666210 18.00000000 0.24625706 - 69146 0.84677758 -0.00666210 19.00000000 0.24927436 - 68042 0.84694813 -0.00666210 20.00000000 0.24883677 - 64988 0.84650248 -0.00666210 21.00000000 0.24891016 - 64500 0.84574491 -0.00666210 22.00000000 0.24965020 - 62740 0.84548614 -0.00666210 23.00000000 0.24738241 - 62570 0.84589696 -0.00666210 24.00000000 0.25109102 - 63794 0.84678004 -0.00666210 25.00000000 0.24704819 - 64028 0.84702227 -0.00666210 26.00000000 0.24702327 - 63218 0.84521263 -0.00666210 27.00000000 0.24804053 - 61796 0.84709259 -0.00666210 28.00000000 0.24660102 - 60630 0.84608960 -0.00666210 29.00000000 0.24969950 - 60286 0.84698559 -0.00666210 30.00000000 0.24774074 - 60150 0.84635635 -0.00666210 31.00000000 0.24632516 - 59784 0.84649249 -0.00666210 32.00000000 0.25023691 - 60752 0.84616048 -0.00666210 33.00000000 0.24990863 - 59716 0.84616937 -0.00666210 34.00000000 0.25045639 - 58508 0.84623414 -0.00666210 35.00000000 0.24825238 - 57910 0.84670461 -0.00666210 36.00000000 0.24689101 - 58016 0.84728480 -0.00666210 37.00000000 0.25387123 - 57020 0.84535935 -0.00666210 38.00000000 0.25017714 - 57460 0.84610865 -0.00666210 39.00000000 0.25104451 - 56152 0.84586591 -0.00666210 40.00000000 0.25127462 - 1675430 1.18509653 0.14718457 1.00000000 0.25002042 - 858104 1.19751544 0.14718457 2.00000000 0.24903370 - 496024 1.20331951 0.14718457 3.00000000 0.25065453 - 355698 1.20519881 0.14718457 4.00000000 0.24990197 - 287554 1.20617336 0.14718457 5.00000000 0.24978707 - 244136 1.20716344 0.14718457 6.00000000 0.25029429 - 220384 1.20690966 0.14718457 7.00000000 0.25182298 - 203454 1.20541781 0.14718457 8.00000000 0.25225560 - 190224 1.20748867 0.14718457 9.00000000 0.25081780 - 179106 1.20617059 0.14718457 10.00000000 0.24986073 - 173584 1.20609855 0.14718457 11.00000000 0.25086804 - 165744 1.20587319 0.14718457 12.00000000 0.24816570 - 157190 1.20646161 0.14718457 13.00000000 0.24942323 - 153508 1.20660421 0.14718457 14.00000000 0.24998197 - 151138 1.20477867 0.14718457 15.00000000 0.24903853 - 150262 1.20552909 0.14718457 16.00000000 0.25049400 - 144564 1.20589137 0.14718457 17.00000000 0.25003217 - 143426 1.20584660 0.14718457 18.00000000 0.24717809 - 140772 1.20655079 0.14718457 19.00000000 0.24935717 - 138388 1.20661225 0.14718457 20.00000000 0.24778285 - 133116 1.20637912 0.14718457 21.00000000 0.24901850 - 131838 1.20638949 0.14718457 22.00000000 0.24830120 - 129140 1.20684294 0.14718457 23.00000000 0.25155168 - 129212 1.20760927 0.14718457 24.00000000 0.25155096 - 129946 1.20477506 0.14718457 25.00000000 0.24986732 - 129500 1.20689946 0.14718457 26.00000000 0.24789908 - 126744 1.20533954 0.14718457 27.00000000 0.24656704 - 125340 1.20637055 0.14718457 28.00000000 0.24910829 - 123728 1.20573944 0.14718457 29.00000000 0.25028064 - 125460 1.20557192 0.14718457 30.00000000 0.25068498 - 123022 1.20661059 0.14718457 31.00000000 0.25015088 - 122856 1.20774565 0.14718457 32.00000000 0.24989885 - 123964 1.20580025 0.14718457 33.00000000 0.25201972 - 121862 1.20654057 0.14718457 34.00000000 0.25036606 - 119428 1.20601702 0.14718457 35.00000000 0.25026944 - 118562 1.20627478 0.14718457 36.00000000 0.25084118 - 117098 1.20586914 0.14718457 37.00000000 0.25143175 - 116776 1.20576573 0.14718457 38.00000000 0.24801131 - 117152 1.20604291 0.14718457 39.00000000 0.24954702 - 115972 1.20665253 0.14718457 40.00000000 0.24857619 - 1870662 1.69082136 0.30103000 1.00000000 0.24971767 - 1297150 1.70323623 0.30103000 2.00000000 0.25016973 - 891228 1.71189003 0.30103000 3.00000000 0.25064566 - 689300 1.71571020 0.30103000 4.00000000 0.24970082 - 573700 1.71805844 0.30103000 5.00000000 0.24968775 - 498064 1.71800012 0.30103000 6.00000000 0.25027251 - 445852 1.71768815 0.30103000 7.00000000 0.25077361 - 409260 1.71896131 0.30103000 8.00000000 0.25130175 - 383072 1.71908845 0.30103000 9.00000000 0.25063327 - 363976 1.71905492 0.30103000 10.00000000 0.24999499 - 347298 1.71869344 0.30103000 11.00000000 0.25100385 - 333474 1.71935379 0.30103000 12.00000000 0.25046305 - 323592 1.72016824 0.30103000 13.00000000 0.24870152 - 314114 1.71962592 0.30103000 14.00000000 0.24997327 - 309480 1.71876509 0.30103000 15.00000000 0.24916712 - 298306 1.71753418 0.30103000 16.00000000 0.25042621 - 294648 1.71938787 0.30103000 17.00000000 0.24933414 - 292062 1.71855703 0.30103000 18.00000000 0.24792975 - 285548 1.71783455 0.30103000 19.00000000 0.24864470 - 281186 1.71847411 0.30103000 20.00000000 0.24843790 - 275924 1.71992986 0.30103000 21.00000000 0.24825741 - 270010 1.71875506 0.30103000 22.00000000 0.25001121 - 267368 1.72018530 0.30103000 23.00000000 0.24882364 - 263948 1.71948562 0.30103000 24.00000000 0.25179902 - 264220 1.72000471 0.30103000 25.00000000 0.24946642 - 259888 1.71847698 0.30103000 26.00000000 0.25085421 - 256314 1.71870132 0.30103000 27.00000000 0.24731906 - 253588 1.71956572 0.30103000 28.00000000 0.24829300 - 250690 1.71801604 0.30103000 29.00000000 0.25014652 - 250134 1.71822240 0.30103000 30.00000000 0.24930812 - 249316 1.71833588 0.30103000 31.00000000 0.24852075 - 246650 1.71964986 0.30103000 32.00000000 0.25096085 - 248636 1.71876264 0.30103000 33.00000000 0.25216652 - 250742 1.71899475 0.30103000 34.00000000 0.24980349 - 242944 1.71995384 0.30103000 35.00000000 0.24973254 - 240530 1.71903733 0.30103000 36.00000000 0.25096121 - 237742 1.71915999 0.30103000 37.00000000 0.25140322 - 236574 1.72085763 0.30103000 38.00000000 0.24957064 - 236892 1.71840501 0.30103000 39.00000000 0.24879435 - 239110 1.72050702 0.30103000 40.00000000 0.25047956 - 2251464 2.41654244 0.45487534 1.00000000 0.24970356 - 1901682 2.42611136 0.45487534 2.00000000 0.24937068 - 1530076 2.43612177 0.45487534 3.00000000 0.24950605 - 1270792 2.44293513 0.45487534 4.00000000 0.25064657 - 1091784 2.44521181 0.45487534 5.00000000 0.24962964 - 965796 2.44659612 0.45487534 6.00000000 0.25069837 - 877974 2.44805185 0.45487534 7.00000000 0.25212149 - 816210 2.44837106 0.45487534 8.00000000 0.25045662 - 775812 2.44955999 0.45487534 9.00000000 0.24950729 - 731126 2.45052032 0.45487534 10.00000000 0.25058722 - 704440 2.45008777 0.45487534 11.00000000 0.24997575 - 673994 2.45046126 0.45487534 12.00000000 0.25029407 - 658064 2.44963749 0.45487534 13.00000000 0.24987866 - 643804 2.45126117 0.45487534 14.00000000 0.25109674 - 620562 2.44793293 0.45487534 15.00000000 0.25046503 - 601610 2.45110119 0.45487534 16.00000000 0.25047061 - 594224 2.44821183 0.45487534 17.00000000 0.24995875 - 583284 2.45007393 0.45487534 18.00000000 0.24947189 - 572884 2.45027592 0.45487534 19.00000000 0.24793919 - 563004 2.45077661 0.45487534 20.00000000 0.24904056 - 555688 2.44947843 0.45487534 21.00000000 0.24990397 - 548646 2.45000495 0.45487534 22.00000000 0.24969507 - 541700 2.44911626 0.45487534 23.00000000 0.24993744 - 534006 2.44981301 0.45487534 24.00000000 0.24948378 - 526276 2.45072671 0.45487534 25.00000000 0.24988792 - 524392 2.45060646 0.45487534 26.00000000 0.24942196 - 520044 2.45132949 0.45487534 27.00000000 0.24944164 - 518442 2.45156016 0.45487534 28.00000000 0.24946064 - 513280 2.45039187 0.45487534 29.00000000 0.24954291 - 509286 2.44954888 0.45487534 30.00000000 0.24987557 - 500696 2.45062169 0.45487534 31.00000000 0.25068931 - 502032 2.44906742 0.45487534 32.00000000 0.24929922 - 506994 2.44929531 0.45487534 33.00000000 0.24966468 - 505218 2.45073151 0.45487534 34.00000000 0.24873334 - 499788 2.45006383 0.45487534 35.00000000 0.24923896 - 487862 2.44990845 0.45487534 36.00000000 0.24953901 - 478718 2.45114631 0.45487534 37.00000000 0.25021753 - 488796 2.44986759 0.45487534 38.00000000 0.24887479 - 483212 2.45171897 0.45487534 39.00000000 0.24984431 - 489378 2.44972493 0.45487534 40.00000000 0.25058841 - 3039044 3.45752630 0.60872281 1.00000000 0.24984903 - 2841072 3.46364811 0.60872281 2.00000000 0.24939205 - 2555866 3.46914645 0.60872281 3.00000000 0.24946850 - 2271188 3.47692819 0.60872281 4.00000000 0.24975617 - 2027130 3.48054529 0.60872281 5.00000000 0.24958630 - 1854676 3.48467182 0.60872281 6.00000000 0.25054469 - 1711120 3.48459070 0.60872281 7.00000000 0.25024542 - 1605720 3.48696031 0.60872281 8.00000000 0.24957439 - 1531824 3.48593475 0.60872281 9.00000000 0.24946248 - 1452456 3.48617354 0.60872281 10.00000000 0.24966616 - 1395230 3.48801409 0.60872281 11.00000000 0.25049299 - 1366718 3.48992208 0.60872281 12.00000000 0.24979299 - 1332652 3.48808391 0.60872281 13.00000000 0.25054593 - 1293718 3.48753289 0.60872281 14.00000000 0.24978254 - 1252538 3.49158449 0.60872281 15.00000000 0.24974893 - 1232860 3.49212162 0.60872281 16.00000000 0.25015399 - 1194108 3.49182112 0.60872281 17.00000000 0.24966480 - 1177674 3.48956555 0.60872281 18.00000000 0.24942294 - 1161848 3.49019888 0.60872281 19.00000000 0.24932170 - 1142956 3.48983878 0.60872281 20.00000000 0.24867916 - 1120930 3.49096445 0.60872281 21.00000000 0.24958675 - 1095858 3.49045551 0.60872281 22.00000000 0.24883556 - 1093278 3.49153998 0.60872281 23.00000000 0.24905864 - 1091622 3.49228231 0.60872281 24.00000000 0.24848889 - 1077690 3.49261381 0.60872281 25.00000000 0.24772117 - 1068126 3.49308462 0.60872281 26.00000000 0.24921326 - 1060034 3.49187055 0.60872281 27.00000000 0.25006194 - 1050102 3.49131915 0.60872281 28.00000000 0.24966617 - 1041288 3.49057983 0.60872281 29.00000000 0.24851425 - 1025578 3.49047264 0.60872281 30.00000000 0.24960173 - 1029406 3.49085472 0.60872281 31.00000000 0.24939126 - 1027940 3.49294981 0.60872281 32.00000000 0.24936535 - 1018448 3.49271262 0.60872281 33.00000000 0.24943721 - 1019256 3.49224770 0.60872281 34.00000000 0.24872604 - 1005136 3.49000943 0.60872281 35.00000000 0.25050740 - 994212 3.49127077 0.60872281 36.00000000 0.25015757 - 996190 3.49365693 0.60872281 37.00000000 0.24947436 - 997526 3.49174852 0.60872281 38.00000000 0.24978132 - 984510 3.48950039 0.60872281 39.00000000 0.24978987 - 979020 3.48960128 0.60872281 40.00000000 0.24999570 - 4567796 4.93672635 0.76256829 1.00000000 0.25029132 - 4427858 4.93870663 0.76256829 2.00000000 0.24967222 - 4182686 4.94545244 0.76256829 3.00000000 0.24994724 - 3924520 4.94885556 0.76256829 4.00000000 0.24982136 - 3682810 4.95577581 0.76256829 5.00000000 0.24963796 - 3456384 4.96324987 0.76256829 6.00000000 0.25017016 - 3262138 4.96672950 0.76256829 7.00000000 0.25009395 - 3102084 4.96718238 0.76256829 8.00000000 0.24997568 - 2980056 4.96867417 0.76256829 9.00000000 0.24924631 - 2870676 4.97228046 0.76256829 10.00000000 0.24948064 - 2773652 4.97473135 0.76256829 11.00000000 0.25033729 - 2689234 4.97263243 0.76256829 12.00000000 0.25010417 - 2583470 4.97211049 0.76256829 13.00000000 0.24984170 - 2541248 4.97139751 0.76256829 14.00000000 0.24989299 - 2507826 4.97336937 0.76256829 15.00000000 0.24967652 - 2470720 4.97065226 0.76256829 16.00000000 0.24984234 - 2406142 4.97277171 0.76256829 17.00000000 0.25003811 - 2357664 4.97710799 0.76256829 18.00000000 0.24951489 - 2329110 4.97613682 0.76256829 19.00000000 0.24984131 - 2303846 4.97522409 0.76256829 20.00000000 0.24970952 - 2267244 4.97462431 0.76256829 21.00000000 0.24907479 - 2237286 4.97677784 0.76256829 22.00000000 0.24905021 - 2217696 4.97368028 0.76256829 23.00000000 0.24912571 - 2193432 4.97404906 0.76256829 24.00000000 0.24902201 - 2180198 4.97456479 0.76256829 25.00000000 0.24906622 - 2171404 4.97384653 0.76256829 26.00000000 0.24914832 - 2142872 4.97660389 0.76256829 27.00000000 0.25013777 - 2117116 4.97483752 0.76256829 28.00000000 0.24971484 - 2106970 4.97529325 0.76256829 29.00000000 0.24913853 - 2104890 4.97547499 0.76256829 30.00000000 0.24902063 - 2085792 4.97519830 0.76256829 31.00000000 0.24965767 - 2082226 4.97359891 0.76256829 32.00000000 0.24919215 - 2062542 4.97262674 0.76256829 33.00000000 0.24982996 - 2056680 4.97483829 0.76256829 34.00000000 0.24983194 - 2051102 4.97699552 0.76256829 35.00000000 0.24939625 - 2038782 4.97484052 0.76256829 36.00000000 0.24953737 - 2016986 4.97368675 0.76256829 37.00000000 0.25012636 - 2010090 4.97250814 0.76256829 38.00000000 0.24979679 - 2000472 4.97472973 0.76256829 39.00000000 0.24981722 - 1978086 4.97937045 0.76256829 40.00000000 0.24984606 - 7235400 7.04749808 0.91641447 1.00000000 0.24955808 - 7140926 7.04894289 0.91641447 2.00000000 0.24954284 - 6949992 7.05090183 0.91641447 3.00000000 0.24944643 - 6704024 7.05940058 0.91641447 4.00000000 0.24991163 - 6477100 7.06314780 0.91641447 5.00000000 0.24930254 - 6271054 7.06501301 0.91641447 6.00000000 0.24930353 - 6070382 7.07249216 0.91641447 7.00000000 0.24977227 - 5889678 7.07357958 0.91641447 8.00000000 0.24997262 - 5683152 7.07941621 0.91641447 9.00000000 0.24946818 - 5519304 7.07793852 0.91641447 10.00000000 0.25005375 - 5376066 7.08008085 0.91641447 11.00000000 0.25052339 - 5268028 7.08034382 0.91641447 12.00000000 0.25065556 - 5155390 7.08266018 0.91641447 13.00000000 0.24989409 - 5051834 7.08444087 0.91641447 14.00000000 0.25003470 - 4948794 7.08487798 0.91641447 15.00000000 0.24993633 - 4840554 7.08663758 0.91641447 16.00000000 0.24952679 - 4758300 7.08633279 0.91641447 17.00000000 0.24981708 - 4733204 7.08527848 0.91641447 18.00000000 0.25025955 - 4632604 7.08679096 0.91641447 19.00000000 0.25000269 - 4569544 7.08410919 0.91641447 20.00000000 0.24954477 - 4547970 7.08340872 0.91641447 21.00000000 0.24945787 - 4536656 7.08649890 0.91641447 22.00000000 0.24902216 - 4477150 7.08625586 0.91641447 23.00000000 0.24890637 - 4436364 7.08917968 0.91641447 24.00000000 0.24896320 - 4394066 7.08891235 0.91641447 25.00000000 0.24937086 - 4369794 7.08754615 0.91641447 26.00000000 0.24901369 - 4320938 7.08675630 0.91641447 27.00000000 0.24938574 - 4289128 7.08630375 0.91641447 28.00000000 0.24970748 - 4264190 7.08990983 0.91641447 29.00000000 0.24907910 - 4249654 7.09059064 0.91641447 30.00000000 0.24979368 - 4240100 7.08861085 0.91641447 31.00000000 0.24879169 - 4186986 7.09228197 0.91641447 32.00000000 0.24938162 - 4151516 7.09105372 0.91641447 33.00000000 0.24910409 - 4138820 7.09109931 0.91641447 34.00000000 0.24990497 - 4117338 7.08899927 0.91641447 35.00000000 0.24981761 - 4094974 7.08710524 0.91641447 36.00000000 0.24963326 - 4069358 7.08981296 0.91641447 37.00000000 0.24906225 - 4032766 7.08815420 0.91641447 38.00000000 0.24887849 - 4007252 7.08868429 0.91641447 39.00000000 0.24919490 - 4018610 7.09147029 0.91641447 40.00000000 0.24943567 - 12196310 10.05744895 1.07025958 1.00000000 0.24945103 - 12063396 10.06150401 1.07025958 2.00000000 0.24928748 - 11896560 10.06420320 1.07025958 3.00000000 0.24985139 - 11709610 10.06218963 1.07025958 4.00000000 0.24977042 - 11515264 10.06506762 1.07025958 5.00000000 0.24930995 - 11286580 10.06882765 1.07025958 6.00000000 0.24972403 - 11095782 10.07026249 1.07025958 7.00000000 0.24944027 - 10907516 10.07675286 1.07025958 8.00000000 0.24974351 - 10685496 10.08156678 1.07025958 9.00000000 0.24976423 - 10476354 10.08340804 1.07025958 10.00000000 0.24980631 - 10293364 10.08629782 1.07025958 11.00000000 0.25012956 - 10158874 10.09132439 1.07025958 12.00000000 0.25006389 - 10016372 10.09005345 1.07025958 13.00000000 0.24998586 - 9881726 10.08893422 1.07025958 14.00000000 0.25030396 - 9758548 10.09361556 1.07025958 15.00000000 0.24999525 - 9617166 10.09758742 1.07025958 16.00000000 0.24968328 - 9510608 10.09598951 1.07025958 17.00000000 0.24964094 - 9372566 10.09791528 1.07025958 18.00000000 0.24956256 - 9267412 10.09998293 1.07025958 19.00000000 0.24921663 - 9160708 10.09696934 1.07025958 20.00000000 0.24956671 - 9041116 10.09966847 1.07025958 21.00000000 0.24917121 - 8971432 10.09724607 1.07025958 22.00000000 0.24960361 - 8891112 10.09565172 1.07025958 23.00000000 0.24944666 - 8843450 10.09677906 1.07025958 24.00000000 0.24972881 - 8760468 10.09446035 1.07025958 25.00000000 0.24956207 - 8700134 10.10094452 1.07025958 26.00000000 0.24967276 - 8623820 10.09884074 1.07025958 27.00000000 0.24939659 - 8547080 10.09802962 1.07025958 28.00000000 0.24913816 - 8533516 10.09874572 1.07025958 29.00000000 0.24992405 - 8486064 10.09972000 1.07025958 30.00000000 0.24943433 - 8425576 10.09934263 1.07025958 31.00000000 0.24934186 - 8386182 10.09908592 1.07025958 32.00000000 0.24936056 - 8368456 10.09509776 1.07025958 33.00000000 0.24933513 - 8340504 10.09656248 1.07025958 34.00000000 0.24943496 - 8294620 10.10109171 1.07025958 35.00000000 0.24947963 - 8245808 10.10227366 1.07025958 36.00000000 0.24928724 - 8211084 10.10461451 1.07025958 37.00000000 0.24951088 - 8135458 10.10352288 1.07025958 38.00000000 0.24953246 - 8095396 10.10325503 1.07025958 39.00000000 0.24945591 - 8078592 10.10219803 1.07025958 40.00000000 0.24932602 - 21155168 14.34432670 1.22410814 1.00000000 0.24915834 - 21056670 14.34443519 1.22410814 2.00000000 0.24959785 - 20945530 14.34602705 1.22410814 3.00000000 0.24940707 - 20781426 14.35165698 1.22410814 4.00000000 0.24985144 - 20599158 14.35270599 1.22410814 5.00000000 0.24973810 - 20421564 14.35564219 1.22410814 6.00000000 0.24963322 - 20173180 14.35829547 1.22410814 7.00000000 0.24963945 - 20013452 14.36169142 1.22410814 8.00000000 0.24959240 - 19881618 14.36347098 1.22410814 9.00000000 0.24951527 - 19700888 14.36858600 1.22410814 10.00000000 0.24970115 - 19486124 14.36801692 1.22410814 11.00000000 0.24986306 - 19339956 14.37280188 1.22410814 12.00000000 0.24967282 - 19150030 14.37422293 1.22410814 13.00000000 0.24992564 - 18940488 14.37534044 1.22410814 14.00000000 0.24977800 - 18791996 14.37772434 1.22410814 15.00000000 0.24993600 - 18660182 14.38364571 1.22410814 16.00000000 0.24979923 - 18519054 14.38925087 1.22410814 17.00000000 0.24952875 - 18449214 14.38476234 1.22410814 18.00000000 0.24941010 - 18227788 14.38737419 1.22410814 19.00000000 0.24929735 - 18038892 14.38790971 1.22410814 20.00000000 0.24958926 - 17911528 14.38449699 1.22410814 21.00000000 0.24969009 - 17741924 14.38719859 1.22410814 22.00000000 0.24946872 - 17607190 14.38697085 1.22410814 23.00000000 0.24965847 - 17488936 14.39265635 1.22410814 24.00000000 0.24974296 - 17374022 14.39614323 1.22410814 25.00000000 0.24953121 - 17244168 14.39468186 1.22410814 26.00000000 0.24977708 - 17126078 14.39202321 1.22410814 27.00000000 0.24955574 - 16989338 14.39439929 1.22410814 28.00000000 0.24977694 - 16875166 14.39228697 1.22410814 29.00000000 0.24945642 - 16803414 14.39321384 1.22410814 30.00000000 0.24963821 - 16709700 14.39008169 1.22410814 31.00000000 0.24954436 - 16612260 14.38778127 1.22410814 32.00000000 0.24937333 - 16618582 14.39062232 1.22410814 33.00000000 0.24930534 - 16535986 14.38818973 1.22410814 34.00000000 0.24935427 - 16435834 14.38913247 1.22410814 35.00000000 0.24969369 - 16407216 14.38855882 1.22410814 36.00000000 0.24957444 - 16329420 14.38958271 1.22410814 37.00000000 0.24962537 - 16184694 14.39301104 1.22410814 38.00000000 0.24961866 - 16166310 14.39455276 1.22410814 39.00000000 0.24938818 - 16173682 14.39407100 1.22410814 40.00000000 0.24944868 - 38239080 20.46986641 1.37795248 1.00000000 0.24956342 - 38212562 20.46406529 1.37795248 2.00000000 0.24957111 - 38032362 20.46366686 1.37795248 3.00000000 0.24951418 - 37932620 20.46755924 1.37795248 4.00000000 0.24969447 - 37747042 20.46733178 1.37795248 5.00000000 0.24975825 - 37486928 20.47196556 1.37795248 6.00000000 0.24959427 - 37278998 20.47208997 1.37795248 7.00000000 0.24947643 - 37036076 20.47224072 1.37795248 8.00000000 0.24979563 - 36956834 20.47689647 1.37795248 9.00000000 0.24982161 - 36847782 20.47924210 1.37795248 10.00000000 0.24988469 - 36614662 20.48088627 1.37795248 11.00000000 0.24985910 - 36528062 20.48106549 1.37795248 12.00000000 0.24974042 - 36299146 20.48541141 1.37795248 13.00000000 0.24984595 - 36120954 20.48737224 1.37795248 14.00000000 0.24970887 - 35982478 20.49079707 1.37795248 15.00000000 0.24970288 - 35850308 20.49352530 1.37795248 16.00000000 0.24958404 - 35589984 20.48957628 1.37795248 17.00000000 0.24957476 - 35410788 20.48637906 1.37795248 18.00000000 0.24948355 - 35241482 20.48620214 1.37795248 19.00000000 0.24960405 - 35038470 20.49110306 1.37795248 20.00000000 0.24961398 - 34843666 20.49698196 1.37795248 21.00000000 0.24963022 - 34642560 20.50048146 1.37795248 22.00000000 0.24947996 - 34438260 20.49677875 1.37795248 23.00000000 0.24943326 - 34247800 20.49702798 1.37795248 24.00000000 0.24971172 - 34088962 20.49626576 1.37795248 25.00000000 0.24968276 - 33921924 20.49744614 1.37795248 26.00000000 0.24953676 - 33791410 20.49856034 1.37795248 27.00000000 0.24956329 - 33676812 20.50121381 1.37795248 28.00000000 0.24966436 - 33509612 20.50082095 1.37795248 29.00000000 0.24951034 - 33282284 20.50957790 1.37795248 30.00000000 0.24936965 - 33234034 20.50790083 1.37795248 31.00000000 0.24963322 - 33155320 20.50986808 1.37795248 32.00000000 0.24962162 - 32958766 20.51093479 1.37795248 33.00000000 0.24956654 - 32816604 20.50976894 1.37795248 34.00000000 0.24963903 - 32747584 20.51084549 1.37795248 35.00000000 0.24960205 - 32626582 20.51015453 1.37795248 36.00000000 0.24958600 - 32526406 20.50954404 1.37795248 37.00000000 0.24943995 - 32345010 20.50907859 1.37795248 38.00000000 0.24962489 - 32181070 20.50955783 1.37795248 39.00000000 0.24963070 - 32067708 20.50885673 1.37795248 40.00000000 0.24954022 + 488066 0.20312150 -0.62204752 1.00000000 0.24862902 + 41656 0.20524094 -0.62204752 2.00000000 0.24644309 + 16184 0.20506636 -0.62204752 3.00000000 0.24889319 + 10584 0.20498470 -0.62204752 4.00000000 0.24322107 + 8396 0.20472784 -0.62204752 5.00000000 0.24629021 + 6982 0.20502189 -0.62204752 6.00000000 0.25120813 + 6170 0.20506540 -0.62204752 7.00000000 0.24544327 + 5848 0.20459029 -0.62204752 8.00000000 0.24921037 + 5406 0.20603001 -0.62204752 9.00000000 0.25491629 + 5382 0.20417957 -0.62204752 10.00000000 0.25367502 + 5030 0.20534674 -0.62204752 11.00000000 0.24666883 + 4656 0.20507503 -0.62204752 12.00000000 0.24898980 + 4570 0.20480494 -0.62204752 13.00000000 0.24827068 + 4364 0.20454010 -0.62204752 14.00000000 0.24868488 + 4366 0.20508754 -0.62204752 15.00000000 0.25468828 + 4482 0.20578485 -0.62204752 16.00000000 0.24245425 + 4438 0.20488522 -0.62204752 17.00000000 0.24754097 + 4218 0.20522282 -0.62204752 18.00000000 0.24541094 + 4058 0.20526440 -0.62204752 19.00000000 0.25567387 + 3936 0.20478790 -0.62204752 20.00000000 0.25281715 + 3820 0.20557719 -0.62204752 21.00000000 0.25082978 + 3856 0.20518396 -0.62204752 22.00000000 0.24943361 + 3780 0.20533090 -0.62204752 23.00000000 0.25048518 + 3782 0.20488856 -0.62204752 24.00000000 0.24588815 + 3774 0.20620121 -0.62204752 25.00000000 0.24635308 + 3774 0.20438311 -0.62204752 26.00000000 0.24768164 + 3954 0.20581817 -0.62204752 27.00000000 0.25124951 + 3642 0.20471629 -0.62204752 28.00000000 0.24174862 + 3548 0.20489376 -0.62204752 29.00000000 0.24146525 + 3610 0.20517040 -0.62204752 30.00000000 0.24422508 + 3574 0.20557739 -0.62204752 31.00000000 0.24899307 + 3628 0.20467938 -0.62204752 32.00000000 0.25439770 + 3696 0.20567370 -0.62204752 33.00000000 0.24118418 + 3390 0.20388926 -0.62204752 34.00000000 0.24123325 + 3602 0.20531961 -0.62204752 35.00000000 0.25898545 + 3016 0.20472837 -0.62204752 36.00000000 0.25540781 + 3306 0.20512779 -0.62204752 37.00000000 0.25245663 + 3168 0.20566328 -0.62204752 38.00000000 0.25493572 + 3442 0.20534620 -0.62204752 39.00000000 0.25385113 + 3294 0.20434453 -0.62204752 40.00000000 0.24518968 + 690488 0.28931724 -0.46820059 1.00000000 0.24912509 + 81848 0.29236180 -0.46820059 2.00000000 0.24994148 + 32496 0.29227694 -0.46820059 3.00000000 0.25182244 + 21932 0.29221520 -0.46820059 4.00000000 0.24748303 + 17028 0.29229029 -0.46820059 5.00000000 0.25078326 + 14666 0.29241980 -0.46820059 6.00000000 0.25041049 + 12508 0.29172130 -0.46820059 7.00000000 0.25253244 + 11970 0.29225811 -0.46820059 8.00000000 0.25440571 + 10840 0.29247513 -0.46820059 9.00000000 0.24797036 + 10616 0.29214439 -0.46820059 10.00000000 0.24527902 + 10238 0.29197199 -0.46820059 11.00000000 0.25056839 + 9870 0.29239646 -0.46820059 12.00000000 0.24874245 + 9132 0.29164375 -0.46820059 13.00000000 0.24704608 + 9040 0.29245362 -0.46820059 14.00000000 0.24495873 + 8892 0.29192544 -0.46820059 15.00000000 0.24763526 + 8808 0.29186423 -0.46820059 16.00000000 0.24343500 + 8646 0.29222531 -0.46820059 17.00000000 0.24526983 + 8488 0.29387262 -0.46820059 18.00000000 0.24559173 + 8180 0.29278474 -0.46820059 19.00000000 0.24738499 + 8060 0.29431213 -0.46820059 20.00000000 0.25094053 + 7952 0.29253390 -0.46820059 21.00000000 0.24686670 + 7772 0.29241914 -0.46820059 22.00000000 0.24928048 + 7742 0.29248086 -0.46820059 23.00000000 0.25520090 + 7418 0.29223281 -0.46820059 24.00000000 0.25493448 + 7524 0.29117631 -0.46820059 25.00000000 0.24997583 + 7908 0.29168909 -0.46820059 26.00000000 0.24701805 + 7526 0.29286764 -0.46820059 27.00000000 0.24174406 + 7408 0.29261639 -0.46820059 28.00000000 0.24805010 + 7634 0.29184435 -0.46820059 29.00000000 0.24874757 + 7030 0.29329484 -0.46820059 30.00000000 0.25114544 + 6898 0.29111616 -0.46820059 31.00000000 0.23956873 + 7140 0.29179384 -0.46820059 32.00000000 0.25353912 + 7334 0.29139366 -0.46820059 33.00000000 0.26264129 + 6868 0.29226783 -0.46820059 34.00000000 0.25307358 + 7336 0.29216833 -0.46820059 35.00000000 0.25374737 + 6696 0.29269588 -0.46820059 36.00000000 0.25724889 + 6846 0.29312991 -0.46820059 37.00000000 0.25375913 + 6740 0.29328957 -0.46820059 38.00000000 0.25362796 + 6854 0.29267115 -0.46820059 39.00000000 0.25576816 + 6844 0.29306674 -0.46820059 40.00000000 0.25067906 + 950060 0.41185838 -0.31435498 1.00000000 0.24833178 + 159628 0.41628540 -0.31435498 2.00000000 0.24884199 + 66576 0.41620761 -0.31435498 3.00000000 0.25107473 + 44234 0.41654523 -0.31435498 4.00000000 0.24733408 + 34540 0.41632552 -0.31435498 5.00000000 0.25261616 + 29238 0.41610846 -0.31435498 6.00000000 0.24805261 + 26060 0.41617429 -0.31435498 7.00000000 0.25258914 + 23838 0.41745531 -0.31435498 8.00000000 0.24862818 + 22710 0.41711594 -0.31435498 9.00000000 0.25142248 + 21212 0.41735237 -0.31435498 10.00000000 0.24661019 + 20614 0.41706824 -0.31435498 11.00000000 0.24405571 + 20208 0.41708841 -0.31435498 12.00000000 0.25096407 + 18940 0.41713472 -0.31435498 13.00000000 0.25029669 + 18692 0.41632471 -0.31435498 14.00000000 0.25296175 + 17796 0.41797777 -0.31435498 15.00000000 0.24538758 + 17594 0.41745320 -0.31435498 16.00000000 0.25179804 + 17316 0.41646150 -0.31435498 17.00000000 0.24883526 + 17678 0.41565749 -0.31435498 18.00000000 0.25279558 + 17098 0.41723989 -0.31435498 19.00000000 0.24608772 + 16642 0.41746283 -0.31435498 20.00000000 0.24559283 + 16286 0.41800897 -0.31435498 21.00000000 0.24326962 + 15772 0.41662428 -0.31435498 22.00000000 0.24572159 + 15486 0.41670159 -0.31435498 23.00000000 0.24639672 + 15194 0.41766960 -0.31435498 24.00000000 0.25432365 + 14948 0.41608719 -0.31435498 25.00000000 0.24575842 + 15822 0.41712582 -0.31435498 26.00000000 0.24983822 + 15476 0.41780085 -0.31435498 27.00000000 0.25101266 + 15226 0.41624003 -0.31435498 28.00000000 0.24987395 + 14980 0.41698907 -0.31435498 29.00000000 0.24956674 + 14706 0.41746926 -0.31435498 30.00000000 0.24572517 + 14750 0.41759681 -0.31435498 31.00000000 0.24360372 + 14444 0.41531038 -0.31435498 32.00000000 0.24662189 + 14592 0.41604682 -0.31435498 33.00000000 0.24928189 + 13964 0.41629124 -0.31435498 34.00000000 0.24851535 + 14928 0.41688661 -0.31435498 35.00000000 0.24918344 + 13662 0.41678549 -0.31435498 36.00000000 0.25614598 + 13806 0.41809421 -0.31435498 37.00000000 0.25473619 + 14004 0.41740640 -0.31435498 38.00000000 0.25323752 + 13554 0.41612685 -0.31435498 39.00000000 0.25097167 + 13522 0.41775326 -0.31435498 40.00000000 0.24553638 + 1232470 0.58562706 -0.16050875 1.00000000 0.24922801 + 300484 0.59225468 -0.16050875 2.00000000 0.24914132 + 132834 0.59295706 -0.16050875 3.00000000 0.25093564 + 89308 0.59361556 -0.16050875 4.00000000 0.24982603 + 70780 0.59417852 -0.16050875 5.00000000 0.25161201 + 58652 0.59388447 -0.16050875 6.00000000 0.25178867 + 53712 0.59310240 -0.16050875 7.00000000 0.25149526 + 49146 0.59395775 -0.16050875 8.00000000 0.24766905 + 45854 0.59415683 -0.16050875 9.00000000 0.24935384 + 43406 0.59385162 -0.16050875 10.00000000 0.24806177 + 42852 0.59339481 -0.16050875 11.00000000 0.24705023 + 40028 0.59345599 -0.16050875 12.00000000 0.24918508 + 39434 0.59339130 -0.16050875 13.00000000 0.25011780 + 36800 0.59508249 -0.16050875 14.00000000 0.25083808 + 36580 0.59327720 -0.16050875 15.00000000 0.24953244 + 36080 0.59327294 -0.16050875 16.00000000 0.25152013 + 34974 0.59439973 -0.16050875 17.00000000 0.25101102 + 35152 0.59358025 -0.16050875 18.00000000 0.24905663 + 33814 0.59324899 -0.16050875 19.00000000 0.24437216 + 33398 0.59347012 -0.16050875 20.00000000 0.24930690 + 32126 0.59352620 -0.16050875 21.00000000 0.25077099 + 31864 0.59468320 -0.16050875 22.00000000 0.24974047 + 32108 0.59404310 -0.16050875 23.00000000 0.24787806 + 31094 0.59468347 -0.16050875 24.00000000 0.25480197 + 30316 0.59494702 -0.16050875 25.00000000 0.24866108 + 31038 0.59415580 -0.16050875 26.00000000 0.25002495 + 31400 0.59282865 -0.16050875 27.00000000 0.24923410 + 30978 0.59265923 -0.16050875 28.00000000 0.25071048 + 29708 0.59374385 -0.16050875 29.00000000 0.25130391 + 29562 0.59412267 -0.16050875 30.00000000 0.24378476 + 29804 0.59517505 -0.16050875 31.00000000 0.24924228 + 29600 0.59494381 -0.16050875 32.00000000 0.24606868 + 29508 0.59400442 -0.16050875 33.00000000 0.25109106 + 28736 0.59474252 -0.16050875 34.00000000 0.24963482 + 29422 0.59493566 -0.16050875 35.00000000 0.25388781 + 27698 0.59382769 -0.16050875 36.00000000 0.25077457 + 28620 0.59382250 -0.16050875 37.00000000 0.25422474 + 28558 0.59428990 -0.16050875 38.00000000 0.24941147 + 28188 0.59325637 -0.16050875 39.00000000 0.25157486 + 28532 0.59459274 -0.16050875 40.00000000 0.25369103 + 1484528 0.83299891 -0.00666210 1.00000000 0.24983292 + 524110 0.84236798 -0.00666210 2.00000000 0.24961068 + 260870 0.84580945 -0.00666210 3.00000000 0.25028967 + 179354 0.84635170 -0.00666210 4.00000000 0.25001410 + 141384 0.84575018 -0.00666210 5.00000000 0.25127892 + 120300 0.84602351 -0.00666210 6.00000000 0.25039144 + 109118 0.84747813 -0.00666210 7.00000000 0.24977455 + 100084 0.84558662 -0.00666210 8.00000000 0.25139763 + 93468 0.84541145 -0.00666210 9.00000000 0.25271574 + 88806 0.84598246 -0.00666210 10.00000000 0.25154091 + 84934 0.84604221 -0.00666210 11.00000000 0.24844611 + 80674 0.84684255 -0.00666210 12.00000000 0.24961746 + 78158 0.84522273 -0.00666210 13.00000000 0.24858575 + 76320 0.84645364 -0.00666210 14.00000000 0.25051655 + 75410 0.84598020 -0.00666210 15.00000000 0.25030395 + 72028 0.84685147 -0.00666210 16.00000000 0.25062788 + 71260 0.84583936 -0.00666210 17.00000000 0.24711020 + 71654 0.84537265 -0.00666210 18.00000000 0.24625706 + 69146 0.84618647 -0.00666210 19.00000000 0.24927436 + 68042 0.84685324 -0.00666210 20.00000000 0.24883677 + 64988 0.84587301 -0.00666210 21.00000000 0.24891016 + 64500 0.84577460 -0.00666210 22.00000000 0.24965020 + 62740 0.84575532 -0.00666210 23.00000000 0.24738241 + 62570 0.84623755 -0.00666210 24.00000000 0.25109102 + 63794 0.84665670 -0.00666210 25.00000000 0.24704819 + 64028 0.84648210 -0.00666210 26.00000000 0.24702327 + 63218 0.84487445 -0.00666210 27.00000000 0.24804053 + 61796 0.84717063 -0.00666210 28.00000000 0.24660102 + 60630 0.84522067 -0.00666210 29.00000000 0.24969950 + 60286 0.84718252 -0.00666210 30.00000000 0.24774074 + 60150 0.84565246 -0.00666210 31.00000000 0.24632516 + 59784 0.84671020 -0.00666210 32.00000000 0.25023691 + 60752 0.84637904 -0.00666210 33.00000000 0.24990863 + 59716 0.84564042 -0.00666210 34.00000000 0.25045639 + 58508 0.84577541 -0.00666210 35.00000000 0.24825238 + 57910 0.84645111 -0.00666210 36.00000000 0.24689101 + 58016 0.84760619 -0.00666210 37.00000000 0.25387123 + 57020 0.84575020 -0.00666210 38.00000000 0.25017714 + 57460 0.84654760 -0.00666210 39.00000000 0.25104451 + 56152 0.84524223 -0.00666210 40.00000000 0.25127462 + 1675430 1.18521017 0.14718457 1.00000000 0.25002042 + 858104 1.19753566 0.14718457 2.00000000 0.24903370 + 496024 1.20366046 0.14718457 3.00000000 0.25065453 + 355698 1.20496894 0.14718457 4.00000000 0.24990197 + 287554 1.20550257 0.14718457 5.00000000 0.24978707 + 244136 1.20764570 0.14718457 6.00000000 0.25029429 + 220384 1.20564143 0.14718457 7.00000000 0.25182298 + 203454 1.20513718 0.14718457 8.00000000 0.25225560 + 190224 1.20675260 0.14718457 9.00000000 0.25081780 + 179106 1.20630401 0.14718457 10.00000000 0.24986073 + 173584 1.20649157 0.14718457 11.00000000 0.25086804 + 165744 1.20585681 0.14718457 12.00000000 0.24816570 + 157190 1.20591824 0.14718457 13.00000000 0.24942323 + 153508 1.20606447 0.14718457 14.00000000 0.24998197 + 151138 1.20496376 0.14718457 15.00000000 0.24903853 + 150262 1.20594518 0.14718457 16.00000000 0.25049400 + 144564 1.20551107 0.14718457 17.00000000 0.25003217 + 143426 1.20586272 0.14718457 18.00000000 0.24717809 + 140772 1.20685793 0.14718457 19.00000000 0.24935717 + 138388 1.20653786 0.14718457 20.00000000 0.24778285 + 133116 1.20630389 0.14718457 21.00000000 0.24901850 + 131838 1.20551379 0.14718457 22.00000000 0.24830120 + 129140 1.20631933 0.14718457 23.00000000 0.25155168 + 129212 1.20771470 0.14718457 24.00000000 0.25155096 + 129946 1.20472734 0.14718457 25.00000000 0.24986732 + 129500 1.20743823 0.14718457 26.00000000 0.24789908 + 126744 1.20471916 0.14718457 27.00000000 0.24656704 + 125340 1.20637801 0.14718457 28.00000000 0.24910829 + 123728 1.20577880 0.14718457 29.00000000 0.25028064 + 125460 1.20562010 0.14718457 30.00000000 0.25068498 + 123022 1.20688214 0.14718457 31.00000000 0.25015088 + 122856 1.20710561 0.14718457 32.00000000 0.24989885 + 123964 1.20570067 0.14718457 33.00000000 0.25201972 + 121862 1.20629624 0.14718457 34.00000000 0.25036606 + 119428 1.20590906 0.14718457 35.00000000 0.25026944 + 118562 1.20668081 0.14718457 36.00000000 0.25084118 + 117098 1.20480748 0.14718457 37.00000000 0.25143175 + 116776 1.20476847 0.14718457 38.00000000 0.24801131 + 117152 1.20623642 0.14718457 39.00000000 0.24954702 + 115972 1.20615826 0.14718457 40.00000000 0.24857619 + 1870662 1.69070491 0.30103000 1.00000000 0.24971767 + 1297150 1.70308149 0.30103000 2.00000000 0.25016973 + 891228 1.71150577 0.30103000 3.00000000 0.25064566 + 689300 1.71621807 0.30103000 4.00000000 0.24970082 + 573700 1.71851604 0.30103000 5.00000000 0.24968775 + 498064 1.71821304 0.30103000 6.00000000 0.25027251 + 445852 1.71763345 0.30103000 7.00000000 0.25077361 + 409260 1.71934810 0.30103000 8.00000000 0.25130175 + 383072 1.71940949 0.30103000 9.00000000 0.25063327 + 363976 1.71909033 0.30103000 10.00000000 0.24999499 + 347298 1.71914386 0.30103000 11.00000000 0.25100385 + 333474 1.71941430 0.30103000 12.00000000 0.25046305 + 323592 1.72063568 0.30103000 13.00000000 0.24870152 + 314114 1.71916511 0.30103000 14.00000000 0.24997327 + 309480 1.71875031 0.30103000 15.00000000 0.24916712 + 298306 1.71756086 0.30103000 16.00000000 0.25042621 + 294648 1.71916459 0.30103000 17.00000000 0.24933414 + 292062 1.71910717 0.30103000 18.00000000 0.24792975 + 285548 1.71689813 0.30103000 19.00000000 0.24864470 + 281186 1.71848478 0.30103000 20.00000000 0.24843790 + 275924 1.72045160 0.30103000 21.00000000 0.24825741 + 270010 1.71892952 0.30103000 22.00000000 0.25001121 + 267368 1.72009073 0.30103000 23.00000000 0.24882364 + 263948 1.71896713 0.30103000 24.00000000 0.25179902 + 264220 1.72014792 0.30103000 25.00000000 0.24946642 + 259888 1.71837281 0.30103000 26.00000000 0.25085421 + 256314 1.71888234 0.30103000 27.00000000 0.24731906 + 253588 1.71985757 0.30103000 28.00000000 0.24829300 + 250690 1.71769618 0.30103000 29.00000000 0.25014652 + 250134 1.71844898 0.30103000 30.00000000 0.24930812 + 249316 1.71797771 0.30103000 31.00000000 0.24852075 + 246650 1.72114397 0.30103000 32.00000000 0.25096085 + 248636 1.71816791 0.30103000 33.00000000 0.25216652 + 250742 1.71873091 0.30103000 34.00000000 0.24980349 + 242944 1.71954085 0.30103000 35.00000000 0.24973254 + 240530 1.71869197 0.30103000 36.00000000 0.25096121 + 237742 1.71894586 0.30103000 37.00000000 0.25140322 + 236574 1.72135350 0.30103000 38.00000000 0.24957064 + 236892 1.71843768 0.30103000 39.00000000 0.24879435 + 239110 1.72148564 0.30103000 40.00000000 0.25047956 + 2251464 2.41609383 0.45487534 1.00000000 0.24970356 + 1901682 2.42568367 0.45487534 2.00000000 0.24937068 + 1530076 2.43623579 0.45487534 3.00000000 0.24950605 + 1270792 2.44215603 0.45487534 4.00000000 0.25064657 + 1091784 2.44489929 0.45487534 5.00000000 0.24962964 + 965796 2.44700546 0.45487534 6.00000000 0.25069837 + 877974 2.44853932 0.45487534 7.00000000 0.25212149 + 816210 2.44836605 0.45487534 8.00000000 0.25045662 + 775812 2.44919569 0.45487534 9.00000000 0.24950729 + 731126 2.44956231 0.45487534 10.00000000 0.25058722 + 704440 2.44910925 0.45487534 11.00000000 0.24997575 + 673994 2.45045296 0.45487534 12.00000000 0.25029407 + 658064 2.44899369 0.45487534 13.00000000 0.24987866 + 643804 2.45216562 0.45487534 14.00000000 0.25109674 + 620562 2.44795654 0.45487534 15.00000000 0.25046503 + 601610 2.45191200 0.45487534 16.00000000 0.25047061 + 594224 2.44817054 0.45487534 17.00000000 0.24995875 + 583284 2.45026838 0.45487534 18.00000000 0.24947189 + 572884 2.45049270 0.45487534 19.00000000 0.24793919 + 563004 2.45050810 0.45487534 20.00000000 0.24904056 + 555688 2.44972513 0.45487534 21.00000000 0.24990397 + 548646 2.45017324 0.45487534 22.00000000 0.24969507 + 541700 2.44868042 0.45487534 23.00000000 0.24993744 + 534006 2.45086188 0.45487534 24.00000000 0.24948378 + 526276 2.45127531 0.45487534 25.00000000 0.24988792 + 524392 2.45043276 0.45487534 26.00000000 0.24942196 + 520044 2.45198761 0.45487534 27.00000000 0.24944164 + 518442 2.45180982 0.45487534 28.00000000 0.24946064 + 513280 2.45038616 0.45487534 29.00000000 0.24954291 + 509286 2.44934560 0.45487534 30.00000000 0.24987557 + 500696 2.45078158 0.45487534 31.00000000 0.25068931 + 502032 2.44865652 0.45487534 32.00000000 0.24929922 + 506994 2.44955705 0.45487534 33.00000000 0.24966468 + 505218 2.45079623 0.45487534 34.00000000 0.24873334 + 499788 2.45214014 0.45487534 35.00000000 0.24923896 + 487862 2.44965679 0.45487534 36.00000000 0.24953901 + 478718 2.45054327 0.45487534 37.00000000 0.25021753 + 488796 2.45046796 0.45487534 38.00000000 0.24887479 + 483212 2.45152516 0.45487534 39.00000000 0.24984431 + 489378 2.45045502 0.45487534 40.00000000 0.25058841 + 3039044 3.45758993 0.60872281 1.00000000 0.24984903 + 2841072 3.46343997 0.60872281 2.00000000 0.24939205 + 2555866 3.46945269 0.60872281 3.00000000 0.24946850 + 2271188 3.47690826 0.60872281 4.00000000 0.24975617 + 2027130 3.48054603 0.60872281 5.00000000 0.24958630 + 1854676 3.48391648 0.60872281 6.00000000 0.25054469 + 1711120 3.48310860 0.60872281 7.00000000 0.25024542 + 1605720 3.48733140 0.60872281 8.00000000 0.24957439 + 1531824 3.48534728 0.60872281 9.00000000 0.24946248 + 1452456 3.48624922 0.60872281 10.00000000 0.24966616 + 1395230 3.48807715 0.60872281 11.00000000 0.25049299 + 1366718 3.49029334 0.60872281 12.00000000 0.24979299 + 1332652 3.48735708 0.60872281 13.00000000 0.25054593 + 1293718 3.48730038 0.60872281 14.00000000 0.24978254 + 1252538 3.49202826 0.60872281 15.00000000 0.24974893 + 1232860 3.49165874 0.60872281 16.00000000 0.25015399 + 1194108 3.49268732 0.60872281 17.00000000 0.24966480 + 1177674 3.48948041 0.60872281 18.00000000 0.24942294 + 1161848 3.49105693 0.60872281 19.00000000 0.24932170 + 1142956 3.49086430 0.60872281 20.00000000 0.24867916 + 1120930 3.49050880 0.60872281 21.00000000 0.24958675 + 1095858 3.49040583 0.60872281 22.00000000 0.24883556 + 1093278 3.49133437 0.60872281 23.00000000 0.24905864 + 1091622 3.49182495 0.60872281 24.00000000 0.24848889 + 1077690 3.49191283 0.60872281 25.00000000 0.24772117 + 1068126 3.49244196 0.60872281 26.00000000 0.24921326 + 1060034 3.49157634 0.60872281 27.00000000 0.25006194 + 1050102 3.49207380 0.60872281 28.00000000 0.24966617 + 1041288 3.49017824 0.60872281 29.00000000 0.24851425 + 1025578 3.49092332 0.60872281 30.00000000 0.24960173 + 1029406 3.49031325 0.60872281 31.00000000 0.24939126 + 1027940 3.49196060 0.60872281 32.00000000 0.24936535 + 1018448 3.49407324 0.60872281 33.00000000 0.24943721 + 1019256 3.49169351 0.60872281 34.00000000 0.24872604 + 1005136 3.48940960 0.60872281 35.00000000 0.25050740 + 994212 3.49105611 0.60872281 36.00000000 0.25015757 + 996190 3.49381452 0.60872281 37.00000000 0.24947436 + 997526 3.49150142 0.60872281 38.00000000 0.24978132 + 984510 3.48889459 0.60872281 39.00000000 0.24978987 + 979020 3.48933723 0.60872281 40.00000000 0.24999570 + 4567796 4.93581672 0.76256829 1.00000000 0.25029132 + 4427858 4.93944287 0.76256829 2.00000000 0.24967222 + 4182686 4.94550624 0.76256829 3.00000000 0.24994724 + 3924520 4.94959822 0.76256829 4.00000000 0.24982136 + 3682810 4.95538073 0.76256829 5.00000000 0.24963796 + 3456384 4.96293340 0.76256829 6.00000000 0.25017016 + 3262138 4.96720549 0.76256829 7.00000000 0.25009395 + 3102084 4.96668474 0.76256829 8.00000000 0.24997568 + 2980056 4.96811530 0.76256829 9.00000000 0.24924631 + 2870676 4.97132272 0.76256829 10.00000000 0.24948064 + 2773652 4.97560209 0.76256829 11.00000000 0.25033729 + 2689234 4.97271483 0.76256829 12.00000000 0.25010417 + 2583470 4.97278621 0.76256829 13.00000000 0.24984170 + 2541248 4.97245857 0.76256829 14.00000000 0.24989299 + 2507826 4.97322892 0.76256829 15.00000000 0.24967652 + 2470720 4.97118162 0.76256829 16.00000000 0.24984234 + 2406142 4.97280216 0.76256829 17.00000000 0.25003811 + 2357664 4.97774192 0.76256829 18.00000000 0.24951489 + 2329110 4.97654370 0.76256829 19.00000000 0.24984131 + 2303846 4.97478942 0.76256829 20.00000000 0.24970952 + 2267244 4.97452129 0.76256829 21.00000000 0.24907479 + 2237286 4.97764757 0.76256829 22.00000000 0.24905021 + 2217696 4.97343482 0.76256829 23.00000000 0.24912571 + 2193432 4.97406803 0.76256829 24.00000000 0.24902201 + 2180198 4.97480419 0.76256829 25.00000000 0.24906622 + 2171404 4.97290307 0.76256829 26.00000000 0.24914832 + 2142872 4.97660508 0.76256829 27.00000000 0.25013777 + 2117116 4.97512905 0.76256829 28.00000000 0.24971484 + 2106970 4.97484915 0.76256829 29.00000000 0.24913853 + 2104890 4.97563418 0.76256829 30.00000000 0.24902063 + 2085792 4.97495550 0.76256829 31.00000000 0.24965767 + 2082226 4.97373047 0.76256829 32.00000000 0.24919215 + 2062542 4.97285407 0.76256829 33.00000000 0.24982996 + 2056680 4.97465425 0.76256829 34.00000000 0.24983194 + 2051102 4.97535562 0.76256829 35.00000000 0.24939625 + 2038782 4.97320415 0.76256829 36.00000000 0.24953737 + 2016986 4.97496262 0.76256829 37.00000000 0.25012636 + 2010090 4.97065164 0.76256829 38.00000000 0.24979679 + 2000472 4.97325171 0.76256829 39.00000000 0.24981722 + 1978086 4.97860761 0.76256829 40.00000000 0.24984606 + 7235400 7.04776909 0.91641447 1.00000000 0.24955808 + 7140926 7.04854810 0.91641447 2.00000000 0.24954284 + 6949992 7.04890423 0.91641447 3.00000000 0.24944643 + 6704024 7.05798834 0.91641447 4.00000000 0.24991163 + 6477100 7.06370160 0.91641447 5.00000000 0.24930254 + 6271054 7.06533595 0.91641447 6.00000000 0.24930353 + 6070382 7.07220650 0.91641447 7.00000000 0.24977227 + 5889678 7.07269457 0.91641447 8.00000000 0.24997262 + 5683152 7.07992201 0.91641447 9.00000000 0.24946818 + 5519304 7.07916881 0.91641447 10.00000000 0.25005375 + 5376066 7.08049553 0.91641447 11.00000000 0.25052339 + 5268028 7.08089882 0.91641447 12.00000000 0.25065556 + 5155390 7.08207121 0.91641447 13.00000000 0.24989409 + 5051834 7.08343992 0.91641447 14.00000000 0.25003470 + 4948794 7.08422431 0.91641447 15.00000000 0.24993633 + 4840554 7.08599338 0.91641447 16.00000000 0.24952679 + 4758300 7.08604740 0.91641447 17.00000000 0.24981708 + 4733204 7.08513907 0.91641447 18.00000000 0.25025955 + 4632604 7.08733970 0.91641447 19.00000000 0.25000269 + 4569544 7.08444068 0.91641447 20.00000000 0.24954477 + 4547970 7.08339307 0.91641447 21.00000000 0.24945787 + 4536656 7.08720522 0.91641447 22.00000000 0.24902216 + 4477150 7.08609028 0.91641447 23.00000000 0.24890637 + 4436364 7.08905512 0.91641447 24.00000000 0.24896320 + 4394066 7.08906079 0.91641447 25.00000000 0.24937086 + 4369794 7.08777800 0.91641447 26.00000000 0.24901369 + 4320938 7.08612836 0.91641447 27.00000000 0.24938574 + 4289128 7.08517532 0.91641447 28.00000000 0.24970748 + 4264190 7.08991360 0.91641447 29.00000000 0.24907910 + 4249654 7.09032908 0.91641447 30.00000000 0.24979368 + 4240100 7.08723514 0.91641447 31.00000000 0.24879169 + 4186986 7.09179057 0.91641447 32.00000000 0.24938162 + 4151516 7.09176795 0.91641447 33.00000000 0.24910409 + 4138820 7.09008506 0.91641447 34.00000000 0.24990497 + 4117338 7.08967139 0.91641447 35.00000000 0.24981761 + 4094974 7.08632286 0.91641447 36.00000000 0.24963326 + 4069358 7.08837043 0.91641447 37.00000000 0.24906225 + 4032766 7.08825650 0.91641447 38.00000000 0.24887849 + 4007252 7.08947689 0.91641447 39.00000000 0.24919490 + 4018610 7.09335498 0.91641447 40.00000000 0.24943567 + 12196310 10.05675217 1.07025958 1.00000000 0.24945103 + 12063396 10.06129321 1.07025958 2.00000000 0.24928748 + 11896560 10.06482131 1.07025958 3.00000000 0.24985139 + 11709610 10.06302043 1.07025958 4.00000000 0.24977042 + 11515264 10.06495045 1.07025958 5.00000000 0.24930995 + 11286580 10.06911605 1.07025958 6.00000000 0.24972403 + 11095782 10.06924232 1.07025958 7.00000000 0.24944027 + 10907516 10.07599736 1.07025958 8.00000000 0.24974351 + 10685496 10.08126857 1.07025958 9.00000000 0.24976423 + 10476354 10.08280066 1.07025958 10.00000000 0.24980631 + 10293364 10.08633141 1.07025958 11.00000000 0.25012956 + 10158874 10.09085047 1.07025958 12.00000000 0.25006389 + 10016372 10.09019426 1.07025958 13.00000000 0.24998586 + 9881726 10.08972283 1.07025958 14.00000000 0.25030396 + 9758548 10.09399133 1.07025958 15.00000000 0.24999525 + 9617166 10.09832678 1.07025958 16.00000000 0.24968328 + 9510608 10.09662786 1.07025958 17.00000000 0.24964094 + 9372566 10.09875763 1.07025958 18.00000000 0.24956256 + 9267412 10.09955361 1.07025958 19.00000000 0.24921663 + 9160708 10.09584496 1.07025958 20.00000000 0.24956671 + 9041116 10.09900647 1.07025958 21.00000000 0.24917121 + 8971432 10.09643409 1.07025958 22.00000000 0.24960361 + 8891112 10.09615038 1.07025958 23.00000000 0.24944666 + 8843450 10.09766439 1.07025958 24.00000000 0.24972881 + 8760468 10.09443885 1.07025958 25.00000000 0.24956207 + 8700134 10.09974844 1.07025958 26.00000000 0.24967276 + 8623820 10.09904132 1.07025958 27.00000000 0.24939659 + 8547080 10.09843714 1.07025958 28.00000000 0.24913816 + 8533516 10.09815406 1.07025958 29.00000000 0.24992405 + 8486064 10.10014619 1.07025958 30.00000000 0.24943433 + 8425576 10.09883331 1.07025958 31.00000000 0.24934186 + 8386182 10.09985174 1.07025958 32.00000000 0.24936056 + 8368456 10.09587334 1.07025958 33.00000000 0.24933513 + 8340504 10.09832188 1.07025958 34.00000000 0.24943496 + 8294620 10.10113731 1.07025958 35.00000000 0.24947963 + 8245808 10.10366062 1.07025958 36.00000000 0.24928724 + 8211084 10.10550488 1.07025958 37.00000000 0.24951088 + 8135458 10.10444401 1.07025958 38.00000000 0.24953246 + 8095396 10.10460124 1.07025958 39.00000000 0.24945591 + 8078592 10.10206077 1.07025958 40.00000000 0.24932602 + 21155168 14.34495860 1.22410814 1.00000000 0.24915834 + 21056670 14.34483720 1.22410814 2.00000000 0.24959785 + 20945530 14.34543012 1.22410814 3.00000000 0.24940707 + 20781426 14.35139764 1.22410814 4.00000000 0.24985144 + 20599158 14.35240406 1.22410814 5.00000000 0.24973810 + 20421564 14.35389305 1.22410814 6.00000000 0.24963322 + 20173180 14.35849435 1.22410814 7.00000000 0.24963945 + 20013452 14.36199463 1.22410814 8.00000000 0.24959240 + 19881618 14.36470398 1.22410814 9.00000000 0.24951527 + 19700888 14.36816028 1.22410814 10.00000000 0.24970115 + 19486124 14.36760707 1.22410814 11.00000000 0.24986306 + 19339956 14.37239583 1.22410814 12.00000000 0.24967282 + 19150030 14.37296227 1.22410814 13.00000000 0.24992564 + 18940488 14.37538994 1.22410814 14.00000000 0.24977800 + 18791996 14.37713397 1.22410814 15.00000000 0.24993600 + 18660182 14.38386173 1.22410814 16.00000000 0.24979923 + 18519054 14.38825787 1.22410814 17.00000000 0.24952875 + 18449214 14.38497291 1.22410814 18.00000000 0.24941010 + 18227788 14.38710418 1.22410814 19.00000000 0.24929735 + 18038892 14.38819947 1.22410814 20.00000000 0.24958926 + 17911528 14.38466745 1.22410814 21.00000000 0.24969009 + 17741924 14.38806302 1.22410814 22.00000000 0.24946872 + 17607190 14.38756034 1.22410814 23.00000000 0.24965847 + 17488936 14.39330495 1.22410814 24.00000000 0.24974296 + 17374022 14.39633936 1.22410814 25.00000000 0.24953121 + 17244168 14.39456379 1.22410814 26.00000000 0.24977708 + 17126078 14.39239499 1.22410814 27.00000000 0.24955574 + 16989338 14.39556854 1.22410814 28.00000000 0.24977694 + 16875166 14.39300640 1.22410814 29.00000000 0.24945642 + 16803414 14.39452205 1.22410814 30.00000000 0.24963821 + 16709700 14.39134708 1.22410814 31.00000000 0.24954436 + 16612260 14.38785264 1.22410814 32.00000000 0.24937333 + 16618582 14.39115920 1.22410814 33.00000000 0.24930534 + 16535986 14.38875031 1.22410814 34.00000000 0.24935427 + 16435834 14.38935958 1.22410814 35.00000000 0.24969369 + 16407216 14.38850601 1.22410814 36.00000000 0.24957444 + 16329420 14.39010839 1.22410814 37.00000000 0.24962537 + 16184694 14.39327483 1.22410814 38.00000000 0.24961866 + 16166310 14.39420110 1.22410814 39.00000000 0.24938818 + 16173682 14.39417249 1.22410814 40.00000000 0.24944868 + 38239080 20.47076705 1.37795248 1.00000000 0.24956342 + 38212562 20.46433659 1.37795248 2.00000000 0.24957111 + 38032362 20.46517246 1.37795248 3.00000000 0.24951418 + 37932620 20.46755471 1.37795248 4.00000000 0.24969447 + 37747042 20.46837015 1.37795248 5.00000000 0.24975825 + 37486928 20.47124933 1.37795248 6.00000000 0.24959427 + 37278998 20.47204449 1.37795248 7.00000000 0.24947643 + 37036076 20.47245245 1.37795248 8.00000000 0.24979563 + 36956834 20.47705778 1.37795248 9.00000000 0.24982161 + 36847782 20.47876032 1.37795248 10.00000000 0.24988469 + 36614662 20.48024541 1.37795248 11.00000000 0.24985910 + 36528062 20.47967285 1.37795248 12.00000000 0.24974042 + 36299146 20.48566951 1.37795248 13.00000000 0.24984595 + 36120954 20.48694842 1.37795248 14.00000000 0.24970887 + 35982478 20.48903631 1.37795248 15.00000000 0.24970288 + 35850308 20.49122558 1.37795248 16.00000000 0.24958404 + 35589984 20.48999731 1.37795248 17.00000000 0.24957476 + 35410788 20.48568524 1.37795248 18.00000000 0.24948355 + 35241482 20.48590346 1.37795248 19.00000000 0.24960405 + 35038470 20.49016625 1.37795248 20.00000000 0.24961398 + 34843666 20.49607315 1.37795248 21.00000000 0.24963022 + 34642560 20.49840786 1.37795248 22.00000000 0.24947996 + 34438260 20.49696574 1.37795248 23.00000000 0.24943326 + 34247800 20.49778752 1.37795248 24.00000000 0.24971172 + 34088962 20.49784159 1.37795248 25.00000000 0.24968276 + 33921924 20.49849319 1.37795248 26.00000000 0.24953676 + 33791410 20.49855559 1.37795248 27.00000000 0.24956329 + 33676812 20.50129164 1.37795248 28.00000000 0.24966436 + 33509612 20.50185323 1.37795248 29.00000000 0.24951034 + 33282284 20.50957186 1.37795248 30.00000000 0.24936965 + 33234034 20.50847721 1.37795248 31.00000000 0.24963322 + 33155320 20.51031371 1.37795248 32.00000000 0.24962162 + 32958766 20.51121226 1.37795248 33.00000000 0.24956654 + 32816604 20.51110346 1.37795248 34.00000000 0.24963903 + 32747584 20.51210678 1.37795248 35.00000000 0.24960205 + 32626582 20.51171520 1.37795248 36.00000000 0.24958600 + 32526406 20.50921650 1.37795248 37.00000000 0.24943995 + 32345010 20.50789093 1.37795248 38.00000000 0.24962489 + 32181070 20.50963434 1.37795248 39.00000000 0.24963070 + 32067708 20.50887655 1.37795248 40.00000000 0.24954022 diff --git a/theory/tests/Mr19_DDrppi_periodic b/theory/tests/Mr19_DDrppi_periodic index 7fd44e6e..44f64d9c 100644 --- a/theory/tests/Mr19_DDrppi_periodic +++ b/theory/tests/Mr19_DDrppi_periodic @@ -1,560 +1,560 @@ - 488624 0.20311310 -0.62204752 1.00000000 0.24857402 - 41796 0.20516437 -0.62204752 2.00000000 0.24662008 - 16322 0.20512710 -0.62204752 3.00000000 0.24869106 - 10674 0.20493070 -0.62204752 4.00000000 0.24322382 - 8496 0.20505702 -0.62204752 5.00000000 0.24586108 - 7100 0.20467624 -0.62204752 6.00000000 0.25051064 - 6310 0.20506622 -0.62204752 7.00000000 0.24413306 - 5954 0.20420993 -0.62204752 8.00000000 0.24831951 - 5530 0.20529806 -0.62204752 9.00000000 0.25457194 - 5486 0.20483154 -0.62204752 10.00000000 0.25443915 - 5152 0.20524992 -0.62204752 11.00000000 0.24656197 - 4774 0.20486646 -0.62204752 12.00000000 0.24905048 - 4710 0.20488499 -0.62204752 13.00000000 0.24888582 - 4498 0.20475550 -0.62204752 14.00000000 0.24840907 - 4530 0.20522777 -0.62204752 15.00000000 0.25532262 - 4638 0.20546778 -0.62204752 16.00000000 0.24150814 - 4584 0.20522948 -0.62204752 17.00000000 0.24731554 - 4398 0.20520560 -0.62204752 18.00000000 0.24637993 - 4232 0.20519429 -0.62204752 19.00000000 0.25659290 - 4132 0.20499847 -0.62204752 20.00000000 0.25249200 - 3992 0.20569197 -0.62204752 21.00000000 0.25011507 - 4082 0.20543112 -0.62204752 22.00000000 0.25080660 - 3978 0.20528176 -0.62204752 23.00000000 0.24918850 - 3990 0.20512676 -0.62204752 24.00000000 0.24719933 - 3988 0.20587677 -0.62204752 25.00000000 0.24795236 - 4006 0.20518496 -0.62204752 26.00000000 0.24605907 - 4206 0.20580912 -0.62204752 27.00000000 0.24972830 - 3872 0.20499882 -0.62204752 28.00000000 0.24167196 - 3784 0.20460641 -0.62204752 29.00000000 0.24089866 - 3878 0.20538858 -0.62204752 30.00000000 0.24345485 - 3842 0.20638975 -0.62204752 31.00000000 0.24951959 - 3918 0.20507571 -0.62204752 32.00000000 0.25374383 - 4000 0.20547957 -0.62204752 33.00000000 0.24267899 - 3678 0.20420395 -0.62204752 34.00000000 0.23989789 - 3860 0.20527227 -0.62204752 35.00000000 0.26010896 - 3326 0.20507343 -0.62204752 36.00000000 0.25513706 - 3650 0.20571475 -0.62204752 37.00000000 0.25180341 - 3498 0.20625604 -0.62204752 38.00000000 0.25626607 - 3776 0.20511167 -0.62204752 39.00000000 0.25571403 - 3702 0.20423718 -0.62204752 40.00000000 0.24788365 - 691576 0.28934230 -0.46820059 1.00000000 0.24909785 - 82206 0.29226001 -0.46820059 2.00000000 0.24982446 - 32748 0.29220939 -0.46820059 3.00000000 0.25162764 - 22092 0.29236164 -0.46820059 4.00000000 0.24760016 - 17182 0.29251457 -0.46820059 5.00000000 0.25047788 - 14876 0.29223748 -0.46820059 6.00000000 0.25139298 - 12888 0.29205209 -0.46820059 7.00000000 0.25193894 - 12230 0.29269504 -0.46820059 8.00000000 0.25557121 - 11048 0.29279529 -0.46820059 9.00000000 0.24785219 - 10868 0.29244876 -0.46820059 10.00000000 0.24532335 - 10480 0.29185189 -0.46820059 11.00000000 0.25044781 - 10116 0.29256432 -0.46820059 12.00000000 0.24866549 - 9408 0.29178258 -0.46820059 13.00000000 0.24772962 - 9324 0.29243507 -0.46820059 14.00000000 0.24488651 - 9112 0.29235231 -0.46820059 15.00000000 0.24710109 - 9072 0.29190148 -0.46820059 16.00000000 0.24299976 - 8922 0.29263508 -0.46820059 17.00000000 0.24607124 - 8932 0.29325734 -0.46820059 18.00000000 0.24619142 - 8564 0.29272803 -0.46820059 19.00000000 0.24790615 - 8436 0.29317536 -0.46820059 20.00000000 0.25202999 - 8318 0.29263976 -0.46820059 21.00000000 0.24766274 - 8240 0.29254179 -0.46820059 22.00000000 0.24889586 - 8114 0.29205963 -0.46820059 23.00000000 0.25389642 - 7830 0.29225772 -0.46820059 24.00000000 0.25460471 - 7972 0.29209759 -0.46820059 25.00000000 0.25162482 - 8480 0.29227887 -0.46820059 26.00000000 0.24493743 - 8034 0.29200137 -0.46820059 27.00000000 0.24178814 - 7882 0.29294444 -0.46820059 28.00000000 0.24907170 - 8120 0.29206413 -0.46820059 29.00000000 0.24913210 - 7612 0.29248505 -0.46820059 30.00000000 0.24996953 - 7384 0.29192801 -0.46820059 31.00000000 0.24044516 - 7736 0.29217022 -0.46820059 32.00000000 0.25222869 - 7896 0.29189085 -0.46820059 33.00000000 0.25970046 - 7422 0.29255492 -0.46820059 34.00000000 0.25225058 - 7982 0.29267234 -0.46820059 35.00000000 0.25259194 - 7278 0.29234511 -0.46820059 36.00000000 0.25477911 - 7446 0.29285486 -0.46820059 37.00000000 0.25227130 - 7360 0.29301173 -0.46820059 38.00000000 0.25342133 - 7534 0.29332201 -0.46820059 39.00000000 0.25567186 - 7546 0.29298097 -0.46820059 40.00000000 0.25249422 - 952034 0.41182359 -0.31435498 1.00000000 0.24831701 - 160314 0.41622901 -0.31435498 2.00000000 0.24876674 - 67196 0.41635781 -0.31435498 3.00000000 0.25067013 - 44626 0.41679600 -0.31435498 4.00000000 0.24719467 - 34892 0.41674266 -0.31435498 5.00000000 0.25275162 - 29684 0.41658416 -0.31435498 6.00000000 0.24803661 - 26702 0.41613483 -0.31435498 7.00000000 0.25216734 - 24314 0.41720433 -0.31435498 8.00000000 0.24877856 - 23192 0.41676723 -0.31435498 9.00000000 0.25145474 - 21814 0.41724951 -0.31435498 10.00000000 0.24783874 - 21136 0.41734922 -0.31435498 11.00000000 0.24374187 - 20774 0.41664961 -0.31435498 12.00000000 0.25149569 - 19564 0.41709610 -0.31435498 13.00000000 0.25071961 - 19270 0.41619913 -0.31435498 14.00000000 0.25295893 - 18376 0.41791302 -0.31435498 15.00000000 0.24556211 - 18216 0.41708673 -0.31435498 16.00000000 0.25182123 - 17926 0.41667700 -0.31435498 17.00000000 0.24911452 - 18382 0.41654296 -0.31435498 18.00000000 0.25204974 - 17872 0.41729656 -0.31435498 19.00000000 0.24598168 - 17404 0.41719070 -0.31435498 20.00000000 0.24654647 - 17102 0.41731358 -0.31435498 21.00000000 0.24394084 - 16610 0.41592873 -0.31435498 22.00000000 0.24590157 - 16240 0.41634814 -0.31435498 23.00000000 0.24679819 - 16000 0.41732789 -0.31435498 24.00000000 0.25430992 - 15914 0.41640465 -0.31435498 25.00000000 0.24645217 - 16898 0.41770190 -0.31435498 26.00000000 0.24862191 - 16444 0.41777180 -0.31435498 27.00000000 0.25044214 - 16184 0.41648411 -0.31435498 28.00000000 0.24903362 - 15938 0.41673851 -0.31435498 29.00000000 0.24939970 - 15866 0.41770454 -0.31435498 30.00000000 0.24526542 - 15834 0.41731858 -0.31435498 31.00000000 0.24294353 - 15586 0.41660876 -0.31435498 32.00000000 0.24766152 - 15670 0.41645279 -0.31435498 33.00000000 0.24925638 - 15218 0.41668667 -0.31435498 34.00000000 0.24762073 - 16046 0.41587077 -0.31435498 35.00000000 0.24865213 - 14804 0.41654284 -0.31435498 36.00000000 0.25548244 - 15176 0.41810611 -0.31435498 37.00000000 0.25381317 - 15400 0.41772095 -0.31435498 38.00000000 0.25150315 - 14882 0.41660108 -0.31435498 39.00000000 0.25056420 - 14916 0.41730126 -0.31435498 40.00000000 0.24626240 - 1236040 0.58561844 -0.16050875 1.00000000 0.24924049 - 301998 0.59214260 -0.16050875 2.00000000 0.24913295 - 134002 0.59320463 -0.16050875 3.00000000 0.25080589 - 90120 0.59392436 -0.16050875 4.00000000 0.24980694 - 71670 0.59383676 -0.16050875 5.00000000 0.25185370 - 59574 0.59401980 -0.16050875 6.00000000 0.25175941 - 54880 0.59362331 -0.16050875 7.00000000 0.25119570 - 50068 0.59418406 -0.16050875 8.00000000 0.24770819 - 46838 0.59446297 -0.16050875 9.00000000 0.24976565 - 44526 0.59417227 -0.16050875 10.00000000 0.24864617 - 44106 0.59351145 -0.16050875 11.00000000 0.24675139 - 41216 0.59312536 -0.16050875 12.00000000 0.24977897 - 40558 0.59411535 -0.16050875 13.00000000 0.25046630 - 38036 0.59458371 -0.16050875 14.00000000 0.25155428 - 37930 0.59407288 -0.16050875 15.00000000 0.24954283 - 37344 0.59318907 -0.16050875 16.00000000 0.25148322 - 36390 0.59430085 -0.16050875 17.00000000 0.25048633 - 36598 0.59418437 -0.16050875 18.00000000 0.24885989 - 35516 0.59349182 -0.16050875 19.00000000 0.24536107 - 34976 0.59392132 -0.16050875 20.00000000 0.24921758 - 33930 0.59324485 -0.16050875 21.00000000 0.24995614 - 33582 0.59472540 -0.16050875 22.00000000 0.24960773 - 33790 0.59426799 -0.16050875 23.00000000 0.24818476 - 32826 0.59453359 -0.16050875 24.00000000 0.25428268 - 32124 0.59468288 -0.16050875 25.00000000 0.24908623 - 33204 0.59453348 -0.16050875 26.00000000 0.24960140 - 33326 0.59338689 -0.16050875 27.00000000 0.24929587 - 33226 0.59277021 -0.16050875 28.00000000 0.24993021 - 31700 0.59389135 -0.16050875 29.00000000 0.25104189 - 31862 0.59387171 -0.16050875 30.00000000 0.24370953 - 31818 0.59470995 -0.16050875 31.00000000 0.24909818 - 31906 0.59442580 -0.16050875 32.00000000 0.24744612 - 31790 0.59406346 -0.16050875 33.00000000 0.25073201 - 31150 0.59446108 -0.16050875 34.00000000 0.24962217 - 31864 0.59472146 -0.16050875 35.00000000 0.25370600 - 30424 0.59391478 -0.16050875 36.00000000 0.24935596 - 31556 0.59341384 -0.16050875 37.00000000 0.25301906 - 31530 0.59373301 -0.16050875 38.00000000 0.24922959 - 31042 0.59338420 -0.16050875 39.00000000 0.25149518 - 31546 0.59486313 -0.16050875 40.00000000 0.25318200 - 1490238 0.83295317 -0.00666210 1.00000000 0.24986931 - 527312 0.84231481 -0.00666210 2.00000000 0.24964493 - 263226 0.84565831 -0.00666210 3.00000000 0.25029427 - 181202 0.84620369 -0.00666210 4.00000000 0.25008055 - 143452 0.84645748 -0.00666210 5.00000000 0.25138244 - 122632 0.84636671 -0.00666210 6.00000000 0.25028121 - 111400 0.84706922 -0.00666210 7.00000000 0.24971084 - 102128 0.84621884 -0.00666210 8.00000000 0.25147039 - 95462 0.84585544 -0.00666210 9.00000000 0.25277316 - 90868 0.84622095 -0.00666210 10.00000000 0.25138142 - 87366 0.84634743 -0.00666210 11.00000000 0.24846706 - 83342 0.84657672 -0.00666210 12.00000000 0.24986998 - 80620 0.84546185 -0.00666210 13.00000000 0.24865649 - 78910 0.84657148 -0.00666210 14.00000000 0.25043026 - 77962 0.84622949 -0.00666210 15.00000000 0.25026962 - 75040 0.84689797 -0.00666210 16.00000000 0.25068989 - 74320 0.84634292 -0.00666210 17.00000000 0.24754673 - 74830 0.84566379 -0.00666210 18.00000000 0.24605857 - 72588 0.84663730 -0.00666210 19.00000000 0.24918378 - 71584 0.84703148 -0.00666210 20.00000000 0.24914301 - 69004 0.84663509 -0.00666210 21.00000000 0.24957036 - 68350 0.84561253 -0.00666210 22.00000000 0.24999382 - 66324 0.84525296 -0.00666210 23.00000000 0.24757098 - 66414 0.84616645 -0.00666210 24.00000000 0.25102927 - 67848 0.84676548 -0.00666210 25.00000000 0.24731321 - 68344 0.84699275 -0.00666210 26.00000000 0.24705831 - 67506 0.84557946 -0.00666210 27.00000000 0.24766676 - 66260 0.84683104 -0.00666210 28.00000000 0.24706047 - 64900 0.84608373 -0.00666210 29.00000000 0.24996408 - 65156 0.84706331 -0.00666210 30.00000000 0.24780891 - 64704 0.84637034 -0.00666210 31.00000000 0.24622818 - 64628 0.84647698 -0.00666210 32.00000000 0.25092725 - 65608 0.84600038 -0.00666210 33.00000000 0.24922912 - 64774 0.84644254 -0.00666210 34.00000000 0.25039156 - 63400 0.84631580 -0.00666210 35.00000000 0.24781904 - 62984 0.84648751 -0.00666210 36.00000000 0.24743940 - 63990 0.84729207 -0.00666210 37.00000000 0.25393896 - 62618 0.84570167 -0.00666210 38.00000000 0.24979900 - 63302 0.84613663 -0.00666210 39.00000000 0.25057707 - 62256 0.84616571 -0.00666210 40.00000000 0.25059560 - 1684144 1.18514297 0.14718457 1.00000000 0.25005483 - 864770 1.19759484 0.14718457 2.00000000 0.24900942 - 501238 1.20331148 0.14718457 3.00000000 0.25068256 - 360536 1.20530348 0.14718457 4.00000000 0.24994549 - 292506 1.20629740 0.14718457 5.00000000 0.24982447 - 250034 1.20735340 0.14718457 6.00000000 0.25007684 - 225580 1.20716374 0.14718457 7.00000000 0.25186370 - 208036 1.20562314 0.14718457 8.00000000 0.25221324 - 194700 1.20749096 0.14718457 9.00000000 0.25095568 - 184086 1.20626532 0.14718457 10.00000000 0.24964762 - 178932 1.20616767 0.14718457 11.00000000 0.25074043 - 171502 1.20602915 0.14718457 12.00000000 0.24834786 - 162652 1.20660012 0.14718457 13.00000000 0.24946603 - 158908 1.20673249 0.14718457 14.00000000 0.24998930 - 156356 1.20486310 0.14718457 15.00000000 0.24910017 - 156218 1.20556561 0.14718457 16.00000000 0.25047661 - 150930 1.20591489 0.14718457 17.00000000 0.24979415 - 150184 1.20598205 0.14718457 18.00000000 0.24690170 - 147356 1.20659782 0.14718457 19.00000000 0.24887767 - 145560 1.20663276 0.14718457 20.00000000 0.24789359 - 141262 1.20620156 0.14718457 21.00000000 0.24938619 - 139464 1.20642559 0.14718457 22.00000000 0.24838467 - 136856 1.20695974 0.14718457 23.00000000 0.25134252 - 136860 1.20758816 0.14718457 24.00000000 0.25142098 - 138020 1.20506826 0.14718457 25.00000000 0.25011880 - 138088 1.20671106 0.14718457 26.00000000 0.24784933 - 135156 1.20548335 0.14718457 27.00000000 0.24670528 - 134576 1.20638568 0.14718457 28.00000000 0.24927531 - 133218 1.20597006 0.14718457 29.00000000 0.25010758 - 135260 1.20574715 0.14718457 30.00000000 0.25062483 - 132410 1.20660597 0.14718457 31.00000000 0.25004616 - 132602 1.20769871 0.14718457 32.00000000 0.25025195 - 133656 1.20580271 0.14718457 33.00000000 0.25144852 - 131546 1.20666337 0.14718457 34.00000000 0.24992016 - 129876 1.20621966 0.14718457 35.00000000 0.25024073 - 129740 1.20617024 0.14718457 36.00000000 0.25067676 - 128910 1.20526744 0.14718457 37.00000000 0.25171764 - 128536 1.20564622 0.14718457 38.00000000 0.24707222 - 129258 1.20597214 0.14718457 39.00000000 0.24887916 - 128494 1.20639954 0.14718457 40.00000000 0.24845289 - 1883542 1.69091730 0.30103000 1.00000000 0.24975888 - 1310368 1.70334339 0.30103000 2.00000000 0.25018762 - 902200 1.71200145 0.30103000 3.00000000 0.25067822 - 700478 1.71585984 0.30103000 4.00000000 0.24968366 - 585088 1.71800494 0.30103000 5.00000000 0.24963146 - 509872 1.71780682 0.30103000 6.00000000 0.25018771 - 459344 1.71810612 0.30103000 7.00000000 0.25060783 - 420140 1.71925795 0.30103000 8.00000000 0.25150071 - 393582 1.71939739 0.30103000 9.00000000 0.25074362 - 374570 1.71917996 0.30103000 10.00000000 0.25009155 - 359024 1.71877697 0.30103000 11.00000000 0.25105044 - 345662 1.71939211 0.30103000 12.00000000 0.25019921 - 335312 1.72001492 0.30103000 13.00000000 0.24867824 - 325454 1.71978271 0.30103000 14.00000000 0.25003797 - 321138 1.71895388 0.30103000 15.00000000 0.24937264 - 310502 1.71767612 0.30103000 16.00000000 0.25020155 - 307904 1.71925642 0.30103000 17.00000000 0.24933637 - 305194 1.71855047 0.30103000 18.00000000 0.24798830 - 299608 1.71815537 0.30103000 19.00000000 0.24844278 - 295926 1.71853886 0.30103000 20.00000000 0.24852291 - 292076 1.71967462 0.30103000 21.00000000 0.24833144 - 285606 1.71890214 0.30103000 22.00000000 0.24996971 - 284470 1.72030963 0.30103000 23.00000000 0.24885675 - 280266 1.71957718 0.30103000 24.00000000 0.25142072 - 281072 1.72035350 0.30103000 25.00000000 0.24926307 - 277602 1.71842015 0.30103000 26.00000000 0.25042975 - 274050 1.71892695 0.30103000 27.00000000 0.24736024 - 272138 1.72012829 0.30103000 28.00000000 0.24806528 - 270302 1.71775999 0.30103000 29.00000000 0.25007815 - 270340 1.71837036 0.30103000 30.00000000 0.24951846 - 268688 1.71835692 0.30103000 31.00000000 0.24863786 - 267028 1.71974283 0.30103000 32.00000000 0.25116683 - 269612 1.71926389 0.30103000 33.00000000 0.25231191 - 271954 1.71935458 0.30103000 34.00000000 0.24938122 - 265122 1.71979243 0.30103000 35.00000000 0.24974347 - 262966 1.71914904 0.30103000 36.00000000 0.25039068 - 260762 1.71917761 0.30103000 37.00000000 0.25134052 - 260842 1.72108879 0.30103000 38.00000000 0.24931783 - 262050 1.71853606 0.30103000 39.00000000 0.24849363 - 265354 1.72074457 0.30103000 40.00000000 0.24990128 - 2272554 2.41667757 0.45487534 1.00000000 0.24976168 - 1926606 2.42647253 0.45487534 2.00000000 0.24939087 - 1554658 2.43649334 0.45487534 3.00000000 0.24949270 - 1294758 2.44303404 0.45487534 4.00000000 0.25061341 - 1114792 2.44533321 0.45487534 5.00000000 0.24956619 - 988498 2.44680255 0.45487534 6.00000000 0.25076963 - 903496 2.44786683 0.45487534 7.00000000 0.25199244 - 841216 2.44845181 0.45487534 8.00000000 0.25049140 - 799524 2.44958211 0.45487534 9.00000000 0.24946628 - 754170 2.45066148 0.45487534 10.00000000 0.25061441 - 728488 2.45022033 0.45487534 11.00000000 0.25001056 - 699012 2.45050648 0.45487534 12.00000000 0.25016917 - 683358 2.45005178 0.45487534 13.00000000 0.24977614 - 669718 2.45154053 0.45487534 14.00000000 0.25089580 - 645412 2.44809238 0.45487534 15.00000000 0.25021546 - 628130 2.45110801 0.45487534 16.00000000 0.25029770 - 621958 2.44856712 0.45487534 17.00000000 0.24984581 - 611946 2.45054201 0.45487534 18.00000000 0.24931906 - 603458 2.45047459 0.45487534 19.00000000 0.24780378 - 594352 2.45088288 0.45487534 20.00000000 0.24887491 - 587678 2.44954238 0.45487534 21.00000000 0.24967035 - 581722 2.45038119 0.45487534 22.00000000 0.24962084 - 577656 2.44950237 0.45487534 23.00000000 0.24971414 - 569752 2.45009290 0.45487534 24.00000000 0.24935122 - 562234 2.45090334 0.45487534 25.00000000 0.24982581 - 560758 2.45031581 0.45487534 26.00000000 0.24942844 - 558964 2.45163620 0.45487534 27.00000000 0.24939282 - 558536 2.45166380 0.45487534 28.00000000 0.24940988 - 554736 2.45088564 0.45487534 29.00000000 0.24942819 - 549256 2.44976794 0.45487534 30.00000000 0.24981899 - 542008 2.45086067 0.45487534 31.00000000 0.25075715 - 545438 2.44933006 0.45487534 32.00000000 0.24956616 - 551362 2.44915342 0.45487534 33.00000000 0.24990599 - 550546 2.45068772 0.45487534 34.00000000 0.24864022 - 547696 2.45006132 0.45487534 35.00000000 0.24931638 - 536724 2.45026640 0.45487534 36.00000000 0.24954140 - 527808 2.45165724 0.45487534 37.00000000 0.25007555 - 538486 2.44964861 0.45487534 38.00000000 0.24860127 - 535748 2.45173561 0.45487534 39.00000000 0.24900648 - 544450 2.44980649 0.45487534 40.00000000 0.24994610 - 3076372 3.45798072 0.60872281 1.00000000 0.24996166 - 2888886 3.46398440 0.60872281 2.00000000 0.24944594 - 2605426 3.46942094 0.60872281 3.00000000 0.24940676 - 2320948 3.47713743 0.60872281 4.00000000 0.24981090 - 2073954 3.48070148 0.60872281 5.00000000 0.24948793 - 1905796 3.48530819 0.60872281 6.00000000 0.25067876 - 1761382 3.48527987 0.60872281 7.00000000 0.25020306 - 1657512 3.48734128 0.60872281 8.00000000 0.24966496 - 1583426 3.48649933 0.60872281 9.00000000 0.24958140 - 1504078 3.48669538 0.60872281 10.00000000 0.24979114 - 1448418 3.48855795 0.60872281 11.00000000 0.25050770 - 1422874 3.49077898 0.60872281 12.00000000 0.24972114 - 1389646 3.48852496 0.60872281 13.00000000 0.25045745 - 1349436 3.48828006 0.60872281 14.00000000 0.24977255 - 1310860 3.49238644 0.60872281 15.00000000 0.24962170 - 1292386 3.49260124 0.60872281 16.00000000 0.24992398 - 1254678 3.49241092 0.60872281 17.00000000 0.24934855 - 1240066 3.48976353 0.60872281 18.00000000 0.24924112 - 1226832 3.49018071 0.60872281 19.00000000 0.24923509 - 1209760 3.49012399 0.60872281 20.00000000 0.24859468 - 1189824 3.49152758 0.60872281 21.00000000 0.24944210 - 1168038 3.49071833 0.60872281 22.00000000 0.24899926 - 1170040 3.49202585 0.60872281 23.00000000 0.24919306 - 1169202 3.49317518 0.60872281 24.00000000 0.24857334 - 1156488 3.49350120 0.60872281 25.00000000 0.24776238 - 1147038 3.49402283 0.60872281 26.00000000 0.24904208 - 1142982 3.49217511 0.60872281 27.00000000 0.24988777 - 1136686 3.49176722 0.60872281 28.00000000 0.24985697 - 1129890 3.49102135 0.60872281 29.00000000 0.24872011 - 1115476 3.49097608 0.60872281 30.00000000 0.24971133 - 1121674 3.49139885 0.60872281 31.00000000 0.24945762 - 1123040 3.49354271 0.60872281 32.00000000 0.24953773 - 1113922 3.49349380 0.60872281 33.00000000 0.24946179 - 1117360 3.49337548 0.60872281 34.00000000 0.24875961 - 1104280 3.49043652 0.60872281 35.00000000 0.25041657 - 1096826 3.49132007 0.60872281 36.00000000 0.25007660 - 1100066 3.49426528 0.60872281 37.00000000 0.24935114 - 1104996 3.49215464 0.60872281 38.00000000 0.24969988 - 1093138 3.48980408 0.60872281 39.00000000 0.24962104 - 1091682 3.49012587 0.60872281 40.00000000 0.24992424 - 4648412 4.93749874 0.76256829 1.00000000 0.25042967 - 4524600 4.93951869 0.76256829 2.00000000 0.24975986 - 4283092 4.94602654 0.76256829 3.00000000 0.24990057 - 4022444 4.94955394 0.76256829 4.00000000 0.24979452 - 3784326 4.95681503 0.76256829 5.00000000 0.24968399 - 3562900 4.96345422 0.76256829 6.00000000 0.25019263 - 3371496 4.96674231 0.76256829 7.00000000 0.25009454 - 3213130 4.96772727 0.76256829 8.00000000 0.24999534 - 3094648 4.96976010 0.76256829 9.00000000 0.24927646 - 2990130 4.97315926 0.76256829 10.00000000 0.24943920 - 2898084 4.97556348 0.76256829 11.00000000 0.25042436 - 2813594 4.97271291 0.76256829 12.00000000 0.24995646 - 2707088 4.97275218 0.76256829 13.00000000 0.24964070 - 2672650 4.97237280 0.76256829 14.00000000 0.24988824 - 2642184 4.97424897 0.76256829 15.00000000 0.24961480 - 2605280 4.97127452 0.76256829 16.00000000 0.24977995 - 2542058 4.97337487 0.76256829 17.00000000 0.24974081 - 2497104 4.97760893 0.76256829 18.00000000 0.24936261 - 2471172 4.97705895 0.76256829 19.00000000 0.24974845 - 2451812 4.97677052 0.76256829 20.00000000 0.24961779 - 2422200 4.97577651 0.76256829 21.00000000 0.24893885 - 2396950 4.97787070 0.76256829 22.00000000 0.24891079 - 2382680 4.97438566 0.76256829 23.00000000 0.24906115 - 2367832 4.97514942 0.76256829 24.00000000 0.24899421 - 2352366 4.97501680 0.76256829 25.00000000 0.24889276 - 2347372 4.97465859 0.76256829 26.00000000 0.24913993 - 2325120 4.97811229 0.76256829 27.00000000 0.25008897 - 2303230 4.97581622 0.76256829 28.00000000 0.24976490 - 2297226 4.97637799 0.76256829 29.00000000 0.24908858 - 2301176 4.97609301 0.76256829 30.00000000 0.24882553 - 2286758 4.97606107 0.76256829 31.00000000 0.24954491 - 2284740 4.97418947 0.76256829 32.00000000 0.24903586 - 2268932 4.97349678 0.76256829 33.00000000 0.24960745 - 2268324 4.97602298 0.76256829 34.00000000 0.24978240 - 2264574 4.97754341 0.76256829 35.00000000 0.24931920 - 2257122 4.97579133 0.76256829 36.00000000 0.24952160 - 2239710 4.97441931 0.76256829 37.00000000 0.25014436 - 2241476 4.97353094 0.76256829 38.00000000 0.24982691 - 2230502 4.97571810 0.76256829 39.00000000 0.24977438 - 2216382 4.98002913 0.76256829 40.00000000 0.24987773 - 7422082 7.04971512 0.91641447 1.00000000 0.24952483 - 7342420 7.05047406 0.91641447 2.00000000 0.24949696 - 7162684 7.05269331 0.91641447 3.00000000 0.24950481 - 6919922 7.06124499 0.91641447 4.00000000 0.24996850 - 6701460 7.06485090 0.91641447 5.00000000 0.24935309 - 6507306 7.06689478 0.91641447 6.00000000 0.24925818 - 6314692 7.07419357 0.91641447 7.00000000 0.24972192 - 6141430 7.07472571 0.91641447 8.00000000 0.24983844 - 5945106 7.08058482 0.91641447 9.00000000 0.24946943 - 5785686 7.07965348 0.91641447 10.00000000 0.24998673 - 5661112 7.08253258 0.91641447 11.00000000 0.25044052 - 5550896 7.08229183 0.91641447 12.00000000 0.25047692 - 5442948 7.08422645 0.91641447 13.00000000 0.24985570 - 5348664 7.08594465 0.91641447 14.00000000 0.24991321 - 5242122 7.08666138 0.91641447 15.00000000 0.24977888 - 5143372 7.08873954 0.91641447 16.00000000 0.24952700 - 5065298 7.08781776 0.91641447 17.00000000 0.24973668 - 5050398 7.08703523 0.91641447 18.00000000 0.25011783 - 4956794 7.08802443 0.91641447 19.00000000 0.24991346 - 4904182 7.08587623 0.91641447 20.00000000 0.24948148 - 4891972 7.08541743 0.91641447 21.00000000 0.24944933 - 4896274 7.08735877 0.91641447 22.00000000 0.24895178 - 4847252 7.08803685 0.91641447 23.00000000 0.24884007 - 4812956 7.09174728 0.91641447 24.00000000 0.24908386 - 4781004 7.09168587 0.91641447 25.00000000 0.24933402 - 4763750 7.08954071 0.91641447 26.00000000 0.24887715 - 4726870 7.08836134 0.91641447 27.00000000 0.24937336 - 4707920 7.08794455 0.91641447 28.00000000 0.24966569 - 4688050 7.09120798 0.91641447 29.00000000 0.24917767 - 4672880 7.09219686 0.91641447 30.00000000 0.24959492 - 4672066 7.09007859 0.91641447 31.00000000 0.24876159 - 4627138 7.09455626 0.91641447 32.00000000 0.24937204 - 4601802 7.09361195 0.91641447 33.00000000 0.24909870 - 4605154 7.09317989 0.91641447 34.00000000 0.24977374 - 4584034 7.09087848 0.91641447 35.00000000 0.24978513 - 4570714 7.08944428 0.91641447 36.00000000 0.24963406 - 4553424 7.09161812 0.91641447 37.00000000 0.24895758 - 4530382 7.08911979 0.91641447 38.00000000 0.24877579 - 4515952 7.09077666 0.91641447 39.00000000 0.24924857 - 4543438 7.09279546 0.91641447 40.00000000 0.24942545 - 12643554 10.06048887 1.07025958 1.00000000 0.24953996 - 12535246 10.06507267 1.07025958 2.00000000 0.24937302 - 12397790 10.06764355 1.07025958 3.00000000 0.24992243 - 12227032 10.06608739 1.07025958 4.00000000 0.24975375 - 12054968 10.06894723 1.07025958 5.00000000 0.24927420 - 11830278 10.07249288 1.07025958 6.00000000 0.24967107 - 11647638 10.07344938 1.07025958 7.00000000 0.24945793 - 11486374 10.07989597 1.07025958 8.00000000 0.24978155 - 11278820 10.08463368 1.07025958 9.00000000 0.24979482 - 11082972 10.08615428 1.07025958 10.00000000 0.24981881 - 10920932 10.08930722 1.07025958 11.00000000 0.25001526 - 10804010 10.09480114 1.07025958 12.00000000 0.24997760 - 10688802 10.09348341 1.07025958 13.00000000 0.24983412 - 10561448 10.09232034 1.07025958 14.00000000 0.25024302 - 10440848 10.09544519 1.07025958 15.00000000 0.24994732 - 10314244 10.10074927 1.07025958 16.00000000 0.24965935 - 10225962 10.09925893 1.07025958 17.00000000 0.24954434 - 10100666 10.10098060 1.07025958 18.00000000 0.24958514 - 10011510 10.10318293 1.07025958 19.00000000 0.24919098 - 9923138 10.10021286 1.07025958 20.00000000 0.24945482 - 9832976 10.10277296 1.07025958 21.00000000 0.24901745 - 9784116 10.10177921 1.07025958 22.00000000 0.24946753 - 9721612 10.09944635 1.07025958 23.00000000 0.24929867 - 9696364 10.10023672 1.07025958 24.00000000 0.24957569 - 9636320 10.09706011 1.07025958 25.00000000 0.24946589 - 9588242 10.10377908 1.07025958 26.00000000 0.24967456 - 9533516 10.10209824 1.07025958 27.00000000 0.24932666 - 9465798 10.10091616 1.07025958 28.00000000 0.24910891 - 9471488 10.10196929 1.07025958 29.00000000 0.24981550 - 9441602 10.10378143 1.07025958 30.00000000 0.24925480 - 9402448 10.10320466 1.07025958 31.00000000 0.24920728 - 9379890 10.10321674 1.07025958 32.00000000 0.24924283 - 9374912 10.09931310 1.07025958 33.00000000 0.24933683 - 9366012 10.09947196 1.07025958 34.00000000 0.24943018 - 9341704 10.10339473 1.07025958 35.00000000 0.24935953 - 9320288 10.10542057 1.07025958 36.00000000 0.24919831 - 9302036 10.10793120 1.07025958 37.00000000 0.24951507 - 9240680 10.10773679 1.07025958 38.00000000 0.24941246 - 9224606 10.10677836 1.07025958 39.00000000 0.24931602 - 9233766 10.10598506 1.07025958 40.00000000 0.24915694 - 22264988 14.35215899 1.22410814 1.00000000 0.24925945 - 22212026 14.35192340 1.22410814 2.00000000 0.24970156 - 22159776 14.35344288 1.22410814 3.00000000 0.24946420 - 22047306 14.35878978 1.22410814 4.00000000 0.24985308 - 21911290 14.35932074 1.22410814 5.00000000 0.24973330 - 21751458 14.36262856 1.22410814 6.00000000 0.24967479 - 21511594 14.36628923 1.22410814 7.00000000 0.24966015 - 21396736 14.36961340 1.22410814 8.00000000 0.24961422 - 21310498 14.37193852 1.22410814 9.00000000 0.24951255 - 21155712 14.37632753 1.22410814 10.00000000 0.24974073 - 20964328 14.37619496 1.22410814 11.00000000 0.24993183 - 20862084 14.37948961 1.22410814 12.00000000 0.24962003 - 20707384 14.38098750 1.22410814 13.00000000 0.24989264 - 20513150 14.38270591 1.22410814 14.00000000 0.24971521 - 20412030 14.38466908 1.22410814 15.00000000 0.24985949 - 20320418 14.39018807 1.22410814 16.00000000 0.24972192 - 20219920 14.39599584 1.22410814 17.00000000 0.24948524 - 20194138 14.39194088 1.22410814 18.00000000 0.24938105 - 20014924 14.39380215 1.22410814 19.00000000 0.24934976 - 19858862 14.39506143 1.22410814 20.00000000 0.24952702 - 19761722 14.39119360 1.22410814 21.00000000 0.24961949 - 19614900 14.39328824 1.22410814 22.00000000 0.24945354 - 19532994 14.39407197 1.22410814 23.00000000 0.24965800 - 19464260 14.39896858 1.22410814 24.00000000 0.24971433 - 19388852 14.40314617 1.22410814 25.00000000 0.24953913 - 19277812 14.40144362 1.22410814 26.00000000 0.24964174 - 19228780 14.39928165 1.22410814 27.00000000 0.24944810 - 19115952 14.40180094 1.22410814 28.00000000 0.24972096 - 19033022 14.40102269 1.22410814 29.00000000 0.24937441 - 18987772 14.40121973 1.22410814 30.00000000 0.24953752 - 18934758 14.39718325 1.22410814 31.00000000 0.24945884 - 18860804 14.39476243 1.22410814 32.00000000 0.24932234 - 18914324 14.39800439 1.22410814 33.00000000 0.24917758 - 18857546 14.39613985 1.22410814 34.00000000 0.24927407 - 18804680 14.39718030 1.22410814 35.00000000 0.24960041 - 18827200 14.39676675 1.22410814 36.00000000 0.24948243 - 18791250 14.39751298 1.22410814 37.00000000 0.24956774 - 18697144 14.40000619 1.22410814 38.00000000 0.24950444 - 18710512 14.40023453 1.22410814 39.00000000 0.24934548 - 18762930 14.39963397 1.22410814 40.00000000 0.24946034 - 41190546 20.48587057 1.37795248 1.00000000 0.24953222 - 41237002 20.47937543 1.37795248 2.00000000 0.24948116 - 41141032 20.47921989 1.37795248 3.00000000 0.24941916 - 41115956 20.48282281 1.37795248 4.00000000 0.24967230 - 40996404 20.48302380 1.37795248 5.00000000 0.24973002 - 40793904 20.48631915 1.37795248 6.00000000 0.24959293 - 40671102 20.48690205 1.37795248 7.00000000 0.24946313 - 40494102 20.48695131 1.37795248 8.00000000 0.24978369 - 40474382 20.49142139 1.37795248 9.00000000 0.24981686 - 40432018 20.49401485 1.37795248 10.00000000 0.24989314 - 40287284 20.49532088 1.37795248 11.00000000 0.24986110 - 40291360 20.49636160 1.37795248 12.00000000 0.24968101 - 40124758 20.50161012 1.37795248 13.00000000 0.24980350 - 40026996 20.50357121 1.37795248 14.00000000 0.24970477 - 39974636 20.50589532 1.37795248 15.00000000 0.24967705 - 39915080 20.50792801 1.37795248 16.00000000 0.24961264 - 39740124 20.50482689 1.37795248 17.00000000 0.24957515 - 39631148 20.50217628 1.37795248 18.00000000 0.24951963 - 39547918 20.50201866 1.37795248 19.00000000 0.24958534 - 39427864 20.50639576 1.37795248 20.00000000 0.24960182 - 39312876 20.51146904 1.37795248 21.00000000 0.24962214 - 39170968 20.51553823 1.37795248 22.00000000 0.24950740 - 39039394 20.51253897 1.37795248 23.00000000 0.24947392 - 38947736 20.51325637 1.37795248 24.00000000 0.24968791 - 38889160 20.51176929 1.37795248 25.00000000 0.24962534 - 38798000 20.51277486 1.37795248 26.00000000 0.24952300 - 38750748 20.51365249 1.37795248 27.00000000 0.24950449 - 38683254 20.51580250 1.37795248 28.00000000 0.24964099 - 38610494 20.51609750 1.37795248 29.00000000 0.24947953 - 38469902 20.52398576 1.37795248 30.00000000 0.24935866 - 38505802 20.52167229 1.37795248 31.00000000 0.24955790 - 38481046 20.52361900 1.37795248 32.00000000 0.24951157 - 38357060 20.52488292 1.37795248 33.00000000 0.24950566 - 38273464 20.52379001 1.37795248 34.00000000 0.24952666 - 38272128 20.52471725 1.37795248 35.00000000 0.24950932 - 38217970 20.52391919 1.37795248 36.00000000 0.24952480 - 38183438 20.52179098 1.37795248 37.00000000 0.24935321 - 38106740 20.52122793 1.37795248 38.00000000 0.24951685 - 38002366 20.52112922 1.37795248 39.00000000 0.24959251 - 37984684 20.52177596 1.37795248 40.00000000 0.24948407 + 488624 0.20312348 -0.62204752 1.00000000 0.24857402 + 41796 0.20526194 -0.62204752 2.00000000 0.24662008 + 16322 0.20509249 -0.62204752 3.00000000 0.24869106 + 10674 0.20493117 -0.62204752 4.00000000 0.24322382 + 8496 0.20476548 -0.62204752 5.00000000 0.24586108 + 7100 0.20495607 -0.62204752 6.00000000 0.25051064 + 6310 0.20511906 -0.62204752 7.00000000 0.24413306 + 5954 0.20464464 -0.62204752 8.00000000 0.24831951 + 5530 0.20604910 -0.62204752 9.00000000 0.25457194 + 5486 0.20422680 -0.62204752 10.00000000 0.25443915 + 5152 0.20530599 -0.62204752 11.00000000 0.24656197 + 4774 0.20512852 -0.62204752 12.00000000 0.24905048 + 4710 0.20488725 -0.62204752 13.00000000 0.24888582 + 4498 0.20463176 -0.62204752 14.00000000 0.24840907 + 4530 0.20489321 -0.62204752 15.00000000 0.25532262 + 4638 0.20572965 -0.62204752 16.00000000 0.24150814 + 4584 0.20489623 -0.62204752 17.00000000 0.24731554 + 4398 0.20523528 -0.62204752 18.00000000 0.24637993 + 4232 0.20518680 -0.62204752 19.00000000 0.25659290 + 4132 0.20471150 -0.62204752 20.00000000 0.25249200 + 3992 0.20564022 -0.62204752 21.00000000 0.25011507 + 4082 0.20529882 -0.62204752 22.00000000 0.25080660 + 3978 0.20544266 -0.62204752 23.00000000 0.24918850 + 3990 0.20489948 -0.62204752 24.00000000 0.24719933 + 3988 0.20635886 -0.62204752 25.00000000 0.24795236 + 4006 0.20459581 -0.62204752 26.00000000 0.24605907 + 4206 0.20553879 -0.62204752 27.00000000 0.24972830 + 3872 0.20461322 -0.62204752 28.00000000 0.24167196 + 3784 0.20457228 -0.62204752 29.00000000 0.24089866 + 3878 0.20523190 -0.62204752 30.00000000 0.24345485 + 3842 0.20565023 -0.62204752 31.00000000 0.24951959 + 3918 0.20467436 -0.62204752 32.00000000 0.25374383 + 4000 0.20594274 -0.62204752 33.00000000 0.24267899 + 3678 0.20397133 -0.62204752 34.00000000 0.23989789 + 3860 0.20552114 -0.62204752 35.00000000 0.26010896 + 3326 0.20482844 -0.62204752 36.00000000 0.25513706 + 3650 0.20528213 -0.62204752 37.00000000 0.25180341 + 3498 0.20567319 -0.62204752 38.00000000 0.25626607 + 3776 0.20555283 -0.62204752 39.00000000 0.25571403 + 3702 0.20457268 -0.62204752 40.00000000 0.24788365 + 691576 0.28932126 -0.46820059 1.00000000 0.24909785 + 82206 0.29236357 -0.46820059 2.00000000 0.24982446 + 32748 0.29230889 -0.46820059 3.00000000 0.25162764 + 22092 0.29220970 -0.46820059 4.00000000 0.24760016 + 17182 0.29232112 -0.46820059 5.00000000 0.25047788 + 14876 0.29236667 -0.46820059 6.00000000 0.25139298 + 12888 0.29186714 -0.46820059 7.00000000 0.25193894 + 12230 0.29230538 -0.46820059 8.00000000 0.25557121 + 11048 0.29257380 -0.46820059 9.00000000 0.24785219 + 10868 0.29217045 -0.46820059 10.00000000 0.24532335 + 10480 0.29209809 -0.46820059 11.00000000 0.25044781 + 10116 0.29235769 -0.46820059 12.00000000 0.24866549 + 9408 0.29163727 -0.46820059 13.00000000 0.24772962 + 9324 0.29229805 -0.46820059 14.00000000 0.24488651 + 9112 0.29194053 -0.46820059 15.00000000 0.24710109 + 9072 0.29177421 -0.46820059 16.00000000 0.24299976 + 8922 0.29203251 -0.46820059 17.00000000 0.24607124 + 8932 0.29368051 -0.46820059 18.00000000 0.24619142 + 8564 0.29281647 -0.46820059 19.00000000 0.24790615 + 8436 0.29412349 -0.46820059 20.00000000 0.25202999 + 8318 0.29263337 -0.46820059 21.00000000 0.24766274 + 8240 0.29244629 -0.46820059 22.00000000 0.24889586 + 8114 0.29247903 -0.46820059 23.00000000 0.25389642 + 7830 0.29207325 -0.46820059 24.00000000 0.25460471 + 7972 0.29131757 -0.46820059 25.00000000 0.25162482 + 8480 0.29167838 -0.46820059 26.00000000 0.24493743 + 8034 0.29275028 -0.46820059 27.00000000 0.24178814 + 7882 0.29256676 -0.46820059 28.00000000 0.24907170 + 8120 0.29205558 -0.46820059 29.00000000 0.24913210 + 7612 0.29353805 -0.46820059 30.00000000 0.24996953 + 7384 0.29102343 -0.46820059 31.00000000 0.24044516 + 7736 0.29204803 -0.46820059 32.00000000 0.25222869 + 7896 0.29157451 -0.46820059 33.00000000 0.25970046 + 7422 0.29254923 -0.46820059 34.00000000 0.25225058 + 7982 0.29197961 -0.46820059 35.00000000 0.25259194 + 7278 0.29255211 -0.46820059 36.00000000 0.25477911 + 7446 0.29320014 -0.46820059 37.00000000 0.25227130 + 7360 0.29332613 -0.46820059 38.00000000 0.25342133 + 7534 0.29256990 -0.46820059 39.00000000 0.25567186 + 7546 0.29302623 -0.46820059 40.00000000 0.25249422 + 952034 0.41187096 -0.31435498 1.00000000 0.24831701 + 160314 0.41628305 -0.31435498 2.00000000 0.24876674 + 67196 0.41613498 -0.31435498 3.00000000 0.25067013 + 44626 0.41651300 -0.31435498 4.00000000 0.24719467 + 34892 0.41632277 -0.31435498 5.00000000 0.25275162 + 29684 0.41619048 -0.31435498 6.00000000 0.24803661 + 26702 0.41610156 -0.31435498 7.00000000 0.25216734 + 24314 0.41761215 -0.31435498 8.00000000 0.24877856 + 23192 0.41708018 -0.31435498 9.00000000 0.25145474 + 21814 0.41713871 -0.31435498 10.00000000 0.24783874 + 21136 0.41708270 -0.31435498 11.00000000 0.24374187 + 20774 0.41706357 -0.31435498 12.00000000 0.25149569 + 19564 0.41710978 -0.31435498 13.00000000 0.25071961 + 19270 0.41632772 -0.31435498 14.00000000 0.25295893 + 18376 0.41791670 -0.31435498 15.00000000 0.24556211 + 18216 0.41722740 -0.31435498 16.00000000 0.25182123 + 17926 0.41645417 -0.31435498 17.00000000 0.24911452 + 18382 0.41571827 -0.31435498 18.00000000 0.25204974 + 17872 0.41702396 -0.31435498 19.00000000 0.24598168 + 17404 0.41753958 -0.31435498 20.00000000 0.24654647 + 17102 0.41777634 -0.31435498 21.00000000 0.24394084 + 16610 0.41660997 -0.31435498 22.00000000 0.24590157 + 16240 0.41685759 -0.31435498 23.00000000 0.24679819 + 16000 0.41754960 -0.31435498 24.00000000 0.25430992 + 15914 0.41599156 -0.31435498 25.00000000 0.24645217 + 16898 0.41730329 -0.31435498 26.00000000 0.24862191 + 16444 0.41778945 -0.31435498 27.00000000 0.25044214 + 16184 0.41614741 -0.31435498 28.00000000 0.24903362 + 15938 0.41694058 -0.31435498 29.00000000 0.24939970 + 15866 0.41770242 -0.31435498 30.00000000 0.24526542 + 15834 0.41751513 -0.31435498 31.00000000 0.24294353 + 15586 0.41524527 -0.31435498 32.00000000 0.24766152 + 15670 0.41606162 -0.31435498 33.00000000 0.24925638 + 15218 0.41636326 -0.31435498 34.00000000 0.24762073 + 16046 0.41666257 -0.31435498 35.00000000 0.24865213 + 14804 0.41683561 -0.31435498 36.00000000 0.25548244 + 15176 0.41824274 -0.31435498 37.00000000 0.25381317 + 15400 0.41718312 -0.31435498 38.00000000 0.25150315 + 14882 0.41625364 -0.31435498 39.00000000 0.25056420 + 14916 0.41725877 -0.31435498 40.00000000 0.24626240 + 1236040 0.58562812 -0.16050875 1.00000000 0.24924049 + 301998 0.59228339 -0.16050875 2.00000000 0.24913295 + 134002 0.59297284 -0.16050875 3.00000000 0.25080589 + 90120 0.59366733 -0.16050875 4.00000000 0.24980694 + 71670 0.59417697 -0.16050875 5.00000000 0.25185370 + 59574 0.59385615 -0.16050875 6.00000000 0.25175941 + 54880 0.59313722 -0.16050875 7.00000000 0.25119570 + 50068 0.59385014 -0.16050875 8.00000000 0.24770819 + 46838 0.59418269 -0.16050875 9.00000000 0.24976565 + 44526 0.59377451 -0.16050875 10.00000000 0.24864617 + 44106 0.59344939 -0.16050875 11.00000000 0.24675139 + 41216 0.59354548 -0.16050875 12.00000000 0.24977897 + 40558 0.59354032 -0.16050875 13.00000000 0.25046630 + 38036 0.59503157 -0.16050875 14.00000000 0.25155428 + 37930 0.59340699 -0.16050875 15.00000000 0.24954283 + 37344 0.59336859 -0.16050875 16.00000000 0.25148322 + 36390 0.59447368 -0.16050875 17.00000000 0.25048633 + 36598 0.59374848 -0.16050875 18.00000000 0.24885989 + 35516 0.59341768 -0.16050875 19.00000000 0.24536107 + 34976 0.59350110 -0.16050875 20.00000000 0.24921758 + 33930 0.59348308 -0.16050875 21.00000000 0.24995614 + 33582 0.59487580 -0.16050875 22.00000000 0.24960773 + 33790 0.59399170 -0.16050875 23.00000000 0.24818476 + 32826 0.59502997 -0.16050875 24.00000000 0.25428268 + 32124 0.59498309 -0.16050875 25.00000000 0.24908623 + 33204 0.59388533 -0.16050875 26.00000000 0.24960140 + 33326 0.59292102 -0.16050875 27.00000000 0.24929587 + 33226 0.59281562 -0.16050875 28.00000000 0.24993021 + 31700 0.59386418 -0.16050875 29.00000000 0.25104189 + 31862 0.59427685 -0.16050875 30.00000000 0.24370953 + 31818 0.59482455 -0.16050875 31.00000000 0.24909818 + 31906 0.59481668 -0.16050875 32.00000000 0.24744612 + 31790 0.59435749 -0.16050875 33.00000000 0.25073201 + 31150 0.59482714 -0.16050875 34.00000000 0.24962217 + 31864 0.59488905 -0.16050875 35.00000000 0.25370600 + 30424 0.59374457 -0.16050875 36.00000000 0.24935596 + 31556 0.59382823 -0.16050875 37.00000000 0.25301906 + 31530 0.59423593 -0.16050875 38.00000000 0.24922959 + 31042 0.59338571 -0.16050875 39.00000000 0.25149518 + 31546 0.59477132 -0.16050875 40.00000000 0.25318200 + 1490238 0.83302939 -0.00666210 1.00000000 0.24986931 + 527312 0.84238294 -0.00666210 2.00000000 0.24964493 + 263226 0.84586150 -0.00666210 3.00000000 0.25029427 + 181202 0.84632695 -0.00666210 4.00000000 0.25008055 + 143452 0.84570761 -0.00666210 5.00000000 0.25138244 + 122632 0.84619973 -0.00666210 6.00000000 0.25028121 + 111400 0.84740116 -0.00666210 7.00000000 0.24971084 + 102128 0.84576757 -0.00666210 8.00000000 0.25147039 + 95462 0.84542724 -0.00666210 9.00000000 0.25277316 + 90868 0.84606226 -0.00666210 10.00000000 0.25138142 + 87366 0.84623474 -0.00666210 11.00000000 0.24846706 + 83342 0.84683083 -0.00666210 12.00000000 0.24986998 + 80620 0.84517572 -0.00666210 13.00000000 0.24865649 + 78910 0.84634348 -0.00666210 14.00000000 0.25043026 + 77962 0.84592640 -0.00666210 15.00000000 0.25026962 + 75040 0.84683860 -0.00666210 16.00000000 0.25068989 + 74320 0.84594826 -0.00666210 17.00000000 0.24754673 + 74830 0.84527891 -0.00666210 18.00000000 0.24605857 + 72588 0.84590433 -0.00666210 19.00000000 0.24918378 + 71584 0.84688479 -0.00666210 20.00000000 0.24914301 + 69004 0.84596171 -0.00666210 21.00000000 0.24957036 + 68350 0.84544537 -0.00666210 22.00000000 0.24999382 + 66324 0.84561733 -0.00666210 23.00000000 0.24757098 + 66414 0.84642779 -0.00666210 24.00000000 0.25102927 + 67848 0.84679084 -0.00666210 25.00000000 0.24731321 + 68344 0.84611108 -0.00666210 26.00000000 0.24705831 + 67506 0.84511987 -0.00666210 27.00000000 0.24766676 + 66260 0.84678560 -0.00666210 28.00000000 0.24706047 + 64900 0.84525190 -0.00666210 29.00000000 0.24996408 + 65156 0.84730219 -0.00666210 30.00000000 0.24780891 + 64704 0.84555780 -0.00666210 31.00000000 0.24622818 + 64628 0.84662565 -0.00666210 32.00000000 0.25092725 + 65608 0.84605928 -0.00666210 33.00000000 0.24922912 + 64774 0.84570330 -0.00666210 34.00000000 0.25039156 + 63400 0.84595133 -0.00666210 35.00000000 0.24781904 + 62984 0.84602821 -0.00666210 36.00000000 0.24743940 + 63990 0.84753446 -0.00666210 37.00000000 0.25393896 + 62618 0.84599988 -0.00666210 38.00000000 0.24979900 + 63302 0.84651791 -0.00666210 39.00000000 0.25057707 + 62256 0.84590261 -0.00666210 40.00000000 0.25059560 + 1684144 1.18526838 0.14718457 1.00000000 0.25005483 + 864770 1.19760526 0.14718457 2.00000000 0.24900942 + 501238 1.20364878 0.14718457 3.00000000 0.25068256 + 360536 1.20507597 0.14718457 4.00000000 0.24994549 + 292506 1.20561626 0.14718457 5.00000000 0.24982447 + 250034 1.20778001 0.14718457 6.00000000 0.25007684 + 225580 1.20592790 0.14718457 7.00000000 0.25186370 + 208036 1.20538059 0.14718457 8.00000000 0.25221324 + 194700 1.20670207 0.14718457 9.00000000 0.25095568 + 184086 1.20646115 0.14718457 10.00000000 0.24964762 + 178932 1.20673546 0.14718457 11.00000000 0.25074043 + 171502 1.20606079 0.14718457 12.00000000 0.24834786 + 162652 1.20608536 0.14718457 13.00000000 0.24946603 + 158908 1.20620570 0.14718457 14.00000000 0.24998930 + 156356 1.20501936 0.14718457 15.00000000 0.24910017 + 156218 1.20591941 0.14718457 16.00000000 0.25047661 + 150930 1.20542770 0.14718457 17.00000000 0.24979415 + 150184 1.20609517 0.14718457 18.00000000 0.24690170 + 147356 1.20681157 0.14718457 19.00000000 0.24887767 + 145560 1.20653909 0.14718457 20.00000000 0.24789359 + 141262 1.20591917 0.14718457 21.00000000 0.24938619 + 139464 1.20570261 0.14718457 22.00000000 0.24838467 + 136856 1.20638727 0.14718457 23.00000000 0.25134252 + 136860 1.20770278 0.14718457 24.00000000 0.25142098 + 138020 1.20507769 0.14718457 25.00000000 0.25011880 + 138088 1.20725599 0.14718457 26.00000000 0.24784933 + 135156 1.20494350 0.14718457 27.00000000 0.24670528 + 134576 1.20641808 0.14718457 28.00000000 0.24927531 + 133218 1.20613197 0.14718457 29.00000000 0.25010758 + 135260 1.20578014 0.14718457 30.00000000 0.25062483 + 132410 1.20681049 0.14718457 31.00000000 0.25004616 + 132602 1.20719977 0.14718457 32.00000000 0.25025195 + 133656 1.20595924 0.14718457 33.00000000 0.25144852 + 131546 1.20652143 0.14718457 34.00000000 0.24992016 + 129876 1.20606667 0.14718457 35.00000000 0.25024073 + 129740 1.20673122 0.14718457 36.00000000 0.25067676 + 128910 1.20409046 0.14718457 37.00000000 0.25171764 + 128536 1.20468252 0.14718457 38.00000000 0.24707222 + 129258 1.20611551 0.14718457 39.00000000 0.24887916 + 128494 1.20588043 0.14718457 40.00000000 0.24845289 + 1883542 1.69081532 0.30103000 1.00000000 0.24975888 + 1310368 1.70315046 0.30103000 2.00000000 0.25018762 + 902200 1.71159605 0.30103000 3.00000000 0.25067822 + 700478 1.71623624 0.30103000 4.00000000 0.24968366 + 585088 1.71839836 0.30103000 5.00000000 0.24963146 + 509872 1.71803050 0.30103000 6.00000000 0.25018771 + 459344 1.71799076 0.30103000 7.00000000 0.25060783 + 420140 1.71963207 0.30103000 8.00000000 0.25150071 + 393582 1.71973385 0.30103000 9.00000000 0.25074362 + 374570 1.71927455 0.30103000 10.00000000 0.25009155 + 359024 1.71914335 0.30103000 11.00000000 0.25105044 + 345662 1.71942580 0.30103000 12.00000000 0.25019921 + 335312 1.72036485 0.30103000 13.00000000 0.24867824 + 325454 1.71930610 0.30103000 14.00000000 0.25003797 + 321138 1.71896905 0.30103000 15.00000000 0.24937264 + 310502 1.71767822 0.30103000 16.00000000 0.25020155 + 307904 1.71906900 0.30103000 17.00000000 0.24933637 + 305194 1.71923088 0.30103000 18.00000000 0.24798830 + 299608 1.71718479 0.30103000 19.00000000 0.24844278 + 295926 1.71866608 0.30103000 20.00000000 0.24852291 + 292076 1.71995907 0.30103000 21.00000000 0.24833144 + 285606 1.71893722 0.30103000 22.00000000 0.24996971 + 284470 1.72020784 0.30103000 23.00000000 0.24885675 + 280266 1.71903654 0.30103000 24.00000000 0.25142072 + 281072 1.72036291 0.30103000 25.00000000 0.24926307 + 277602 1.71830445 0.30103000 26.00000000 0.25042975 + 274050 1.71917595 0.30103000 27.00000000 0.24736024 + 272138 1.72053991 0.30103000 28.00000000 0.24806528 + 270302 1.71717834 0.30103000 29.00000000 0.25007815 + 270340 1.71843836 0.30103000 30.00000000 0.24951846 + 268688 1.71804956 0.30103000 31.00000000 0.24863786 + 267028 1.72107951 0.30103000 32.00000000 0.25116683 + 269612 1.71856644 0.30103000 33.00000000 0.25231191 + 271954 1.71922366 0.30103000 34.00000000 0.24938122 + 265122 1.71934100 0.30103000 35.00000000 0.24974347 + 262966 1.71864367 0.30103000 36.00000000 0.25039068 + 260762 1.71891221 0.30103000 37.00000000 0.25134052 + 260842 1.72160591 0.30103000 38.00000000 0.24931783 + 262050 1.71854933 0.30103000 39.00000000 0.24849363 + 265354 1.72164482 0.30103000 40.00000000 0.24990128 + 2272554 2.41622267 0.45487534 1.00000000 0.24976168 + 1926606 2.42605816 0.45487534 2.00000000 0.24939087 + 1554658 2.43658564 0.45487534 3.00000000 0.24949270 + 1294758 2.44232692 0.45487534 4.00000000 0.25061341 + 1114792 2.44497487 0.45487534 5.00000000 0.24956619 + 988498 2.44730031 0.45487534 6.00000000 0.25076963 + 903496 2.44836518 0.45487534 7.00000000 0.25199244 + 841216 2.44835582 0.45487534 8.00000000 0.25049140 + 799524 2.44899984 0.45487534 9.00000000 0.24946628 + 754170 2.44972279 0.45487534 10.00000000 0.25061441 + 728488 2.44928884 0.45487534 11.00000000 0.25001056 + 699012 2.45053827 0.45487534 12.00000000 0.25016917 + 683358 2.44946103 0.45487534 13.00000000 0.24977614 + 669718 2.45246619 0.45487534 14.00000000 0.25089580 + 645412 2.44793534 0.45487534 15.00000000 0.25021546 + 628130 2.45177133 0.45487534 16.00000000 0.25029770 + 621958 2.44837012 0.45487534 17.00000000 0.24984581 + 611946 2.45070826 0.45487534 18.00000000 0.24931906 + 603458 2.45071078 0.45487534 19.00000000 0.24780378 + 594352 2.45073504 0.45487534 20.00000000 0.24887491 + 587678 2.44957168 0.45487534 21.00000000 0.24967035 + 581722 2.45079129 0.45487534 22.00000000 0.24962084 + 577656 2.44913832 0.45487534 23.00000000 0.24971414 + 569752 2.45115546 0.45487534 24.00000000 0.24935122 + 562234 2.45127170 0.45487534 25.00000000 0.24982581 + 560758 2.45031124 0.45487534 26.00000000 0.24942844 + 558964 2.45210187 0.45487534 27.00000000 0.24939282 + 558536 2.45178195 0.45487534 28.00000000 0.24940988 + 554736 2.45103173 0.45487534 29.00000000 0.24942819 + 549256 2.44982411 0.45487534 30.00000000 0.24981899 + 542008 2.45100698 0.45487534 31.00000000 0.25075715 + 545438 2.44885668 0.45487534 32.00000000 0.24956616 + 551362 2.44923806 0.45487534 33.00000000 0.24990599 + 550546 2.45083593 0.45487534 34.00000000 0.24864022 + 547696 2.45203898 0.45487534 35.00000000 0.24931638 + 536724 2.44983018 0.45487534 36.00000000 0.24954140 + 527808 2.45100290 0.45487534 37.00000000 0.25007555 + 538486 2.44997817 0.45487534 38.00000000 0.24860127 + 535748 2.45157446 0.45487534 39.00000000 0.24900648 + 544450 2.45054084 0.45487534 40.00000000 0.24994610 + 3076372 3.45805756 0.60872281 1.00000000 0.24996166 + 2888886 3.46375395 0.60872281 2.00000000 0.24944594 + 2605426 3.46981408 0.60872281 3.00000000 0.24940676 + 2320948 3.47704354 0.60872281 4.00000000 0.24981090 + 2073954 3.48065001 0.60872281 5.00000000 0.24948793 + 1905796 3.48461045 0.60872281 6.00000000 0.25067876 + 1761382 3.48389177 0.60872281 7.00000000 0.25020306 + 1657512 3.48772142 0.60872281 8.00000000 0.24966496 + 1583426 3.48598769 0.60872281 9.00000000 0.24958140 + 1504078 3.48681083 0.60872281 10.00000000 0.24979114 + 1448418 3.48864821 0.60872281 11.00000000 0.25050770 + 1422874 3.49109944 0.60872281 12.00000000 0.24972114 + 1389646 3.48800458 0.60872281 13.00000000 0.25045745 + 1349436 3.48816707 0.60872281 14.00000000 0.24977255 + 1310860 3.49281802 0.60872281 15.00000000 0.24962170 + 1292386 3.49231098 0.60872281 16.00000000 0.24992398 + 1254678 3.49335457 0.60872281 17.00000000 0.24934855 + 1240066 3.48990847 0.60872281 18.00000000 0.24924112 + 1226832 3.49119815 0.60872281 19.00000000 0.24923509 + 1209760 3.49113725 0.60872281 20.00000000 0.24859468 + 1189824 3.49092158 0.60872281 21.00000000 0.24944210 + 1168038 3.49035484 0.60872281 22.00000000 0.24899926 + 1170040 3.49204017 0.60872281 23.00000000 0.24919306 + 1169202 3.49279735 0.60872281 24.00000000 0.24857334 + 1156488 3.49283915 0.60872281 25.00000000 0.24776238 + 1147038 3.49359363 0.60872281 26.00000000 0.24904208 + 1142982 3.49210250 0.60872281 27.00000000 0.24988777 + 1136686 3.49242341 0.60872281 28.00000000 0.24985697 + 1129890 3.49058379 0.60872281 29.00000000 0.24872011 + 1115476 3.49112899 0.60872281 30.00000000 0.24971133 + 1121674 3.49070104 0.60872281 31.00000000 0.24945762 + 1123040 3.49251043 0.60872281 32.00000000 0.24953773 + 1113922 3.49476500 0.60872281 33.00000000 0.24946179 + 1117360 3.49246235 0.60872281 34.00000000 0.24875961 + 1104280 3.48972278 0.60872281 35.00000000 0.25041657 + 1096826 3.49140404 0.60872281 36.00000000 0.25007660 + 1100066 3.49442817 0.60872281 37.00000000 0.24935114 + 1104996 3.49194934 0.60872281 38.00000000 0.24969988 + 1093138 3.48936206 0.60872281 39.00000000 0.24962104 + 1091682 3.48977576 0.60872281 40.00000000 0.24992424 + 4648412 4.93663773 0.76256829 1.00000000 0.25042967 + 4524600 4.94025328 0.76256829 2.00000000 0.24975986 + 4283092 4.94611235 0.76256829 3.00000000 0.24990057 + 4022444 4.95020430 0.76256829 4.00000000 0.24979452 + 3784326 4.95666425 0.76256829 5.00000000 0.24968399 + 3562900 4.96329857 0.76256829 6.00000000 0.25019263 + 3371496 4.96744382 0.76256829 7.00000000 0.25009454 + 3213130 4.96729783 0.76256829 8.00000000 0.24999534 + 3094648 4.96911727 0.76256829 9.00000000 0.24927646 + 2990130 4.97216978 0.76256829 10.00000000 0.24943920 + 2898084 4.97637940 0.76256829 11.00000000 0.25042436 + 2813594 4.97256389 0.76256829 12.00000000 0.24995646 + 2707088 4.97327388 0.76256829 13.00000000 0.24964070 + 2672650 4.97355129 0.76256829 14.00000000 0.24988824 + 2642184 4.97428314 0.76256829 15.00000000 0.24961480 + 2605280 4.97188823 0.76256829 16.00000000 0.24977995 + 2542058 4.97350366 0.76256829 17.00000000 0.24974081 + 2497104 4.97820948 0.76256829 18.00000000 0.24936261 + 2471172 4.97754684 0.76256829 19.00000000 0.24974845 + 2451812 4.97634027 0.76256829 20.00000000 0.24961779 + 2422200 4.97582072 0.76256829 21.00000000 0.24893885 + 2396950 4.97880241 0.76256829 22.00000000 0.24891079 + 2382680 4.97420309 0.76256829 23.00000000 0.24906115 + 2367832 4.97505795 0.76256829 24.00000000 0.24899421 + 2352366 4.97503048 0.76256829 25.00000000 0.24889276 + 2347372 4.97359046 0.76256829 26.00000000 0.24913993 + 2325120 4.97809773 0.76256829 27.00000000 0.25008897 + 2303230 4.97609110 0.76256829 28.00000000 0.24976490 + 2297226 4.97623482 0.76256829 29.00000000 0.24908858 + 2301176 4.97632007 0.76256829 30.00000000 0.24882553 + 2286758 4.97587543 0.76256829 31.00000000 0.24954491 + 2284740 4.97416809 0.76256829 32.00000000 0.24903586 + 2268932 4.97356278 0.76256829 33.00000000 0.24960745 + 2268324 4.97623733 0.76256829 34.00000000 0.24978240 + 2264574 4.97591970 0.76256829 35.00000000 0.24931920 + 2257122 4.97425952 0.76256829 36.00000000 0.24952160 + 2239710 4.97536436 0.76256829 37.00000000 0.25014436 + 2241476 4.97155002 0.76256829 38.00000000 0.24982691 + 2230502 4.97449566 0.76256829 39.00000000 0.24977438 + 2216382 4.97901620 0.76256829 40.00000000 0.24987773 + 7422082 7.04986438 0.91641447 1.00000000 0.24952483 + 7342420 7.05001319 0.91641447 2.00000000 0.24949696 + 7162684 7.05052498 0.91641447 3.00000000 0.24950481 + 6919922 7.06002086 0.91641447 4.00000000 0.24996850 + 6701460 7.06521687 0.91641447 5.00000000 0.24935309 + 6507306 7.06704620 0.91641447 6.00000000 0.24925818 + 6314692 7.07382526 0.91641447 7.00000000 0.24972192 + 6141430 7.07362429 0.91641447 8.00000000 0.24983844 + 5945106 7.08122851 0.91641447 9.00000000 0.24946943 + 5785686 7.08070183 0.91641447 10.00000000 0.24998673 + 5661112 7.08274220 0.91641447 11.00000000 0.25044052 + 5550896 7.08286638 0.91641447 12.00000000 0.25047692 + 5442948 7.08360982 0.91641447 13.00000000 0.24985570 + 5348664 7.08518092 0.91641447 14.00000000 0.24991321 + 5242122 7.08599887 0.91641447 15.00000000 0.24977888 + 5143372 7.08819926 0.91641447 16.00000000 0.24952700 + 5065298 7.08747090 0.91641447 17.00000000 0.24973668 + 5050398 7.08695352 0.91641447 18.00000000 0.25011783 + 4956794 7.08876582 0.91641447 19.00000000 0.24991346 + 4904182 7.08607581 0.91641447 20.00000000 0.24948148 + 4891972 7.08539377 0.91641447 21.00000000 0.24944933 + 4896274 7.08830736 0.91641447 22.00000000 0.24895178 + 4847252 7.08813808 0.91641447 23.00000000 0.24884007 + 4812956 7.09159663 0.91641447 24.00000000 0.24908386 + 4781004 7.09182687 0.91641447 25.00000000 0.24933402 + 4763750 7.08947799 0.91641447 26.00000000 0.24887715 + 4726870 7.08777605 0.91641447 27.00000000 0.24937336 + 4707920 7.08676044 0.91641447 28.00000000 0.24966569 + 4688050 7.09112174 0.91641447 29.00000000 0.24917767 + 4672880 7.09191198 0.91641447 30.00000000 0.24959492 + 4672066 7.08895296 0.91641447 31.00000000 0.24876159 + 4627138 7.09422047 0.91641447 32.00000000 0.24937204 + 4601802 7.09450821 0.91641447 33.00000000 0.24909870 + 4605154 7.09221921 0.91641447 34.00000000 0.24977374 + 4584034 7.09142985 0.91641447 35.00000000 0.24978513 + 4570714 7.08879956 0.91641447 36.00000000 0.24963406 + 4553424 7.09005974 0.91641447 37.00000000 0.24895758 + 4530382 7.08902541 0.91641447 38.00000000 0.24877579 + 4515952 7.09151668 0.91641447 39.00000000 0.24924857 + 4543438 7.09471761 0.91641447 40.00000000 0.24942545 + 12643554 10.05991865 1.07025958 1.00000000 0.24953996 + 12535246 10.06492179 1.07025958 2.00000000 0.24937302 + 12397790 10.06843336 1.07025958 3.00000000 0.24992243 + 12227032 10.06685432 1.07025958 4.00000000 0.24975375 + 12054968 10.06904353 1.07025958 5.00000000 0.24927420 + 11830278 10.07291116 1.07025958 6.00000000 0.24967107 + 11647638 10.07271907 1.07025958 7.00000000 0.24945793 + 11486374 10.07948491 1.07025958 8.00000000 0.24978155 + 11278820 10.08453394 1.07025958 9.00000000 0.24979482 + 11082972 10.08566676 1.07025958 10.00000000 0.24981881 + 10920932 10.08939554 1.07025958 11.00000000 0.25001526 + 10804010 10.09404761 1.07025958 12.00000000 0.24997760 + 10688802 10.09346092 1.07025958 13.00000000 0.24983412 + 10561448 10.09311032 1.07025958 14.00000000 0.25024302 + 10440848 10.09598919 1.07025958 15.00000000 0.24994732 + 10314244 10.10139961 1.07025958 16.00000000 0.24965935 + 10225962 10.09949343 1.07025958 17.00000000 0.24954434 + 10100666 10.10190097 1.07025958 18.00000000 0.24958514 + 10011510 10.10326283 1.07025958 19.00000000 0.24919098 + 9923138 10.09931515 1.07025958 20.00000000 0.24945482 + 9832976 10.10235901 1.07025958 21.00000000 0.24901745 + 9784116 10.10123219 1.07025958 22.00000000 0.24946753 + 9721612 10.10009518 1.07025958 23.00000000 0.24929867 + 9696364 10.10112842 1.07025958 24.00000000 0.24957569 + 9636320 10.09697458 1.07025958 25.00000000 0.24946589 + 9588242 10.10241703 1.07025958 26.00000000 0.24967456 + 9533516 10.10231080 1.07025958 27.00000000 0.24932666 + 9465798 10.10122339 1.07025958 28.00000000 0.24910891 + 9471488 10.10108139 1.07025958 29.00000000 0.24981550 + 9441602 10.10434976 1.07025958 30.00000000 0.24925480 + 9402448 10.10296085 1.07025958 31.00000000 0.24920728 + 9379890 10.10424448 1.07025958 32.00000000 0.24924283 + 9374912 10.10040390 1.07025958 33.00000000 0.24933683 + 9366012 10.10070746 1.07025958 34.00000000 0.24943018 + 9341704 10.10314480 1.07025958 35.00000000 0.24935953 + 9320288 10.10640517 1.07025958 36.00000000 0.24919831 + 9302036 10.10850112 1.07025958 37.00000000 0.24951507 + 9240680 10.10816201 1.07025958 38.00000000 0.24941246 + 9224606 10.10775085 1.07025958 39.00000000 0.24931602 + 9233766 10.10579522 1.07025958 40.00000000 0.24915694 + 22264988 14.35253497 1.22410814 1.00000000 0.24925945 + 22212026 14.35208869 1.22410814 2.00000000 0.24970156 + 22159776 14.35254318 1.22410814 3.00000000 0.24946420 + 22047306 14.35829376 1.22410814 4.00000000 0.24985308 + 21911290 14.35903139 1.22410814 5.00000000 0.24973330 + 21751458 14.36101309 1.22410814 6.00000000 0.24967479 + 21511594 14.36652726 1.22410814 7.00000000 0.24966015 + 21396736 14.36979818 1.22410814 8.00000000 0.24961422 + 21310498 14.37356281 1.22410814 9.00000000 0.24951255 + 21155712 14.37623074 1.22410814 10.00000000 0.24974073 + 20964328 14.37562531 1.22410814 11.00000000 0.24993183 + 20862084 14.37930163 1.22410814 12.00000000 0.24962003 + 20707384 14.37971943 1.22410814 13.00000000 0.24989264 + 20513150 14.38250418 1.22410814 14.00000000 0.24971521 + 20412030 14.38399936 1.22410814 15.00000000 0.24985949 + 20320418 14.39041683 1.22410814 16.00000000 0.24972192 + 20219920 14.39512247 1.22410814 17.00000000 0.24948524 + 20194138 14.39177745 1.22410814 18.00000000 0.24938105 + 20014924 14.39362800 1.22410814 19.00000000 0.24934976 + 19858862 14.39525102 1.22410814 20.00000000 0.24952702 + 19761722 14.39093615 1.22410814 21.00000000 0.24961949 + 19614900 14.39377439 1.22410814 22.00000000 0.24945354 + 19532994 14.39491445 1.22410814 23.00000000 0.24965800 + 19464260 14.39957494 1.22410814 24.00000000 0.24971433 + 19388852 14.40368529 1.22410814 25.00000000 0.24953913 + 19277812 14.40172179 1.22410814 26.00000000 0.24964174 + 19228780 14.39975281 1.22410814 27.00000000 0.24944810 + 19115952 14.40316375 1.22410814 28.00000000 0.24972096 + 19033022 14.40243005 1.22410814 29.00000000 0.24937441 + 18987772 14.40258668 1.22410814 30.00000000 0.24953752 + 18934758 14.39799009 1.22410814 31.00000000 0.24945884 + 18860804 14.39475860 1.22410814 32.00000000 0.24932234 + 18914324 14.39817425 1.22410814 33.00000000 0.24917758 + 18857546 14.39674583 1.22410814 34.00000000 0.24927407 + 18804680 14.39731362 1.22410814 35.00000000 0.24960041 + 18827200 14.39696562 1.22410814 36.00000000 0.24948243 + 18791250 14.39857625 1.22410814 37.00000000 0.24956774 + 18697144 14.40032154 1.22410814 38.00000000 0.24950444 + 18710512 14.40030485 1.22410814 39.00000000 0.24934548 + 18762930 14.39985642 1.22410814 40.00000000 0.24946034 + 41190546 20.48631945 1.37795248 1.00000000 0.24953222 + 41237002 20.47921498 1.37795248 2.00000000 0.24948116 + 41141032 20.48017123 1.37795248 3.00000000 0.24941916 + 41115956 20.48228581 1.37795248 4.00000000 0.24967230 + 40996404 20.48359798 1.37795248 5.00000000 0.24973002 + 40793904 20.48511793 1.37795248 6.00000000 0.24959293 + 40671102 20.48673019 1.37795248 7.00000000 0.24946313 + 40494102 20.48685332 1.37795248 8.00000000 0.24978369 + 40474382 20.49127496 1.37795248 9.00000000 0.24981686 + 40432018 20.49402079 1.37795248 10.00000000 0.24989314 + 40287284 20.49468822 1.37795248 11.00000000 0.24986110 + 40291360 20.49502297 1.37795248 12.00000000 0.24968101 + 40124758 20.50205984 1.37795248 13.00000000 0.24980350 + 40026996 20.50343437 1.37795248 14.00000000 0.24970477 + 39974636 20.50477792 1.37795248 15.00000000 0.24967705 + 39915080 20.50590360 1.37795248 16.00000000 0.24961264 + 39740124 20.50509300 1.37795248 17.00000000 0.24957515 + 39631148 20.50199182 1.37795248 18.00000000 0.24951963 + 39547918 20.50191057 1.37795248 19.00000000 0.24958534 + 39427864 20.50573854 1.37795248 20.00000000 0.24960182 + 39312876 20.51096356 1.37795248 21.00000000 0.24962214 + 39170968 20.51398708 1.37795248 22.00000000 0.24950740 + 39039394 20.51264145 1.37795248 23.00000000 0.24947392 + 38947736 20.51354473 1.37795248 24.00000000 0.24968791 + 38889160 20.51306736 1.37795248 25.00000000 0.24962534 + 38798000 20.51360137 1.37795248 26.00000000 0.24952300 + 38750748 20.51358472 1.37795248 27.00000000 0.24950449 + 38683254 20.51597231 1.37795248 28.00000000 0.24964099 + 38610494 20.51734336 1.37795248 29.00000000 0.24947953 + 38469902 20.52388380 1.37795248 30.00000000 0.24935866 + 38505802 20.52199777 1.37795248 31.00000000 0.24955790 + 38481046 20.52382251 1.37795248 32.00000000 0.24951157 + 38357060 20.52507006 1.37795248 33.00000000 0.24950566 + 38273464 20.52490623 1.37795248 34.00000000 0.24952666 + 38272128 20.52551236 1.37795248 35.00000000 0.24950932 + 38217970 20.52522032 1.37795248 36.00000000 0.24952480 + 38183438 20.52110997 1.37795248 37.00000000 0.24935321 + 38106740 20.51999177 1.37795248 38.00000000 0.24951685 + 38002366 20.52086613 1.37795248 39.00000000 0.24959251 + 37984684 20.52159276 1.37795248 40.00000000 0.24948407 diff --git a/theory/tests/Mr19_DDsmu_nonperiodic b/theory/tests/Mr19_DDsmu_nonperiodic index 39f5c453..900a4dd9 100644 --- a/theory/tests/Mr19_DDsmu_nonperiodic +++ b/theory/tests/Mr19_DDsmu_nonperiodic @@ -1,140 +1,140 @@ - 16692 0.20339722 -0.62204752 0.05000000 0.24966241 - 16470 0.20331567 -0.62204752 0.10000000 0.24710486 - 16016 0.20372512 -0.62204752 0.15000000 0.24565266 - 16050 0.20363876 -0.62204752 0.20000000 0.24788391 - 15916 0.20350369 -0.62204752 0.25000000 0.25101277 - 16272 0.20313386 -0.62204752 0.30000000 0.24895674 - 16230 0.20348917 -0.62204752 0.35000000 0.25338644 - 16546 0.20385236 -0.62204752 0.40000000 0.24980049 - 16526 0.20347987 -0.62204752 0.45000000 0.24824338 - 16324 0.20365368 -0.62204752 0.50000000 0.24607593 - 25118 0.29047101 -0.46820059 0.05000000 0.24741942 - 24792 0.28963305 -0.46820059 0.10000000 0.25267582 - 25086 0.29024286 -0.46820059 0.15000000 0.24901836 - 24722 0.29013252 -0.46820059 0.20000000 0.25010222 - 25022 0.29068373 -0.46820059 0.25000000 0.25151603 - 25014 0.28978432 -0.46820059 0.30000000 0.24788683 - 25092 0.29024169 -0.46820059 0.35000000 0.24838181 - 24996 0.29044902 -0.46820059 0.40000000 0.25580759 - 25044 0.28959921 -0.46820059 0.45000000 0.24973243 - 24610 0.29003703 -0.46820059 0.50000000 0.24841258 - 39030 0.41310991 -0.31435498 0.05000000 0.24873583 - 38388 0.41324114 -0.31435498 0.10000000 0.24837949 - 37854 0.41296066 -0.31435498 0.15000000 0.24745815 - 38026 0.41399658 -0.31435498 0.20000000 0.25035322 - 38274 0.41374743 -0.31435498 0.25000000 0.24580413 - 38604 0.41366503 -0.31435498 0.30000000 0.25080159 - 37936 0.41347934 -0.31435498 0.35000000 0.25182989 - 38476 0.41330508 -0.31435498 0.40000000 0.25113755 - 38446 0.41365482 -0.31435498 0.45000000 0.24936805 - 38322 0.41335469 -0.31435498 0.50000000 0.25166295 - 58284 0.58847036 -0.16050875 0.05000000 0.25020375 - 57664 0.58868424 -0.16050875 0.10000000 0.24883266 - 58050 0.58847073 -0.16050875 0.15000000 0.24703402 - 58574 0.58908260 -0.16050875 0.20000000 0.24857010 - 58054 0.58811167 -0.16050875 0.25000000 0.24999327 - 57676 0.58852707 -0.16050875 0.30000000 0.25020662 - 57812 0.58820372 -0.16050875 0.35000000 0.25040234 - 58400 0.58818573 -0.16050875 0.40000000 0.25057091 - 57954 0.58872986 -0.16050875 0.45000000 0.24965003 - 57778 0.58854156 -0.16050875 0.50000000 0.24997801 - 83592 0.83726945 -0.00666210 0.05000000 0.24998233 - 84400 0.83844570 -0.00666210 0.10000000 0.24862569 - 85084 0.83793227 -0.00666210 0.15000000 0.24851677 - 84796 0.83807338 -0.00666210 0.20000000 0.25001269 - 84248 0.83848332 -0.00666210 0.25000000 0.24972551 - 84860 0.83836965 -0.00666210 0.30000000 0.24923526 - 85374 0.83781963 -0.00666210 0.35000000 0.24773429 - 84728 0.83813240 -0.00666210 0.40000000 0.25042875 - 84652 0.83791795 -0.00666210 0.45000000 0.25026937 - 85016 0.83819879 -0.00666210 0.50000000 0.24971834 - 118788 1.19295365 0.14718457 0.05000000 0.25037935 - 118906 1.19265243 0.14718457 0.10000000 0.24915018 - 117776 1.19427135 0.14718457 0.15000000 0.24950589 - 120088 1.19373114 0.14718457 0.20000000 0.25066734 - 119402 1.19333891 0.14718457 0.25000000 0.25095498 - 121212 1.19294985 0.14718457 0.30000000 0.24910440 - 119042 1.19384043 0.14718457 0.35000000 0.24951204 - 120494 1.19303713 0.14718457 0.40000000 0.25028328 - 119208 1.19336002 0.14718457 0.45000000 0.24925978 - 120362 1.19308712 0.14718457 0.50000000 0.25168495 - 171592 1.70474276 0.30103000 0.05000000 0.24881097 - 170524 1.70434256 0.30103000 0.10000000 0.25096788 - 172864 1.70482526 0.30103000 0.15000000 0.25124184 - 173080 1.70509778 0.30103000 0.20000000 0.24959425 - 173230 1.70451935 0.30103000 0.25000000 0.25037203 - 174068 1.70575581 0.30103000 0.30000000 0.25001682 - 173370 1.70491087 0.30103000 0.35000000 0.24961422 - 173504 1.70421163 0.30103000 0.40000000 0.25015015 - 173384 1.70495092 0.30103000 0.45000000 0.25004891 - 175106 1.70524692 0.30103000 0.50000000 0.24864867 - 281176 2.44058087 0.45487534 0.05000000 0.24921168 - 282048 2.43990693 0.45487534 0.10000000 0.24960329 - 283034 2.43795647 0.45487534 0.15000000 0.24988415 - 283986 2.43917192 0.45487534 0.20000000 0.25103485 - 282324 2.43828188 0.45487534 0.25000000 0.24987784 - 283626 2.43841569 0.45487534 0.30000000 0.24946471 - 282438 2.43973167 0.45487534 0.35000000 0.24984319 - 282940 2.43923414 0.45487534 0.40000000 0.24882798 - 286006 2.43798930 0.45487534 0.45000000 0.24928019 - 285594 2.43981163 0.45487534 0.50000000 0.24905817 - 532804 3.49212451 0.60872281 0.05000000 0.24996206 - 530772 3.48966468 0.60872281 0.10000000 0.24898679 - 530256 3.49046850 0.60872281 0.15000000 0.25031266 - 531860 3.49468260 0.60872281 0.20000000 0.24968356 - 534886 3.49251076 0.60872281 0.25000000 0.25001477 - 534710 3.49149216 0.60872281 0.30000000 0.24922175 - 536232 3.49198070 0.60872281 0.35000000 0.24901246 - 535324 3.48953193 0.60872281 0.40000000 0.24939518 - 536586 3.49189361 0.60872281 0.45000000 0.24975535 - 538130 3.49257671 0.60872281 0.50000000 0.24955356 - 1138098 4.98779581 0.76256829 0.05000000 0.25000554 - 1134530 4.98682546 0.76256829 0.10000000 0.24994273 - 1131410 4.98576422 0.76256829 0.15000000 0.25053053 - 1129014 4.98384170 0.76256829 0.20000000 0.25053172 - 1128418 4.98402162 0.76256829 0.25000000 0.24980761 - 1134178 4.98555156 0.76256829 0.30000000 0.24973701 - 1137424 4.98529618 0.76256829 0.35000000 0.24908474 - 1136920 4.98521532 0.76256829 0.40000000 0.24988729 - 1130638 4.98483436 0.76256829 0.45000000 0.24977635 - 1130654 4.98518466 0.76256829 0.50000000 0.25027365 - 2565210 7.11954114 0.91641447 0.05000000 0.24984163 - 2550026 7.11785952 0.91641447 0.10000000 0.24953513 - 2550216 7.11824618 0.91641447 0.15000000 0.24930153 - 2551448 7.11813405 0.91641447 0.20000000 0.24937393 - 2551182 7.11654315 0.91641447 0.25000000 0.24950969 - 2551058 7.11708846 0.91641447 0.30000000 0.24947281 - 2555568 7.11670860 0.91641447 0.35000000 0.24988287 - 2541210 7.11573632 0.91641447 0.40000000 0.24989037 - 2534490 7.11495121 0.91641447 0.45000000 0.24978067 - 2531530 7.11853657 0.91641447 0.50000000 0.25041968 - 6140136 10.15832627 1.07025958 0.05000000 0.24935784 - 6134522 10.15851017 1.07025958 0.10000000 0.24941126 - 6114376 10.15981186 1.07025958 0.15000000 0.24898925 - 6095996 10.16081907 1.07025958 0.20000000 0.24984614 - 6070144 10.16135587 1.07025958 0.25000000 0.24990914 - 6056906 10.16012949 1.07025958 0.30000000 0.24959204 - 6056284 10.15961453 1.07025958 0.35000000 0.24946016 - 6041606 10.15759601 1.07025958 0.40000000 0.24930955 - 6056874 10.15689495 1.07025958 0.45000000 0.24932114 - 6047742 10.15663323 1.07025958 0.50000000 0.24934432 - 15182384 14.48878258 1.22410814 0.05000000 0.24909997 - 15147790 14.48819977 1.22410814 0.10000000 0.24957603 - 15131684 14.48850811 1.22410814 0.15000000 0.24946850 - 15123448 14.48342154 1.22410814 0.20000000 0.24950576 - 15093890 14.49069292 1.22410814 0.25000000 0.24969058 - 15064712 14.49152684 1.22410814 0.30000000 0.24984536 - 15035580 14.49233646 1.22410814 0.35000000 0.24979204 - 15020350 14.48772643 1.22410814 0.40000000 0.24961736 - 15006472 14.48914620 1.22410814 0.45000000 0.24972672 - 15009476 14.49032842 1.22410814 0.50000000 0.24964864 - 39140742 20.67496688 1.37795248 0.05000000 0.24958415 - 39105020 20.66745098 1.37795248 0.10000000 0.24958584 - 39004936 20.66815741 1.37795248 0.15000000 0.24949485 - 38945200 20.66820055 1.37795248 0.20000000 0.24967691 - 38888220 20.66681410 1.37795248 0.25000000 0.24965315 - 38721022 20.66850293 1.37795248 0.30000000 0.24958649 - 38618624 20.66668659 1.37795248 0.35000000 0.24966218 - 38651274 20.66767160 1.37795248 0.40000000 0.24973893 - 38683556 20.67058559 1.37795248 0.45000000 0.24975961 - 38778746 20.66625446 1.37795248 0.50000000 0.24983466 + 16692 0.20339155 -0.62204752 0.05000000 0.24966241 + 16470 0.20313214 -0.62204752 0.10000000 0.24710486 + 16016 0.20376167 -0.62204752 0.15000000 0.24565266 + 16050 0.20387123 -0.62204752 0.20000000 0.24788391 + 15916 0.20339324 -0.62204752 0.25000000 0.25101277 + 16272 0.20290739 -0.62204752 0.30000000 0.24895674 + 16230 0.20382425 -0.62204752 0.35000000 0.25338644 + 16546 0.20389734 -0.62204752 0.40000000 0.24980049 + 16526 0.20360177 -0.62204752 0.45000000 0.24824338 + 16324 0.20362573 -0.62204752 0.50000000 0.24607593 + 25118 0.29022419 -0.46820059 0.05000000 0.24741942 + 24792 0.28998725 -0.46820059 0.10000000 0.25267582 + 25086 0.29038024 -0.46820059 0.15000000 0.24901836 + 24722 0.29033916 -0.46820059 0.20000000 0.25010222 + 25022 0.29059427 -0.46820059 0.25000000 0.25151603 + 25014 0.28981131 -0.46820059 0.30000000 0.24788683 + 25092 0.29034881 -0.46820059 0.35000000 0.24838181 + 24996 0.29078227 -0.46820059 0.40000000 0.25580759 + 25044 0.28967946 -0.46820059 0.45000000 0.24973243 + 24610 0.29001619 -0.46820059 0.50000000 0.24841258 + 39030 0.41315784 -0.31435498 0.05000000 0.24873583 + 38388 0.41263596 -0.31435498 0.10000000 0.24837949 + 37854 0.41337048 -0.31435498 0.15000000 0.24745815 + 38026 0.41363100 -0.31435498 0.20000000 0.25035322 + 38274 0.41366736 -0.31435498 0.25000000 0.24580413 + 38604 0.41310451 -0.31435498 0.30000000 0.25080159 + 37936 0.41352261 -0.31435498 0.35000000 0.25182989 + 38476 0.41362006 -0.31435498 0.40000000 0.25113755 + 38446 0.41356766 -0.31435498 0.45000000 0.24936805 + 38322 0.41290229 -0.31435498 0.50000000 0.25166295 + 58284 0.58868875 -0.16050875 0.05000000 0.25020375 + 57664 0.58860657 -0.16050875 0.10000000 0.24883266 + 58050 0.58845206 -0.16050875 0.15000000 0.24703402 + 58574 0.58854848 -0.16050875 0.20000000 0.24857010 + 58054 0.58775688 -0.16050875 0.25000000 0.24999327 + 57676 0.58845952 -0.16050875 0.30000000 0.25020662 + 57812 0.58819352 -0.16050875 0.35000000 0.25040234 + 58400 0.58784328 -0.16050875 0.40000000 0.25057091 + 57954 0.58834586 -0.16050875 0.45000000 0.24965003 + 57778 0.58847107 -0.16050875 0.50000000 0.24997801 + 83592 0.83732454 -0.00666210 0.05000000 0.24998233 + 84400 0.83772947 -0.00666210 0.10000000 0.24862569 + 85084 0.83775068 -0.00666210 0.15000000 0.24851677 + 84796 0.83815383 -0.00666210 0.20000000 0.25001269 + 84248 0.83887700 -0.00666210 0.25000000 0.24972551 + 84860 0.83877820 -0.00666210 0.30000000 0.24923526 + 85374 0.83832581 -0.00666210 0.35000000 0.24773429 + 84728 0.83825618 -0.00666210 0.40000000 0.25042875 + 84652 0.83772815 -0.00666210 0.45000000 0.25026937 + 85016 0.83843134 -0.00666210 0.50000000 0.24971834 + 118788 1.19322771 0.14718457 0.05000000 0.25037935 + 118906 1.19273005 0.14718457 0.10000000 0.24915018 + 117776 1.19380230 0.14718457 0.15000000 0.24950589 + 120088 1.19344935 0.14718457 0.20000000 0.25066734 + 119402 1.19341693 0.14718457 0.25000000 0.25095498 + 121212 1.19356668 0.14718457 0.30000000 0.24910440 + 119042 1.19368428 0.14718457 0.35000000 0.24951204 + 120494 1.19281326 0.14718457 0.40000000 0.25028328 + 119208 1.19349054 0.14718457 0.45000000 0.24925978 + 120362 1.19243102 0.14718457 0.50000000 0.25168495 + 171592 1.70476532 0.30103000 0.05000000 0.24881097 + 170524 1.70387891 0.30103000 0.10000000 0.25096788 + 172864 1.70482863 0.30103000 0.15000000 0.25124184 + 173080 1.70554636 0.30103000 0.20000000 0.24959425 + 173230 1.70413854 0.30103000 0.25000000 0.25037203 + 174068 1.70589246 0.30103000 0.30000000 0.25001682 + 173370 1.70519299 0.30103000 0.35000000 0.24961422 + 173504 1.70371931 0.30103000 0.40000000 0.25015015 + 173384 1.70410805 0.30103000 0.45000000 0.25004891 + 175106 1.70447095 0.30103000 0.50000000 0.24864867 + 281176 2.43933819 0.45487534 0.05000000 0.24921168 + 282048 2.43968871 0.45487534 0.10000000 0.24960329 + 283034 2.43756032 0.45487534 0.15000000 0.24988415 + 283986 2.44023988 0.45487534 0.20000000 0.25103485 + 282324 2.43920916 0.45487534 0.25000000 0.24987784 + 283626 2.43843394 0.45487534 0.30000000 0.24946471 + 282438 2.43884219 0.45487534 0.35000000 0.24984319 + 282940 2.43771370 0.45487534 0.40000000 0.24882798 + 286006 2.43789264 0.45487534 0.45000000 0.24928019 + 285594 2.44004231 0.45487534 0.50000000 0.24905817 + 532804 3.49221531 0.60872281 0.05000000 0.24996206 + 530772 3.48940910 0.60872281 0.10000000 0.24898679 + 530256 3.49167647 0.60872281 0.15000000 0.25031266 + 531860 3.49522939 0.60872281 0.20000000 0.24968356 + 534886 3.49284331 0.60872281 0.25000000 0.25001477 + 534710 3.49049656 0.60872281 0.30000000 0.24922175 + 536232 3.49229807 0.60872281 0.35000000 0.24901246 + 535324 3.49011128 0.60872281 0.40000000 0.24939518 + 536586 3.49269899 0.60872281 0.45000000 0.24975535 + 538130 3.49282714 0.60872281 0.50000000 0.24955356 + 1138098 4.98814421 0.76256829 0.05000000 0.25000554 + 1134530 4.98505242 0.76256829 0.10000000 0.24994273 + 1131410 4.98469476 0.76256829 0.15000000 0.25053053 + 1129014 4.98287613 0.76256829 0.20000000 0.25053172 + 1128418 4.98401519 0.76256829 0.25000000 0.24980761 + 1134178 4.98663743 0.76256829 0.30000000 0.24973701 + 1137424 4.98703162 0.76256829 0.35000000 0.24908474 + 1136920 4.98626014 0.76256829 0.40000000 0.24988729 + 1130638 4.98538586 0.76256829 0.45000000 0.24977635 + 1130654 4.98423388 0.76256829 0.50000000 0.25027365 + 2565210 7.11894378 0.91641447 0.05000000 0.24984163 + 2550026 7.11870297 0.91641447 0.10000000 0.24953513 + 2550216 7.11927965 0.91641447 0.15000000 0.24930153 + 2551448 7.11773687 0.91641447 0.20000000 0.24937393 + 2551182 7.11534910 0.91641447 0.25000000 0.24950969 + 2551058 7.11613695 0.91641447 0.30000000 0.24947281 + 2555568 7.11568948 0.91641447 0.35000000 0.24988287 + 2541210 7.11548004 0.91641447 0.40000000 0.24989037 + 2534490 7.11383593 0.91641447 0.45000000 0.24978067 + 2531530 7.11826007 0.91641447 0.50000000 0.25041968 + 6140136 10.15829892 1.07025958 0.05000000 0.24935784 + 6134522 10.15740328 1.07025958 0.10000000 0.24941126 + 6114376 10.15881839 1.07025958 0.15000000 0.24898925 + 6095996 10.16175836 1.07025958 0.20000000 0.24984614 + 6070144 10.16190024 1.07025958 0.25000000 0.24990914 + 6056906 10.16135165 1.07025958 0.30000000 0.24959204 + 6056284 10.16127405 1.07025958 0.35000000 0.24946016 + 6041606 10.15698265 1.07025958 0.40000000 0.24930955 + 6056874 10.15679963 1.07025958 0.45000000 0.24932114 + 6047742 10.15647374 1.07025958 0.50000000 0.24934432 + 15182384 14.48980013 1.22410814 0.05000000 0.24909997 + 15147790 14.48836049 1.22410814 0.10000000 0.24957603 + 15131684 14.48890903 1.22410814 0.15000000 0.24946850 + 15123448 14.48313197 1.22410814 0.20000000 0.24950576 + 15093890 14.49108722 1.22410814 0.25000000 0.24969058 + 15064712 14.49016400 1.22410814 0.30000000 0.24984536 + 15035580 14.49208492 1.22410814 0.35000000 0.24979204 + 15020350 14.48723035 1.22410814 0.40000000 0.24961736 + 15006472 14.48794978 1.22410814 0.45000000 0.24972672 + 15009476 14.49047774 1.22410814 0.50000000 0.24964864 + 39140742 20.67565605 1.37795248 0.05000000 0.24958415 + 39105020 20.66835790 1.37795248 0.10000000 0.24958584 + 39004936 20.66916212 1.37795248 0.15000000 0.24949485 + 38945200 20.66913987 1.37795248 0.20000000 0.24967691 + 38888220 20.66637682 1.37795248 0.25000000 0.24965315 + 38721022 20.66811538 1.37795248 0.30000000 0.24958649 + 38618624 20.66803658 1.37795248 0.35000000 0.24966218 + 38651274 20.66814771 1.37795248 0.40000000 0.24973893 + 38683556 20.67118144 1.37795248 0.45000000 0.24975961 + 38778746 20.66592107 1.37795248 0.50000000 0.24983466 diff --git a/theory/tests/Mr19_DDsmu_periodic b/theory/tests/Mr19_DDsmu_periodic index 000bd333..1e01509f 100644 --- a/theory/tests/Mr19_DDsmu_periodic +++ b/theory/tests/Mr19_DDsmu_periodic @@ -1,140 +1,140 @@ - 16696 0.20340511 -0.62204752 0.05000000 0.24968146 - 16488 0.20332191 -0.62204752 0.10000000 0.24706347 - 16020 0.20373244 -0.62204752 0.15000000 0.24562233 - 16060 0.20364392 -0.62204752 0.20000000 0.24784059 - 15934 0.20350434 -0.62204752 0.25000000 0.25108589 - 16284 0.20314182 -0.62204752 0.30000000 0.24887897 - 16234 0.20349128 -0.62204752 0.35000000 0.25340692 - 16550 0.20385240 -0.62204752 0.40000000 0.24976285 - 16538 0.20348431 -0.62204752 0.45000000 0.24813252 - 16334 0.20365622 -0.62204752 0.50000000 0.24612709 - 25138 0.29047357 -0.46820059 0.05000000 0.24740801 - 24814 0.28963157 -0.46820059 0.10000000 0.25263541 - 25100 0.29024653 -0.46820059 0.15000000 0.24906452 - 24734 0.29013443 -0.46820059 0.20000000 0.25003660 - 25046 0.29069817 -0.46820059 0.25000000 0.25139261 - 25030 0.28979910 -0.46820059 0.30000000 0.24791067 - 25122 0.29025119 -0.46820059 0.35000000 0.24847559 - 25012 0.29046209 -0.46820059 0.40000000 0.25581235 - 25088 0.28961063 -0.46820059 0.45000000 0.24973555 - 24652 0.29005540 -0.46820059 0.50000000 0.24851525 - 39076 0.41310776 -0.31435498 0.05000000 0.24874608 - 38432 0.41324141 -0.31435498 0.10000000 0.24834603 - 37920 0.41298293 -0.31435498 0.15000000 0.24751310 - 38088 0.41400333 -0.31435498 0.20000000 0.25035322 - 38340 0.41375615 -0.31435498 0.25000000 0.24579433 - 38664 0.41367962 -0.31435498 0.30000000 0.25075408 - 38002 0.41348087 -0.31435498 0.35000000 0.25190199 - 38536 0.41332126 -0.31435498 0.40000000 0.25107541 - 38526 0.41365738 -0.31435498 0.45000000 0.24932426 - 38382 0.41337062 -0.31435498 0.50000000 0.25165435 - 58390 0.58845600 -0.16050875 0.05000000 0.25013221 - 57790 0.58870728 -0.16050875 0.10000000 0.24887692 - 58194 0.58846883 -0.16050875 0.15000000 0.24709330 - 58714 0.58909186 -0.16050875 0.20000000 0.24858267 - 58186 0.58813386 -0.16050875 0.25000000 0.25012674 - 57800 0.58853994 -0.16050875 0.30000000 0.25024506 - 57968 0.58821308 -0.16050875 0.35000000 0.25040226 - 58532 0.58819148 -0.16050875 0.40000000 0.25062234 - 58090 0.58872202 -0.16050875 0.45000000 0.24969840 - 57948 0.58854941 -0.16050875 0.50000000 0.24996402 - 83796 0.83729525 -0.00666210 0.05000000 0.25000992 - 84670 0.83846021 -0.00666210 0.10000000 0.24871563 - 85364 0.83797278 -0.00666210 0.15000000 0.24842284 - 85074 0.83810989 -0.00666210 0.20000000 0.25002028 - 84548 0.83850947 -0.00666210 0.25000000 0.24976886 - 85196 0.83842151 -0.00666210 0.30000000 0.24923974 - 85674 0.83787178 -0.00666210 0.35000000 0.24775272 - 85010 0.83817258 -0.00666210 0.40000000 0.25049033 - 84950 0.83795608 -0.00666210 0.45000000 0.25029921 - 85284 0.83824831 -0.00666210 0.50000000 0.24973753 - 119352 1.19295788 0.14718457 0.05000000 0.25031211 - 119520 1.19273160 0.14718457 0.10000000 0.24918593 - 118354 1.19427864 0.14718457 0.15000000 0.24953022 - 120688 1.19376873 0.14718457 0.20000000 0.25062363 - 119952 1.19338823 0.14718457 0.25000000 0.25086137 - 121798 1.19294412 0.14718457 0.30000000 0.24909837 - 119654 1.19387768 0.14718457 0.35000000 0.24957725 - 121044 1.19306633 0.14718457 0.40000000 0.25038286 - 119730 1.19342431 0.14718457 0.45000000 0.24926027 - 120934 1.19318878 0.14718457 0.50000000 0.25182705 - 172634 1.70484443 0.30103000 0.05000000 0.24901150 - 171622 1.70448066 0.30103000 0.10000000 0.25106794 - 173936 1.70493136 0.30103000 0.15000000 0.25128342 - 174220 1.70516293 0.30103000 0.20000000 0.24955715 - 174358 1.70469259 0.30103000 0.25000000 0.25049471 - 175170 1.70582906 0.30103000 0.30000000 0.25006489 - 174510 1.70497788 0.30103000 0.35000000 0.24963908 - 174686 1.70437683 0.30103000 0.40000000 0.25008229 - 174586 1.70507615 0.30103000 0.45000000 0.25011314 - 176400 1.70539489 0.30103000 0.50000000 0.24871577 - 283490 2.44073613 0.45487534 0.05000000 0.24923383 - 284486 2.44014948 0.45487534 0.10000000 0.24965664 - 285474 2.43804309 0.45487534 0.15000000 0.24986480 - 286392 2.43924216 0.45487534 0.20000000 0.25104925 - 284832 2.43849188 0.45487534 0.25000000 0.24991542 - 286492 2.43853443 0.45487534 0.30000000 0.24953663 - 285406 2.43996754 0.45487534 0.35000000 0.25001187 - 285934 2.43958500 0.45487534 0.40000000 0.24888549 - 289130 2.43852719 0.45487534 0.45000000 0.24935258 - 288792 2.44041724 0.45487534 0.50000000 0.24910388 - 538774 3.49265952 0.60872281 0.05000000 0.25012685 - 536882 3.49013116 0.60872281 0.10000000 0.24912969 - 536770 3.49102660 0.60872281 0.15000000 0.25047941 - 538650 3.49524589 0.60872281 0.20000000 0.24974063 - 541864 3.49305420 0.60872281 0.25000000 0.25001008 - 542038 3.49198027 0.60872281 0.30000000 0.24933890 - 544054 3.49246631 0.60872281 0.35000000 0.24904748 - 543734 3.48998792 0.60872281 0.40000000 0.24935966 - 545480 3.49250214 0.60872281 0.45000000 0.24991260 - 546710 3.49294207 0.60872281 0.50000000 0.24958456 - 1156546 4.98855521 0.76256829 0.05000000 0.25013517 - 1154290 4.98750847 0.76256829 0.10000000 0.25012384 - 1151936 4.98682452 0.76256829 0.15000000 0.25064796 - 1150724 4.98495906 0.76256829 0.20000000 0.25063166 - 1151192 4.98529237 0.76256829 0.25000000 0.24988881 - 1157690 4.98675022 0.76256829 0.30000000 0.24977483 - 1161698 4.98615161 0.76256829 0.35000000 0.24911063 - 1161474 4.98582870 0.76256829 0.40000000 0.24998168 - 1155500 4.98581045 0.76256829 0.45000000 0.24972697 - 1156282 4.98603424 0.76256829 0.50000000 0.25020309 - 2630134 7.12157899 0.91641447 0.05000000 0.24980935 - 2616902 7.12027769 0.91641447 0.10000000 0.24948923 - 2617704 7.12041498 0.91641447 0.15000000 0.24922032 - 2621342 7.11986209 0.91641447 0.20000000 0.24937682 - 2623208 7.11807253 0.91641447 0.25000000 0.24950096 - 2624018 7.11884788 0.91641447 0.30000000 0.24953898 - 2629016 7.11856321 0.91641447 0.35000000 0.24991916 - 2616678 7.11762765 0.91641447 0.40000000 0.25000430 - 2607744 7.11657271 0.91641447 0.45000000 0.24988166 - 2605006 7.12004280 0.91641447 0.50000000 0.25040504 - 6363262 10.16119669 1.07025958 0.05000000 0.24945892 - 6365022 10.16177272 1.07025958 0.10000000 0.24950668 - 6350106 10.16341326 1.07025958 0.15000000 0.24906306 - 6338574 10.16494329 1.07025958 0.20000000 0.24988314 - 6318792 10.16566599 1.07025958 0.25000000 0.24998078 - 6311930 10.16404315 1.07025958 0.30000000 0.24965122 - 6309198 10.16369903 1.07025958 0.35000000 0.24947420 - 6299586 10.16203791 1.07025958 0.40000000 0.24929819 - 6316330 10.16138939 1.07025958 0.45000000 0.24933064 - 6304970 10.16126849 1.07025958 0.50000000 0.24930296 - 15979910 14.49650105 1.22410814 0.05000000 0.24919603 - 15970992 14.49621120 1.22410814 0.10000000 0.24968772 - 15977214 14.49627398 1.22410814 0.15000000 0.24954238 - 15997964 14.49183686 1.22410814 0.20000000 0.24954162 - 15986616 14.49924085 1.22410814 0.25000000 0.24976051 - 15975250 14.49975488 1.22410814 0.30000000 0.24983339 - 15962460 14.49934217 1.22410814 0.35000000 0.24983212 - 15944718 14.49520607 1.22410814 0.40000000 0.24960165 - 15927140 14.49713813 1.22410814 0.45000000 0.24975027 - 15924180 14.49932047 1.22410814 0.50000000 0.24963350 - 42193962 20.69085604 1.37795248 0.05000000 0.24954981 - 42226628 20.68331612 1.37795248 0.10000000 0.24947287 - 42206740 20.68445964 1.37795248 0.15000000 0.24942813 - 42206062 20.68412787 1.37795248 0.20000000 0.24965372 - 42193028 20.68326109 1.37795248 0.25000000 0.24964470 - 42074252 20.68513698 1.37795248 0.30000000 0.24956409 - 42014374 20.68324866 1.37795248 0.35000000 0.24967513 - 42074964 20.68469735 1.37795248 0.40000000 0.24977434 - 42129608 20.68714595 1.37795248 0.45000000 0.24974971 - 42257610 20.68303819 1.37795248 0.50000000 0.24983034 + 16696 0.20340210 -0.62204752 0.05000000 0.24968146 + 16488 0.20313413 -0.62204752 0.10000000 0.24706347 + 16020 0.20376483 -0.62204752 0.15000000 0.24562233 + 16060 0.20388116 -0.62204752 0.20000000 0.24784059 + 15934 0.20339160 -0.62204752 0.25000000 0.25108589 + 16284 0.20290938 -0.62204752 0.30000000 0.24887897 + 16234 0.20382788 -0.62204752 0.35000000 0.25340692 + 16550 0.20389904 -0.62204752 0.40000000 0.24976285 + 16538 0.20360338 -0.62204752 0.45000000 0.24813252 + 16334 0.20363143 -0.62204752 0.50000000 0.24612709 + 25138 0.29023081 -0.46820059 0.05000000 0.24740801 + 24814 0.28997500 -0.46820059 0.10000000 0.25263541 + 25100 0.29038397 -0.46820059 0.15000000 0.24906452 + 24734 0.29034343 -0.46820059 0.20000000 0.25003660 + 25046 0.29060224 -0.46820059 0.25000000 0.25139261 + 25030 0.28983426 -0.46820059 0.30000000 0.24791067 + 25122 0.29036268 -0.46820059 0.35000000 0.24847559 + 25012 0.29079914 -0.46820059 0.40000000 0.25581235 + 25088 0.28970511 -0.46820059 0.45000000 0.24973555 + 24652 0.29003463 -0.46820059 0.50000000 0.24851525 + 39076 0.41315726 -0.31435498 0.05000000 0.24874608 + 38432 0.41263481 -0.31435498 0.10000000 0.24834603 + 37920 0.41339744 -0.31435498 0.15000000 0.24751310 + 38088 0.41361770 -0.31435498 0.20000000 0.25035322 + 38340 0.41366700 -0.31435498 0.25000000 0.24579433 + 38664 0.41311433 -0.31435498 0.30000000 0.25075408 + 38002 0.41355108 -0.31435498 0.35000000 0.25190199 + 38536 0.41363465 -0.31435498 0.40000000 0.25107541 + 38526 0.41358174 -0.31435498 0.45000000 0.24932426 + 38382 0.41292480 -0.31435498 0.50000000 0.25165435 + 58390 0.58867908 -0.16050875 0.05000000 0.25013221 + 57790 0.58862705 -0.16050875 0.10000000 0.24887692 + 58194 0.58844811 -0.16050875 0.15000000 0.24709330 + 58714 0.58857846 -0.16050875 0.20000000 0.24858267 + 58186 0.58781193 -0.16050875 0.25000000 0.25012674 + 57800 0.58845602 -0.16050875 0.30000000 0.25024506 + 57968 0.58818685 -0.16050875 0.35000000 0.25040226 + 58532 0.58784848 -0.16050875 0.40000000 0.25062234 + 58090 0.58831788 -0.16050875 0.45000000 0.24969840 + 57948 0.58849307 -0.16050875 0.50000000 0.24996402 + 83796 0.83738130 -0.00666210 0.05000000 0.25000992 + 84670 0.83775327 -0.00666210 0.10000000 0.24871563 + 85364 0.83781141 -0.00666210 0.15000000 0.24842284 + 85074 0.83817825 -0.00666210 0.20000000 0.25002028 + 84548 0.83889590 -0.00666210 0.25000000 0.24976886 + 85196 0.83881624 -0.00666210 0.30000000 0.24923974 + 85674 0.83839359 -0.00666210 0.35000000 0.24775272 + 85010 0.83825784 -0.00666210 0.40000000 0.25049033 + 84950 0.83775636 -0.00666210 0.45000000 0.25029921 + 85284 0.83850860 -0.00666210 0.50000000 0.24973753 + 119352 1.19329528 0.14718457 0.05000000 0.25031211 + 119520 1.19281975 0.14718457 0.10000000 0.24918593 + 118354 1.19383317 0.14718457 0.15000000 0.24953022 + 120688 1.19349309 0.14718457 0.20000000 0.25062363 + 119952 1.19343700 0.14718457 0.25000000 0.25086137 + 121798 1.19357190 0.14718457 0.30000000 0.24909837 + 119654 1.19374849 0.14718457 0.35000000 0.24957725 + 121044 1.19282329 0.14718457 0.40000000 0.25038286 + 119730 1.19351159 0.14718457 0.45000000 0.24926027 + 120934 1.19253622 0.14718457 0.50000000 0.25182705 + 172634 1.70485253 0.30103000 0.05000000 0.24901150 + 171622 1.70402199 0.30103000 0.10000000 0.25106794 + 173936 1.70500954 0.30103000 0.15000000 0.25128342 + 174220 1.70560744 0.30103000 0.20000000 0.24955715 + 174358 1.70439486 0.30103000 0.25000000 0.25049471 + 175170 1.70592691 0.30103000 0.30000000 0.25006489 + 174510 1.70521270 0.30103000 0.35000000 0.24963908 + 174686 1.70390806 0.30103000 0.40000000 0.25008229 + 174586 1.70418074 0.30103000 0.45000000 0.25011314 + 176400 1.70457441 0.30103000 0.50000000 0.24871577 + 283490 2.43944962 0.45487534 0.05000000 0.24923383 + 284486 2.43991115 0.45487534 0.10000000 0.24965664 + 285474 2.43767703 0.45487534 0.15000000 0.24986480 + 286392 2.44032733 0.45487534 0.20000000 0.25104925 + 284832 2.43936576 0.45487534 0.25000000 0.24991542 + 286492 2.43853325 0.45487534 0.30000000 0.24953663 + 285406 2.43914089 0.45487534 0.35000000 0.25001187 + 285934 2.43811794 0.45487534 0.40000000 0.24888549 + 289130 2.43840936 0.45487534 0.45000000 0.24935258 + 288792 2.44065607 0.45487534 0.50000000 0.24910388 + 538774 3.49277669 0.60872281 0.05000000 0.25012685 + 536882 3.48995088 0.60872281 0.10000000 0.24912969 + 536770 3.49225041 0.60872281 0.15000000 0.25047941 + 538650 3.49575390 0.60872281 0.20000000 0.24974063 + 541864 3.49343366 0.60872281 0.25000000 0.25001008 + 542038 3.49091568 0.60872281 0.30000000 0.24933890 + 544054 3.49261238 0.60872281 0.35000000 0.24904748 + 543734 3.49051424 0.60872281 0.40000000 0.24935966 + 545480 3.49337594 0.60872281 0.45000000 0.24991260 + 546710 3.49316977 0.60872281 0.50000000 0.24958456 + 1156546 4.98891801 0.76256829 0.05000000 0.25013517 + 1154290 4.98585886 0.76256829 0.10000000 0.25012384 + 1151936 4.98569749 0.76256829 0.15000000 0.25064796 + 1150724 4.98411316 0.76256829 0.20000000 0.25063166 + 1151192 4.98510452 0.76256829 0.25000000 0.24988881 + 1157690 4.98796558 0.76256829 0.30000000 0.24977483 + 1161698 4.98792530 0.76256829 0.35000000 0.24911063 + 1161474 4.98682712 0.76256829 0.40000000 0.24998168 + 1155500 4.98601095 0.76256829 0.45000000 0.24972697 + 1156282 4.98476120 0.76256829 0.50000000 0.25020309 + 2630134 7.12089613 0.91641447 0.05000000 0.24980935 + 2616902 7.12113955 0.91641447 0.10000000 0.24948923 + 2617704 7.12101062 0.91641447 0.15000000 0.24922032 + 2621342 7.11950781 0.91641447 0.20000000 0.24937682 + 2623208 7.11674543 0.91641447 0.25000000 0.24950096 + 2624018 7.11797098 0.91641447 0.30000000 0.24953898 + 2629016 7.11745100 0.91641447 0.35000000 0.24991916 + 2616678 7.11746627 0.91641447 0.40000000 0.25000430 + 2607744 7.11554706 0.91641447 0.45000000 0.24988166 + 2605006 7.11990381 0.91641447 0.50000000 0.25040504 + 6363262 10.16117127 1.07025958 0.05000000 0.24945892 + 6365022 10.16086996 1.07025958 0.10000000 0.24950668 + 6350106 10.16260497 1.07025958 0.15000000 0.24906306 + 6338574 10.16571938 1.07025958 0.20000000 0.24988314 + 6318792 10.16647767 1.07025958 0.25000000 0.24998078 + 6311930 10.16531343 1.07025958 0.30000000 0.24965122 + 6309198 10.16543474 1.07025958 0.35000000 0.24947420 + 6299586 10.16138851 1.07025958 0.40000000 0.24929819 + 6316330 10.16136673 1.07025958 0.45000000 0.24933064 + 6304970 10.16114155 1.07025958 0.50000000 0.24930296 + 15979910 14.49718206 1.22410814 0.05000000 0.24919603 + 15970992 14.49618499 1.22410814 0.10000000 0.24968772 + 15977214 14.49642264 1.22410814 0.15000000 0.24954238 + 15997964 14.49095994 1.22410814 0.20000000 0.24954162 + 15986616 14.49910410 1.22410814 0.25000000 0.24976051 + 15975250 14.49845982 1.22410814 0.30000000 0.24983339 + 15962460 14.49966679 1.22410814 0.35000000 0.24983212 + 15944718 14.49472169 1.22410814 0.40000000 0.24960165 + 15927140 14.49610105 1.22410814 0.45000000 0.24975027 + 15924180 14.49948603 1.22410814 0.50000000 0.24963350 + 42193962 20.69109269 1.37795248 0.05000000 0.24954981 + 42226628 20.68373192 1.37795248 0.10000000 0.24947287 + 42206740 20.68491724 1.37795248 0.15000000 0.24942813 + 42206062 20.68453625 1.37795248 0.20000000 0.24965372 + 42193028 20.68264996 1.37795248 0.25000000 0.24964470 + 42074252 20.68464570 1.37795248 0.30000000 0.24956409 + 42014374 20.68418903 1.37795248 0.35000000 0.24967513 + 42074964 20.68507284 1.37795248 0.40000000 0.24977434 + 42129608 20.68756904 1.37795248 0.45000000 0.24974971 + 42257610 20.68222144 1.37795248 0.50000000 0.24983034 diff --git a/theory/tests/Mr19_wp b/theory/tests/Mr19_wp index c449856d..622c92b1 100644 --- a/theory/tests/Mr19_wp +++ b/theory/tests/Mr19_wp @@ -1,14 +1,14 @@ -3.018313e+02 2.037623e-01 1.675360e-01 2.387550e-01 718966 2.484927e-01 -2.234552e+02 2.905688e-01 2.387550e-01 3.402510e-01 1156266 2.493942e-01 -1.636156e+02 4.142700e-01 3.402510e-01 4.848920e-01 1890416 2.487058e-01 -1.184806e+02 5.904583e-01 4.848920e-01 6.910210e-01 3116582 2.496153e-01 -8.352791e+01 8.420717e-01 6.910210e-01 9.847770e-01 5212852 2.497137e-01 -5.935769e+01 1.201320e+00 9.847770e-01 1.403410e+00 9018016 2.498269e-01 -4.318698e+01 1.713975e+00 1.403410e+00 2.000000e+00 16187208 2.498622e-01 -3.245659e+01 2.444773e+00 2.000000e+00 2.850200e+00 30017662 2.498079e-01 -2.526583e+01 3.485482e+00 2.850200e+00 4.061840e+00 57115384 2.495925e-01 -1.971558e+01 4.968399e+00 4.061840e+00 5.788530e+00 109850876 2.496571e-01 -1.479796e+01 7.081234e+00 5.788530e+00 8.249250e+00 212201606 2.495332e-01 -1.074683e+01 1.009244e+01 8.249250e+00 1.175600e+01 412534608 2.495384e-01 -7.021961e+00 1.438554e+01 1.175600e+01 1.675360e+01 803355836 2.495692e-01 -4.205303e+00 2.050607e+01 1.675360e+01 2.387550e+01 1578570846 2.495893e-01 +3.018313e+02 2.037638e-01 1.675360e-01 2.387550e-01 718966 2.484927e-01 +2.234552e+02 2.905420e-01 2.387550e-01 3.402510e-01 1156266 2.493942e-01 +1.636156e+02 4.142709e-01 3.402510e-01 4.848920e-01 1890416 2.487058e-01 +1.184806e+02 5.904551e-01 4.848920e-01 6.910210e-01 3116582 2.496153e-01 +8.352791e+01 8.419947e-01 6.910210e-01 9.847770e-01 5212852 2.497137e-01 +5.935769e+01 1.201238e+00 9.847770e-01 1.403410e+00 9018016 2.498269e-01 +4.318698e+01 1.713980e+00 1.403410e+00 2.000000e+00 16187208 2.498622e-01 +3.245659e+01 2.444736e+00 2.000000e+00 2.850200e+00 30017662 2.498079e-01 +2.526583e+01 3.485383e+00 2.850200e+00 4.061840e+00 57115384 2.495925e-01 +1.971558e+01 4.968328e+00 4.061840e+00 5.788530e+00 109850876 2.496571e-01 +1.479796e+01 7.081055e+00 5.788530e+00 8.249250e+00 212201606 2.495332e-01 +1.074683e+01 1.009257e+01 8.249250e+00 1.175600e+01 412534608 2.495384e-01 +7.021961e+00 1.438567e+01 1.175600e+01 1.675360e+01 803355836 2.495692e-01 +4.205303e+00 2.050600e+01 1.675360e+01 2.387550e+01 1578570846 2.495893e-01 diff --git a/theory/tests/Mr19_xi b/theory/tests/Mr19_xi index 9306d22a..8b251a98 100644 --- a/theory/tests/Mr19_xi +++ b/theory/tests/Mr19_xi @@ -1,14 +1,14 @@ -4.226712e+02 2.035760e-01 1.675360e-01 2.387550e-01 325832 2.497172e-01 -2.233447e+02 2.900891e-01 2.387550e-01 3.402510e-01 498880 2.499642e-01 -1.184748e+02 4.136462e-01 3.402510e-01 4.848920e-01 770944 2.493139e-01 -6.162666e+01 5.887059e-01 4.848920e-01 6.910210e-01 1173536 2.484823e-01 -3.059537e+01 8.380017e-01 6.910210e-01 9.847770e-01 1709944 2.490088e-01 -1.450344e+01 1.193559e+00 9.847770e-01 1.403410e+00 2422830 2.495850e-01 -6.812402e+00 1.705199e+00 1.403410e+00 2.000000e+00 3528698 2.499296e-01 -3.431229e+00 2.439742e+00 2.000000e+00 2.850200e+00 5796092 2.497884e-01 -1.890681e+00 3.491454e+00 2.850200e+00 4.061840e+00 10947552 2.496965e-01 -1.119906e+00 4.985559e+00 4.061840e+00 5.788530e+00 23216926 2.499047e-01 -6.567202e-01 7.118511e+00 5.788530e+00 8.249250e+00 52507764 2.499354e-01 -3.806488e-01 1.016239e+01 8.249250e+00 1.175600e+01 126815898 2.496004e-01 -2.065319e-01 1.449845e+01 1.175600e+01 1.675360e+01 320569752 2.497487e-01 -1.007335e-01 2.068553e+01 1.675360e+01 2.387550e+01 846825238 2.496328e-01 +4.226712e+02 2.035434e-01 1.675360e-01 2.387550e-01 325832 2.497172e-01 +2.233447e+02 2.900833e-01 2.387550e-01 3.402510e-01 498880 2.499642e-01 +1.184748e+02 4.135349e-01 3.402510e-01 4.848920e-01 770944 2.493139e-01 +6.162666e+01 5.886942e-01 4.848920e-01 6.910210e-01 1173536 2.484823e-01 +3.059537e+01 8.380501e-01 6.910210e-01 9.847770e-01 1709944 2.490088e-01 +1.450344e+01 1.193423e+00 9.847770e-01 1.403410e+00 2422830 2.495850e-01 +6.812402e+00 1.705055e+00 1.403410e+00 2.000000e+00 3528698 2.499296e-01 +3.431229e+00 2.439646e+00 2.000000e+00 2.850200e+00 5796092 2.497884e-01 +1.890681e+00 3.491394e+00 2.850200e+00 4.061840e+00 10947552 2.496965e-01 +1.119906e+00 4.985274e+00 4.061840e+00 5.788530e+00 23216926 2.499047e-01 +6.567202e-01 7.118192e+00 5.788530e+00 8.249250e+00 52507764 2.499354e-01 +3.806488e-01 1.016253e+01 8.249250e+00 1.175600e+01 126815898 2.496004e-01 +2.065319e-01 1.449815e+01 1.175600e+01 1.675360e+01 320569752 2.497487e-01 +1.007335e-01 2.068520e+01 1.675360e+01 2.387550e+01 846825238 2.496328e-01 diff --git a/theory/tests/cmass_DD_periodic b/theory/tests/cmass_DD_periodic index 83528631..50156c1d 100644 --- a/theory/tests/cmass_DD_periodic +++ b/theory/tests/cmass_DD_periodic @@ -1,1120 +1,1120 @@ - 352 0.20629610 -0.62204752 1.00000000 0.25089047 - 334 0.20454845 -0.62204752 2.00000000 0.25305418 - 376 0.20583553 -0.62204752 3.00000000 0.25395305 - 318 0.20275251 -0.62204752 4.00000000 0.24254350 - 234 0.20227265 -0.62204752 5.00000000 0.25048154 - 270 0.20464683 -0.62204752 6.00000000 0.25299683 - 200 0.20224678 -0.62204752 7.00000000 0.25421231 - 202 0.19844404 -0.62204752 8.00000000 0.23607953 - 166 0.20292942 -0.62204752 9.00000000 0.25219687 - 132 0.20395800 -0.62204752 10.00000000 0.24482107 - 140 0.20755680 -0.62204752 11.00000000 0.21669110 - 98 0.20009669 -0.62204752 12.00000000 0.30353164 - 100 0.20734229 -0.62204752 13.00000000 0.29365709 - 64 0.20158022 -0.62204752 14.00000000 0.30200496 - 82 0.20162408 -0.62204752 15.00000000 0.25678235 - 58 0.19699619 -0.62204752 16.00000000 0.21428563 - 34 0.20931924 -0.62204752 17.00000000 0.37191398 - 50 0.21020082 -0.62204752 18.00000000 0.21480361 - 44 0.20770372 -0.62204752 19.00000000 0.26499960 - 24 0.20401887 -0.62204752 20.00000000 0.34177135 - 14 0.21834262 -0.62204752 21.00000000 0.34943119 - 30 0.21528806 -0.62204752 22.00000000 0.25949722 - 18 0.20151321 -0.62204752 23.00000000 0.36960018 - 26 0.20577672 -0.62204752 24.00000000 0.21320409 - 12 0.20574448 -0.62204752 25.00000000 0.08146421 - 18 0.21058494 -0.62204752 26.00000000 0.31010342 - 14 0.19202207 -0.62204752 27.00000000 0.32464600 - 8 0.20042290 -0.62204752 28.00000000 0.20067442 - 16 0.20582595 -0.62204752 29.00000000 0.15959982 - 12 0.21695736 -0.62204752 30.00000000 0.37393688 - 10 0.18674010 -0.62204752 31.00000000 0.31588161 - 6 0.22537420 -0.62204752 32.00000000 0.45981832 - 6 0.21559027 -0.62204752 33.00000000 0.42098236 - 6 0.20775824 -0.62204752 34.00000000 0.34952921 - 8 0.19202924 -0.62204752 35.00000000 0.47875730 - 8 0.19940629 -0.62204752 36.00000000 0.09182279 - 10 0.19641292 -0.62204752 37.00000000 0.22233694 - 12 0.20501081 -0.62204752 38.00000000 0.24188813 - 16 0.20947656 -0.62204752 39.00000000 0.20759754 - 6 0.18329354 -0.62204752 40.00000000 0.24983651 - 4 0.21501488 -0.62204752 41.00000000 0.04993332 - 4 0.19925777 -0.62204752 42.00000000 0.02698457 - 10 0.21311044 -0.62204752 43.00000000 0.23383927 - 4 0.19951605 -0.62204752 44.00000000 0.09305115 - 6 0.21554865 -0.62204752 45.00000000 0.09249813 - 4 0.20368779 -0.62204752 46.00000000 0.45464250 - 6 0.19705842 -0.62204752 47.00000000 0.29357792 - 6 0.20078126 -0.62204752 48.00000000 0.07679184 - 6 0.19999939 -0.62204752 49.00000000 0.18242096 + 352 0.20629790 -0.62204752 1.00000000 0.25089047 + 334 0.20648196 -0.62204752 2.00000000 0.25305418 + 376 0.20516642 -0.62204752 3.00000000 0.25395305 + 318 0.20186586 -0.62204752 4.00000000 0.24254350 + 234 0.20410013 -0.62204752 5.00000000 0.25048154 + 270 0.20593560 -0.62204752 6.00000000 0.25299683 + 200 0.20617376 -0.62204752 7.00000000 0.25421231 + 202 0.19541663 -0.62204752 8.00000000 0.23607953 + 166 0.20277347 -0.62204752 9.00000000 0.25219687 + 132 0.20458968 -0.62204752 10.00000000 0.24482107 + 140 0.20749007 -0.62204752 11.00000000 0.21669110 + 98 0.20171893 -0.62204752 12.00000000 0.30353164 + 100 0.20621030 -0.62204752 13.00000000 0.29365709 + 64 0.20319887 -0.62204752 14.00000000 0.30200496 + 82 0.20163324 -0.62204752 15.00000000 0.25678235 + 58 0.19866492 -0.62204752 16.00000000 0.21428563 + 34 0.21271249 -0.62204752 17.00000000 0.37191398 + 50 0.20457901 -0.62204752 18.00000000 0.21480361 + 44 0.20199755 -0.62204752 19.00000000 0.26499960 + 24 0.20123196 -0.62204752 20.00000000 0.34177135 + 14 0.21958412 -0.62204752 21.00000000 0.34943119 + 30 0.21703457 -0.62204752 22.00000000 0.25949722 + 18 0.20431692 -0.62204752 23.00000000 0.36960018 + 26 0.20627940 -0.62204752 24.00000000 0.21320409 + 12 0.22627999 -0.62204752 25.00000000 0.08146421 + 18 0.21982504 -0.62204752 26.00000000 0.31010342 + 14 0.18984398 -0.62204752 27.00000000 0.32464600 + 8 0.20910560 -0.62204752 28.00000000 0.20067442 + 16 0.21593814 -0.62204752 29.00000000 0.15959982 + 12 0.21486510 -0.62204752 30.00000000 0.37393688 + 10 0.18216390 -0.62204752 31.00000000 0.31588161 + 6 0.22508404 -0.62204752 32.00000000 0.45981832 + 6 0.21255106 -0.62204752 33.00000000 0.42098236 + 6 0.19496870 -0.62204752 34.00000000 0.34952921 + 8 0.19887338 -0.62204752 35.00000000 0.47875730 + 8 0.18140878 -0.62204752 36.00000000 0.09182279 + 10 0.19203346 -0.62204752 37.00000000 0.22233694 + 12 0.20854689 -0.62204752 38.00000000 0.24188813 + 16 0.20329427 -0.62204752 39.00000000 0.20759754 + 6 0.18150525 -0.62204752 40.00000000 0.24983651 + 4 0.20992868 -0.62204752 41.00000000 0.04993332 + 4 0.19997293 -0.62204752 42.00000000 0.02698457 + 10 0.21328432 -0.62204752 43.00000000 0.23383927 + 4 0.18704388 -0.62204752 44.00000000 0.09305115 + 6 0.19827107 -0.62204752 45.00000000 0.09249813 + 4 0.22023255 -0.62204752 46.00000000 0.45464250 + 6 0.20704254 -0.62204752 47.00000000 0.29357792 + 6 0.19955769 -0.62204752 48.00000000 0.07679184 + 6 0.19978949 -0.62204752 49.00000000 0.18242096 0 0.00000000 -0.62204752 50.00000000 0.00000000 - 4 0.21136366 -0.62204752 51.00000000 0.05030267 - 6 0.19868029 -0.62204752 52.00000000 0.30067857 - 12 0.21405238 -0.62204752 53.00000000 0.28390252 - 10 0.20101441 -0.62204752 54.00000000 0.42093183 - 4 0.22058375 -0.62204752 55.00000000 0.05713931 - 8 0.21465656 -0.62204752 56.00000000 0.16057903 - 16 0.20966174 -0.62204752 57.00000000 0.27118751 - 14 0.21402738 -0.62204752 58.00000000 0.23994398 - 4 0.19736557 -0.62204752 59.00000000 0.02275121 - 10 0.22162801 -0.62204752 60.00000000 0.37610629 - 8 0.20150049 -0.62204752 61.00000000 0.30374432 - 8 0.20751494 -0.62204752 62.00000000 0.17065407 - 6 0.19096570 -0.62204752 63.00000000 0.26821921 - 8 0.20395599 -0.62204752 64.00000000 0.18012465 - 8 0.18925314 -0.62204752 65.00000000 0.34530175 - 12 0.20395695 -0.62204752 66.00000000 0.33907865 - 6 0.22309369 -0.62204752 67.00000000 0.15848192 - 12 0.19700925 -0.62204752 68.00000000 0.18391684 - 4 0.21762169 -0.62204752 69.00000000 0.34448037 + 4 0.20938832 -0.62204752 51.00000000 0.05030267 + 6 0.20181929 -0.62204752 52.00000000 0.30067857 + 12 0.21021352 -0.62204752 53.00000000 0.28390252 + 10 0.20015828 -0.62204752 54.00000000 0.42093183 + 4 0.21573226 -0.62204752 55.00000000 0.05713931 + 8 0.20716816 -0.62204752 56.00000000 0.16057903 + 16 0.21164842 -0.62204752 57.00000000 0.27118751 + 14 0.21369508 -0.62204752 58.00000000 0.23994398 + 4 0.20672207 -0.62204752 59.00000000 0.02275121 + 10 0.22135546 -0.62204752 60.00000000 0.37610629 + 8 0.20376285 -0.62204752 61.00000000 0.30374432 + 8 0.21497382 -0.62204752 62.00000000 0.17065407 + 6 0.19015703 -0.62204752 63.00000000 0.26821921 + 8 0.20263285 -0.62204752 64.00000000 0.18012465 + 8 0.19346921 -0.62204752 65.00000000 0.34530175 + 12 0.20626758 -0.62204752 66.00000000 0.33907865 + 6 0.21754973 -0.62204752 67.00000000 0.15848192 + 12 0.19465742 -0.62204752 68.00000000 0.18391684 + 4 0.22421417 -0.62204752 69.00000000 0.34448037 2 0.22265189 -0.62204752 70.00000000 0.55984343 - 8 0.22438389 -0.62204752 71.00000000 0.22712472 - 10 0.20404832 -0.62204752 72.00000000 0.19197437 + 8 0.21922606 -0.62204752 71.00000000 0.22712472 + 10 0.22045051 -0.62204752 72.00000000 0.19197437 2 0.20613250 -0.62204752 73.00000000 0.04434189 - 8 0.19670376 -0.62204752 74.00000000 0.36332530 - 4 0.19460881 -0.62204752 75.00000000 0.12067345 + 8 0.19938789 -0.62204752 74.00000000 0.36332530 + 4 0.19199165 -0.62204752 75.00000000 0.12067345 2 0.18243338 -0.62204752 76.00000000 0.18007476 2 0.17718296 -0.62204752 77.00000000 0.01606191 2 0.19841598 -0.62204752 78.00000000 0.10149203 - 8 0.20281318 -0.62204752 79.00000000 0.26680650 - 8 0.20603269 -0.62204752 80.00000000 0.14283718 - 598 0.29205742 -0.46820059 1.00000000 0.27912124 - 600 0.29070058 -0.46820059 2.00000000 0.25039753 - 468 0.28694281 -0.46820059 3.00000000 0.23910348 - 420 0.28990318 -0.46820059 4.00000000 0.24999242 - 388 0.28777271 -0.46820059 5.00000000 0.27194960 - 356 0.28977035 -0.46820059 6.00000000 0.26309696 - 300 0.28960439 -0.46820059 7.00000000 0.23964378 - 250 0.29451328 -0.46820059 8.00000000 0.22175469 - 242 0.29012790 -0.46820059 9.00000000 0.25340870 - 214 0.28848877 -0.46820059 10.00000000 0.23461689 - 174 0.28253432 -0.46820059 11.00000000 0.21798820 - 132 0.28493374 -0.46820059 12.00000000 0.24319467 - 128 0.28851958 -0.46820059 13.00000000 0.21294387 - 116 0.29099330 -0.46820059 14.00000000 0.24609289 - 70 0.29327297 -0.46820059 15.00000000 0.24519915 - 58 0.28990374 -0.46820059 16.00000000 0.26400683 - 60 0.28748287 -0.46820059 17.00000000 0.26870476 - 62 0.29220040 -0.46820059 18.00000000 0.22552713 - 46 0.28167367 -0.46820059 19.00000000 0.27011254 - 52 0.28914500 -0.46820059 20.00000000 0.30367459 - 38 0.28841959 -0.46820059 21.00000000 0.15259958 - 32 0.29061323 -0.46820059 22.00000000 0.22008283 - 38 0.28870051 -0.46820059 23.00000000 0.31713491 - 30 0.27313002 -0.46820059 24.00000000 0.26733340 - 34 0.29694823 -0.46820059 25.00000000 0.17602864 - 24 0.28265799 -0.46820059 26.00000000 0.25152386 - 18 0.30465623 -0.46820059 27.00000000 0.23567127 - 16 0.29597969 -0.46820059 28.00000000 0.35703314 - 18 0.28866841 -0.46820059 29.00000000 0.31180062 - 26 0.28716630 -0.46820059 30.00000000 0.15469328 - 14 0.28729394 -0.46820059 31.00000000 0.27362769 - 14 0.27038607 -0.46820059 32.00000000 0.27345797 - 22 0.28556533 -0.46820059 33.00000000 0.24356382 - 24 0.29354943 -0.46820059 34.00000000 0.12267693 - 18 0.27971671 -0.46820059 35.00000000 0.14554550 - 26 0.28485651 -0.46820059 36.00000000 0.24776121 - 12 0.30055049 -0.46820059 37.00000000 0.27293525 - 12 0.28177999 -0.46820059 38.00000000 0.21836248 - 16 0.28217139 -0.46820059 39.00000000 0.26734316 - 12 0.30196545 -0.46820059 40.00000000 0.34202559 - 12 0.29375007 -0.46820059 41.00000000 0.30056678 - 22 0.28566190 -0.46820059 42.00000000 0.23290696 - 16 0.29301626 -0.46820059 43.00000000 0.18109412 - 12 0.29486760 -0.46820059 44.00000000 0.20650749 - 16 0.28212044 -0.46820059 45.00000000 0.20324783 - 26 0.29520006 -0.46820059 46.00000000 0.24800144 - 16 0.28560948 -0.46820059 47.00000000 0.18620108 - 22 0.30033983 -0.46820059 48.00000000 0.12022441 - 12 0.28695438 -0.46820059 49.00000000 0.18025075 - 6 0.30473350 -0.46820059 50.00000000 0.02500577 - 10 0.29770902 -0.46820059 51.00000000 0.31723797 - 8 0.29737754 -0.46820059 52.00000000 0.28445805 - 20 0.29312389 -0.46820059 53.00000000 0.23356310 - 24 0.29031601 -0.46820059 54.00000000 0.19770486 - 12 0.30502122 -0.46820059 55.00000000 0.20353240 - 14 0.30113921 -0.46820059 56.00000000 0.17962127 - 16 0.28419224 -0.46820059 57.00000000 0.20475842 - 12 0.29185505 -0.46820059 58.00000000 0.35713077 - 10 0.29123025 -0.46820059 59.00000000 0.16498795 - 14 0.29698556 -0.46820059 60.00000000 0.24610929 - 18 0.29389477 -0.46820059 61.00000000 0.29583289 - 18 0.29173346 -0.46820059 62.00000000 0.28010451 - 18 0.27561539 -0.46820059 63.00000000 0.16771294 - 18 0.28750120 -0.46820059 64.00000000 0.32588804 - 16 0.29523347 -0.46820059 65.00000000 0.13757668 - 8 0.31960476 -0.46820059 66.00000000 0.17359459 - 16 0.29853530 -0.46820059 67.00000000 0.23783488 - 20 0.27819494 -0.46820059 68.00000000 0.19215757 - 16 0.31200821 -0.46820059 69.00000000 0.28882669 - 12 0.29022415 -0.46820059 70.00000000 0.32522773 - 26 0.31044509 -0.46820059 71.00000000 0.16973181 - 12 0.27939220 -0.46820059 72.00000000 0.26372202 - 6 0.28258161 -0.46820059 73.00000000 0.34712810 - 16 0.29123982 -0.46820059 74.00000000 0.25867870 - 20 0.30242569 -0.46820059 75.00000000 0.21260803 - 20 0.29665341 -0.46820059 76.00000000 0.21567875 - 16 0.28825704 -0.46820059 77.00000000 0.45469399 - 14 0.27907721 -0.46820059 78.00000000 0.18660131 - 8 0.29593040 -0.46820059 79.00000000 0.45467662 - 18 0.28827137 -0.46820059 80.00000000 0.21163695 - 822 0.41473748 -0.31435498 1.00000000 0.25628346 - 732 0.41130585 -0.31435498 2.00000000 0.25635227 - 658 0.41204294 -0.31435498 3.00000000 0.25811827 - 640 0.41052175 -0.31435498 4.00000000 0.21257550 - 542 0.41180509 -0.31435498 5.00000000 0.23265858 - 474 0.41176154 -0.31435498 6.00000000 0.25157995 - 406 0.40452661 -0.31435498 7.00000000 0.26953232 - 326 0.41105591 -0.31435498 8.00000000 0.23390397 - 312 0.41461061 -0.31435498 9.00000000 0.26622566 - 266 0.41305279 -0.31435498 10.00000000 0.25739337 - 212 0.41025469 -0.31435498 11.00000000 0.21707969 - 192 0.41642733 -0.31435498 12.00000000 0.21228303 - 158 0.41879124 -0.31435498 13.00000000 0.25331322 - 110 0.40875185 -0.31435498 14.00000000 0.27931640 - 106 0.41925984 -0.31435498 15.00000000 0.21468199 - 130 0.41960216 -0.31435498 16.00000000 0.23884147 - 110 0.41095847 -0.31435498 17.00000000 0.25764457 - 78 0.42054551 -0.31435498 18.00000000 0.23801435 - 76 0.41775484 -0.31435498 19.00000000 0.24563788 - 50 0.40799333 -0.31435498 20.00000000 0.27653550 - 56 0.40287518 -0.31435498 21.00000000 0.23628193 - 54 0.41209734 -0.31435498 22.00000000 0.24360126 - 38 0.40167164 -0.31435498 23.00000000 0.33183797 - 56 0.41272555 -0.31435498 24.00000000 0.25322736 - 38 0.41713936 -0.31435498 25.00000000 0.17136233 - 36 0.41219068 -0.31435498 26.00000000 0.25221981 - 42 0.41569936 -0.31435498 27.00000000 0.22935745 - 50 0.41621411 -0.31435498 28.00000000 0.20483385 - 40 0.40464600 -0.31435498 29.00000000 0.24274867 - 42 0.40650787 -0.31435498 30.00000000 0.17488914 - 40 0.41890324 -0.31435498 31.00000000 0.26172240 - 30 0.41050280 -0.31435498 32.00000000 0.27537655 - 22 0.41596898 -0.31435498 33.00000000 0.16767658 - 40 0.42854542 -0.31435498 34.00000000 0.29282012 - 52 0.42783339 -0.31435498 35.00000000 0.22395355 - 30 0.42405863 -0.31435498 36.00000000 0.31665074 - 36 0.41452744 -0.31435498 37.00000000 0.18212187 - 20 0.41631904 -0.31435498 38.00000000 0.27143974 - 24 0.42548777 -0.31435498 39.00000000 0.18148722 - 44 0.42577232 -0.31435498 40.00000000 0.24533684 - 24 0.42967533 -0.31435498 41.00000000 0.18742927 - 20 0.40648565 -0.31435498 42.00000000 0.31064735 - 32 0.42315635 -0.31435498 43.00000000 0.22022462 - 34 0.40732214 -0.31435498 44.00000000 0.21336038 - 34 0.42174543 -0.31435498 45.00000000 0.29132853 - 32 0.41349824 -0.31435498 46.00000000 0.09852032 - 34 0.40592229 -0.31435498 47.00000000 0.31535434 - 34 0.42053240 -0.31435498 48.00000000 0.34310030 - 12 0.42108698 -0.31435498 49.00000000 0.14131453 - 26 0.41026302 -0.31435498 50.00000000 0.25143644 - 16 0.40294500 -0.31435498 51.00000000 0.28520641 - 42 0.40581922 -0.31435498 52.00000000 0.22394475 - 26 0.42204254 -0.31435498 53.00000000 0.23489393 - 38 0.41920421 -0.31435498 54.00000000 0.23073240 - 28 0.41442639 -0.31435498 55.00000000 0.23289687 - 32 0.42539484 -0.31435498 56.00000000 0.10432981 - 22 0.42655866 -0.31435498 57.00000000 0.27805572 - 36 0.39046827 -0.31435498 58.00000000 0.28078110 - 20 0.42295805 -0.31435498 59.00000000 0.27006132 - 34 0.40170392 -0.31435498 60.00000000 0.24332685 - 28 0.41201193 -0.31435498 61.00000000 0.39313120 - 32 0.40710522 -0.31435498 62.00000000 0.27673357 - 34 0.41396301 -0.31435498 63.00000000 0.35048809 - 32 0.41512457 -0.31435498 64.00000000 0.18323036 - 28 0.39806556 -0.31435498 65.00000000 0.19524242 - 20 0.42809658 -0.31435498 66.00000000 0.31987272 - 32 0.40298248 -0.31435498 67.00000000 0.25577299 - 32 0.42419067 -0.31435498 68.00000000 0.28253193 - 32 0.41494746 -0.31435498 69.00000000 0.28634339 - 28 0.42971457 -0.31435498 70.00000000 0.24713992 - 18 0.39643059 -0.31435498 71.00000000 0.13448156 - 20 0.41373007 -0.31435498 72.00000000 0.20358187 - 34 0.42265043 -0.31435498 73.00000000 0.23319411 - 28 0.39472111 -0.31435498 74.00000000 0.36948965 - 12 0.38003336 -0.31435498 75.00000000 0.17837109 - 34 0.41956356 -0.31435498 76.00000000 0.26853742 - 42 0.41299866 -0.31435498 77.00000000 0.19493720 - 22 0.40974757 -0.31435498 78.00000000 0.22107724 - 34 0.41386998 -0.31435498 79.00000000 0.28174914 - 20 0.41793582 -0.31435498 80.00000000 0.28954183 - 1038 0.58750411 -0.16050875 1.00000000 0.25150308 - 956 0.58601190 -0.16050875 2.00000000 0.25716078 - 926 0.59055222 -0.16050875 3.00000000 0.25386697 - 770 0.58818769 -0.16050875 4.00000000 0.25520063 - 756 0.58863242 -0.16050875 5.00000000 0.25968726 - 656 0.58586794 -0.16050875 6.00000000 0.26322192 - 556 0.58797305 -0.16050875 7.00000000 0.24939053 - 472 0.58695932 -0.16050875 8.00000000 0.22510859 - 436 0.59073360 -0.16050875 9.00000000 0.25301795 - 364 0.58372052 -0.16050875 10.00000000 0.22930699 - 298 0.58402363 -0.16050875 11.00000000 0.23608783 - 288 0.58842691 -0.16050875 12.00000000 0.22792635 - 256 0.58767367 -0.16050875 13.00000000 0.24701729 - 228 0.57690150 -0.16050875 14.00000000 0.26521976 - 168 0.59319609 -0.16050875 15.00000000 0.25136353 - 158 0.59465079 -0.16050875 16.00000000 0.22003730 - 116 0.58320672 -0.16050875 17.00000000 0.23595864 - 94 0.58839235 -0.16050875 18.00000000 0.22627656 - 162 0.59184305 -0.16050875 19.00000000 0.23831460 - 98 0.59477809 -0.16050875 20.00000000 0.21578643 - 110 0.58053674 -0.16050875 21.00000000 0.24436824 - 92 0.59228108 -0.16050875 22.00000000 0.27179537 - 102 0.59807519 -0.16050875 23.00000000 0.30780092 - 82 0.59141833 -0.16050875 24.00000000 0.29071372 - 94 0.59601716 -0.16050875 25.00000000 0.25859637 - 98 0.58814318 -0.16050875 26.00000000 0.21668415 - 74 0.59912985 -0.16050875 27.00000000 0.25989530 - 68 0.59988664 -0.16050875 28.00000000 0.27012184 - 62 0.59377996 -0.16050875 29.00000000 0.20889714 - 74 0.58183902 -0.16050875 30.00000000 0.22923653 - 90 0.58704389 -0.16050875 31.00000000 0.29489164 - 66 0.60157477 -0.16050875 32.00000000 0.28964856 - 80 0.58685117 -0.16050875 33.00000000 0.22088676 - 80 0.59279710 -0.16050875 34.00000000 0.23187621 - 58 0.59773005 -0.16050875 35.00000000 0.24021344 - 54 0.60560881 -0.16050875 36.00000000 0.27070892 - 56 0.60411200 -0.16050875 37.00000000 0.27134019 - 76 0.58613023 -0.16050875 38.00000000 0.29514093 - 58 0.59910477 -0.16050875 39.00000000 0.21283463 - 54 0.59388062 -0.16050875 40.00000000 0.24531758 - 56 0.57716573 -0.16050875 41.00000000 0.27353630 - 66 0.57874800 -0.16050875 42.00000000 0.19155818 - 66 0.59343259 -0.16050875 43.00000000 0.22090569 - 50 0.60325561 -0.16050875 44.00000000 0.22268535 - 66 0.57928003 -0.16050875 45.00000000 0.21577596 - 60 0.59255641 -0.16050875 46.00000000 0.27420707 - 64 0.58264883 -0.16050875 47.00000000 0.28413001 - 54 0.58620886 -0.16050875 48.00000000 0.27596238 - 58 0.60075309 -0.16050875 49.00000000 0.22582759 - 60 0.60386709 -0.16050875 50.00000000 0.29219142 - 60 0.60144932 -0.16050875 51.00000000 0.20503291 - 68 0.61290856 -0.16050875 52.00000000 0.20299458 - 64 0.60234236 -0.16050875 53.00000000 0.22462246 - 48 0.58237328 -0.16050875 54.00000000 0.20019973 - 60 0.59128977 -0.16050875 55.00000000 0.28759239 - 76 0.59741695 -0.16050875 56.00000000 0.28140363 - 48 0.58894982 -0.16050875 57.00000000 0.29920851 - 50 0.60378996 -0.16050875 58.00000000 0.18547981 - 64 0.61747807 -0.16050875 59.00000000 0.25090805 - 48 0.60432744 -0.16050875 60.00000000 0.18447581 - 48 0.60461908 -0.16050875 61.00000000 0.25121470 - 54 0.58746940 -0.16050875 62.00000000 0.22691646 - 70 0.60243895 -0.16050875 63.00000000 0.23662738 - 50 0.62118781 -0.16050875 64.00000000 0.19731832 - 62 0.58730683 -0.16050875 65.00000000 0.26504665 - 58 0.60692894 -0.16050875 66.00000000 0.24423983 - 60 0.59986169 -0.16050875 67.00000000 0.25243415 - 52 0.60775381 -0.16050875 68.00000000 0.24001934 - 68 0.59851170 -0.16050875 69.00000000 0.22762212 - 60 0.59746644 -0.16050875 70.00000000 0.17229624 - 58 0.59217930 -0.16050875 71.00000000 0.28079345 - 48 0.59008372 -0.16050875 72.00000000 0.24353816 - 42 0.59531438 -0.16050875 73.00000000 0.18781053 - 60 0.59336154 -0.16050875 74.00000000 0.22019066 - 48 0.61027523 -0.16050875 75.00000000 0.22891143 - 52 0.58936728 -0.16050875 76.00000000 0.28820186 - 74 0.59187626 -0.16050875 77.00000000 0.22163499 - 62 0.58868600 -0.16050875 78.00000000 0.30570136 - 80 0.58029495 -0.16050875 79.00000000 0.28798832 - 64 0.59270426 -0.16050875 80.00000000 0.26083787 - 1542 0.84265016 -0.00666210 1.00000000 0.25305279 - 1390 0.83865150 -0.00666210 2.00000000 0.26187862 - 1266 0.84459159 -0.00666210 3.00000000 0.24416924 - 1190 0.84026535 -0.00666210 4.00000000 0.25100910 - 1010 0.83720714 -0.00666210 5.00000000 0.23737782 - 960 0.83736341 -0.00666210 6.00000000 0.24074711 - 712 0.84869460 -0.00666210 7.00000000 0.24774500 - 630 0.83698574 -0.00666210 8.00000000 0.21219104 - 582 0.84198575 -0.00666210 9.00000000 0.27092461 - 512 0.84023628 -0.00666210 10.00000000 0.22475627 - 480 0.83584768 -0.00666210 11.00000000 0.25387888 - 346 0.83056067 -0.00666210 12.00000000 0.23809782 - 330 0.84623345 -0.00666210 13.00000000 0.25186242 - 294 0.83977732 -0.00666210 14.00000000 0.20650125 - 230 0.83615909 -0.00666210 15.00000000 0.23450513 - 214 0.84189039 -0.00666210 16.00000000 0.22995290 - 252 0.85548520 -0.00666210 17.00000000 0.25639674 - 208 0.83112058 -0.00666210 18.00000000 0.25959494 - 198 0.83963594 -0.00666210 19.00000000 0.25431291 - 188 0.84133018 -0.00666210 20.00000000 0.25228109 - 188 0.85624542 -0.00666210 21.00000000 0.23854119 - 188 0.84394174 -0.00666210 22.00000000 0.19145808 - 168 0.84900785 -0.00666210 23.00000000 0.25923384 - 176 0.83419543 -0.00666210 24.00000000 0.23682323 - 140 0.83738491 -0.00666210 25.00000000 0.18683646 - 148 0.83739045 -0.00666210 26.00000000 0.31378217 - 148 0.84184149 -0.00666210 27.00000000 0.23795433 - 166 0.83761032 -0.00666210 28.00000000 0.27197615 - 132 0.85652736 -0.00666210 29.00000000 0.23374178 - 132 0.84922380 -0.00666210 30.00000000 0.18841111 - 118 0.86761150 -0.00666210 31.00000000 0.24641901 - 112 0.84343190 -0.00666210 32.00000000 0.22706707 - 134 0.82889097 -0.00666210 33.00000000 0.25602347 - 114 0.84513954 -0.00666210 34.00000000 0.22402510 - 130 0.85964652 -0.00666210 35.00000000 0.25680204 - 110 0.82848653 -0.00666210 36.00000000 0.20014536 - 124 0.85325103 -0.00666210 37.00000000 0.29867178 - 106 0.83530059 -0.00666210 38.00000000 0.28246735 - 112 0.84386208 -0.00666210 39.00000000 0.24614597 - 100 0.84610078 -0.00666210 40.00000000 0.21477613 - 118 0.84419846 -0.00666210 41.00000000 0.22734996 - 110 0.85354170 -0.00666210 42.00000000 0.21541822 - 114 0.84912972 -0.00666210 43.00000000 0.20151592 - 112 0.84056428 -0.00666210 44.00000000 0.27899908 - 114 0.84693792 -0.00666210 45.00000000 0.24344667 - 146 0.84979354 -0.00666210 46.00000000 0.19538735 - 118 0.83884548 -0.00666210 47.00000000 0.26278718 - 116 0.84419432 -0.00666210 48.00000000 0.26780238 - 122 0.85061656 -0.00666210 49.00000000 0.28196742 - 118 0.84179500 -0.00666210 50.00000000 0.20502781 - 124 0.84173972 -0.00666210 51.00000000 0.22655632 - 112 0.84153310 -0.00666210 52.00000000 0.24474029 - 122 0.85593667 -0.00666210 53.00000000 0.27908145 - 130 0.84786785 -0.00666210 54.00000000 0.21163247 - 124 0.84759302 -0.00666210 55.00000000 0.25623679 - 116 0.83320023 -0.00666210 56.00000000 0.25801878 - 136 0.83037669 -0.00666210 57.00000000 0.26466117 - 104 0.84399585 -0.00666210 58.00000000 0.25470881 - 138 0.85624771 -0.00666210 59.00000000 0.18642861 - 140 0.83686450 -0.00666210 60.00000000 0.23354208 - 122 0.82905036 -0.00666210 61.00000000 0.30315037 - 122 0.85520515 -0.00666210 62.00000000 0.28067917 - 146 0.85468583 -0.00666210 63.00000000 0.29871239 - 122 0.86773141 -0.00666210 64.00000000 0.30294753 - 86 0.87047267 -0.00666210 65.00000000 0.25710898 - 118 0.86156694 -0.00666210 66.00000000 0.30529665 - 130 0.83771184 -0.00666210 67.00000000 0.25463114 - 114 0.84214564 -0.00666210 68.00000000 0.28660335 - 104 0.84026409 -0.00666210 69.00000000 0.27918955 - 100 0.82920423 -0.00666210 70.00000000 0.25082181 - 150 0.83381128 -0.00666210 71.00000000 0.29433990 - 124 0.84422171 -0.00666210 72.00000000 0.25463248 - 90 0.85436276 -0.00666210 73.00000000 0.25379374 - 122 0.84646333 -0.00666210 74.00000000 0.23345685 - 126 0.85337990 -0.00666210 75.00000000 0.25328852 - 126 0.84918123 -0.00666210 76.00000000 0.23628093 - 104 0.85429860 -0.00666210 77.00000000 0.28868878 - 98 0.85789541 -0.00666210 78.00000000 0.26932601 - 112 0.85154813 -0.00666210 79.00000000 0.24471906 - 112 0.84976984 -0.00666210 80.00000000 0.23818921 - 2590 1.20003815 0.14718457 1.00000000 0.23809689 - 2496 1.19790744 0.14718457 2.00000000 0.24299466 - 2262 1.20261729 0.14718457 3.00000000 0.24063894 - 1778 1.20471222 0.14718457 4.00000000 0.24932768 - 1594 1.19601684 0.14718457 5.00000000 0.24829249 - 1310 1.18620457 0.14718457 6.00000000 0.26793988 - 1154 1.20631276 0.14718457 7.00000000 0.24371603 - 924 1.20111262 0.14718457 8.00000000 0.27014819 - 970 1.19990434 0.14718457 9.00000000 0.25648132 - 748 1.19925760 0.14718457 10.00000000 0.25003805 - 684 1.19326053 0.14718457 11.00000000 0.25456553 - 604 1.19974490 0.14718457 12.00000000 0.24038263 - 612 1.19638529 0.14718457 13.00000000 0.24047037 - 472 1.20025184 0.14718457 14.00000000 0.25630607 - 496 1.21278182 0.14718457 15.00000000 0.26680845 - 422 1.20057839 0.14718457 16.00000000 0.24535679 - 372 1.19478471 0.14718457 17.00000000 0.23886098 - 384 1.19870541 0.14718457 18.00000000 0.27667344 - 378 1.20032772 0.14718457 19.00000000 0.25423120 - 342 1.19761148 0.14718457 20.00000000 0.23210049 - 326 1.21441917 0.14718457 21.00000000 0.25718470 - 334 1.20565337 0.14718457 22.00000000 0.23997249 - 286 1.20896621 0.14718457 23.00000000 0.27144553 - 306 1.21496389 0.14718457 24.00000000 0.29884992 - 276 1.20126892 0.14718457 25.00000000 0.24529539 - 310 1.19753985 0.14718457 26.00000000 0.23968557 - 236 1.20314887 0.14718457 27.00000000 0.27980504 - 254 1.20750970 0.14718457 28.00000000 0.21127502 - 250 1.19916211 0.14718457 29.00000000 0.27855023 - 282 1.18241359 0.14718457 30.00000000 0.22546523 - 264 1.21098441 0.14718457 31.00000000 0.25898890 - 262 1.22077113 0.14718457 32.00000000 0.24144222 - 286 1.21360800 0.14718457 33.00000000 0.24634798 - 238 1.19016325 0.14718457 34.00000000 0.25996907 - 268 1.20113726 0.14718457 35.00000000 0.23869403 - 278 1.18903072 0.14718457 36.00000000 0.23293621 - 250 1.20840167 0.14718457 37.00000000 0.25319552 - 278 1.22160390 0.14718457 38.00000000 0.24464219 - 256 1.19975170 0.14718457 39.00000000 0.26349767 - 216 1.22128287 0.14718457 40.00000000 0.22382713 - 254 1.22263401 0.14718457 41.00000000 0.20922001 - 236 1.20921961 0.14718457 42.00000000 0.25144814 - 206 1.21327752 0.14718457 43.00000000 0.28372663 - 270 1.19970969 0.14718457 44.00000000 0.26434432 - 240 1.20192544 0.14718457 45.00000000 0.24018991 - 264 1.20380299 0.14718457 46.00000000 0.22684233 - 212 1.22281657 0.14718457 47.00000000 0.24207091 - 198 1.20672497 0.14718457 48.00000000 0.23556035 - 204 1.21309694 0.14718457 49.00000000 0.24308409 - 238 1.18227969 0.14718457 50.00000000 0.22882705 - 250 1.21272284 0.14718457 51.00000000 0.23365440 - 234 1.19305376 0.14718457 52.00000000 0.25030143 - 272 1.21556847 0.14718457 53.00000000 0.24996471 - 264 1.20615369 0.14718457 54.00000000 0.26168084 - 240 1.20699196 0.14718457 55.00000000 0.23841489 - 248 1.20088433 0.14718457 56.00000000 0.23891885 - 282 1.19064487 0.14718457 57.00000000 0.26685657 - 222 1.20643539 0.14718457 58.00000000 0.24630703 - 270 1.20796710 0.14718457 59.00000000 0.25013645 - 236 1.21472331 0.14718457 60.00000000 0.27777502 - 194 1.21774757 0.14718457 61.00000000 0.25823863 - 224 1.19227486 0.14718457 62.00000000 0.27442649 - 230 1.21505614 0.14718457 63.00000000 0.24281963 - 238 1.18431887 0.14718457 64.00000000 0.22891759 - 244 1.19824314 0.14718457 65.00000000 0.26033307 - 248 1.20476171 0.14718457 66.00000000 0.24882284 - 244 1.20689340 0.14718457 67.00000000 0.27293725 - 260 1.19608472 0.14718457 68.00000000 0.27642424 - 228 1.21265769 0.14718457 69.00000000 0.25067364 - 206 1.19186534 0.14718457 70.00000000 0.24627435 - 258 1.20874129 0.14718457 71.00000000 0.23649092 - 212 1.21217739 0.14718457 72.00000000 0.28263722 - 230 1.22905090 0.14718457 73.00000000 0.25050767 - 210 1.18526174 0.14718457 74.00000000 0.27417416 - 272 1.21087370 0.14718457 75.00000000 0.24762467 - 236 1.21152748 0.14718457 76.00000000 0.30402890 - 238 1.20362568 0.14718457 77.00000000 0.25611796 - 232 1.21292385 0.14718457 78.00000000 0.29266652 - 232 1.20247504 0.14718457 79.00000000 0.27998507 - 250 1.21101402 0.14718457 80.00000000 0.22307106 - 4568 1.70965496 0.30103000 1.00000000 0.24275756 - 4192 1.70707255 0.30103000 2.00000000 0.25520202 - 3594 1.70510675 0.30103000 3.00000000 0.24821969 - 3036 1.71242235 0.30103000 4.00000000 0.24014708 - 2516 1.71157392 0.30103000 5.00000000 0.25661672 - 2204 1.71592677 0.30103000 6.00000000 0.24900735 - 1830 1.70723827 0.30103000 7.00000000 0.25535815 - 1622 1.70665745 0.30103000 8.00000000 0.25116095 - 1388 1.71500525 0.30103000 9.00000000 0.26599424 - 1266 1.70699968 0.30103000 10.00000000 0.23567406 - 1152 1.71432061 0.30103000 11.00000000 0.25387062 - 1038 1.70280130 0.30103000 12.00000000 0.25003752 - 1058 1.71242306 0.30103000 13.00000000 0.26990488 - 854 1.70696250 0.30103000 14.00000000 0.24649174 - 866 1.72284163 0.30103000 15.00000000 0.23081448 - 766 1.71260777 0.30103000 16.00000000 0.26293225 - 778 1.71998966 0.30103000 17.00000000 0.25489056 - 672 1.72040151 0.30103000 18.00000000 0.23110117 - 660 1.73429162 0.30103000 19.00000000 0.25449938 - 666 1.71936756 0.30103000 20.00000000 0.26633506 - 652 1.71540000 0.30103000 21.00000000 0.25634166 - 662 1.73100266 0.30103000 22.00000000 0.26391490 - 596 1.72688670 0.30103000 23.00000000 0.25547616 - 628 1.72809464 0.30103000 24.00000000 0.24079070 - 590 1.73065560 0.30103000 25.00000000 0.24078018 - 590 1.71678528 0.30103000 26.00000000 0.25593311 - 546 1.72904741 0.30103000 27.00000000 0.26374938 - 528 1.72774830 0.30103000 28.00000000 0.26634230 - 566 1.71202083 0.30103000 29.00000000 0.25299302 - 542 1.72067041 0.30103000 30.00000000 0.26182761 - 540 1.73453255 0.30103000 31.00000000 0.28149159 - 516 1.71858395 0.30103000 32.00000000 0.24268900 - 518 1.72529847 0.30103000 33.00000000 0.26462357 - 492 1.73270269 0.30103000 34.00000000 0.23389709 - 508 1.70268720 0.30103000 35.00000000 0.23619000 - 496 1.73223566 0.30103000 36.00000000 0.25113188 - 506 1.71385308 0.30103000 37.00000000 0.26692055 - 490 1.72411112 0.30103000 38.00000000 0.22257990 - 502 1.73126797 0.30103000 39.00000000 0.25212453 - 526 1.69579920 0.30103000 40.00000000 0.25285186 - 478 1.71553256 0.30103000 41.00000000 0.24776988 - 516 1.71249797 0.30103000 42.00000000 0.25800507 - 482 1.73346794 0.30103000 43.00000000 0.23408826 - 484 1.72671050 0.30103000 44.00000000 0.24489020 - 516 1.70384406 0.30103000 45.00000000 0.25536280 - 504 1.69742657 0.30103000 46.00000000 0.23439819 - 488 1.71836476 0.30103000 47.00000000 0.25879782 - 520 1.72183577 0.30103000 48.00000000 0.28012946 - 474 1.70451120 0.30103000 49.00000000 0.23312940 - 488 1.72185476 0.30103000 50.00000000 0.22688447 - 530 1.71230660 0.30103000 51.00000000 0.24789117 - 424 1.73162834 0.30103000 52.00000000 0.26647239 - 472 1.70904651 0.30103000 53.00000000 0.25113558 - 460 1.73543224 0.30103000 54.00000000 0.24753880 - 488 1.69938877 0.30103000 55.00000000 0.22898307 - 494 1.72249244 0.30103000 56.00000000 0.26083510 - 446 1.70682192 0.30103000 57.00000000 0.24963162 - 566 1.70229706 0.30103000 58.00000000 0.23991725 - 524 1.73150495 0.30103000 59.00000000 0.23615007 - 524 1.72232445 0.30103000 60.00000000 0.25543118 - 458 1.70595937 0.30103000 61.00000000 0.25254449 - 510 1.72651496 0.30103000 62.00000000 0.27249971 - 442 1.70979504 0.30103000 63.00000000 0.26412903 - 520 1.71948151 0.30103000 64.00000000 0.24483643 - 564 1.71578304 0.30103000 65.00000000 0.27039497 - 514 1.72823475 0.30103000 66.00000000 0.26727747 - 534 1.70729487 0.30103000 67.00000000 0.23561950 - 514 1.70400656 0.30103000 68.00000000 0.24776761 - 518 1.72072771 0.30103000 69.00000000 0.24372620 - 468 1.74600411 0.30103000 70.00000000 0.24738152 - 444 1.71301422 0.30103000 71.00000000 0.25633081 - 470 1.71411271 0.30103000 72.00000000 0.21461221 - 502 1.73852084 0.30103000 73.00000000 0.26179730 - 458 1.71845839 0.30103000 74.00000000 0.25732070 - 464 1.73140698 0.30103000 75.00000000 0.28117968 - 508 1.72207949 0.30103000 76.00000000 0.22875210 - 464 1.70772440 0.30103000 77.00000000 0.22494197 - 470 1.73271423 0.30103000 78.00000000 0.24884952 - 466 1.72303600 0.30103000 79.00000000 0.25585041 - 504 1.72901377 0.30103000 80.00000000 0.24699745 - 7324 2.42850770 0.45487534 1.00000000 0.25015647 - 7018 2.43962968 0.45487534 2.00000000 0.25809434 - 5900 2.42822544 0.45487534 3.00000000 0.24855838 - 5142 2.43804164 0.45487534 4.00000000 0.24483722 - 4442 2.43697992 0.45487534 5.00000000 0.25337940 - 3794 2.44963297 0.45487534 6.00000000 0.25252130 - 3150 2.43824530 0.45487534 7.00000000 0.25341895 - 2878 2.44811572 0.45487534 8.00000000 0.25046674 - 2514 2.44930606 0.45487534 9.00000000 0.23186798 - 2202 2.44005661 0.45487534 10.00000000 0.24787194 - 2104 2.44209461 0.45487534 11.00000000 0.24143903 - 1966 2.44708787 0.45487534 12.00000000 0.25740605 - 1826 2.44755022 0.45487534 13.00000000 0.25366348 - 1696 2.43251813 0.45487534 14.00000000 0.24886776 - 1580 2.45625469 0.45487534 15.00000000 0.26559120 - 1448 2.44149603 0.45487534 16.00000000 0.24814005 - 1434 2.44425382 0.45487534 17.00000000 0.24743651 - 1382 2.43969248 0.45487534 18.00000000 0.25600969 - 1358 2.44244682 0.45487534 19.00000000 0.25391995 - 1218 2.44534377 0.45487534 20.00000000 0.24722177 - 1276 2.45534834 0.45487534 21.00000000 0.25110845 - 1188 2.44293262 0.45487534 22.00000000 0.26542309 - 1228 2.45270831 0.45487534 23.00000000 0.24567443 - 1204 2.46017529 0.45487534 24.00000000 0.26422289 - 1176 2.46249400 0.45487534 25.00000000 0.23882658 - 1148 2.44771467 0.45487534 26.00000000 0.26118305 - 1072 2.43778338 0.45487534 27.00000000 0.22100628 - 1116 2.46014274 0.45487534 28.00000000 0.25023591 - 998 2.45288675 0.45487534 29.00000000 0.25886034 - 1072 2.47226086 0.45487534 30.00000000 0.25374691 - 1078 2.45312828 0.45487534 31.00000000 0.24678407 - 1086 2.44001386 0.45487534 32.00000000 0.25454984 - 1082 2.45874029 0.45487534 33.00000000 0.24971072 - 1034 2.44592473 0.45487534 34.00000000 0.23607628 - 1032 2.46186885 0.45487534 35.00000000 0.24810504 - 1034 2.46141973 0.45487534 36.00000000 0.24888523 - 1064 2.44551100 0.45487534 37.00000000 0.24850576 - 998 2.45084552 0.45487534 38.00000000 0.24828013 - 1014 2.45794306 0.45487534 39.00000000 0.23012014 - 962 2.44239076 0.45487534 40.00000000 0.23879316 - 1034 2.43881483 0.45487534 41.00000000 0.24810462 - 984 2.44013700 0.45487534 42.00000000 0.25677786 - 1020 2.46113725 0.45487534 43.00000000 0.25066641 - 1026 2.42964316 0.45487534 44.00000000 0.26528578 - 968 2.45785970 0.45487534 45.00000000 0.25039902 - 1024 2.45860890 0.45487534 46.00000000 0.25451154 - 1094 2.46152495 0.45487534 47.00000000 0.26652891 - 998 2.42511736 0.45487534 48.00000000 0.25915779 - 970 2.46518027 0.45487534 49.00000000 0.25479821 - 956 2.45367980 0.45487534 50.00000000 0.25901709 - 984 2.44702904 0.45487534 51.00000000 0.24630294 - 962 2.44983879 0.45487534 52.00000000 0.25439774 - 1094 2.43031226 0.45487534 53.00000000 0.25809719 - 1060 2.46994475 0.45487534 54.00000000 0.25175882 - 962 2.46878981 0.45487534 55.00000000 0.24873216 - 930 2.43572387 0.45487534 56.00000000 0.26501272 - 1082 2.44294825 0.45487534 57.00000000 0.24437561 - 976 2.44429987 0.45487534 58.00000000 0.26233333 - 970 2.43692985 0.45487534 59.00000000 0.23051009 - 1022 2.44086775 0.45487534 60.00000000 0.25780773 - 882 2.44082154 0.45487534 61.00000000 0.25229517 - 1022 2.45325427 0.45487534 62.00000000 0.25795063 - 1002 2.43946167 0.45487534 63.00000000 0.26432172 - 996 2.46139069 0.45487534 64.00000000 0.26471273 - 966 2.46116684 0.45487534 65.00000000 0.24833999 - 994 2.44801817 0.45487534 66.00000000 0.25945039 - 966 2.45950634 0.45487534 67.00000000 0.24733703 - 1036 2.43211802 0.45487534 68.00000000 0.25298279 - 1034 2.45947404 0.45487534 69.00000000 0.24835758 - 1020 2.45583853 0.45487534 70.00000000 0.27666582 - 922 2.45660893 0.45487534 71.00000000 0.27561842 - 962 2.43555945 0.45487534 72.00000000 0.24806427 - 976 2.42717135 0.45487534 73.00000000 0.26952255 - 1040 2.45410973 0.45487534 74.00000000 0.24435548 - 898 2.45127556 0.45487534 75.00000000 0.24817804 - 1010 2.44854818 0.45487534 76.00000000 0.24210578 - 984 2.46220751 0.45487534 77.00000000 0.24330007 - 1006 2.43776130 0.45487534 78.00000000 0.24242744 - 996 2.44260126 0.45487534 79.00000000 0.24662052 - 942 2.45599762 0.45487534 80.00000000 0.26060921 - 11608 3.45849079 0.60872281 1.00000000 0.24763000 - 10804 3.45793585 0.60872281 2.00000000 0.25175242 - 9850 3.46449304 0.60872281 3.00000000 0.24950445 - 8748 3.48211086 0.60872281 4.00000000 0.24810264 - 7576 3.48039288 0.60872281 5.00000000 0.25241890 - 6586 3.48093811 0.60872281 6.00000000 0.25407360 - 5810 3.47088054 0.60872281 7.00000000 0.25440453 - 4920 3.47239603 0.60872281 8.00000000 0.24873029 - 4596 3.47649543 0.60872281 9.00000000 0.24947848 - 4226 3.47915486 0.60872281 10.00000000 0.24517601 - 3748 3.47334025 0.60872281 11.00000000 0.24658016 - 3636 3.47916675 0.60872281 12.00000000 0.24757231 - 3252 3.47310561 0.60872281 13.00000000 0.25338886 - 3124 3.46780310 0.60872281 14.00000000 0.25117999 - 3020 3.48905360 0.60872281 15.00000000 0.26024537 - 2848 3.49908675 0.60872281 16.00000000 0.24374753 - 2648 3.49052651 0.60872281 17.00000000 0.25341567 - 2468 3.48287995 0.60872281 18.00000000 0.25121528 - 2550 3.49532868 0.60872281 19.00000000 0.25579198 - 2430 3.48560830 0.60872281 20.00000000 0.25536509 - 2354 3.50156846 0.60872281 21.00000000 0.25365240 - 2472 3.50212410 0.60872281 22.00000000 0.24256444 - 2386 3.48035071 0.60872281 23.00000000 0.26784796 - 2294 3.48843109 0.60872281 24.00000000 0.24979071 - 2156 3.49121093 0.60872281 25.00000000 0.24649367 - 2200 3.49184509 0.60872281 26.00000000 0.25264576 - 2176 3.47858777 0.60872281 27.00000000 0.25841216 - 2158 3.49511766 0.60872281 28.00000000 0.25102698 - 2248 3.48070105 0.60872281 29.00000000 0.25228692 - 2168 3.51258006 0.60872281 30.00000000 0.25840639 - 2194 3.49228627 0.60872281 31.00000000 0.24624675 - 2180 3.48489338 0.60872281 32.00000000 0.25196427 - 2102 3.49912381 0.60872281 33.00000000 0.26569340 - 2058 3.48755111 0.60872281 34.00000000 0.24998766 - 2114 3.52275705 0.60872281 35.00000000 0.26253429 - 2040 3.50200338 0.60872281 36.00000000 0.24640609 - 2066 3.51112877 0.60872281 37.00000000 0.25379194 - 2064 3.51192371 0.60872281 38.00000000 0.24961955 - 1962 3.48420941 0.60872281 39.00000000 0.25487954 - 2040 3.48364104 0.60872281 40.00000000 0.25611525 - 2028 3.47143549 0.60872281 41.00000000 0.25260075 - 2016 3.49064813 0.60872281 42.00000000 0.25087628 - 1954 3.50158849 0.60872281 43.00000000 0.25149420 - 2158 3.49581766 0.60872281 44.00000000 0.24760432 - 2002 3.48647306 0.60872281 45.00000000 0.25141664 - 1988 3.50611241 0.60872281 46.00000000 0.24837455 - 2094 3.49390257 0.60872281 47.00000000 0.25424330 - 1920 3.48785555 0.60872281 48.00000000 0.26094295 - 2060 3.49998271 0.60872281 49.00000000 0.27239780 - 1912 3.48264297 0.60872281 50.00000000 0.24824934 - 2018 3.49013324 0.60872281 51.00000000 0.24699668 - 1918 3.49271959 0.60872281 52.00000000 0.25166306 - 2148 3.50657446 0.60872281 53.00000000 0.25200903 - 2018 3.49220692 0.60872281 54.00000000 0.25338760 - 2050 3.48794733 0.60872281 55.00000000 0.26241944 - 2002 3.49946846 0.60872281 56.00000000 0.25692387 - 2144 3.49589958 0.60872281 57.00000000 0.26531958 - 1962 3.48297306 0.60872281 58.00000000 0.24136405 - 2062 3.48897841 0.60872281 59.00000000 0.24341631 - 1924 3.51673231 0.60872281 60.00000000 0.25946567 - 1922 3.48567683 0.60872281 61.00000000 0.25160190 - 1984 3.51162313 0.60872281 62.00000000 0.24074501 - 1970 3.48583221 0.60872281 63.00000000 0.25338697 - 2028 3.49934419 0.60872281 64.00000000 0.26626969 - 1900 3.48353704 0.60872281 65.00000000 0.24939535 - 1946 3.48995234 0.60872281 66.00000000 0.24192789 - 2022 3.50486147 0.60872281 67.00000000 0.25410330 - 2056 3.49367571 0.60872281 68.00000000 0.24651004 - 2028 3.49391329 0.60872281 69.00000000 0.25943602 - 1888 3.48896601 0.60872281 70.00000000 0.26157783 - 1996 3.49692355 0.60872281 71.00000000 0.25960374 - 1948 3.49073390 0.60872281 72.00000000 0.24346458 - 1988 3.49754982 0.60872281 73.00000000 0.25504054 - 2088 3.48521435 0.60872281 74.00000000 0.25607118 - 2046 3.46919389 0.60872281 75.00000000 0.25254104 - 1978 3.50185984 0.60872281 76.00000000 0.24621809 - 1970 3.48843018 0.60872281 77.00000000 0.25708360 - 1996 3.48531713 0.60872281 78.00000000 0.25042968 - 1976 3.50190970 0.60872281 79.00000000 0.25292237 - 1900 3.49448608 0.60872281 80.00000000 0.26250196 - 17666 4.93748424 0.76256829 1.00000000 0.25059042 - 17572 4.92878864 0.76256829 2.00000000 0.25209497 - 16092 4.92299927 0.76256829 3.00000000 0.24854651 - 14546 4.94093324 0.76256829 4.00000000 0.24952472 - 13040 4.95900733 0.76256829 5.00000000 0.25133137 - 11698 4.95210145 0.76256829 6.00000000 0.24511512 - 10504 4.96266028 0.76256829 7.00000000 0.24772268 - 9118 4.96990717 0.76256829 8.00000000 0.24711036 - 8542 4.96152758 0.76256829 9.00000000 0.24168199 - 7554 4.95447934 0.76256829 10.00000000 0.25025565 - 7154 4.96668162 0.76256829 11.00000000 0.25294818 - 6868 4.97336627 0.76256829 12.00000000 0.25081766 - 6358 4.96934310 0.76256829 13.00000000 0.24741591 - 6300 4.97540455 0.76256829 14.00000000 0.25818332 - 5772 4.94760330 0.76256829 15.00000000 0.24303641 - 5674 4.96558312 0.76256829 16.00000000 0.25040803 - 5464 4.96967424 0.76256829 17.00000000 0.25686070 - 5110 4.97466873 0.76256829 18.00000000 0.24975228 - 5084 4.97016697 0.76256829 19.00000000 0.25647469 - 4834 4.97793548 0.76256829 20.00000000 0.24771089 - 4956 4.97341848 0.76256829 21.00000000 0.25294580 - 4836 4.97783247 0.76256829 22.00000000 0.26067442 - 4584 4.97201445 0.76256829 23.00000000 0.24728569 - 4638 4.96458439 0.76256829 24.00000000 0.25510152 - 4556 4.97213902 0.76256829 25.00000000 0.25060501 - 4558 4.97980792 0.76256829 26.00000000 0.24879085 - 4558 4.96872852 0.76256829 27.00000000 0.24637106 - 4344 4.97270889 0.76256829 28.00000000 0.24641910 - 4532 4.97490243 0.76256829 29.00000000 0.24895034 - 4460 4.97519127 0.76256829 30.00000000 0.25197896 - 4378 4.98462686 0.76256829 31.00000000 0.24934643 - 4326 4.98358122 0.76256829 32.00000000 0.24436868 - 4252 4.99358022 0.76256829 33.00000000 0.25403768 - 4374 4.94818311 0.76256829 34.00000000 0.25830433 - 4188 4.98559461 0.76256829 35.00000000 0.25572604 - 4266 4.99470788 0.76256829 36.00000000 0.24420681 - 4220 4.97376570 0.76256829 37.00000000 0.24901879 - 4154 4.98825781 0.76256829 38.00000000 0.24688202 - 4034 4.99326249 0.76256829 39.00000000 0.25318725 - 4090 4.97801158 0.76256829 40.00000000 0.25159233 - 4068 4.96146380 0.76256829 41.00000000 0.25270788 - 3926 4.99875375 0.76256829 42.00000000 0.25262950 - 3964 5.00128395 0.76256829 43.00000000 0.24797898 - 4004 4.98101933 0.76256829 44.00000000 0.25498201 - 4174 4.98489162 0.76256829 45.00000000 0.24839529 - 4076 4.97835083 0.76256829 46.00000000 0.25027996 - 4054 4.97272787 0.76256829 47.00000000 0.25178943 - 4058 4.98078648 0.76256829 48.00000000 0.25233272 - 3952 4.98426714 0.76256829 49.00000000 0.26184692 - 4078 4.97089296 0.76256829 50.00000000 0.24416577 - 4144 4.96493102 0.76256829 51.00000000 0.25823603 - 4040 4.96056342 0.76256829 52.00000000 0.24967158 - 4024 4.98782878 0.76256829 53.00000000 0.26501462 - 4038 4.97054127 0.76256829 54.00000000 0.24971464 - 4090 4.98958296 0.76256829 55.00000000 0.25370409 - 3972 4.98262043 0.76256829 56.00000000 0.23847797 - 4072 4.97851899 0.76256829 57.00000000 0.25207617 - 4034 4.95812235 0.76256829 58.00000000 0.25305887 - 4090 4.97904503 0.76256829 59.00000000 0.25083914 - 4090 5.00105745 0.76256829 60.00000000 0.24303232 - 4190 4.96864971 0.76256829 61.00000000 0.24813588 - 4084 4.97257206 0.76256829 62.00000000 0.24837581 - 4210 4.98741500 0.76256829 63.00000000 0.24529549 - 4216 4.97467023 0.76256829 64.00000000 0.24497598 - 4178 4.97325847 0.76256829 65.00000000 0.25169006 - 4218 4.98433595 0.76256829 66.00000000 0.25887434 - 4034 4.97795398 0.76256829 67.00000000 0.25406652 - 4042 4.95517735 0.76256829 68.00000000 0.24431319 - 3888 4.97512089 0.76256829 69.00000000 0.24696568 - 3928 4.95996739 0.76256829 70.00000000 0.24798732 - 3966 4.96651248 0.76256829 71.00000000 0.25470098 - 4148 4.97533016 0.76256829 72.00000000 0.25357396 - 3950 4.98518562 0.76256829 73.00000000 0.25156983 - 3872 4.97987931 0.76256829 74.00000000 0.25992727 - 4190 4.96376347 0.76256829 75.00000000 0.25198610 - 4128 4.98462765 0.76256829 76.00000000 0.24823649 - 3986 4.97753965 0.76256829 77.00000000 0.25772178 - 3988 4.97565380 0.76256829 78.00000000 0.25093808 - 4084 4.98131526 0.76256829 79.00000000 0.24640124 - 3914 4.98360766 0.76256829 80.00000000 0.24932232 - 26790 7.02707521 0.91641447 1.00000000 0.25248670 - 26296 7.02570273 0.91641447 2.00000000 0.24898198 - 25078 7.04911054 0.91641447 3.00000000 0.24671188 - 23164 7.02899786 0.91641447 4.00000000 0.24937114 - 21798 7.03815500 0.91641447 5.00000000 0.25003327 - 19824 7.05518707 0.91641447 6.00000000 0.24745463 - 18420 7.06967330 0.91641447 7.00000000 0.25517548 - 16716 7.07831162 0.91641447 8.00000000 0.24833749 - 15688 7.07183514 0.91641447 9.00000000 0.24856178 - 14580 7.07246545 0.91641447 10.00000000 0.24731879 - 14050 7.07185097 0.91641447 11.00000000 0.25116745 - 13312 7.09224799 0.91641447 12.00000000 0.25107144 - 12600 7.08493698 0.91641447 13.00000000 0.24757480 - 12060 7.08317103 0.91641447 14.00000000 0.24863673 - 11376 7.07443336 0.91641447 15.00000000 0.25079062 - 11050 7.08912097 0.91641447 16.00000000 0.25086299 - 10638 7.08425534 0.91641447 17.00000000 0.25262207 - 10422 7.07871093 0.91641447 18.00000000 0.25397749 - 10292 7.09023708 0.91641447 19.00000000 0.25117435 - 9836 7.08066893 0.91641447 20.00000000 0.24386255 - 10026 7.08341339 0.91641447 21.00000000 0.24734977 - 9554 7.07527932 0.91641447 22.00000000 0.25320979 - 9592 7.09045766 0.91641447 23.00000000 0.25168496 - 9488 7.08430710 0.91641447 24.00000000 0.25327907 - 9156 7.08453888 0.91641447 25.00000000 0.24539753 - 9330 7.08740923 0.91641447 26.00000000 0.24820507 - 9342 7.09770474 0.91641447 27.00000000 0.25269610 - 9030 7.10673884 0.91641447 28.00000000 0.25020184 - 8952 7.08684058 0.91641447 29.00000000 0.24870146 - 8738 7.08060804 0.91641447 30.00000000 0.24542436 - 8628 7.08473740 0.91641447 31.00000000 0.25149487 - 8662 7.12109806 0.91641447 32.00000000 0.25063630 - 8634 7.10512609 0.91641447 33.00000000 0.24859318 - 8656 7.09508277 0.91641447 34.00000000 0.24698129 - 8518 7.11024003 0.91641447 35.00000000 0.24551964 - 8638 7.10345113 0.91641447 36.00000000 0.24651787 - 8480 7.09861115 0.91641447 37.00000000 0.25223196 - 8720 7.08189995 0.91641447 38.00000000 0.25670973 - 8592 7.09136673 0.91641447 39.00000000 0.25046465 - 8386 7.09012173 0.91641447 40.00000000 0.24858072 - 8488 7.08331405 0.91641447 41.00000000 0.24804434 - 8210 7.09398932 0.91641447 42.00000000 0.25145989 - 8526 7.10257785 0.91641447 43.00000000 0.25617331 - 8612 7.11293918 0.91641447 44.00000000 0.25296672 - 8582 7.08556493 0.91641447 45.00000000 0.25272994 - 8386 7.09117341 0.91641447 46.00000000 0.24908875 - 8374 7.08642893 0.91641447 47.00000000 0.25708851 - 8160 7.09681162 0.91641447 48.00000000 0.24984443 - 8234 7.05936798 0.91641447 49.00000000 0.25367335 - 8552 7.09784204 0.91641447 50.00000000 0.25084650 - 8394 7.10789775 0.91641447 51.00000000 0.25354657 - 8406 7.08519368 0.91641447 52.00000000 0.24829568 - 8122 7.09235153 0.91641447 53.00000000 0.24826581 - 8282 7.10256269 0.91641447 54.00000000 0.25180739 - 8104 7.11928290 0.91641447 55.00000000 0.24902819 - 8072 7.09764008 0.91641447 56.00000000 0.25280921 - 8320 7.10514043 0.91641447 57.00000000 0.24956555 - 8136 7.10867774 0.91641447 58.00000000 0.24450377 - 8372 7.08303765 0.91641447 59.00000000 0.25308850 - 8122 7.10351613 0.91641447 60.00000000 0.24581411 - 8366 7.08039772 0.91641447 61.00000000 0.25542493 - 8208 7.11579645 0.91641447 62.00000000 0.24690870 - 8380 7.07906081 0.91641447 63.00000000 0.25193484 - 8238 7.09268203 0.91641447 64.00000000 0.24929064 - 8218 7.08609769 0.91641447 65.00000000 0.25152967 - 8184 7.10396372 0.91641447 66.00000000 0.25589477 - 8374 7.06971055 0.91641447 67.00000000 0.25430829 - 8286 7.10393138 0.91641447 68.00000000 0.24882973 - 8184 7.09412046 0.91641447 69.00000000 0.25442436 - 8126 7.08542752 0.91641447 70.00000000 0.25433731 - 7866 7.07443289 0.91641447 71.00000000 0.24958123 - 8160 7.08797269 0.91641447 72.00000000 0.25043324 - 8090 7.08008533 0.91641447 73.00000000 0.25417299 - 8272 7.08896914 0.91641447 74.00000000 0.25998572 - 8436 7.08692243 0.91641447 75.00000000 0.25541884 - 8108 7.10097343 0.91641447 76.00000000 0.25063627 - 8214 7.10509828 0.91641447 77.00000000 0.25694144 - 8182 7.10080385 0.91641447 78.00000000 0.25394870 - 8354 7.07845888 0.91641447 79.00000000 0.24679298 - 8252 7.08754831 0.91641447 80.00000000 0.25304312 - 40136 10.02104223 1.07025958 1.00000000 0.24916669 - 40466 10.04034865 1.07025958 2.00000000 0.25126254 - 39046 10.03532836 1.07025958 3.00000000 0.25117499 - 37760 10.04407701 1.07025958 4.00000000 0.25041600 - 35910 10.06435589 1.07025958 5.00000000 0.25089953 - 34212 10.04395437 1.07025958 6.00000000 0.25317634 - 31962 10.05973008 1.07025958 7.00000000 0.25015005 - 30574 10.07851587 1.07025958 8.00000000 0.25169835 - 29300 10.07373843 1.07025958 9.00000000 0.24922897 - 27662 10.07176995 1.07025958 10.00000000 0.25121582 - 26600 10.09113428 1.07025958 11.00000000 0.25344979 - 25406 10.09138480 1.07025958 12.00000000 0.25159901 - 23892 10.09547992 1.07025958 13.00000000 0.25294096 - 23252 10.08227235 1.07025958 14.00000000 0.25069557 - 22768 10.07879397 1.07025958 15.00000000 0.25159831 - 22686 10.09203016 1.07025958 16.00000000 0.25233182 - 21528 10.09994719 1.07025958 17.00000000 0.24950645 - 21160 10.10079968 1.07025958 18.00000000 0.25498543 - 20450 10.09894270 1.07025958 19.00000000 0.24995003 - 20716 10.09083269 1.07025958 20.00000000 0.24973136 - 19982 10.12180003 1.07025958 21.00000000 0.24925194 - 19536 10.10452592 1.07025958 22.00000000 0.24741728 - 19346 10.09474604 1.07025958 23.00000000 0.25092362 - 19014 10.10757984 1.07025958 24.00000000 0.25068585 - 18952 10.09686046 1.07025958 25.00000000 0.25330236 - 18566 10.10722259 1.07025958 26.00000000 0.24952189 - 18600 10.09713533 1.07025958 27.00000000 0.25249630 - 18406 10.10352327 1.07025958 28.00000000 0.25161987 - 18070 10.10919432 1.07025958 29.00000000 0.25020571 - 17844 10.11343074 1.07025958 30.00000000 0.25032698 - 17686 10.11722033 1.07025958 31.00000000 0.25197382 - 17564 10.11609719 1.07025958 32.00000000 0.25046792 - 17650 10.11316763 1.07025958 33.00000000 0.25249545 - 17802 10.11151903 1.07025958 34.00000000 0.25331102 - 17512 10.10935739 1.07025958 35.00000000 0.25071521 - 17214 10.11835029 1.07025958 36.00000000 0.25272096 - 17278 10.09012791 1.07025958 37.00000000 0.25095802 - 17374 10.11342123 1.07025958 38.00000000 0.25095868 - 17520 10.09733257 1.07025958 39.00000000 0.25094314 - 17012 10.11667002 1.07025958 40.00000000 0.25356236 - 16854 10.10243163 1.07025958 41.00000000 0.25064635 - 17512 10.10795242 1.07025958 42.00000000 0.25841010 - 17342 10.10806709 1.07025958 43.00000000 0.25110443 - 17466 10.09758533 1.07025958 44.00000000 0.25170730 - 16540 10.09249930 1.07025958 45.00000000 0.25197945 - 17168 10.10211179 1.07025958 46.00000000 0.24963237 - 17418 10.11534640 1.07025958 47.00000000 0.25289575 - 16826 10.09920515 1.07025958 48.00000000 0.25178039 - 17032 10.10927248 1.07025958 49.00000000 0.24977775 - 16964 10.09663715 1.07025958 50.00000000 0.25064238 - 17018 10.10855504 1.07025958 51.00000000 0.24714274 - 16940 10.10300005 1.07025958 52.00000000 0.25501952 - 16766 10.10664323 1.07025958 53.00000000 0.24853245 - 16752 10.09324383 1.07025958 54.00000000 0.25216177 - 16546 10.11021141 1.07025958 55.00000000 0.24690203 - 16968 10.09543919 1.07025958 56.00000000 0.25113214 - 16718 10.10670712 1.07025958 57.00000000 0.24446699 - 16590 10.09970407 1.07025958 58.00000000 0.24713872 - 16594 10.09927583 1.07025958 59.00000000 0.25273643 - 16546 10.10980961 1.07025958 60.00000000 0.24954717 - 16744 10.11865032 1.07025958 61.00000000 0.25247636 - 16448 10.10618576 1.07025958 62.00000000 0.24862995 - 16838 10.11197539 1.07025958 63.00000000 0.25117936 - 16808 10.10893709 1.07025958 64.00000000 0.24790897 - 16928 10.10534545 1.07025958 65.00000000 0.25118540 - 16870 10.11891782 1.07025958 66.00000000 0.24940425 - 16578 10.09983587 1.07025958 67.00000000 0.25229537 - 16900 10.08151999 1.07025958 68.00000000 0.25135198 - 16276 10.08602176 1.07025958 69.00000000 0.24937036 - 16908 10.10357219 1.07025958 70.00000000 0.25087216 - 16900 10.10852085 1.07025958 71.00000000 0.25153839 - 16476 10.11333614 1.07025958 72.00000000 0.25203574 - 16780 10.09789065 1.07025958 73.00000000 0.25194163 - 16770 10.09258680 1.07025958 74.00000000 0.25286283 - 16584 10.10238369 1.07025958 75.00000000 0.25224439 - 16878 10.10035658 1.07025958 76.00000000 0.25444605 - 16856 10.11462159 1.07025958 77.00000000 0.25460405 - 16570 10.08891779 1.07025958 78.00000000 0.25376676 - 16360 10.10157685 1.07025958 79.00000000 0.24902310 - 16522 10.11648804 1.07025958 80.00000000 0.24785950 - 62960 14.29752349 1.22410814 1.00000000 0.24719719 - 62848 14.30727574 1.22410814 2.00000000 0.24946988 - 63124 14.31699847 1.22410814 3.00000000 0.24876061 - 61338 14.29834855 1.22410814 4.00000000 0.25061082 - 59666 14.32566152 1.22410814 5.00000000 0.25144809 - 58500 14.32471655 1.22410814 6.00000000 0.25106051 - 56574 14.33003532 1.22410814 7.00000000 0.25179483 - 54756 14.35396816 1.22410814 8.00000000 0.24941940 - 53484 14.36095665 1.22410814 9.00000000 0.25041024 - 51572 14.38546701 1.22410814 10.00000000 0.25290864 - 49896 14.37034578 1.22410814 11.00000000 0.25093205 - 48746 14.38643565 1.22410814 12.00000000 0.24981195 - 47034 14.37337757 1.22410814 13.00000000 0.24711153 - 45536 14.37157960 1.22410814 14.00000000 0.25152561 - 44722 14.38762670 1.22410814 15.00000000 0.25163618 - 43956 14.38845414 1.22410814 16.00000000 0.25051512 - 43246 14.40073906 1.22410814 17.00000000 0.24851691 - 41748 14.39453637 1.22410814 18.00000000 0.25218630 - 41466 14.39351911 1.22410814 19.00000000 0.25126043 - 40400 14.37804060 1.22410814 20.00000000 0.24797859 - 40330 14.38705103 1.22410814 21.00000000 0.24915716 - 39666 14.40368264 1.22410814 22.00000000 0.25262505 - 38908 14.41089379 1.22410814 23.00000000 0.24822623 - 38676 14.41760763 1.22410814 24.00000000 0.25239661 - 37950 14.39886489 1.22410814 25.00000000 0.25310934 - 38690 14.40427513 1.22410814 26.00000000 0.25286238 - 37618 14.40443532 1.22410814 27.00000000 0.25076390 - 37108 14.40129371 1.22410814 28.00000000 0.25030018 - 37178 14.38515797 1.22410814 29.00000000 0.24766993 - 36732 14.40943541 1.22410814 30.00000000 0.25114473 - 36218 14.40419280 1.22410814 31.00000000 0.25014120 - 35958 14.39953490 1.22410814 32.00000000 0.25191260 - 35550 14.39177888 1.22410814 33.00000000 0.25090045 - 36140 14.41340736 1.22410814 34.00000000 0.25236148 - 35374 14.39957524 1.22410814 35.00000000 0.25384312 - 35546 14.40305316 1.22410814 36.00000000 0.25047774 - 35548 14.39647508 1.22410814 37.00000000 0.25412736 - 35168 14.38201491 1.22410814 38.00000000 0.24966676 - 34992 14.38276273 1.22410814 39.00000000 0.25195572 - 35210 14.38656441 1.22410814 40.00000000 0.24914841 - 34970 14.38655385 1.22410814 41.00000000 0.24991330 - 34904 14.37152106 1.22410814 42.00000000 0.24986446 - 34688 14.41758949 1.22410814 43.00000000 0.24985042 - 34702 14.38815269 1.22410814 44.00000000 0.24988330 - 34576 14.38691389 1.22410814 45.00000000 0.25324897 - 33968 14.40565327 1.22410814 46.00000000 0.25224943 - 34516 14.41323567 1.22410814 47.00000000 0.24948429 - 34098 14.42080233 1.22410814 48.00000000 0.25058936 - 33934 14.39082373 1.22410814 49.00000000 0.24918557 - 34334 14.38227716 1.22410814 50.00000000 0.24709576 - 34514 14.39980855 1.22410814 51.00000000 0.25084310 - 34390 14.40010477 1.22410814 52.00000000 0.25065135 - 33800 14.41413358 1.22410814 53.00000000 0.25285260 - 34188 14.39636212 1.22410814 54.00000000 0.25104802 - 33898 14.39404383 1.22410814 55.00000000 0.24977186 - 33846 14.39691308 1.22410814 56.00000000 0.24908969 - 34058 14.41805695 1.22410814 57.00000000 0.25219700 - 33600 14.41043980 1.22410814 58.00000000 0.25262064 - 33772 14.41546597 1.22410814 59.00000000 0.24989404 - 33864 14.40436029 1.22410814 60.00000000 0.25116694 - 33638 14.38853768 1.22410814 61.00000000 0.25009006 - 34246 14.41183901 1.22410814 62.00000000 0.25142869 - 34156 14.38508053 1.22410814 63.00000000 0.25320064 - 33830 14.40906397 1.22410814 64.00000000 0.25139169 - 34060 14.39090610 1.22410814 65.00000000 0.25211608 - 33698 14.40500002 1.22410814 66.00000000 0.25285342 - 34168 14.37806500 1.22410814 67.00000000 0.25121436 - 34412 14.38581536 1.22410814 68.00000000 0.25073870 - 34318 14.41239917 1.22410814 69.00000000 0.24910450 - 33976 14.37693766 1.22410814 70.00000000 0.25020960 - 34054 14.38526125 1.22410814 71.00000000 0.25129354 - 34366 14.39328102 1.22410814 72.00000000 0.24538018 - 33934 14.39985386 1.22410814 73.00000000 0.24886354 - 33694 14.40016676 1.22410814 74.00000000 0.24903822 - 33810 14.40004168 1.22410814 75.00000000 0.25035713 - 33820 14.39875612 1.22410814 76.00000000 0.25050772 - 33868 14.39228460 1.22410814 77.00000000 0.24966631 - 33396 14.41257171 1.22410814 78.00000000 0.24680401 - 33748 14.41012143 1.22410814 79.00000000 0.25065495 - 33132 14.41524017 1.22410814 80.00000000 0.25198283 - 103314 20.41590578 1.37795248 1.00000000 0.25246669 - 104674 20.41976224 1.37795248 2.00000000 0.24906519 - 103028 20.41132052 1.37795248 3.00000000 0.25084769 - 102440 20.43310879 1.37795248 4.00000000 0.24990035 - 101714 20.42423426 1.37795248 5.00000000 0.25124815 - 99750 20.43857808 1.37795248 6.00000000 0.25142974 - 98460 20.44148012 1.37795248 7.00000000 0.25063664 - 96980 20.45315411 1.37795248 8.00000000 0.25084081 - 96094 20.45165738 1.37795248 9.00000000 0.25156272 - 94152 20.44778148 1.37795248 10.00000000 0.25125903 - 92604 20.45539945 1.37795248 11.00000000 0.25092425 - 90552 20.49086892 1.37795248 12.00000000 0.25171856 - 90322 20.49825590 1.37795248 13.00000000 0.25037190 - 89452 20.49347218 1.37795248 14.00000000 0.25159897 - 87344 20.50124937 1.37795248 15.00000000 0.25077912 - 85384 20.49282394 1.37795248 16.00000000 0.25095913 - 84586 20.49384049 1.37795248 17.00000000 0.25103295 - 83300 20.51301042 1.37795248 18.00000000 0.24990080 - 82490 20.51125557 1.37795248 19.00000000 0.24969756 - 81250 20.51545564 1.37795248 20.00000000 0.25012633 - 80250 20.50922395 1.37795248 21.00000000 0.25054629 - 78906 20.49717160 1.37795248 22.00000000 0.25062552 - 78570 20.51597735 1.37795248 23.00000000 0.25064357 - 77840 20.51149174 1.37795248 24.00000000 0.24956351 - 76488 20.53123446 1.37795248 25.00000000 0.24970479 - 76240 20.51673521 1.37795248 26.00000000 0.25168164 - 75434 20.51623428 1.37795248 27.00000000 0.24889501 - 75106 20.52381316 1.37795248 28.00000000 0.24959724 - 75014 20.53807655 1.37795248 29.00000000 0.25109098 - 74428 20.52848356 1.37795248 30.00000000 0.24935873 - 73192 20.49850422 1.37795248 31.00000000 0.25069884 - 74008 20.51591374 1.37795248 32.00000000 0.25031545 - 72380 20.52392614 1.37795248 33.00000000 0.24778594 - 73518 20.51858801 1.37795248 34.00000000 0.25000919 - 72202 20.52547498 1.37795248 35.00000000 0.24878310 - 72426 20.52733649 1.37795248 36.00000000 0.24961892 - 72168 20.52795413 1.37795248 37.00000000 0.25127483 - 71900 20.51184446 1.37795248 38.00000000 0.25088142 - 71054 20.51771973 1.37795248 39.00000000 0.25056621 - 71226 20.51278263 1.37795248 40.00000000 0.24954754 - 71310 20.52246080 1.37795248 41.00000000 0.25284064 - 71208 20.51462941 1.37795248 42.00000000 0.25199608 - 71158 20.49881241 1.37795248 43.00000000 0.25320053 - 70364 20.50771678 1.37795248 44.00000000 0.25139890 - 70706 20.52734182 1.37795248 45.00000000 0.25040772 - 70432 20.52164882 1.37795248 46.00000000 0.24806719 - 70296 20.50506517 1.37795248 47.00000000 0.25099565 - 70600 20.51771424 1.37795248 48.00000000 0.25194318 - 70460 20.48313866 1.37795248 49.00000000 0.25109146 - 70322 20.52417169 1.37795248 50.00000000 0.24900759 - 70168 20.52090907 1.37795248 51.00000000 0.25103626 - 69936 20.53513967 1.37795248 52.00000000 0.25289452 - 69504 20.51536532 1.37795248 53.00000000 0.24896120 - 69694 20.52249795 1.37795248 54.00000000 0.25174126 - 69038 20.53687821 1.37795248 55.00000000 0.24996822 - 68812 20.53267277 1.37795248 56.00000000 0.25362535 - 69214 20.51896773 1.37795248 57.00000000 0.25134859 - 68994 20.51668008 1.37795248 58.00000000 0.25365936 - 69070 20.51561190 1.37795248 59.00000000 0.25279139 - 69446 20.51381698 1.37795248 60.00000000 0.25158739 - 68588 20.50545578 1.37795248 61.00000000 0.25286578 - 68198 20.52555433 1.37795248 62.00000000 0.25169952 - 68762 20.52095589 1.37795248 63.00000000 0.24833916 - 68530 20.51424923 1.37795248 64.00000000 0.25057556 - 68512 20.53923738 1.37795248 65.00000000 0.25329515 - 68814 20.51754606 1.37795248 66.00000000 0.25113715 - 68716 20.52812457 1.37795248 67.00000000 0.25109875 - 68752 20.54727377 1.37795248 68.00000000 0.25378520 - 68464 20.51806980 1.37795248 69.00000000 0.25361648 - 69180 20.51941691 1.37795248 70.00000000 0.25082052 - 68860 20.50409127 1.37795248 71.00000000 0.25149356 - 69150 20.48993388 1.37795248 72.00000000 0.24925824 - 69082 20.52444256 1.37795248 73.00000000 0.25304743 - 68730 20.52350443 1.37795248 74.00000000 0.25321450 - 68388 20.50903912 1.37795248 75.00000000 0.25231185 - 67636 20.54831119 1.37795248 76.00000000 0.25005814 - 67768 20.51608568 1.37795248 77.00000000 0.24989666 - 68858 20.52944261 1.37795248 78.00000000 0.25180040 - 68014 20.53835593 1.37795248 79.00000000 0.25157760 - 67278 20.50781976 1.37795248 80.00000000 0.25069792 + 8 0.19738577 -0.62204752 79.00000000 0.26680650 + 8 0.20649021 -0.62204752 80.00000000 0.14283718 + 598 0.29277827 -0.46820059 1.00000000 0.27912124 + 600 0.29042721 -0.46820059 2.00000000 0.25039753 + 468 0.28345905 -0.46820059 3.00000000 0.23910348 + 420 0.28946676 -0.46820059 4.00000000 0.24999242 + 388 0.28969434 -0.46820059 5.00000000 0.27194960 + 356 0.29057263 -0.46820059 6.00000000 0.26309696 + 300 0.28904434 -0.46820059 7.00000000 0.23964378 + 250 0.29613715 -0.46820059 8.00000000 0.22175469 + 242 0.28715122 -0.46820059 9.00000000 0.25340870 + 214 0.28423451 -0.46820059 10.00000000 0.23461689 + 174 0.28510698 -0.46820059 11.00000000 0.21798820 + 132 0.28134306 -0.46820059 12.00000000 0.24319467 + 128 0.28404017 -0.46820059 13.00000000 0.21294387 + 116 0.28966077 -0.46820059 14.00000000 0.24609289 + 70 0.29811170 -0.46820059 15.00000000 0.24519915 + 58 0.28747321 -0.46820059 16.00000000 0.26400683 + 60 0.29136012 -0.46820059 17.00000000 0.26870476 + 62 0.28383023 -0.46820059 18.00000000 0.22552713 + 46 0.27590687 -0.46820059 19.00000000 0.27011254 + 52 0.28304028 -0.46820059 20.00000000 0.30367459 + 38 0.28648603 -0.46820059 21.00000000 0.15259958 + 32 0.31530115 -0.46820059 22.00000000 0.22008283 + 38 0.29046717 -0.46820059 23.00000000 0.31713491 + 30 0.28109588 -0.46820059 24.00000000 0.26733340 + 34 0.30268498 -0.46820059 25.00000000 0.17602864 + 24 0.28024571 -0.46820059 26.00000000 0.25152386 + 18 0.30723022 -0.46820059 27.00000000 0.23567127 + 16 0.29976414 -0.46820059 28.00000000 0.35703314 + 18 0.29389717 -0.46820059 29.00000000 0.31180062 + 26 0.29442408 -0.46820059 30.00000000 0.15469328 + 14 0.28028112 -0.46820059 31.00000000 0.27362769 + 14 0.26969546 -0.46820059 32.00000000 0.27345797 + 22 0.29504434 -0.46820059 33.00000000 0.24356382 + 24 0.28446843 -0.46820059 34.00000000 0.12267693 + 18 0.29172124 -0.46820059 35.00000000 0.14554550 + 26 0.28463879 -0.46820059 36.00000000 0.24776121 + 12 0.29855839 -0.46820059 37.00000000 0.27293525 + 12 0.27948372 -0.46820059 38.00000000 0.21836248 + 16 0.27714860 -0.46820059 39.00000000 0.26734316 + 12 0.30580861 -0.46820059 40.00000000 0.34202559 + 12 0.30795464 -0.46820059 41.00000000 0.30056678 + 22 0.28407649 -0.46820059 42.00000000 0.23290696 + 16 0.29461608 -0.46820059 43.00000000 0.18109412 + 12 0.30035810 -0.46820059 44.00000000 0.20650749 + 16 0.28118094 -0.46820059 45.00000000 0.20324783 + 26 0.29277267 -0.46820059 46.00000000 0.24800144 + 16 0.29158863 -0.46820059 47.00000000 0.18620108 + 22 0.29715222 -0.46820059 48.00000000 0.12022441 + 12 0.27072148 -0.46820059 49.00000000 0.18025075 + 6 0.29818875 -0.46820059 50.00000000 0.02500577 + 10 0.29695541 -0.46820059 51.00000000 0.31723797 + 8 0.28141256 -0.46820059 52.00000000 0.28445805 + 20 0.26621474 -0.46820059 53.00000000 0.23356310 + 24 0.28936994 -0.46820059 54.00000000 0.19770486 + 12 0.31898118 -0.46820059 55.00000000 0.20353240 + 14 0.28835062 -0.46820059 56.00000000 0.17962127 + 16 0.28870696 -0.46820059 57.00000000 0.20475842 + 12 0.29150250 -0.46820059 58.00000000 0.35713077 + 10 0.27112440 -0.46820059 59.00000000 0.16498795 + 14 0.30083552 -0.46820059 60.00000000 0.24610929 + 18 0.28832897 -0.46820059 61.00000000 0.29583289 + 18 0.29929582 -0.46820059 62.00000000 0.28010451 + 18 0.27491688 -0.46820059 63.00000000 0.16771294 + 18 0.28033442 -0.46820059 64.00000000 0.32588804 + 16 0.29299609 -0.46820059 65.00000000 0.13757668 + 8 0.31651292 -0.46820059 66.00000000 0.17359459 + 16 0.29149392 -0.46820059 67.00000000 0.23783488 + 20 0.28413824 -0.46820059 68.00000000 0.19215757 + 16 0.30613290 -0.46820059 69.00000000 0.28882669 + 12 0.29161558 -0.46820059 70.00000000 0.32522773 + 26 0.31801166 -0.46820059 71.00000000 0.16973181 + 12 0.28299094 -0.46820059 72.00000000 0.26372202 + 6 0.28107146 -0.46820059 73.00000000 0.34712810 + 16 0.29411377 -0.46820059 74.00000000 0.25867870 + 20 0.29118160 -0.46820059 75.00000000 0.21260803 + 20 0.28176458 -0.46820059 76.00000000 0.21567875 + 16 0.28605208 -0.46820059 77.00000000 0.45469399 + 14 0.29292801 -0.46820059 78.00000000 0.18660131 + 8 0.30167943 -0.46820059 79.00000000 0.45467662 + 18 0.29569056 -0.46820059 80.00000000 0.21163695 + 822 0.41336664 -0.31435498 1.00000000 0.25628346 + 732 0.41129978 -0.31435498 2.00000000 0.25635227 + 658 0.41402246 -0.31435498 3.00000000 0.25811827 + 640 0.41291067 -0.31435498 4.00000000 0.21257550 + 542 0.41563400 -0.31435498 5.00000000 0.23265858 + 474 0.41163438 -0.31435498 6.00000000 0.25157995 + 406 0.40690469 -0.31435498 7.00000000 0.26953232 + 326 0.40874935 -0.31435498 8.00000000 0.23390397 + 312 0.41664668 -0.31435498 9.00000000 0.26622566 + 266 0.41468550 -0.31435498 10.00000000 0.25739337 + 212 0.40920586 -0.31435498 11.00000000 0.21707969 + 192 0.41476768 -0.31435498 12.00000000 0.21228303 + 158 0.41754466 -0.31435498 13.00000000 0.25331322 + 110 0.39868893 -0.31435498 14.00000000 0.27931640 + 106 0.41437064 -0.31435498 15.00000000 0.21468199 + 130 0.42423789 -0.31435498 16.00000000 0.23884147 + 110 0.41370491 -0.31435498 17.00000000 0.25764457 + 78 0.41282076 -0.31435498 18.00000000 0.23801435 + 76 0.41499972 -0.31435498 19.00000000 0.24563788 + 50 0.40563904 -0.31435498 20.00000000 0.27653550 + 56 0.40417360 -0.31435498 21.00000000 0.23628193 + 54 0.41704559 -0.31435498 22.00000000 0.24360126 + 38 0.42414419 -0.31435498 23.00000000 0.33183797 + 56 0.41129355 -0.31435498 24.00000000 0.25322736 + 38 0.41489883 -0.31435498 25.00000000 0.17136233 + 36 0.41955888 -0.31435498 26.00000000 0.25221981 + 42 0.42041495 -0.31435498 27.00000000 0.22935745 + 50 0.41740005 -0.31435498 28.00000000 0.20483385 + 40 0.39655931 -0.31435498 29.00000000 0.24274867 + 42 0.40495381 -0.31435498 30.00000000 0.17488914 + 40 0.42537840 -0.31435498 31.00000000 0.26172240 + 30 0.41049414 -0.31435498 32.00000000 0.27537655 + 22 0.40546038 -0.31435498 33.00000000 0.16767658 + 40 0.42121701 -0.31435498 34.00000000 0.29282012 + 52 0.42390754 -0.31435498 35.00000000 0.22395355 + 30 0.43496290 -0.31435498 36.00000000 0.31665074 + 36 0.43287173 -0.31435498 37.00000000 0.18212187 + 20 0.43424599 -0.31435498 38.00000000 0.27143974 + 24 0.43100819 -0.31435498 39.00000000 0.18148722 + 44 0.43337403 -0.31435498 40.00000000 0.24533684 + 24 0.42886527 -0.31435498 41.00000000 0.18742927 + 20 0.40433879 -0.31435498 42.00000000 0.31064735 + 32 0.43625623 -0.31435498 43.00000000 0.22022462 + 34 0.40443378 -0.31435498 44.00000000 0.21336038 + 34 0.41823049 -0.31435498 45.00000000 0.29132853 + 32 0.38732904 -0.31435498 46.00000000 0.09852032 + 34 0.39882426 -0.31435498 47.00000000 0.31535434 + 34 0.41293358 -0.31435498 48.00000000 0.34310030 + 12 0.46017132 -0.31435498 49.00000000 0.14131453 + 26 0.41539530 -0.31435498 50.00000000 0.25143644 + 16 0.40981147 -0.31435498 51.00000000 0.28520641 + 42 0.40574720 -0.31435498 52.00000000 0.22394475 + 26 0.44187272 -0.31435498 53.00000000 0.23489393 + 38 0.40912342 -0.31435498 54.00000000 0.23073240 + 28 0.40898790 -0.31435498 55.00000000 0.23289687 + 32 0.42570598 -0.31435498 56.00000000 0.10432981 + 22 0.40386838 -0.31435498 57.00000000 0.27805572 + 36 0.39596677 -0.31435498 58.00000000 0.28078110 + 20 0.42443682 -0.31435498 59.00000000 0.27006132 + 34 0.38536939 -0.31435498 60.00000000 0.24332685 + 28 0.40594476 -0.31435498 61.00000000 0.39313120 + 32 0.40929837 -0.31435498 62.00000000 0.27673357 + 34 0.40429276 -0.31435498 63.00000000 0.35048809 + 32 0.40051591 -0.31435498 64.00000000 0.18323036 + 28 0.40917370 -0.31435498 65.00000000 0.19524242 + 20 0.43129354 -0.31435498 66.00000000 0.31987272 + 32 0.40234972 -0.31435498 67.00000000 0.25577299 + 32 0.43757121 -0.31435498 68.00000000 0.28253193 + 32 0.41073821 -0.31435498 69.00000000 0.28634339 + 28 0.42422819 -0.31435498 70.00000000 0.24713992 + 18 0.41073281 -0.31435498 71.00000000 0.13448156 + 20 0.40423678 -0.31435498 72.00000000 0.20358187 + 34 0.40788465 -0.31435498 73.00000000 0.23319411 + 28 0.39362864 -0.31435498 74.00000000 0.36948965 + 12 0.39773459 -0.31435498 75.00000000 0.17837109 + 34 0.42302944 -0.31435498 76.00000000 0.26853742 + 42 0.40752514 -0.31435498 77.00000000 0.19493720 + 22 0.39593957 -0.31435498 78.00000000 0.22107724 + 34 0.40911560 -0.31435498 79.00000000 0.28174914 + 20 0.41764300 -0.31435498 80.00000000 0.28954183 + 1038 0.58742084 -0.16050875 1.00000000 0.25150308 + 956 0.59058760 -0.16050875 2.00000000 0.25716078 + 926 0.58833749 -0.16050875 3.00000000 0.25386697 + 770 0.58549850 -0.16050875 4.00000000 0.25520063 + 756 0.58621370 -0.16050875 5.00000000 0.25968726 + 656 0.58681187 -0.16050875 6.00000000 0.26322192 + 556 0.58832501 -0.16050875 7.00000000 0.24939053 + 472 0.58709215 -0.16050875 8.00000000 0.22510859 + 436 0.58961863 -0.16050875 9.00000000 0.25301795 + 364 0.58675143 -0.16050875 10.00000000 0.22930699 + 298 0.57977035 -0.16050875 11.00000000 0.23608783 + 288 0.58627172 -0.16050875 12.00000000 0.22792635 + 256 0.58360824 -0.16050875 13.00000000 0.24701729 + 228 0.58000474 -0.16050875 14.00000000 0.26521976 + 168 0.59054371 -0.16050875 15.00000000 0.25136353 + 158 0.59206245 -0.16050875 16.00000000 0.22003730 + 116 0.59173521 -0.16050875 17.00000000 0.23595864 + 94 0.58122174 -0.16050875 18.00000000 0.22627656 + 162 0.58484382 -0.16050875 19.00000000 0.23831460 + 98 0.59183109 -0.16050875 20.00000000 0.21578643 + 110 0.58229916 -0.16050875 21.00000000 0.24436824 + 92 0.58860145 -0.16050875 22.00000000 0.27179537 + 102 0.59517597 -0.16050875 23.00000000 0.30780092 + 82 0.59135235 -0.16050875 24.00000000 0.29071372 + 94 0.60272115 -0.16050875 25.00000000 0.25859637 + 98 0.58050013 -0.16050875 26.00000000 0.21668415 + 74 0.59672695 -0.16050875 27.00000000 0.25989530 + 68 0.61349873 -0.16050875 28.00000000 0.27012184 + 62 0.58991212 -0.16050875 29.00000000 0.20889714 + 74 0.59383434 -0.16050875 30.00000000 0.22923653 + 90 0.60189265 -0.16050875 31.00000000 0.29489164 + 66 0.60473537 -0.16050875 32.00000000 0.28964856 + 80 0.58288438 -0.16050875 33.00000000 0.22088676 + 80 0.58358267 -0.16050875 34.00000000 0.23187621 + 58 0.58865326 -0.16050875 35.00000000 0.24021344 + 54 0.60664003 -0.16050875 36.00000000 0.27070892 + 56 0.60265965 -0.16050875 37.00000000 0.27134019 + 76 0.58902550 -0.16050875 38.00000000 0.29514093 + 58 0.60299087 -0.16050875 39.00000000 0.21283463 + 54 0.59666843 -0.16050875 40.00000000 0.24531758 + 56 0.59081591 -0.16050875 41.00000000 0.27353630 + 66 0.57267461 -0.16050875 42.00000000 0.19155818 + 66 0.58372586 -0.16050875 43.00000000 0.22090569 + 50 0.61210160 -0.16050875 44.00000000 0.22268535 + 66 0.56878087 -0.16050875 45.00000000 0.21577596 + 60 0.58384647 -0.16050875 46.00000000 0.27420707 + 64 0.58062807 -0.16050875 47.00000000 0.28413001 + 54 0.57859700 -0.16050875 48.00000000 0.27596238 + 58 0.60146386 -0.16050875 49.00000000 0.22582759 + 60 0.60091092 -0.16050875 50.00000000 0.29219142 + 60 0.60060959 -0.16050875 51.00000000 0.20503291 + 68 0.61052436 -0.16050875 52.00000000 0.20299458 + 64 0.60760989 -0.16050875 53.00000000 0.22462246 + 48 0.59829804 -0.16050875 54.00000000 0.20019973 + 60 0.59040976 -0.16050875 55.00000000 0.28759239 + 76 0.60857009 -0.16050875 56.00000000 0.28140363 + 48 0.58349575 -0.16050875 57.00000000 0.29920851 + 50 0.61254151 -0.16050875 58.00000000 0.18547981 + 64 0.60745423 -0.16050875 59.00000000 0.25090805 + 48 0.60995259 -0.16050875 60.00000000 0.18447581 + 48 0.60366191 -0.16050875 61.00000000 0.25121470 + 54 0.59969684 -0.16050875 62.00000000 0.22691646 + 70 0.60728065 -0.16050875 63.00000000 0.23662738 + 50 0.61801835 -0.16050875 64.00000000 0.19731832 + 62 0.58632859 -0.16050875 65.00000000 0.26504665 + 58 0.60395523 -0.16050875 66.00000000 0.24423983 + 60 0.60526929 -0.16050875 67.00000000 0.25243415 + 52 0.61951822 -0.16050875 68.00000000 0.24001934 + 68 0.60947044 -0.16050875 69.00000000 0.22762212 + 60 0.61544032 -0.16050875 70.00000000 0.17229624 + 58 0.59570562 -0.16050875 71.00000000 0.28079345 + 48 0.59798770 -0.16050875 72.00000000 0.24353816 + 42 0.61022419 -0.16050875 73.00000000 0.18781053 + 60 0.58785175 -0.16050875 74.00000000 0.22019066 + 48 0.60249537 -0.16050875 75.00000000 0.22891143 + 52 0.59620104 -0.16050875 76.00000000 0.28820186 + 74 0.60128419 -0.16050875 77.00000000 0.22163499 + 62 0.58239446 -0.16050875 78.00000000 0.30570136 + 80 0.59006051 -0.16050875 79.00000000 0.28798832 + 64 0.58947407 -0.16050875 80.00000000 0.26083787 + 1542 0.84204332 -0.00666210 1.00000000 0.25305279 + 1390 0.84042488 -0.00666210 2.00000000 0.26187862 + 1266 0.84443366 -0.00666210 3.00000000 0.24416924 + 1190 0.83849992 -0.00666210 4.00000000 0.25100910 + 1010 0.83150861 -0.00666210 5.00000000 0.23737782 + 960 0.83756490 -0.00666210 6.00000000 0.24074711 + 712 0.84358416 -0.00666210 7.00000000 0.24774500 + 630 0.83999667 -0.00666210 8.00000000 0.21219104 + 582 0.85011906 -0.00666210 9.00000000 0.27092461 + 512 0.84729342 -0.00666210 10.00000000 0.22475627 + 480 0.83287611 -0.00666210 11.00000000 0.25387888 + 346 0.83010383 -0.00666210 12.00000000 0.23809782 + 330 0.84473478 -0.00666210 13.00000000 0.25186242 + 294 0.83056587 -0.00666210 14.00000000 0.20650125 + 230 0.84337786 -0.00666210 15.00000000 0.23450513 + 214 0.84648255 -0.00666210 16.00000000 0.22995290 + 252 0.84554155 -0.00666210 17.00000000 0.25639674 + 208 0.82749939 -0.00666210 18.00000000 0.25959494 + 198 0.83642458 -0.00666210 19.00000000 0.25431291 + 188 0.83751717 -0.00666210 20.00000000 0.25228109 + 188 0.86087085 -0.00666210 21.00000000 0.23854119 + 188 0.82535314 -0.00666210 22.00000000 0.19145808 + 168 0.84937506 -0.00666210 23.00000000 0.25923384 + 176 0.83596971 -0.00666210 24.00000000 0.23682323 + 140 0.83443548 -0.00666210 25.00000000 0.18683646 + 148 0.84542488 -0.00666210 26.00000000 0.31378217 + 148 0.84837299 -0.00666210 27.00000000 0.23795433 + 166 0.84542064 -0.00666210 28.00000000 0.27197615 + 132 0.84662789 -0.00666210 29.00000000 0.23374178 + 132 0.85446458 -0.00666210 30.00000000 0.18841111 + 118 0.87104648 -0.00666210 31.00000000 0.24641901 + 112 0.84495740 -0.00666210 32.00000000 0.22706707 + 134 0.82987119 -0.00666210 33.00000000 0.25602347 + 114 0.84349785 -0.00666210 34.00000000 0.22402510 + 130 0.85231453 -0.00666210 35.00000000 0.25680204 + 110 0.84583615 -0.00666210 36.00000000 0.20014536 + 124 0.85906790 -0.00666210 37.00000000 0.29867178 + 106 0.83284778 -0.00666210 38.00000000 0.28246735 + 112 0.83210589 -0.00666210 39.00000000 0.24614597 + 100 0.83670265 -0.00666210 40.00000000 0.21477613 + 118 0.85406736 -0.00666210 41.00000000 0.22734996 + 110 0.86443471 -0.00666210 42.00000000 0.21541822 + 114 0.83038276 -0.00666210 43.00000000 0.20151592 + 112 0.83524192 -0.00666210 44.00000000 0.27899908 + 114 0.83226031 -0.00666210 45.00000000 0.24344667 + 146 0.84494458 -0.00666210 46.00000000 0.19538735 + 118 0.82815294 -0.00666210 47.00000000 0.26278718 + 116 0.84182715 -0.00666210 48.00000000 0.26780238 + 122 0.86188584 -0.00666210 49.00000000 0.28196742 + 118 0.81724878 -0.00666210 50.00000000 0.20502781 + 124 0.84741053 -0.00666210 51.00000000 0.22655632 + 112 0.85708443 -0.00666210 52.00000000 0.24474029 + 122 0.85307292 -0.00666210 53.00000000 0.27908145 + 130 0.84768562 -0.00666210 54.00000000 0.21163247 + 124 0.84176090 -0.00666210 55.00000000 0.25623679 + 116 0.82890907 -0.00666210 56.00000000 0.25801878 + 136 0.83999661 -0.00666210 57.00000000 0.26466117 + 104 0.86073964 -0.00666210 58.00000000 0.25470881 + 138 0.85295456 -0.00666210 59.00000000 0.18642861 + 140 0.85134713 -0.00666210 60.00000000 0.23354208 + 122 0.84094844 -0.00666210 61.00000000 0.30315037 + 122 0.84683821 -0.00666210 62.00000000 0.28067917 + 146 0.85941507 -0.00666210 63.00000000 0.29871239 + 122 0.85533566 -0.00666210 64.00000000 0.30294753 + 86 0.86401766 -0.00666210 65.00000000 0.25710898 + 118 0.85889155 -0.00666210 66.00000000 0.30529665 + 130 0.82248630 -0.00666210 67.00000000 0.25463114 + 114 0.84629024 -0.00666210 68.00000000 0.28660335 + 104 0.83431323 -0.00666210 69.00000000 0.27918955 + 100 0.83469790 -0.00666210 70.00000000 0.25082181 + 150 0.84944284 -0.00666210 71.00000000 0.29433990 + 124 0.83500933 -0.00666210 72.00000000 0.25463248 + 90 0.84425754 -0.00666210 73.00000000 0.25379374 + 122 0.85126799 -0.00666210 74.00000000 0.23345685 + 126 0.86106991 -0.00666210 75.00000000 0.25328852 + 126 0.85721271 -0.00666210 76.00000000 0.23628093 + 104 0.87556930 -0.00666210 77.00000000 0.28868878 + 98 0.87381027 -0.00666210 78.00000000 0.26932601 + 112 0.83501554 -0.00666210 79.00000000 0.24471906 + 112 0.84168589 -0.00666210 80.00000000 0.23818921 + 2590 1.20128817 0.14718457 1.00000000 0.23809689 + 2496 1.19916870 0.14718457 2.00000000 0.24299466 + 2262 1.20287328 0.14718457 3.00000000 0.24063894 + 1778 1.20445831 0.14718457 4.00000000 0.24932768 + 1594 1.20223676 0.14718457 5.00000000 0.24829249 + 1310 1.18519428 0.14718457 6.00000000 0.26793988 + 1154 1.20449135 0.14718457 7.00000000 0.24371603 + 924 1.19219428 0.14718457 8.00000000 0.27014819 + 970 1.20009537 0.14718457 9.00000000 0.25648132 + 748 1.19844196 0.14718457 10.00000000 0.25003805 + 684 1.19087592 0.14718457 11.00000000 0.25456553 + 604 1.20634251 0.14718457 12.00000000 0.24038263 + 612 1.20466970 0.14718457 13.00000000 0.24047037 + 472 1.19214000 0.14718457 14.00000000 0.25630607 + 496 1.21528129 0.14718457 15.00000000 0.26680845 + 422 1.21019994 0.14718457 16.00000000 0.24535679 + 372 1.19288149 0.14718457 17.00000000 0.23886098 + 384 1.19067413 0.14718457 18.00000000 0.27667344 + 378 1.20279827 0.14718457 19.00000000 0.25423120 + 342 1.20514858 0.14718457 20.00000000 0.23210049 + 326 1.22496326 0.14718457 21.00000000 0.25718470 + 334 1.19851886 0.14718457 22.00000000 0.23997249 + 286 1.22518723 0.14718457 23.00000000 0.27144553 + 306 1.22888724 0.14718457 24.00000000 0.29884992 + 276 1.20468037 0.14718457 25.00000000 0.24529539 + 310 1.20579795 0.14718457 26.00000000 0.23968557 + 236 1.21972056 0.14718457 27.00000000 0.27980504 + 254 1.19461590 0.14718457 28.00000000 0.21127502 + 250 1.20006704 0.14718457 29.00000000 0.27855023 + 282 1.19660649 0.14718457 30.00000000 0.22546523 + 264 1.20106297 0.14718457 31.00000000 0.25898890 + 262 1.22577785 0.14718457 32.00000000 0.24144222 + 286 1.21661630 0.14718457 33.00000000 0.24634798 + 238 1.20289501 0.14718457 34.00000000 0.25996907 + 268 1.19273804 0.14718457 35.00000000 0.23869403 + 278 1.19467140 0.14718457 36.00000000 0.23293621 + 250 1.20611814 0.14718457 37.00000000 0.25319552 + 278 1.20588005 0.14718457 38.00000000 0.24464219 + 256 1.20447666 0.14718457 39.00000000 0.26349767 + 216 1.22135479 0.14718457 40.00000000 0.22382713 + 254 1.21894334 0.14718457 41.00000000 0.20922001 + 236 1.20644909 0.14718457 42.00000000 0.25144814 + 206 1.22994792 0.14718457 43.00000000 0.28372663 + 270 1.19893685 0.14718457 44.00000000 0.26434432 + 240 1.19029962 0.14718457 45.00000000 0.24018991 + 264 1.18770873 0.14718457 46.00000000 0.22684233 + 212 1.22588361 0.14718457 47.00000000 0.24207091 + 198 1.19484059 0.14718457 48.00000000 0.23556035 + 204 1.23814999 0.14718457 49.00000000 0.24308409 + 238 1.16937567 0.14718457 50.00000000 0.22882705 + 250 1.20872093 0.14718457 51.00000000 0.23365440 + 234 1.18842672 0.14718457 52.00000000 0.25030143 + 272 1.22677604 0.14718457 53.00000000 0.24996471 + 264 1.21458276 0.14718457 54.00000000 0.26168084 + 240 1.20094549 0.14718457 55.00000000 0.23841489 + 248 1.20087498 0.14718457 56.00000000 0.23891885 + 282 1.18576392 0.14718457 57.00000000 0.26685657 + 222 1.20582681 0.14718457 58.00000000 0.24630703 + 270 1.19036327 0.14718457 59.00000000 0.25013645 + 236 1.21019316 0.14718457 60.00000000 0.27777502 + 194 1.20825065 0.14718457 61.00000000 0.25823863 + 224 1.21187090 0.14718457 62.00000000 0.27442649 + 230 1.22196012 0.14718457 63.00000000 0.24281963 + 238 1.17225824 0.14718457 64.00000000 0.22891759 + 244 1.20299066 0.14718457 65.00000000 0.26033307 + 248 1.21572069 0.14718457 66.00000000 0.24882284 + 244 1.21894914 0.14718457 67.00000000 0.27293725 + 260 1.19947810 0.14718457 68.00000000 0.27642424 + 228 1.20548042 0.14718457 69.00000000 0.25067364 + 206 1.18276245 0.14718457 70.00000000 0.24627435 + 258 1.20400211 0.14718457 71.00000000 0.23649092 + 212 1.19827469 0.14718457 72.00000000 0.28263722 + 230 1.23194498 0.14718457 73.00000000 0.25050767 + 210 1.17561127 0.14718457 74.00000000 0.27417416 + 272 1.19891803 0.14718457 75.00000000 0.24762467 + 236 1.20520361 0.14718457 76.00000000 0.30402890 + 238 1.20598102 0.14718457 77.00000000 0.25611796 + 232 1.20788878 0.14718457 78.00000000 0.29266652 + 232 1.19843143 0.14718457 79.00000000 0.27998507 + 250 1.20577142 0.14718457 80.00000000 0.22307106 + 4568 1.70646058 0.30103000 1.00000000 0.24275756 + 4192 1.71138073 0.30103000 2.00000000 0.25520202 + 3594 1.70644175 0.30103000 3.00000000 0.24821969 + 3036 1.71474855 0.30103000 4.00000000 0.24014708 + 2516 1.72347292 0.30103000 5.00000000 0.25661672 + 2204 1.71202665 0.30103000 6.00000000 0.24900735 + 1830 1.70804264 0.30103000 7.00000000 0.25535815 + 1622 1.70171486 0.30103000 8.00000000 0.25116095 + 1388 1.72242343 0.30103000 9.00000000 0.26599424 + 1266 1.70077443 0.30103000 10.00000000 0.23567406 + 1152 1.71026842 0.30103000 11.00000000 0.25387062 + 1038 1.70271258 0.30103000 12.00000000 0.25003752 + 1058 1.71954541 0.30103000 13.00000000 0.26990488 + 854 1.70051282 0.30103000 14.00000000 0.24649174 + 866 1.73143167 0.30103000 15.00000000 0.23081448 + 766 1.71414625 0.30103000 16.00000000 0.26293225 + 778 1.72274253 0.30103000 17.00000000 0.25489056 + 672 1.72726554 0.30103000 18.00000000 0.23110117 + 660 1.71738227 0.30103000 19.00000000 0.25449938 + 666 1.71347775 0.30103000 20.00000000 0.26633506 + 652 1.71290460 0.30103000 21.00000000 0.25634166 + 662 1.72999949 0.30103000 22.00000000 0.26391490 + 596 1.73271534 0.30103000 23.00000000 0.25547616 + 628 1.71255884 0.30103000 24.00000000 0.24079070 + 590 1.72893431 0.30103000 25.00000000 0.24078018 + 590 1.70018069 0.30103000 26.00000000 0.25593311 + 546 1.73957493 0.30103000 27.00000000 0.26374938 + 528 1.72889390 0.30103000 28.00000000 0.26634230 + 566 1.71380037 0.30103000 29.00000000 0.25299302 + 542 1.71941379 0.30103000 30.00000000 0.26182761 + 540 1.73315581 0.30103000 31.00000000 0.28149159 + 516 1.72726675 0.30103000 32.00000000 0.24268900 + 518 1.73042195 0.30103000 33.00000000 0.26462357 + 492 1.70752829 0.30103000 34.00000000 0.23389709 + 508 1.72513901 0.30103000 35.00000000 0.23619000 + 496 1.72708785 0.30103000 36.00000000 0.25113188 + 506 1.71825740 0.30103000 37.00000000 0.26692055 + 490 1.72539969 0.30103000 38.00000000 0.22257990 + 502 1.73365726 0.30103000 39.00000000 0.25212453 + 526 1.68779091 0.30103000 40.00000000 0.25285186 + 478 1.70477773 0.30103000 41.00000000 0.24776988 + 516 1.70912301 0.30103000 42.00000000 0.25800507 + 482 1.73586391 0.30103000 43.00000000 0.23408826 + 484 1.72292471 0.30103000 44.00000000 0.24489020 + 516 1.70573321 0.30103000 45.00000000 0.25536280 + 504 1.70842153 0.30103000 46.00000000 0.23439819 + 488 1.71636966 0.30103000 47.00000000 0.25879782 + 520 1.72678019 0.30103000 48.00000000 0.28012946 + 474 1.73352327 0.30103000 49.00000000 0.23312940 + 488 1.71728811 0.30103000 50.00000000 0.22688447 + 530 1.70528022 0.30103000 51.00000000 0.24789117 + 424 1.73235638 0.30103000 52.00000000 0.26647239 + 472 1.72351058 0.30103000 53.00000000 0.25113558 + 460 1.74579760 0.30103000 54.00000000 0.24753880 + 488 1.70461072 0.30103000 55.00000000 0.22898307 + 494 1.72234878 0.30103000 56.00000000 0.26083510 + 446 1.72639074 0.30103000 57.00000000 0.24963162 + 566 1.69289708 0.30103000 58.00000000 0.23991725 + 524 1.74387606 0.30103000 59.00000000 0.23615007 + 524 1.69572031 0.30103000 60.00000000 0.25543118 + 458 1.70986569 0.30103000 61.00000000 0.25254449 + 510 1.72033867 0.30103000 62.00000000 0.27249971 + 442 1.69721704 0.30103000 63.00000000 0.26412903 + 520 1.71546849 0.30103000 64.00000000 0.24483643 + 564 1.69234405 0.30103000 65.00000000 0.27039497 + 514 1.74063178 0.30103000 66.00000000 0.26727747 + 534 1.70711615 0.30103000 67.00000000 0.23561950 + 514 1.71526028 0.30103000 68.00000000 0.24776761 + 518 1.71242259 0.30103000 69.00000000 0.24372620 + 468 1.75428049 0.30103000 70.00000000 0.24738152 + 444 1.71174130 0.30103000 71.00000000 0.25633081 + 470 1.71100850 0.30103000 72.00000000 0.21461221 + 502 1.73947899 0.30103000 73.00000000 0.26179730 + 458 1.72036167 0.30103000 74.00000000 0.25732070 + 464 1.72443594 0.30103000 75.00000000 0.28117968 + 508 1.72321362 0.30103000 76.00000000 0.22875210 + 464 1.70791319 0.30103000 77.00000000 0.22494197 + 470 1.73053785 0.30103000 78.00000000 0.24884952 + 466 1.72742923 0.30103000 79.00000000 0.25585041 + 504 1.71422193 0.30103000 80.00000000 0.24699745 + 7324 2.42403277 0.45487534 1.00000000 0.25015647 + 7018 2.44007047 0.45487534 2.00000000 0.25809434 + 5900 2.43397271 0.45487534 3.00000000 0.24855838 + 5142 2.43498066 0.45487534 4.00000000 0.24483722 + 4442 2.43629670 0.45487534 5.00000000 0.25337940 + 3794 2.45013134 0.45487534 6.00000000 0.25252130 + 3150 2.42914457 0.45487534 7.00000000 0.25341895 + 2878 2.45426726 0.45487534 8.00000000 0.25046674 + 2514 2.44500455 0.45487534 9.00000000 0.23186798 + 2202 2.43205488 0.45487534 10.00000000 0.24787194 + 2104 2.43650972 0.45487534 11.00000000 0.24143903 + 1966 2.44470980 0.45487534 12.00000000 0.25740605 + 1826 2.43877070 0.45487534 13.00000000 0.25366348 + 1696 2.42827336 0.45487534 14.00000000 0.24886776 + 1580 2.45594618 0.45487534 15.00000000 0.26559120 + 1448 2.43584422 0.45487534 16.00000000 0.24814005 + 1434 2.45861475 0.45487534 17.00000000 0.24743651 + 1382 2.45076832 0.45487534 18.00000000 0.25600969 + 1358 2.43327234 0.45487534 19.00000000 0.25391995 + 1218 2.43943601 0.45487534 20.00000000 0.24722177 + 1276 2.44701368 0.45487534 21.00000000 0.25110845 + 1188 2.44399865 0.45487534 22.00000000 0.26542309 + 1228 2.44791263 0.45487534 23.00000000 0.24567443 + 1204 2.45489629 0.45487534 24.00000000 0.26422289 + 1176 2.45578887 0.45487534 25.00000000 0.23882658 + 1148 2.45579976 0.45487534 26.00000000 0.26118305 + 1072 2.44884938 0.45487534 27.00000000 0.22100628 + 1116 2.47287839 0.45487534 28.00000000 0.25023591 + 998 2.45302223 0.45487534 29.00000000 0.25886034 + 1072 2.47054966 0.45487534 30.00000000 0.25374691 + 1078 2.44833044 0.45487534 31.00000000 0.24678407 + 1086 2.43590512 0.45487534 32.00000000 0.25454984 + 1082 2.46135662 0.45487534 33.00000000 0.24971072 + 1034 2.45209701 0.45487534 34.00000000 0.23607628 + 1032 2.46479544 0.45487534 35.00000000 0.24810504 + 1034 2.47065501 0.45487534 36.00000000 0.24888523 + 1064 2.46134041 0.45487534 37.00000000 0.24850576 + 998 2.44413730 0.45487534 38.00000000 0.24828013 + 1014 2.48576662 0.45487534 39.00000000 0.23012014 + 962 2.45434244 0.45487534 40.00000000 0.23879316 + 1034 2.43794828 0.45487534 41.00000000 0.24810462 + 984 2.43610298 0.45487534 42.00000000 0.25677786 + 1020 2.45923487 0.45487534 43.00000000 0.25066641 + 1026 2.43020016 0.45487534 44.00000000 0.26528578 + 968 2.45888793 0.45487534 45.00000000 0.25039902 + 1024 2.45871522 0.45487534 46.00000000 0.25451154 + 1094 2.45389270 0.45487534 47.00000000 0.26652891 + 998 2.42222244 0.45487534 48.00000000 0.25915779 + 970 2.45690527 0.45487534 49.00000000 0.25479821 + 956 2.44434050 0.45487534 50.00000000 0.25901709 + 984 2.45188969 0.45487534 51.00000000 0.24630294 + 962 2.43246310 0.45487534 52.00000000 0.25439774 + 1094 2.45126984 0.45487534 53.00000000 0.25809719 + 1060 2.47339365 0.45487534 54.00000000 0.25175882 + 962 2.49027982 0.45487534 55.00000000 0.24873216 + 930 2.42669978 0.45487534 56.00000000 0.26501272 + 1082 2.43575165 0.45487534 57.00000000 0.24437561 + 976 2.45830897 0.45487534 58.00000000 0.26233333 + 970 2.44272432 0.45487534 59.00000000 0.23051009 + 1022 2.43372628 0.45487534 60.00000000 0.25780773 + 882 2.43963400 0.45487534 61.00000000 0.25229517 + 1022 2.45866253 0.45487534 62.00000000 0.25795063 + 1002 2.42989497 0.45487534 63.00000000 0.26432172 + 996 2.45192415 0.45487534 64.00000000 0.26471273 + 966 2.45407289 0.45487534 65.00000000 0.24833999 + 994 2.43283999 0.45487534 66.00000000 0.25945039 + 966 2.45493571 0.45487534 67.00000000 0.24733703 + 1036 2.42399232 0.45487534 68.00000000 0.25298279 + 1034 2.45703976 0.45487534 69.00000000 0.24835758 + 1020 2.46291168 0.45487534 70.00000000 0.27666582 + 922 2.46061828 0.45487534 71.00000000 0.27561842 + 962 2.44445830 0.45487534 72.00000000 0.24806427 + 976 2.42930309 0.45487534 73.00000000 0.26952255 + 1040 2.42150425 0.45487534 74.00000000 0.24435548 + 898 2.46168206 0.45487534 75.00000000 0.24817804 + 1010 2.45040083 0.45487534 76.00000000 0.24210578 + 984 2.44911534 0.45487534 77.00000000 0.24330007 + 1006 2.45333377 0.45487534 78.00000000 0.24242744 + 996 2.43411767 0.45487534 79.00000000 0.24662052 + 942 2.46327642 0.45487534 80.00000000 0.26060921 + 11608 3.45607060 0.60872281 1.00000000 0.24763000 + 10804 3.45315775 0.60872281 2.00000000 0.25175242 + 9850 3.47129798 0.60872281 3.00000000 0.24950445 + 8748 3.48624950 0.60872281 4.00000000 0.24810264 + 7576 3.47413863 0.60872281 5.00000000 0.25241890 + 6586 3.48151836 0.60872281 6.00000000 0.25407360 + 5810 3.47771921 0.60872281 7.00000000 0.25440453 + 4920 3.47202503 0.60872281 8.00000000 0.24873029 + 4596 3.47460945 0.60872281 9.00000000 0.24947848 + 4226 3.47459649 0.60872281 10.00000000 0.24517601 + 3748 3.46638728 0.60872281 11.00000000 0.24658016 + 3636 3.47854794 0.60872281 12.00000000 0.24757231 + 3252 3.47669927 0.60872281 13.00000000 0.25338886 + 3124 3.47790503 0.60872281 14.00000000 0.25117999 + 3020 3.50059032 0.60872281 15.00000000 0.26024537 + 2848 3.50038821 0.60872281 16.00000000 0.24374753 + 2648 3.48915333 0.60872281 17.00000000 0.25341567 + 2468 3.47944816 0.60872281 18.00000000 0.25121528 + 2550 3.50228545 0.60872281 19.00000000 0.25579198 + 2430 3.48424644 0.60872281 20.00000000 0.25536509 + 2354 3.49342765 0.60872281 21.00000000 0.25365240 + 2472 3.50223568 0.60872281 22.00000000 0.24256444 + 2386 3.47942542 0.60872281 23.00000000 0.26784796 + 2294 3.48642955 0.60872281 24.00000000 0.24979071 + 2156 3.47540335 0.60872281 25.00000000 0.24649367 + 2200 3.49190294 0.60872281 26.00000000 0.25264576 + 2176 3.49451681 0.60872281 27.00000000 0.25841216 + 2158 3.49829894 0.60872281 28.00000000 0.25102698 + 2248 3.48996260 0.60872281 29.00000000 0.25228692 + 2168 3.52201909 0.60872281 30.00000000 0.25840639 + 2194 3.50380121 0.60872281 31.00000000 0.24624675 + 2180 3.48054451 0.60872281 32.00000000 0.25196427 + 2102 3.49966898 0.60872281 33.00000000 0.26569340 + 2058 3.49493765 0.60872281 34.00000000 0.24998766 + 2114 3.50757197 0.60872281 35.00000000 0.26253429 + 2040 3.50782496 0.60872281 36.00000000 0.24640609 + 2066 3.50609617 0.60872281 37.00000000 0.25379194 + 2064 3.52090564 0.60872281 38.00000000 0.24961955 + 1962 3.50349753 0.60872281 39.00000000 0.25487954 + 2040 3.48554302 0.60872281 40.00000000 0.25611525 + 2028 3.45815522 0.60872281 41.00000000 0.25260075 + 2016 3.48100141 0.60872281 42.00000000 0.25087628 + 1954 3.51040031 0.60872281 43.00000000 0.25149420 + 2158 3.49522382 0.60872281 44.00000000 0.24760432 + 2002 3.49936228 0.60872281 45.00000000 0.25141664 + 1988 3.49415458 0.60872281 46.00000000 0.24837455 + 2094 3.49342548 0.60872281 47.00000000 0.25424330 + 1920 3.47827339 0.60872281 48.00000000 0.26094295 + 2060 3.50613622 0.60872281 49.00000000 0.27239780 + 1912 3.48193339 0.60872281 50.00000000 0.24824934 + 2018 3.50019922 0.60872281 51.00000000 0.24699668 + 1918 3.48937698 0.60872281 52.00000000 0.25166306 + 2148 3.50366808 0.60872281 53.00000000 0.25200903 + 2018 3.48624877 0.60872281 54.00000000 0.25338760 + 2050 3.48171991 0.60872281 55.00000000 0.26241944 + 2002 3.51555799 0.60872281 56.00000000 0.25692387 + 2144 3.50593581 0.60872281 57.00000000 0.26531958 + 1962 3.48597660 0.60872281 58.00000000 0.24136405 + 2062 3.48866223 0.60872281 59.00000000 0.24341631 + 1924 3.51923639 0.60872281 60.00000000 0.25946567 + 1922 3.47119920 0.60872281 61.00000000 0.25160190 + 1984 3.52568374 0.60872281 62.00000000 0.24074501 + 1970 3.48943042 0.60872281 63.00000000 0.25338697 + 2028 3.48848767 0.60872281 64.00000000 0.26626969 + 1900 3.49467850 0.60872281 65.00000000 0.24939535 + 1946 3.50065878 0.60872281 66.00000000 0.24192789 + 2022 3.52132216 0.60872281 67.00000000 0.25410330 + 2056 3.51216646 0.60872281 68.00000000 0.24651004 + 2028 3.49707940 0.60872281 69.00000000 0.25943602 + 1888 3.48700571 0.60872281 70.00000000 0.26157783 + 1996 3.50277870 0.60872281 71.00000000 0.25960374 + 1948 3.48670735 0.60872281 72.00000000 0.24346458 + 1988 3.50665412 0.60872281 73.00000000 0.25504054 + 2088 3.48045960 0.60872281 74.00000000 0.25607118 + 2046 3.46778246 0.60872281 75.00000000 0.25254104 + 1978 3.51029680 0.60872281 76.00000000 0.24621809 + 1970 3.49374151 0.60872281 77.00000000 0.25708360 + 1996 3.48142203 0.60872281 78.00000000 0.25042968 + 1976 3.50868992 0.60872281 79.00000000 0.25292237 + 1900 3.50478637 0.60872281 80.00000000 0.26250196 + 17666 4.94098892 0.76256829 1.00000000 0.25059042 + 17572 4.92631374 0.76256829 2.00000000 0.25209497 + 16092 4.92427448 0.76256829 3.00000000 0.24854651 + 14546 4.93982307 0.76256829 4.00000000 0.24952472 + 13040 4.96448521 0.76256829 5.00000000 0.25133137 + 11698 4.95717087 0.76256829 6.00000000 0.24511512 + 10504 4.95417879 0.76256829 7.00000000 0.24772268 + 9118 4.96216524 0.76256829 8.00000000 0.24711036 + 8542 4.96559544 0.76256829 9.00000000 0.24168199 + 7554 4.95211140 0.76256829 10.00000000 0.25025565 + 7154 4.96017592 0.76256829 11.00000000 0.25294818 + 6868 4.96495340 0.76256829 12.00000000 0.25081766 + 6358 4.96248093 0.76256829 13.00000000 0.24741591 + 6300 4.97595671 0.76256829 14.00000000 0.25818332 + 5772 4.94178406 0.76256829 15.00000000 0.24303641 + 5674 4.95456533 0.76256829 16.00000000 0.25040803 + 5464 4.96168540 0.76256829 17.00000000 0.25686070 + 5110 4.96395849 0.76256829 18.00000000 0.24975228 + 5084 4.97717812 0.76256829 19.00000000 0.25647469 + 4834 4.96077965 0.76256829 20.00000000 0.24771089 + 4956 4.98348105 0.76256829 21.00000000 0.25294580 + 4836 4.98987056 0.76256829 22.00000000 0.26067442 + 4584 4.99060272 0.76256829 23.00000000 0.24728569 + 4638 4.95753766 0.76256829 24.00000000 0.25510152 + 4556 4.97162655 0.76256829 25.00000000 0.25060501 + 4558 4.98797124 0.76256829 26.00000000 0.24879085 + 4558 4.96715562 0.76256829 27.00000000 0.24637106 + 4344 4.96929141 0.76256829 28.00000000 0.24641910 + 4532 4.99250698 0.76256829 29.00000000 0.24895034 + 4460 4.98323008 0.76256829 30.00000000 0.25197896 + 4378 4.97957571 0.76256829 31.00000000 0.24934643 + 4326 4.98465900 0.76256829 32.00000000 0.24436868 + 4252 4.99185536 0.76256829 33.00000000 0.25403768 + 4374 4.94970174 0.76256829 34.00000000 0.25830433 + 4188 4.98624645 0.76256829 35.00000000 0.25572604 + 4266 4.98896889 0.76256829 36.00000000 0.24420681 + 4220 4.98014812 0.76256829 37.00000000 0.24901879 + 4154 4.98783674 0.76256829 38.00000000 0.24688202 + 4034 4.98801984 0.76256829 39.00000000 0.25318725 + 4090 4.97543008 0.76256829 40.00000000 0.25159233 + 4068 4.98911482 0.76256829 41.00000000 0.25270788 + 3926 4.99194586 0.76256829 42.00000000 0.25262950 + 3964 5.00508787 0.76256829 43.00000000 0.24797898 + 4004 4.95805956 0.76256829 44.00000000 0.25498201 + 4174 4.99056472 0.76256829 45.00000000 0.24839529 + 4076 4.97153517 0.76256829 46.00000000 0.25027996 + 4054 4.97381851 0.76256829 47.00000000 0.25178943 + 4058 4.98166671 0.76256829 48.00000000 0.25233272 + 3952 4.99250374 0.76256829 49.00000000 0.26184692 + 4078 4.95327627 0.76256829 50.00000000 0.24416577 + 4144 4.95636016 0.76256829 51.00000000 0.25823603 + 4040 4.96578590 0.76256829 52.00000000 0.24967158 + 4024 4.97193435 0.76256829 53.00000000 0.26501462 + 4038 4.96231663 0.76256829 54.00000000 0.24971464 + 4090 4.99214541 0.76256829 55.00000000 0.25370409 + 3972 4.98275062 0.76256829 56.00000000 0.23847797 + 4072 4.99210380 0.76256829 57.00000000 0.25207617 + 4034 4.95501745 0.76256829 58.00000000 0.25305887 + 4090 4.98146198 0.76256829 59.00000000 0.25083914 + 4090 4.99955964 0.76256829 60.00000000 0.24303232 + 4190 4.94518043 0.76256829 61.00000000 0.24813588 + 4084 4.97972220 0.76256829 62.00000000 0.24837581 + 4210 4.98989995 0.76256829 63.00000000 0.24529549 + 4216 4.98810195 0.76256829 64.00000000 0.24497598 + 4178 4.97865927 0.76256829 65.00000000 0.25169006 + 4218 4.98647511 0.76256829 66.00000000 0.25887434 + 4034 4.96574298 0.76256829 67.00000000 0.25406652 + 4042 4.93905735 0.76256829 68.00000000 0.24431319 + 3888 4.97226434 0.76256829 69.00000000 0.24696568 + 3928 4.97213198 0.76256829 70.00000000 0.24798732 + 3966 4.96760150 0.76256829 71.00000000 0.25470098 + 4148 4.94969407 0.76256829 72.00000000 0.25357396 + 3950 4.99151206 0.76256829 73.00000000 0.25156983 + 3872 4.99330055 0.76256829 74.00000000 0.25992727 + 4190 4.95541864 0.76256829 75.00000000 0.25198610 + 4128 4.98389240 0.76256829 76.00000000 0.24823649 + 3986 4.95363958 0.76256829 77.00000000 0.25772178 + 3988 4.96553570 0.76256829 78.00000000 0.25093808 + 4084 4.97302616 0.76256829 79.00000000 0.24640124 + 3914 4.97460682 0.76256829 80.00000000 0.24932232 + 26790 7.02685631 0.91641447 1.00000000 0.25248670 + 26296 7.01906770 0.91641447 2.00000000 0.24898198 + 25078 7.05907057 0.91641447 3.00000000 0.24671188 + 23164 7.02361766 0.91641447 4.00000000 0.24937114 + 21798 7.04025043 0.91641447 5.00000000 0.25003327 + 19824 7.06272606 0.91641447 6.00000000 0.24745463 + 18420 7.07006221 0.91641447 7.00000000 0.25517548 + 16716 7.06755037 0.91641447 8.00000000 0.24833749 + 15688 7.08128276 0.91641447 9.00000000 0.24856178 + 14580 7.06750503 0.91641447 10.00000000 0.24731879 + 14050 7.06888034 0.91641447 11.00000000 0.25116745 + 13312 7.08232738 0.91641447 12.00000000 0.25107144 + 12600 7.08296823 0.91641447 13.00000000 0.24757480 + 12060 7.08941024 0.91641447 14.00000000 0.24863673 + 11376 7.06791480 0.91641447 15.00000000 0.25079062 + 11050 7.10691502 0.91641447 16.00000000 0.25086299 + 10638 7.07707668 0.91641447 17.00000000 0.25262207 + 10422 7.07284043 0.91641447 18.00000000 0.25397749 + 10292 7.07612785 0.91641447 19.00000000 0.25117435 + 9836 7.07953947 0.91641447 20.00000000 0.24386255 + 10026 7.09237050 0.91641447 21.00000000 0.24734977 + 9554 7.08103544 0.91641447 22.00000000 0.25320979 + 9592 7.09257616 0.91641447 23.00000000 0.25168496 + 9488 7.09419292 0.91641447 24.00000000 0.25327907 + 9156 7.07031103 0.91641447 25.00000000 0.24539753 + 9330 7.07714979 0.91641447 26.00000000 0.24820507 + 9342 7.09941816 0.91641447 27.00000000 0.25269610 + 9030 7.12479225 0.91641447 28.00000000 0.25020184 + 8952 7.09515687 0.91641447 29.00000000 0.24870146 + 8738 7.07377004 0.91641447 30.00000000 0.24542436 + 8628 7.07763936 0.91641447 31.00000000 0.25149487 + 8662 7.13305547 0.91641447 32.00000000 0.25063630 + 8634 7.11542584 0.91641447 33.00000000 0.24859318 + 8656 7.09965483 0.91641447 34.00000000 0.24698129 + 8518 7.12672496 0.91641447 35.00000000 0.24551964 + 8638 7.11304613 0.91641447 36.00000000 0.24651787 + 8480 7.08543156 0.91641447 37.00000000 0.25223196 + 8720 7.09224575 0.91641447 38.00000000 0.25670973 + 8592 7.09164993 0.91641447 39.00000000 0.25046465 + 8386 7.10362759 0.91641447 40.00000000 0.24858072 + 8488 7.07302151 0.91641447 41.00000000 0.24804434 + 8210 7.10573939 0.91641447 42.00000000 0.25145989 + 8526 7.10951177 0.91641447 43.00000000 0.25617331 + 8612 7.10768163 0.91641447 44.00000000 0.25296672 + 8582 7.08897752 0.91641447 45.00000000 0.25272994 + 8386 7.08291208 0.91641447 46.00000000 0.24908875 + 8374 7.09605047 0.91641447 47.00000000 0.25708851 + 8160 7.09581912 0.91641447 48.00000000 0.24984443 + 8234 7.07218239 0.91641447 49.00000000 0.25367335 + 8552 7.10407265 0.91641447 50.00000000 0.25084650 + 8394 7.09822300 0.91641447 51.00000000 0.25354657 + 8406 7.07563406 0.91641447 52.00000000 0.24829568 + 8122 7.09440123 0.91641447 53.00000000 0.24826581 + 8282 7.09277287 0.91641447 54.00000000 0.25180739 + 8104 7.13049189 0.91641447 55.00000000 0.24902819 + 8072 7.10708023 0.91641447 56.00000000 0.25280921 + 8320 7.09325039 0.91641447 57.00000000 0.24956555 + 8136 7.11208300 0.91641447 58.00000000 0.24450377 + 8372 7.07952180 0.91641447 59.00000000 0.25308850 + 8122 7.09648205 0.91641447 60.00000000 0.24581411 + 8366 7.08395975 0.91641447 61.00000000 0.25542493 + 8208 7.12116282 0.91641447 62.00000000 0.24690870 + 8380 7.07097635 0.91641447 63.00000000 0.25193484 + 8238 7.07376625 0.91641447 64.00000000 0.24929064 + 8218 7.07713098 0.91641447 65.00000000 0.25152967 + 8184 7.10510564 0.91641447 66.00000000 0.25589477 + 8374 7.06394585 0.91641447 67.00000000 0.25430829 + 8286 7.09498247 0.91641447 68.00000000 0.24882973 + 8184 7.08443468 0.91641447 69.00000000 0.25442436 + 8126 7.07680992 0.91641447 70.00000000 0.25433731 + 7866 7.07176041 0.91641447 71.00000000 0.24958123 + 8160 7.08840162 0.91641447 72.00000000 0.25043324 + 8090 7.07598643 0.91641447 73.00000000 0.25417299 + 8272 7.09881528 0.91641447 74.00000000 0.25998572 + 8436 7.07521588 0.91641447 75.00000000 0.25541884 + 8108 7.10448802 0.91641447 76.00000000 0.25063627 + 8214 7.09925452 0.91641447 77.00000000 0.25694144 + 8182 7.09897911 0.91641447 78.00000000 0.25394870 + 8354 7.08441786 0.91641447 79.00000000 0.24679298 + 8252 7.09479587 0.91641447 80.00000000 0.25304312 + 40136 10.01774856 1.07025958 1.00000000 0.24916669 + 40466 10.04367132 1.07025958 2.00000000 0.25126254 + 39046 10.03469027 1.07025958 3.00000000 0.25117499 + 37760 10.04134654 1.07025958 4.00000000 0.25041600 + 35910 10.06426704 1.07025958 5.00000000 0.25089953 + 34212 10.05271344 1.07025958 6.00000000 0.25317634 + 31962 10.05268338 1.07025958 7.00000000 0.25015005 + 30574 10.08065147 1.07025958 8.00000000 0.25169835 + 29300 10.07613621 1.07025958 9.00000000 0.24922897 + 27662 10.07977744 1.07025958 10.00000000 0.25121582 + 26600 10.09170389 1.07025958 11.00000000 0.25344979 + 25406 10.10236832 1.07025958 12.00000000 0.25159901 + 23892 10.11498084 1.07025958 13.00000000 0.25294096 + 23252 10.08854491 1.07025958 14.00000000 0.25069557 + 22768 10.06755936 1.07025958 15.00000000 0.25159831 + 22686 10.08872695 1.07025958 16.00000000 0.25233182 + 21528 10.09780918 1.07025958 17.00000000 0.24950645 + 21160 10.08849241 1.07025958 18.00000000 0.25498543 + 20450 10.10186516 1.07025958 19.00000000 0.24995003 + 20716 10.08471030 1.07025958 20.00000000 0.24973136 + 19982 10.13700438 1.07025958 21.00000000 0.24925194 + 19536 10.09401370 1.07025958 22.00000000 0.24741728 + 19346 10.10811334 1.07025958 23.00000000 0.25092362 + 19014 10.10743414 1.07025958 24.00000000 0.25068585 + 18952 10.08573108 1.07025958 25.00000000 0.25330236 + 18566 10.12444382 1.07025958 26.00000000 0.24952189 + 18600 10.09983945 1.07025958 27.00000000 0.25249630 + 18406 10.10919799 1.07025958 28.00000000 0.25161987 + 18070 10.11332677 1.07025958 29.00000000 0.25020571 + 17844 10.11934404 1.07025958 30.00000000 0.25032698 + 17686 10.11290722 1.07025958 31.00000000 0.25197382 + 17564 10.10154007 1.07025958 32.00000000 0.25046792 + 17650 10.11696562 1.07025958 33.00000000 0.25249545 + 17802 10.09540923 1.07025958 34.00000000 0.25331102 + 17512 10.10483729 1.07025958 35.00000000 0.25071521 + 17214 10.11306385 1.07025958 36.00000000 0.25272096 + 17278 10.08484095 1.07025958 37.00000000 0.25095802 + 17374 10.11551404 1.07025958 38.00000000 0.25095868 + 17520 10.09751165 1.07025958 39.00000000 0.25094314 + 17012 10.12295652 1.07025958 40.00000000 0.25356236 + 16854 10.12361120 1.07025958 41.00000000 0.25064635 + 17512 10.09670781 1.07025958 42.00000000 0.25841010 + 17342 10.12543953 1.07025958 43.00000000 0.25110443 + 17466 10.09231517 1.07025958 44.00000000 0.25170730 + 16540 10.08363829 1.07025958 45.00000000 0.25197945 + 17168 10.10161241 1.07025958 46.00000000 0.24963237 + 17418 10.11775562 1.07025958 47.00000000 0.25289575 + 16826 10.09492099 1.07025958 48.00000000 0.25178039 + 17032 10.11909282 1.07025958 49.00000000 0.24977775 + 16964 10.12900645 1.07025958 50.00000000 0.25064238 + 17018 10.09259055 1.07025958 51.00000000 0.24714274 + 16940 10.09108581 1.07025958 52.00000000 0.25501952 + 16766 10.10317902 1.07025958 53.00000000 0.24853245 + 16752 10.10081317 1.07025958 54.00000000 0.25216177 + 16546 10.11926414 1.07025958 55.00000000 0.24690203 + 16968 10.07961157 1.07025958 56.00000000 0.25113214 + 16718 10.10754417 1.07025958 57.00000000 0.24446699 + 16590 10.09317648 1.07025958 58.00000000 0.24713872 + 16594 10.11360922 1.07025958 59.00000000 0.25273643 + 16546 10.11819726 1.07025958 60.00000000 0.24954717 + 16744 10.11534876 1.07025958 61.00000000 0.25247636 + 16448 10.11911234 1.07025958 62.00000000 0.24862995 + 16838 10.09431033 1.07025958 63.00000000 0.25117936 + 16808 10.09072818 1.07025958 64.00000000 0.24790897 + 16928 10.12158489 1.07025958 65.00000000 0.25118540 + 16870 10.10453286 1.07025958 66.00000000 0.24940425 + 16578 10.09933459 1.07025958 67.00000000 0.25229537 + 16900 10.06523166 1.07025958 68.00000000 0.25135198 + 16276 10.09231837 1.07025958 69.00000000 0.24937036 + 16908 10.08959481 1.07025958 70.00000000 0.25087216 + 16900 10.11381250 1.07025958 71.00000000 0.25153839 + 16476 10.10937387 1.07025958 72.00000000 0.25203574 + 16780 10.09373642 1.07025958 73.00000000 0.25194163 + 16770 10.09910752 1.07025958 74.00000000 0.25286283 + 16584 10.08419200 1.07025958 75.00000000 0.25224439 + 16878 10.10732612 1.07025958 76.00000000 0.25444605 + 16856 10.11830479 1.07025958 77.00000000 0.25460405 + 16570 10.10582219 1.07025958 78.00000000 0.25376676 + 16360 10.09741533 1.07025958 79.00000000 0.24902310 + 16522 10.12076960 1.07025958 80.00000000 0.24785950 + 62960 14.30535350 1.22410814 1.00000000 0.24719719 + 62848 14.29009596 1.22410814 2.00000000 0.24946988 + 63124 14.31116043 1.22410814 3.00000000 0.24876061 + 61338 14.30210597 1.22410814 4.00000000 0.25061082 + 59666 14.32426402 1.22410814 5.00000000 0.25144809 + 58500 14.32752350 1.22410814 6.00000000 0.25106051 + 56574 14.33754395 1.22410814 7.00000000 0.25179483 + 54756 14.36270058 1.22410814 8.00000000 0.24941940 + 53484 14.35607323 1.22410814 9.00000000 0.25041024 + 51572 14.37823838 1.22410814 10.00000000 0.25290864 + 49896 14.38329762 1.22410814 11.00000000 0.25093205 + 48746 14.37697258 1.22410814 12.00000000 0.24981195 + 47034 14.37662677 1.22410814 13.00000000 0.24711153 + 45536 14.37278552 1.22410814 14.00000000 0.25152561 + 44722 14.39226415 1.22410814 15.00000000 0.25163618 + 43956 14.40057388 1.22410814 16.00000000 0.25051512 + 43246 14.39472343 1.22410814 17.00000000 0.24851691 + 41748 14.38627774 1.22410814 18.00000000 0.25218630 + 41466 14.38544933 1.22410814 19.00000000 0.25126043 + 40400 14.39267595 1.22410814 20.00000000 0.24797859 + 40330 14.38383362 1.22410814 21.00000000 0.24915716 + 39666 14.39386664 1.22410814 22.00000000 0.25262505 + 38908 14.41505266 1.22410814 23.00000000 0.24822623 + 38676 14.42623454 1.22410814 24.00000000 0.25239661 + 37950 14.40063509 1.22410814 25.00000000 0.25310934 + 38690 14.40388100 1.22410814 26.00000000 0.25286238 + 37618 14.39108489 1.22410814 27.00000000 0.25076390 + 37108 14.38474505 1.22410814 28.00000000 0.25030018 + 37178 14.35727131 1.22410814 29.00000000 0.24766993 + 36732 14.40620032 1.22410814 30.00000000 0.25114473 + 36218 14.40792255 1.22410814 31.00000000 0.25014120 + 35958 14.38204665 1.22410814 32.00000000 0.25191260 + 35550 14.39784731 1.22410814 33.00000000 0.25090045 + 36140 14.43102765 1.22410814 34.00000000 0.25236148 + 35374 14.39950098 1.22410814 35.00000000 0.25384312 + 35546 14.39862789 1.22410814 36.00000000 0.25047774 + 35548 14.39532746 1.22410814 37.00000000 0.25412736 + 35168 14.37827566 1.22410814 38.00000000 0.24966676 + 34992 14.37002759 1.22410814 39.00000000 0.25195572 + 35210 14.37847209 1.22410814 40.00000000 0.24914841 + 34970 14.39478837 1.22410814 41.00000000 0.24991330 + 34904 14.37483519 1.22410814 42.00000000 0.24986446 + 34688 14.42105493 1.22410814 43.00000000 0.24985042 + 34702 14.38761390 1.22410814 44.00000000 0.24988330 + 34576 14.38974387 1.22410814 45.00000000 0.25324897 + 33968 14.41674278 1.22410814 46.00000000 0.25224943 + 34516 14.41558472 1.22410814 47.00000000 0.24948429 + 34098 14.39711638 1.22410814 48.00000000 0.25058936 + 33934 14.38833221 1.22410814 49.00000000 0.24918557 + 34334 14.38487022 1.22410814 50.00000000 0.24709576 + 34514 14.38714073 1.22410814 51.00000000 0.25084310 + 34390 14.40625446 1.22410814 52.00000000 0.25065135 + 33800 14.40342092 1.22410814 53.00000000 0.25285260 + 34188 14.40296083 1.22410814 54.00000000 0.25104802 + 33898 14.38483099 1.22410814 55.00000000 0.24977186 + 33846 14.38744168 1.22410814 56.00000000 0.24908969 + 34058 14.42076374 1.22410814 57.00000000 0.25219700 + 33600 14.41055705 1.22410814 58.00000000 0.25262064 + 33772 14.43546680 1.22410814 59.00000000 0.24989404 + 33864 14.40395013 1.22410814 60.00000000 0.25116694 + 33638 14.39112038 1.22410814 61.00000000 0.25009006 + 34246 14.39850777 1.22410814 62.00000000 0.25142869 + 34156 14.40148805 1.22410814 63.00000000 0.25320064 + 33830 14.40865963 1.22410814 64.00000000 0.25139169 + 34060 14.39035419 1.22410814 65.00000000 0.25211608 + 33698 14.39524840 1.22410814 66.00000000 0.25285342 + 34168 14.38643241 1.22410814 67.00000000 0.25121436 + 34412 14.37335647 1.22410814 68.00000000 0.25073870 + 34318 14.42058267 1.22410814 69.00000000 0.24910450 + 33976 14.36190217 1.22410814 70.00000000 0.25020960 + 34054 14.39519257 1.22410814 71.00000000 0.25129354 + 34366 14.38703062 1.22410814 72.00000000 0.24538018 + 33934 14.39491059 1.22410814 73.00000000 0.24886354 + 33694 14.40493114 1.22410814 74.00000000 0.24903822 + 33810 14.40071484 1.22410814 75.00000000 0.25035713 + 33820 14.39504253 1.22410814 76.00000000 0.25050772 + 33868 14.38822766 1.22410814 77.00000000 0.24966631 + 33396 14.41334352 1.22410814 78.00000000 0.24680401 + 33748 14.41010800 1.22410814 79.00000000 0.25065495 + 33132 14.40351891 1.22410814 80.00000000 0.25198283 + 103314 20.41153315 1.37795248 1.00000000 0.25246669 + 104674 20.44049223 1.37795248 2.00000000 0.24906519 + 103028 20.42188555 1.37795248 3.00000000 0.25084769 + 102440 20.43198286 1.37795248 4.00000000 0.24990035 + 101714 20.42760400 1.37795248 5.00000000 0.25124815 + 99750 20.43148401 1.37795248 6.00000000 0.25142974 + 98460 20.43623946 1.37795248 7.00000000 0.25063664 + 96980 20.46335448 1.37795248 8.00000000 0.25084081 + 96094 20.45444757 1.37795248 9.00000000 0.25156272 + 94152 20.43587613 1.37795248 10.00000000 0.25125903 + 92604 20.43606627 1.37795248 11.00000000 0.25092425 + 90552 20.48906329 1.37795248 12.00000000 0.25171856 + 90322 20.49511776 1.37795248 13.00000000 0.25037190 + 89452 20.49868826 1.37795248 14.00000000 0.25159897 + 87344 20.49121066 1.37795248 15.00000000 0.25077912 + 85384 20.48423787 1.37795248 16.00000000 0.25095913 + 84586 20.49087230 1.37795248 17.00000000 0.25103295 + 83300 20.50055856 1.37795248 18.00000000 0.24990080 + 82490 20.51241380 1.37795248 19.00000000 0.24969756 + 81250 20.52712374 1.37795248 20.00000000 0.25012633 + 80250 20.49638873 1.37795248 21.00000000 0.25054629 + 78906 20.49046104 1.37795248 22.00000000 0.25062552 + 78570 20.51015654 1.37795248 23.00000000 0.25064357 + 77840 20.52077915 1.37795248 24.00000000 0.24956351 + 76488 20.51318953 1.37795248 25.00000000 0.24970479 + 76240 20.52020258 1.37795248 26.00000000 0.25168164 + 75434 20.51857730 1.37795248 27.00000000 0.24889501 + 75106 20.52012383 1.37795248 28.00000000 0.24959724 + 75014 20.53132569 1.37795248 29.00000000 0.25109098 + 74428 20.52807713 1.37795248 30.00000000 0.24935873 + 73192 20.49207258 1.37795248 31.00000000 0.25069884 + 74008 20.51739113 1.37795248 32.00000000 0.25031545 + 72380 20.49767961 1.37795248 33.00000000 0.24778594 + 73518 20.51981657 1.37795248 34.00000000 0.25000919 + 72202 20.52864622 1.37795248 35.00000000 0.24878310 + 72426 20.51596403 1.37795248 36.00000000 0.24961892 + 72168 20.52441359 1.37795248 37.00000000 0.25127483 + 71900 20.52163005 1.37795248 38.00000000 0.25088142 + 71054 20.52979742 1.37795248 39.00000000 0.25056621 + 71226 20.50311232 1.37795248 40.00000000 0.24954754 + 71310 20.50978129 1.37795248 41.00000000 0.25284064 + 71208 20.52780684 1.37795248 42.00000000 0.25199608 + 71158 20.49341131 1.37795248 43.00000000 0.25320053 + 70364 20.50936273 1.37795248 44.00000000 0.25139890 + 70706 20.52752876 1.37795248 45.00000000 0.25040772 + 70432 20.51393239 1.37795248 46.00000000 0.24806719 + 70296 20.49072101 1.37795248 47.00000000 0.25099565 + 70600 20.53080004 1.37795248 48.00000000 0.25194318 + 70460 20.48412065 1.37795248 49.00000000 0.25109146 + 70322 20.52523300 1.37795248 50.00000000 0.24900759 + 70168 20.54370569 1.37795248 51.00000000 0.25103626 + 69936 20.51466187 1.37795248 52.00000000 0.25289452 + 69504 20.53562247 1.37795248 53.00000000 0.24896120 + 69694 20.52549744 1.37795248 54.00000000 0.25174126 + 69038 20.53078359 1.37795248 55.00000000 0.24996822 + 68812 20.54919186 1.37795248 56.00000000 0.25362535 + 69214 20.52167914 1.37795248 57.00000000 0.25134859 + 68994 20.52295851 1.37795248 58.00000000 0.25365936 + 69070 20.50873025 1.37795248 59.00000000 0.25279139 + 69446 20.50396218 1.37795248 60.00000000 0.25158739 + 68588 20.50559153 1.37795248 61.00000000 0.25286578 + 68198 20.52792335 1.37795248 62.00000000 0.25169952 + 68762 20.51721620 1.37795248 63.00000000 0.24833916 + 68530 20.50456278 1.37795248 64.00000000 0.25057556 + 68512 20.53328758 1.37795248 65.00000000 0.25329515 + 68814 20.52564783 1.37795248 66.00000000 0.25113715 + 68716 20.53003952 1.37795248 67.00000000 0.25109875 + 68752 20.54729206 1.37795248 68.00000000 0.25378520 + 68464 20.51251225 1.37795248 69.00000000 0.25361648 + 69180 20.53139064 1.37795248 70.00000000 0.25082052 + 68860 20.50317277 1.37795248 71.00000000 0.25149356 + 69150 20.48503638 1.37795248 72.00000000 0.24925824 + 69082 20.51880204 1.37795248 73.00000000 0.25304743 + 68730 20.53230844 1.37795248 74.00000000 0.25321450 + 68388 20.50796040 1.37795248 75.00000000 0.25231185 + 67636 20.54343918 1.37795248 76.00000000 0.25005814 + 67768 20.54450138 1.37795248 77.00000000 0.24989666 + 68858 20.52042312 1.37795248 78.00000000 0.25180040 + 68014 20.53891777 1.37795248 79.00000000 0.25157760 + 67278 20.50180127 1.37795248 80.00000000 0.25069792 diff --git a/theory/tests/cmass_DR_nonperiodic b/theory/tests/cmass_DR_nonperiodic index 00a6b489..47b6107e 100644 --- a/theory/tests/cmass_DR_nonperiodic +++ b/theory/tests/cmass_DR_nonperiodic @@ -1,1120 +1,1120 @@ - 79 0.20855053 -0.62204752 1.00000000 0.24357345 - 63 0.20738666 -0.62204752 2.00000000 0.24703637 - 84 0.20809786 -0.62204752 3.00000000 0.26540002 - 71 0.20423465 -0.62204752 4.00000000 0.23861870 - 77 0.20389037 -0.62204752 5.00000000 0.20344381 - 77 0.20316577 -0.62204752 6.00000000 0.26559186 - 67 0.20789033 -0.62204752 7.00000000 0.21120747 - 69 0.20456204 -0.62204752 8.00000000 0.27010974 - 68 0.20556634 -0.62204752 9.00000000 0.23206119 - 65 0.20576203 -0.62204752 10.00000000 0.22447927 - 67 0.20486145 -0.62204752 11.00000000 0.28342620 - 65 0.20449168 -0.62204752 12.00000000 0.26757590 - 64 0.20611204 -0.62204752 13.00000000 0.21906213 - 69 0.20802822 -0.62204752 14.00000000 0.27771316 - 73 0.20289156 -0.62204752 15.00000000 0.21139800 - 73 0.20266199 -0.62204752 16.00000000 0.26248689 - 88 0.20393350 -0.62204752 17.00000000 0.21723357 - 76 0.20356092 -0.62204752 18.00000000 0.20702802 - 90 0.20357265 -0.62204752 19.00000000 0.26469113 - 72 0.20870180 -0.62204752 20.00000000 0.26487531 - 86 0.20748066 -0.62204752 21.00000000 0.25997167 - 72 0.20405768 -0.62204752 22.00000000 0.20881748 - 62 0.20887931 -0.62204752 23.00000000 0.28632494 - 74 0.20463460 -0.62204752 24.00000000 0.23009784 - 70 0.20557159 -0.62204752 25.00000000 0.24817285 - 62 0.20802156 -0.62204752 26.00000000 0.20571927 - 67 0.20487260 -0.62204752 27.00000000 0.27347167 - 75 0.20610332 -0.62204752 28.00000000 0.25042592 - 74 0.20558769 -0.62204752 29.00000000 0.24409828 - 58 0.20630426 -0.62204752 30.00000000 0.24266977 - 83 0.20701362 -0.62204752 31.00000000 0.21592384 - 72 0.20458811 -0.62204752 32.00000000 0.20501296 - 74 0.19868427 -0.62204752 33.00000000 0.23918433 - 71 0.20441107 -0.62204752 34.00000000 0.20704169 - 81 0.20517014 -0.62204752 35.00000000 0.26016390 - 80 0.20590001 -0.62204752 36.00000000 0.26047828 - 54 0.21073297 -0.62204752 37.00000000 0.24357400 - 61 0.20558573 -0.62204752 38.00000000 0.22215122 - 78 0.20137265 -0.62204752 39.00000000 0.21490597 - 63 0.20705791 -0.62204752 40.00000000 0.23284988 - 66 0.20441715 -0.62204752 41.00000000 0.27494904 - 69 0.20631689 -0.62204752 42.00000000 0.26735654 - 70 0.20980756 -0.62204752 43.00000000 0.24091799 - 76 0.20637839 -0.62204752 44.00000000 0.22890315 - 77 0.20666883 -0.62204752 45.00000000 0.23341507 - 77 0.20415256 -0.62204752 46.00000000 0.26137141 - 70 0.20276514 -0.62204752 47.00000000 0.26098838 - 73 0.20912124 -0.62204752 48.00000000 0.23326073 - 70 0.20958035 -0.62204752 49.00000000 0.23900579 - 74 0.20617418 -0.62204752 50.00000000 0.27610429 - 61 0.20326539 -0.62204752 51.00000000 0.24874983 - 71 0.20567508 -0.62204752 52.00000000 0.29658014 - 60 0.20582372 -0.62204752 53.00000000 0.23001634 - 66 0.20153307 -0.62204752 54.00000000 0.24541444 - 76 0.20809843 -0.62204752 55.00000000 0.27203350 - 86 0.20300359 -0.62204752 56.00000000 0.27307067 - 75 0.20678349 -0.62204752 57.00000000 0.26295995 - 81 0.20307650 -0.62204752 58.00000000 0.25407500 - 62 0.20386568 -0.62204752 59.00000000 0.24213219 - 79 0.20335377 -0.62204752 60.00000000 0.25287584 - 56 0.20892170 -0.62204752 61.00000000 0.29308094 - 71 0.20765883 -0.62204752 62.00000000 0.23802505 - 68 0.20558657 -0.62204752 63.00000000 0.28931440 - 64 0.20684526 -0.62204752 64.00000000 0.24696979 - 56 0.20466160 -0.62204752 65.00000000 0.24252849 - 68 0.19782158 -0.62204752 66.00000000 0.27947543 - 76 0.21066813 -0.62204752 67.00000000 0.24305116 - 70 0.20201993 -0.62204752 68.00000000 0.23486198 - 60 0.20340291 -0.62204752 69.00000000 0.20078150 - 62 0.20374829 -0.62204752 70.00000000 0.24985140 - 68 0.20316888 -0.62204752 71.00000000 0.27194234 - 60 0.20391401 -0.62204752 72.00000000 0.29844286 - 66 0.20778990 -0.62204752 73.00000000 0.25625682 - 70 0.21094610 -0.62204752 74.00000000 0.30772925 - 76 0.20205900 -0.62204752 75.00000000 0.25251391 - 53 0.20818179 -0.62204752 76.00000000 0.24465545 - 58 0.20410271 -0.62204752 77.00000000 0.20044186 - 56 0.20588244 -0.62204752 78.00000000 0.29270497 - 55 0.20425464 -0.62204752 79.00000000 0.23047612 - 78 0.20737653 -0.62204752 80.00000000 0.28700101 - 153 0.29470608 -0.46820059 1.00000000 0.21320953 - 142 0.29095413 -0.46820059 2.00000000 0.26067311 - 147 0.29372732 -0.46820059 3.00000000 0.23497285 - 142 0.29091622 -0.46820059 4.00000000 0.21242034 - 152 0.29525933 -0.46820059 5.00000000 0.25487567 - 148 0.29394005 -0.46820059 6.00000000 0.25370716 - 151 0.29218487 -0.46820059 7.00000000 0.27748249 - 156 0.29207373 -0.46820059 8.00000000 0.23771867 - 125 0.29268456 -0.46820059 9.00000000 0.22895148 - 154 0.29122479 -0.46820059 10.00000000 0.27916324 - 142 0.29514140 -0.46820059 11.00000000 0.24828694 - 146 0.29082655 -0.46820059 12.00000000 0.25825860 - 146 0.29396348 -0.46820059 13.00000000 0.23019549 - 137 0.29676333 -0.46820059 14.00000000 0.24283948 - 141 0.29131766 -0.46820059 15.00000000 0.28779666 - 137 0.28770924 -0.46820059 16.00000000 0.24186942 - 157 0.29512755 -0.46820059 17.00000000 0.27437575 - 163 0.29577986 -0.46820059 18.00000000 0.24849144 - 165 0.29030048 -0.46820059 19.00000000 0.24242066 - 140 0.29228422 -0.46820059 20.00000000 0.27297907 - 146 0.29482481 -0.46820059 21.00000000 0.24519404 - 143 0.29316775 -0.46820059 22.00000000 0.26847275 - 150 0.29468566 -0.46820059 23.00000000 0.26580121 - 142 0.28950087 -0.46820059 24.00000000 0.23280998 - 144 0.29361349 -0.46820059 25.00000000 0.25863723 - 135 0.29281250 -0.46820059 26.00000000 0.21853331 - 126 0.28935920 -0.46820059 27.00000000 0.23370633 - 116 0.29363094 -0.46820059 28.00000000 0.25864969 - 116 0.29166270 -0.46820059 29.00000000 0.28382445 - 155 0.29177647 -0.46820059 30.00000000 0.23203502 - 143 0.29147544 -0.46820059 31.00000000 0.20790481 - 145 0.28951691 -0.46820059 32.00000000 0.23353316 - 157 0.28935931 -0.46820059 33.00000000 0.23350552 - 148 0.29199773 -0.46820059 34.00000000 0.27253948 - 139 0.29704287 -0.46820059 35.00000000 0.25288678 - 146 0.29176306 -0.46820059 36.00000000 0.25208629 - 149 0.29143275 -0.46820059 37.00000000 0.26195849 - 151 0.29749885 -0.46820059 38.00000000 0.25327739 - 144 0.29421782 -0.46820059 39.00000000 0.26430949 - 154 0.29381911 -0.46820059 40.00000000 0.27176441 - 160 0.29621308 -0.46820059 41.00000000 0.26548966 - 154 0.29349112 -0.46820059 42.00000000 0.27496063 - 149 0.29562431 -0.46820059 43.00000000 0.23606678 - 149 0.29260033 -0.46820059 44.00000000 0.22017314 - 117 0.29382335 -0.46820059 45.00000000 0.25886172 - 132 0.29616017 -0.46820059 46.00000000 0.25475277 - 150 0.29396404 -0.46820059 47.00000000 0.25359073 - 125 0.29180731 -0.46820059 48.00000000 0.26710653 - 135 0.29781204 -0.46820059 49.00000000 0.25054521 - 123 0.28824161 -0.46820059 50.00000000 0.24381135 - 123 0.28926883 -0.46820059 51.00000000 0.24007443 - 124 0.28986698 -0.46820059 52.00000000 0.22476888 - 125 0.29123169 -0.46820059 53.00000000 0.24680008 - 126 0.28920012 -0.46820059 54.00000000 0.23818666 - 126 0.29318291 -0.46820059 55.00000000 0.25179238 - 96 0.29601932 -0.46820059 56.00000000 0.24860594 - 122 0.29582161 -0.46820059 57.00000000 0.26197588 - 138 0.29336472 -0.46820059 58.00000000 0.22281431 - 155 0.29193005 -0.46820059 59.00000000 0.27036182 - 132 0.29109239 -0.46820059 60.00000000 0.24368224 - 129 0.29529337 -0.46820059 61.00000000 0.22716074 - 133 0.29535894 -0.46820059 62.00000000 0.26172136 - 155 0.28946699 -0.46820059 63.00000000 0.24335178 - 139 0.29183199 -0.46820059 64.00000000 0.27140547 - 146 0.28899393 -0.46820059 65.00000000 0.25143544 - 120 0.29476050 -0.46820059 66.00000000 0.23548664 - 134 0.29314681 -0.46820059 67.00000000 0.25529094 - 134 0.29245347 -0.46820059 68.00000000 0.24391612 - 120 0.28991655 -0.46820059 69.00000000 0.23189111 - 118 0.29211427 -0.46820059 70.00000000 0.22093683 - 138 0.29406239 -0.46820059 71.00000000 0.23895790 - 130 0.29589795 -0.46820059 72.00000000 0.27654399 - 130 0.29031900 -0.46820059 73.00000000 0.26268798 - 122 0.29094397 -0.46820059 74.00000000 0.26055298 - 136 0.29188036 -0.46820059 75.00000000 0.24482154 - 145 0.29685245 -0.46820059 76.00000000 0.26467620 - 148 0.29336125 -0.46820059 77.00000000 0.25285678 - 143 0.28896202 -0.46820059 78.00000000 0.25025150 - 142 0.29540348 -0.46820059 79.00000000 0.24843896 - 128 0.29331507 -0.46820059 80.00000000 0.23867728 - 293 0.41439379 -0.31435498 1.00000000 0.23022157 - 298 0.41817109 -0.31435498 2.00000000 0.24242388 - 284 0.41953101 -0.31435498 3.00000000 0.25505089 - 304 0.41787345 -0.31435498 4.00000000 0.26295112 - 288 0.41932647 -0.31435498 5.00000000 0.24310658 - 308 0.41641408 -0.31435498 6.00000000 0.25468248 - 286 0.41553384 -0.31435498 7.00000000 0.26992702 - 304 0.41496316 -0.31435498 8.00000000 0.26153604 - 289 0.41665294 -0.31435498 9.00000000 0.27151224 - 285 0.41420422 -0.31435498 10.00000000 0.25256435 - 294 0.41535086 -0.31435498 11.00000000 0.25170763 - 291 0.41620336 -0.31435498 12.00000000 0.24262758 - 309 0.41462423 -0.31435498 13.00000000 0.26067878 - 296 0.41983349 -0.31435498 14.00000000 0.23489638 - 268 0.41571081 -0.31435498 15.00000000 0.25972298 - 310 0.42179797 -0.31435498 16.00000000 0.23915456 - 314 0.41382705 -0.31435498 17.00000000 0.23730221 - 251 0.41341807 -0.31435498 18.00000000 0.24263776 - 303 0.41688303 -0.31435498 19.00000000 0.26473264 - 310 0.41827619 -0.31435498 20.00000000 0.25549937 - 261 0.41569779 -0.31435498 21.00000000 0.23182411 - 284 0.41433806 -0.31435498 22.00000000 0.25938508 - 288 0.41767429 -0.31435498 23.00000000 0.24310655 - 315 0.41685671 -0.31435498 24.00000000 0.25173343 - 282 0.41622496 -0.31435498 25.00000000 0.25855667 - 299 0.41293209 -0.31435498 26.00000000 0.24487424 - 301 0.41767988 -0.31435498 27.00000000 0.27612968 - 291 0.41417096 -0.31435498 28.00000000 0.25470505 - 292 0.41473370 -0.31435498 29.00000000 0.24813107 - 319 0.41931605 -0.31435498 30.00000000 0.24512896 - 272 0.41528744 -0.31435498 31.00000000 0.26422828 - 297 0.41681002 -0.31435498 32.00000000 0.25675831 - 291 0.41863080 -0.31435498 33.00000000 0.25728589 - 306 0.41498212 -0.31435498 34.00000000 0.26124622 - 306 0.41787638 -0.31435498 35.00000000 0.25336383 - 267 0.41856376 -0.31435498 36.00000000 0.24927822 - 287 0.41646189 -0.31435498 37.00000000 0.27468700 - 290 0.41830498 -0.31435498 38.00000000 0.24395361 - 264 0.42077129 -0.31435498 39.00000000 0.25768799 - 282 0.42109876 -0.31435498 40.00000000 0.25026467 - 270 0.41851911 -0.31435498 41.00000000 0.28000911 - 306 0.41212730 -0.31435498 42.00000000 0.24767867 - 279 0.41098710 -0.31435498 43.00000000 0.22885170 - 280 0.41274979 -0.31435498 44.00000000 0.23315373 - 298 0.41733529 -0.31435498 45.00000000 0.27147974 - 310 0.41991731 -0.31435498 46.00000000 0.23828049 - 283 0.41811575 -0.31435498 47.00000000 0.27190217 - 290 0.41647704 -0.31435498 48.00000000 0.24367533 - 277 0.42126225 -0.31435498 49.00000000 0.24878589 - 274 0.41923851 -0.31435498 50.00000000 0.25485943 - 273 0.42085707 -0.31435498 51.00000000 0.27281250 - 286 0.41428849 -0.31435498 52.00000000 0.24747510 - 278 0.41409550 -0.31435498 53.00000000 0.25770485 - 302 0.41751328 -0.31435498 54.00000000 0.22809417 - 274 0.41708338 -0.31435498 55.00000000 0.25160695 - 291 0.41469397 -0.31435498 56.00000000 0.25636842 - 302 0.41285521 -0.31435498 57.00000000 0.26287446 - 275 0.41548261 -0.31435498 58.00000000 0.23325441 - 278 0.41137183 -0.31435498 59.00000000 0.25332160 - 284 0.41598427 -0.31435498 60.00000000 0.24254386 - 272 0.41742830 -0.31435498 61.00000000 0.23631966 - 289 0.41734770 -0.31435498 62.00000000 0.23805237 - 267 0.41580428 -0.31435498 63.00000000 0.25557915 - 278 0.42169823 -0.31435498 64.00000000 0.25074679 - 284 0.41681043 -0.31435498 65.00000000 0.25226554 - 287 0.41415697 -0.31435498 66.00000000 0.24336382 - 315 0.41575743 -0.31435498 67.00000000 0.23805790 - 273 0.41830827 -0.31435498 68.00000000 0.23342458 - 262 0.41647010 -0.31435498 69.00000000 0.25130568 - 272 0.41968163 -0.31435498 70.00000000 0.24136611 - 289 0.41399376 -0.31435498 71.00000000 0.24756534 - 288 0.41361223 -0.31435498 72.00000000 0.25166459 - 275 0.41662524 -0.31435498 73.00000000 0.24805799 - 265 0.41835212 -0.31435498 74.00000000 0.25211084 - 289 0.42031404 -0.31435498 75.00000000 0.25216998 - 290 0.41768519 -0.31435498 76.00000000 0.24670503 - 269 0.41768881 -0.31435498 77.00000000 0.25415394 - 290 0.41450050 -0.31435498 78.00000000 0.25228911 - 292 0.41623730 -0.31435498 79.00000000 0.23717365 - 266 0.41722475 -0.31435498 80.00000000 0.23191074 - 623 0.59167511 -0.16050875 1.00000000 0.24900950 - 614 0.59245679 -0.16050875 2.00000000 0.25188978 - 638 0.59498855 -0.16050875 3.00000000 0.26319441 - 628 0.59701755 -0.16050875 4.00000000 0.23382911 - 611 0.59236991 -0.16050875 5.00000000 0.26567207 - 611 0.59319550 -0.16050875 6.00000000 0.25261339 - 618 0.59288570 -0.16050875 7.00000000 0.24467697 - 574 0.59352076 -0.16050875 8.00000000 0.24295427 - 641 0.59420898 -0.16050875 9.00000000 0.25104151 - 605 0.59609742 -0.16050875 10.00000000 0.26100372 - 647 0.59520857 -0.16050875 11.00000000 0.25565060 - 583 0.59104468 -0.16050875 12.00000000 0.25711647 - 614 0.59378737 -0.16050875 13.00000000 0.23911457 - 598 0.59029796 -0.16050875 14.00000000 0.25320538 - 579 0.59433480 -0.16050875 15.00000000 0.25690609 - 620 0.59689739 -0.16050875 16.00000000 0.25374483 - 624 0.59360292 -0.16050875 17.00000000 0.25401062 - 628 0.59315259 -0.16050875 18.00000000 0.24642008 - 578 0.59285685 -0.16050875 19.00000000 0.26693192 - 628 0.59556773 -0.16050875 20.00000000 0.23493421 - 640 0.59093217 -0.16050875 21.00000000 0.24148991 - 615 0.59542303 -0.16050875 22.00000000 0.24885759 - 591 0.59285412 -0.16050875 23.00000000 0.24587710 - 601 0.59270948 -0.16050875 24.00000000 0.24606851 - 568 0.59181940 -0.16050875 25.00000000 0.25323685 - 567 0.59450618 -0.16050875 26.00000000 0.25747899 - 614 0.59300978 -0.16050875 27.00000000 0.22637292 - 564 0.59888932 -0.16050875 28.00000000 0.25913915 - 589 0.59223386 -0.16050875 29.00000000 0.24514285 - 622 0.59496853 -0.16050875 30.00000000 0.26325474 - 580 0.59378859 -0.16050875 31.00000000 0.25046229 - 607 0.59243362 -0.16050875 32.00000000 0.26559953 - 588 0.59616975 -0.16050875 33.00000000 0.23672679 - 618 0.59581583 -0.16050875 34.00000000 0.24745605 - 651 0.59076118 -0.16050875 35.00000000 0.24164444 - 568 0.59039173 -0.16050875 36.00000000 0.24000682 - 624 0.59580133 -0.16050875 37.00000000 0.26307619 - 624 0.59365627 -0.16050875 38.00000000 0.25746085 - 565 0.59550129 -0.16050875 39.00000000 0.23383001 - 585 0.59483563 -0.16050875 40.00000000 0.25633806 - 588 0.59343776 -0.16050875 41.00000000 0.24853131 - 589 0.59554299 -0.16050875 42.00000000 0.25402646 - 583 0.59967795 -0.16050875 43.00000000 0.24763349 - 582 0.59268848 -0.16050875 44.00000000 0.23527082 - 572 0.59415036 -0.16050875 45.00000000 0.23005448 - 599 0.59152789 -0.16050875 46.00000000 0.24027836 - 587 0.59489620 -0.16050875 47.00000000 0.24989051 - 599 0.59645869 -0.16050875 48.00000000 0.23648702 - 575 0.59596881 -0.16050875 49.00000000 0.26149565 - 600 0.59154246 -0.16050875 50.00000000 0.25181231 - 636 0.59216604 -0.16050875 51.00000000 0.25155155 - 577 0.59121846 -0.16050875 52.00000000 0.25260400 - 583 0.59523128 -0.16050875 53.00000000 0.25480487 - 572 0.59362026 -0.16050875 54.00000000 0.25941594 - 635 0.59208452 -0.16050875 55.00000000 0.25359007 - 596 0.59701154 -0.16050875 56.00000000 0.26291571 - 609 0.59365540 -0.16050875 57.00000000 0.24136889 - 552 0.59000738 -0.16050875 58.00000000 0.25584367 - 550 0.59360577 -0.16050875 59.00000000 0.25639153 - 594 0.59541483 -0.16050875 60.00000000 0.24235010 - 593 0.59032789 -0.16050875 61.00000000 0.26686347 - 546 0.59566178 -0.16050875 62.00000000 0.24995015 - 579 0.59695185 -0.16050875 63.00000000 0.24747061 - 574 0.59242205 -0.16050875 64.00000000 0.24512075 - 561 0.59622544 -0.16050875 65.00000000 0.24834329 - 550 0.59214718 -0.16050875 66.00000000 0.25279310 - 555 0.59220990 -0.16050875 67.00000000 0.24068853 - 573 0.59050915 -0.16050875 68.00000000 0.25707490 - 570 0.59120749 -0.16050875 69.00000000 0.24720160 - 534 0.59358817 -0.16050875 70.00000000 0.23846497 - 581 0.58971605 -0.16050875 71.00000000 0.25476359 - 530 0.59554624 -0.16050875 72.00000000 0.24366949 - 582 0.59262588 -0.16050875 73.00000000 0.25547456 - 554 0.59816308 -0.16050875 74.00000000 0.24699700 - 531 0.59467498 -0.16050875 75.00000000 0.24608168 - 564 0.59408536 -0.16050875 76.00000000 0.25760173 - 569 0.59427237 -0.16050875 77.00000000 0.26545929 - 553 0.59072641 -0.16050875 78.00000000 0.25815967 - 526 0.59007666 -0.16050875 79.00000000 0.24993117 - 569 0.59262817 -0.16050875 80.00000000 0.24542594 - 1278 0.84842146 -0.00666210 1.00000000 0.24221895 - 1261 0.84537660 -0.00666210 2.00000000 0.24997256 - 1296 0.84833211 -0.00666210 3.00000000 0.25017093 - 1238 0.84708944 -0.00666210 4.00000000 0.25972133 - 1301 0.84648744 -0.00666210 5.00000000 0.25127358 - 1242 0.84798282 -0.00666210 6.00000000 0.24560821 - 1238 0.84895720 -0.00666210 7.00000000 0.25521261 - 1276 0.84948289 -0.00666210 8.00000000 0.24626904 - 1282 0.84872917 -0.00666210 9.00000000 0.25285705 - 1283 0.84234153 -0.00666210 10.00000000 0.24169424 - 1191 0.84842607 -0.00666210 11.00000000 0.24913218 - 1189 0.84439776 -0.00666210 12.00000000 0.24611724 - 1280 0.84608043 -0.00666210 13.00000000 0.26343111 - 1242 0.84894601 -0.00666210 14.00000000 0.24982785 - 1225 0.84702850 -0.00666210 15.00000000 0.25143606 - 1251 0.84324032 -0.00666210 16.00000000 0.25116047 - 1212 0.85181984 -0.00666210 17.00000000 0.26700110 - 1187 0.84324750 -0.00666210 18.00000000 0.24952973 - 1197 0.84896727 -0.00666210 19.00000000 0.24753777 - 1241 0.84560262 -0.00666210 20.00000000 0.24688148 - 1220 0.84403419 -0.00666210 21.00000000 0.25312029 - 1228 0.84514080 -0.00666210 22.00000000 0.24814008 - 1224 0.84655295 -0.00666210 23.00000000 0.24605000 - 1214 0.84811807 -0.00666210 24.00000000 0.24890761 - 1177 0.84494508 -0.00666210 25.00000000 0.24435877 - 1303 0.84728768 -0.00666210 26.00000000 0.24583885 - 1220 0.84405757 -0.00666210 27.00000000 0.24112462 - 1174 0.84618388 -0.00666210 28.00000000 0.24892241 - 1197 0.84792936 -0.00666210 29.00000000 0.25961110 - 1177 0.84939080 -0.00666210 30.00000000 0.25744998 - 1242 0.84692451 -0.00666210 31.00000000 0.23624538 - 1110 0.84692031 -0.00666210 32.00000000 0.26067725 - 1178 0.84637006 -0.00666210 33.00000000 0.24750009 - 1181 0.84608204 -0.00666210 34.00000000 0.27377625 - 1193 0.84091594 -0.00666210 35.00000000 0.25450670 - 1200 0.84658783 -0.00666210 36.00000000 0.24622860 - 1265 0.84583516 -0.00666210 37.00000000 0.25261971 - 1176 0.84419874 -0.00666210 38.00000000 0.25355435 - 1234 0.84552010 -0.00666210 39.00000000 0.24943124 - 1169 0.84673054 -0.00666210 40.00000000 0.24772107 - 1172 0.84492247 -0.00666210 41.00000000 0.24876425 - 1191 0.84742234 -0.00666210 42.00000000 0.24457351 - 1228 0.84567200 -0.00666210 43.00000000 0.25655532 - 1178 0.84410310 -0.00666210 44.00000000 0.24569323 - 1150 0.84637748 -0.00666210 45.00000000 0.25097558 - 1205 0.84511692 -0.00666210 46.00000000 0.25586349 - 1160 0.84770808 -0.00666210 47.00000000 0.26405443 - 1153 0.83926395 -0.00666210 48.00000000 0.25577833 - 1173 0.84565271 -0.00666210 49.00000000 0.24366630 - 1225 0.84426721 -0.00666210 50.00000000 0.24036710 - 1217 0.84887216 -0.00666210 51.00000000 0.24371975 - 1157 0.85052694 -0.00666210 52.00000000 0.25678170 - 1209 0.84986891 -0.00666210 53.00000000 0.25221323 - 1193 0.84410931 -0.00666210 54.00000000 0.25678521 - 1200 0.84541408 -0.00666210 55.00000000 0.25708954 - 1191 0.84846659 -0.00666210 56.00000000 0.25724047 - 1118 0.84907426 -0.00666210 57.00000000 0.25364044 - 1138 0.85079827 -0.00666210 58.00000000 0.24604898 - 1165 0.84959881 -0.00666210 59.00000000 0.24462884 - 1133 0.84852751 -0.00666210 60.00000000 0.25710779 - 1098 0.84704912 -0.00666210 61.00000000 0.24966711 - 1159 0.84449791 -0.00666210 62.00000000 0.26188286 - 1209 0.84155666 -0.00666210 63.00000000 0.25109756 - 1208 0.84224795 -0.00666210 64.00000000 0.24792604 - 1200 0.84850413 -0.00666210 65.00000000 0.25131051 - 1215 0.84504110 -0.00666210 66.00000000 0.25004434 - 1193 0.84391256 -0.00666210 67.00000000 0.25174587 - 1126 0.84866759 -0.00666210 68.00000000 0.25521535 - 1176 0.84634791 -0.00666210 69.00000000 0.25430974 - 1151 0.84984832 -0.00666210 70.00000000 0.25446449 - 1148 0.84950237 -0.00666210 71.00000000 0.25117882 - 1162 0.84468651 -0.00666210 72.00000000 0.25623977 - 1160 0.85045175 -0.00666210 73.00000000 0.25437860 - 1157 0.84588296 -0.00666210 74.00000000 0.24302615 - 1147 0.84814788 -0.00666210 75.00000000 0.25254180 - 1158 0.84940247 -0.00666210 76.00000000 0.23892109 - 1154 0.84590123 -0.00666210 77.00000000 0.25564310 - 1189 0.84589968 -0.00666210 78.00000000 0.25741837 - 1119 0.85120896 -0.00666210 79.00000000 0.24886152 - 1138 0.84484234 -0.00666210 80.00000000 0.25210948 - 2658 1.20874368 0.14718457 1.00000000 0.24264366 - 2508 1.20451363 0.14718457 2.00000000 0.24887138 - 2540 1.20221037 0.14718457 3.00000000 0.24734376 - 2681 1.20912806 0.14718457 4.00000000 0.25076817 - 2529 1.20632579 0.14718457 5.00000000 0.24687677 - 2610 1.20375693 0.14718457 6.00000000 0.24612704 - 2500 1.20979341 0.14718457 7.00000000 0.24915733 - 2523 1.20600956 0.14718457 8.00000000 0.25616804 - 2519 1.20507164 0.14718457 9.00000000 0.24864746 - 2576 1.20885315 0.14718457 10.00000000 0.25728307 - 2468 1.20471477 0.14718457 11.00000000 0.24735771 - 2466 1.20695664 0.14718457 12.00000000 0.24270943 - 2501 1.20435428 0.14718457 13.00000000 0.25654045 - 2577 1.20746278 0.14718457 14.00000000 0.24744323 - 2516 1.20524784 0.14718457 15.00000000 0.25361661 - 2432 1.20617103 0.14718457 16.00000000 0.24981389 - 2481 1.20725286 0.14718457 17.00000000 0.24535182 - 2517 1.20501441 0.14718457 18.00000000 0.24357162 - 2468 1.20965891 0.14718457 19.00000000 0.25517594 - 2502 1.20679916 0.14718457 20.00000000 0.26015055 - 2573 1.20351694 0.14718457 21.00000000 0.24943750 - 2360 1.20556973 0.14718457 22.00000000 0.24968462 - 2558 1.20999281 0.14718457 23.00000000 0.24612121 - 2496 1.20554460 0.14718457 24.00000000 0.25416885 - 2504 1.21002080 0.14718457 25.00000000 0.25625242 - 2481 1.20581229 0.14718457 26.00000000 0.24849445 - 2474 1.20393836 0.14718457 27.00000000 0.26564892 - 2423 1.20518682 0.14718457 28.00000000 0.25633880 - 2392 1.20727797 0.14718457 29.00000000 0.25096525 - 2440 1.20659171 0.14718457 30.00000000 0.25499108 - 2545 1.20825376 0.14718457 31.00000000 0.24455444 - 2352 1.21001551 0.14718457 32.00000000 0.25321797 - 2411 1.20572289 0.14718457 33.00000000 0.25386370 - 2451 1.20401568 0.14718457 34.00000000 0.25158521 - 2373 1.20373714 0.14718457 35.00000000 0.25098503 - 2423 1.20712340 0.14718457 36.00000000 0.24126509 - 2414 1.20529605 0.14718457 37.00000000 0.25435426 - 2408 1.20583340 0.14718457 38.00000000 0.25294641 - 2480 1.20546294 0.14718457 39.00000000 0.24900975 - 2423 1.21217334 0.14718457 40.00000000 0.25562121 - 2403 1.20612960 0.14718457 41.00000000 0.25181148 - 2318 1.20677801 0.14718457 42.00000000 0.24865966 - 2395 1.20628435 0.14718457 43.00000000 0.25258434 - 2470 1.20856180 0.14718457 44.00000000 0.25113956 - 2370 1.20432971 0.14718457 45.00000000 0.24688097 - 2395 1.20599880 0.14718457 46.00000000 0.24441600 - 2358 1.20856462 0.14718457 47.00000000 0.24948881 - 2448 1.20594276 0.14718457 48.00000000 0.24822845 - 2472 1.20752599 0.14718457 49.00000000 0.25668705 - 2453 1.20174844 0.14718457 50.00000000 0.26091697 - 2355 1.20647482 0.14718457 51.00000000 0.25290616 - 2359 1.20680114 0.14718457 52.00000000 0.25351304 - 2391 1.20214139 0.14718457 53.00000000 0.25177015 - 2309 1.20720193 0.14718457 54.00000000 0.25366867 - 2364 1.20149832 0.14718457 55.00000000 0.25600877 - 2398 1.20201877 0.14718457 56.00000000 0.25435494 - 2363 1.20675296 0.14718457 57.00000000 0.24993747 - 2358 1.20857642 0.14718457 58.00000000 0.25401917 - 2403 1.20642020 0.14718457 59.00000000 0.25692868 - 2416 1.20631239 0.14718457 60.00000000 0.25606808 - 2407 1.20338447 0.14718457 61.00000000 0.25177657 - 2346 1.20797036 0.14718457 62.00000000 0.24802619 - 2373 1.20837498 0.14718457 63.00000000 0.25654052 - 2358 1.21061729 0.14718457 64.00000000 0.25685644 - 2356 1.20372724 0.14718457 65.00000000 0.24722595 - 2336 1.20568307 0.14718457 66.00000000 0.25179687 - 2389 1.20792290 0.14718457 67.00000000 0.24644672 - 2314 1.20753701 0.14718457 68.00000000 0.25985443 - 2413 1.20315457 0.14718457 69.00000000 0.25283546 - 2328 1.20686372 0.14718457 70.00000000 0.25195924 - 2306 1.20579184 0.14718457 71.00000000 0.26133067 - 2359 1.20794337 0.14718457 72.00000000 0.25266704 - 2329 1.20659637 0.14718457 73.00000000 0.25139210 - 2374 1.20657578 0.14718457 74.00000000 0.25932511 - 2291 1.20806983 0.14718457 75.00000000 0.25125262 - 2354 1.20457515 0.14718457 76.00000000 0.24873678 - 2275 1.21044605 0.14718457 77.00000000 0.24409239 - 2303 1.20560354 0.14718457 78.00000000 0.24631177 - 2418 1.20602450 0.14718457 79.00000000 0.24819842 - 2300 1.20091201 0.14718457 80.00000000 0.25061957 - 5261 1.72100348 0.30103000 1.00000000 0.25041251 - 5257 1.71908166 0.30103000 2.00000000 0.25040281 - 5183 1.71315152 0.30103000 3.00000000 0.24700870 - 5158 1.72361449 0.30103000 4.00000000 0.24923634 - 5271 1.71832587 0.30103000 5.00000000 0.24625698 - 5124 1.71967664 0.30103000 6.00000000 0.25274319 - 5138 1.72035205 0.30103000 7.00000000 0.24843508 - 5022 1.71873764 0.30103000 8.00000000 0.25578695 - 4979 1.71731065 0.30103000 9.00000000 0.24858876 - 5284 1.72322560 0.30103000 10.00000000 0.24951106 - 5068 1.72143184 0.30103000 11.00000000 0.24684544 - 5215 1.71935391 0.30103000 12.00000000 0.24707029 - 5037 1.71743267 0.30103000 13.00000000 0.25012609 - 5135 1.72129939 0.30103000 14.00000000 0.25024270 - 5039 1.71925792 0.30103000 15.00000000 0.25094904 - 5087 1.71634886 0.30103000 16.00000000 0.24716527 - 5072 1.71935469 0.30103000 17.00000000 0.25384665 - 5147 1.71554956 0.30103000 18.00000000 0.24935533 - 5008 1.71634513 0.30103000 19.00000000 0.25233920 - 5009 1.72244603 0.30103000 20.00000000 0.24942805 - 5051 1.72016011 0.30103000 21.00000000 0.25465872 - 5116 1.72147684 0.30103000 22.00000000 0.25260021 - 5044 1.71532371 0.30103000 23.00000000 0.24827705 - 5031 1.72020055 0.30103000 24.00000000 0.24699916 - 4987 1.71991372 0.30103000 25.00000000 0.24880907 - 5145 1.72167010 0.30103000 26.00000000 0.24888109 - 4862 1.71679491 0.30103000 27.00000000 0.25232556 - 4933 1.71792619 0.30103000 28.00000000 0.25700847 - 4839 1.72112831 0.30103000 29.00000000 0.24723873 - 4868 1.72094658 0.30103000 30.00000000 0.25198330 - 4914 1.71597629 0.30103000 31.00000000 0.25327214 - 5013 1.72503912 0.30103000 32.00000000 0.25264388 - 4918 1.72011030 0.30103000 33.00000000 0.25221089 - 4881 1.71894427 0.30103000 34.00000000 0.25283107 - 4779 1.71831698 0.30103000 35.00000000 0.24992314 - 4931 1.71813944 0.30103000 36.00000000 0.25727207 - 4905 1.71994254 0.30103000 37.00000000 0.25489241 - 4826 1.72128301 0.30103000 38.00000000 0.25283392 - 4873 1.71792329 0.30103000 39.00000000 0.25072652 - 4932 1.72002692 0.30103000 40.00000000 0.25740468 - 4914 1.71785763 0.30103000 41.00000000 0.25285800 - 4816 1.71364743 0.30103000 42.00000000 0.25087116 - 4931 1.72229927 0.30103000 43.00000000 0.25537117 - 4860 1.71880566 0.30103000 44.00000000 0.25102683 - 4890 1.72354057 0.30103000 45.00000000 0.25200210 - 4880 1.72125827 0.30103000 46.00000000 0.24876254 - 4858 1.71891453 0.30103000 47.00000000 0.25299448 - 4972 1.71960695 0.30103000 48.00000000 0.24713476 - 5018 1.72034208 0.30103000 49.00000000 0.25338030 - 4748 1.71925179 0.30103000 50.00000000 0.25268318 - 4789 1.71974376 0.30103000 51.00000000 0.24956640 - 4863 1.71473374 0.30103000 52.00000000 0.25119313 - 4776 1.71734926 0.30103000 53.00000000 0.25031540 - 4895 1.72250385 0.30103000 54.00000000 0.25321412 - 4811 1.71936401 0.30103000 55.00000000 0.24737526 - 4975 1.71994580 0.30103000 56.00000000 0.25367498 - 4816 1.71816910 0.30103000 57.00000000 0.24797704 - 4842 1.71619383 0.30103000 58.00000000 0.24959076 - 4833 1.72385625 0.30103000 59.00000000 0.25406547 - 4815 1.72305455 0.30103000 60.00000000 0.24711866 - 4744 1.71927318 0.30103000 61.00000000 0.24775883 - 4734 1.72104259 0.30103000 62.00000000 0.24800580 - 4851 1.72126754 0.30103000 63.00000000 0.25375006 - 4914 1.71934325 0.30103000 64.00000000 0.24942283 - 4707 1.71984069 0.30103000 65.00000000 0.25061265 - 4826 1.71538960 0.30103000 66.00000000 0.25443238 - 4807 1.72197441 0.30103000 67.00000000 0.25232290 - 4906 1.71629562 0.30103000 68.00000000 0.25247100 - 4893 1.72320172 0.30103000 69.00000000 0.25579504 - 4667 1.71921144 0.30103000 70.00000000 0.25368408 - 4713 1.71842964 0.30103000 71.00000000 0.24273876 - 4690 1.71978414 0.30103000 72.00000000 0.24816620 - 4715 1.71965501 0.30103000 73.00000000 0.25258362 - 4708 1.72107011 0.30103000 74.00000000 0.24747331 - 4687 1.71670850 0.30103000 75.00000000 0.24851538 - 4903 1.71605661 0.30103000 76.00000000 0.25109933 - 4662 1.71518855 0.30103000 77.00000000 0.25031449 - 4637 1.71855705 0.30103000 78.00000000 0.24717922 - 4789 1.71833462 0.30103000 79.00000000 0.24443894 - 4676 1.71755126 0.30103000 80.00000000 0.25212961 - 10502 2.45031352 0.45487534 1.00000000 0.24937541 - 10560 2.44896059 0.45487534 2.00000000 0.25166453 - 10659 2.44573650 0.45487534 3.00000000 0.25077197 - 10464 2.45083484 0.45487534 4.00000000 0.25114322 - 10390 2.44985609 0.45487534 5.00000000 0.24803164 - 10293 2.45372548 0.45487534 6.00000000 0.25103168 - 10503 2.45116740 0.45487534 7.00000000 0.24893445 - 10446 2.45293004 0.45487534 8.00000000 0.25632355 - 10296 2.45204441 0.45487534 9.00000000 0.25360806 - 10269 2.44714402 0.45487534 10.00000000 0.24792261 - 10552 2.45098945 0.45487534 11.00000000 0.25450427 - 10568 2.45274732 0.45487534 12.00000000 0.24971666 - 10274 2.44966588 0.45487534 13.00000000 0.24896471 - 10400 2.45431575 0.45487534 14.00000000 0.24990714 - 10278 2.44823731 0.45487534 15.00000000 0.25003623 - 10226 2.45489229 0.45487534 16.00000000 0.24743454 - 10377 2.44948429 0.45487534 17.00000000 0.24919140 - 10283 2.45132293 0.45487534 18.00000000 0.25026954 - 10212 2.45045144 0.45487534 19.00000000 0.25097763 - 10341 2.44801484 0.45487534 20.00000000 0.25245064 - 10247 2.45011240 0.45487534 21.00000000 0.25095810 - 10114 2.44728254 0.45487534 22.00000000 0.24844261 - 10062 2.45183646 0.45487534 23.00000000 0.24722557 - 10085 2.44821411 0.45487534 24.00000000 0.25008204 - 10291 2.45169635 0.45487534 25.00000000 0.24645430 - 10264 2.44537939 0.45487534 26.00000000 0.25070319 - 10218 2.45282924 0.45487534 27.00000000 0.24906820 - 10089 2.44947218 0.45487534 28.00000000 0.24796186 - 10180 2.45560871 0.45487534 29.00000000 0.24839106 - 10140 2.45267772 0.45487534 30.00000000 0.24870153 - 10089 2.45151823 0.45487534 31.00000000 0.24605513 - 9966 2.44771126 0.45487534 32.00000000 0.24906181 - 10021 2.44863322 0.45487534 33.00000000 0.24731708 - 10260 2.44910697 0.45487534 34.00000000 0.25010342 - 9879 2.45108082 0.45487534 35.00000000 0.25118430 - 10066 2.45263704 0.45487534 36.00000000 0.24831106 - 10231 2.45490841 0.45487534 37.00000000 0.24941693 - 9995 2.45184084 0.45487534 38.00000000 0.25125106 - 9959 2.45186282 0.45487534 39.00000000 0.25158035 - 9792 2.45009474 0.45487534 40.00000000 0.24966366 - 9861 2.44839281 0.45487534 41.00000000 0.24878990 - 9898 2.45102884 0.45487534 42.00000000 0.24989330 - 9901 2.44864443 0.45487534 43.00000000 0.25198781 - 9901 2.44764289 0.45487534 44.00000000 0.24949721 - 9884 2.44955542 0.45487534 45.00000000 0.25256280 - 9943 2.45170071 0.45487534 46.00000000 0.25373882 - 10050 2.44762245 0.45487534 47.00000000 0.24672896 - 9917 2.44726347 0.45487534 48.00000000 0.25201967 - 9759 2.45242785 0.45487534 49.00000000 0.25129989 - 9805 2.44457513 0.45487534 50.00000000 0.25057826 - 9867 2.44792472 0.45487534 51.00000000 0.24974414 - 9721 2.45248541 0.45487534 52.00000000 0.24745842 - 9791 2.44908594 0.45487534 53.00000000 0.25457603 - 9812 2.44762175 0.45487534 54.00000000 0.25072822 - 9747 2.44857547 0.45487534 55.00000000 0.25306163 - 9627 2.44881536 0.45487534 56.00000000 0.25165414 - 9887 2.45360353 0.45487534 57.00000000 0.24833025 - 9881 2.44858297 0.45487534 58.00000000 0.25157174 - 9783 2.45599537 0.45487534 59.00000000 0.25355349 - 9775 2.45270319 0.45487534 60.00000000 0.25034264 - 9574 2.45161710 0.45487534 61.00000000 0.25048304 - 9972 2.45059115 0.45487534 62.00000000 0.25278905 - 9617 2.44780739 0.45487534 63.00000000 0.24793802 - 9700 2.44887986 0.45487534 64.00000000 0.25193325 - 9618 2.45349443 0.45487534 65.00000000 0.25272482 - 9658 2.44942436 0.45487534 66.00000000 0.24903259 - 9766 2.44744330 0.45487534 67.00000000 0.24780024 - 9605 2.45058080 0.45487534 68.00000000 0.25070543 - 9619 2.44959252 0.45487534 69.00000000 0.24732529 - 9609 2.44439567 0.45487534 70.00000000 0.25486642 - 9508 2.45199789 0.45487534 71.00000000 0.24751134 - 9594 2.44849759 0.45487534 72.00000000 0.24794017 - 9574 2.45638338 0.45487534 73.00000000 0.25418088 - 9532 2.45164303 0.45487534 74.00000000 0.24955389 - 9644 2.44930528 0.45487534 75.00000000 0.25009618 - 9481 2.45473718 0.45487534 76.00000000 0.24907232 - 9416 2.44810073 0.45487534 77.00000000 0.25179226 - 9535 2.45319016 0.45487534 78.00000000 0.25255853 - 9462 2.44884102 0.45487534 79.00000000 0.25035488 - 9422 2.45040072 0.45487534 80.00000000 0.24855754 - 21391 3.48972827 0.60872281 1.00000000 0.24901921 - 21047 3.48791072 0.60872281 2.00000000 0.24849264 - 21189 3.49370806 0.60872281 3.00000000 0.24908057 - 21341 3.48631168 0.60872281 4.00000000 0.25147965 - 21393 3.48908714 0.60872281 5.00000000 0.25228487 - 21207 3.49059900 0.60872281 6.00000000 0.25112141 - 21131 3.49433861 0.60872281 7.00000000 0.25049952 - 21134 3.48687988 0.60872281 8.00000000 0.24817794 - 21168 3.48454515 0.60872281 9.00000000 0.24837837 - 21233 3.48969661 0.60872281 10.00000000 0.25043651 - 21254 3.49366739 0.60872281 11.00000000 0.24802331 - 21041 3.49159324 0.60872281 12.00000000 0.25167622 - 21155 3.48914266 0.60872281 13.00000000 0.24884965 - 20839 3.49238051 0.60872281 14.00000000 0.24922186 - 20880 3.48807327 0.60872281 15.00000000 0.25017817 - 20630 3.48995696 0.60872281 16.00000000 0.25086686 - 20858 3.48730851 0.60872281 17.00000000 0.25115300 - 21040 3.48942187 0.60872281 18.00000000 0.25107433 - 20910 3.49307972 0.60872281 19.00000000 0.25104593 - 20597 3.49253239 0.60872281 20.00000000 0.24914539 - 20717 3.48965785 0.60872281 21.00000000 0.24989721 - 20805 3.49443627 0.60872281 22.00000000 0.24825965 - 20756 3.49075550 0.60872281 23.00000000 0.24889072 - 20939 3.49096587 0.60872281 24.00000000 0.24775295 - 20733 3.48782100 0.60872281 25.00000000 0.25084995 - 20475 3.48811602 0.60872281 26.00000000 0.25036774 - 20753 3.49411114 0.60872281 27.00000000 0.25104585 - 20167 3.49201467 0.60872281 28.00000000 0.25281991 - 20673 3.49217072 0.60872281 29.00000000 0.25122999 - 20596 3.49219896 0.60872281 30.00000000 0.24908911 - 20610 3.49163731 0.60872281 31.00000000 0.25103633 - 20422 3.49247045 0.60872281 32.00000000 0.24891935 - 20500 3.49395334 0.60872281 33.00000000 0.25124347 - 20405 3.48968475 0.60872281 34.00000000 0.25261536 - 20567 3.49197849 0.60872281 35.00000000 0.24921344 - 20454 3.49175928 0.60872281 36.00000000 0.24875115 - 20401 3.49264827 0.60872281 37.00000000 0.25001144 - 20381 3.49424195 0.60872281 38.00000000 0.24975663 - 19989 3.49310919 0.60872281 39.00000000 0.24932107 - 20171 3.49037057 0.60872281 40.00000000 0.24921477 - 20129 3.49632104 0.60872281 41.00000000 0.24850835 - 20132 3.49660873 0.60872281 42.00000000 0.25105074 - 20048 3.49291661 0.60872281 43.00000000 0.25240038 - 20173 3.49352931 0.60872281 44.00000000 0.25036681 - 19978 3.48863946 0.60872281 45.00000000 0.24913210 - 20096 3.49322504 0.60872281 46.00000000 0.24970837 - 20017 3.49165977 0.60872281 47.00000000 0.24938494 - 20092 3.49485164 0.60872281 48.00000000 0.25064541 - 20061 3.49154741 0.60872281 49.00000000 0.25114357 - 19915 3.49009194 0.60872281 50.00000000 0.25255161 - 20048 3.48909447 0.60872281 51.00000000 0.25052228 - 19896 3.49145929 0.60872281 52.00000000 0.25280301 - 19957 3.49185456 0.60872281 53.00000000 0.24866156 - 19845 3.48883586 0.60872281 54.00000000 0.24923251 - 19932 3.49149452 0.60872281 55.00000000 0.25098290 - 19955 3.49335341 0.60872281 56.00000000 0.24884202 - 19594 3.49151462 0.60872281 57.00000000 0.25051386 - 19629 3.48724205 0.60872281 58.00000000 0.24836428 - 20193 3.49105832 0.60872281 59.00000000 0.25010282 - 19729 3.49251650 0.60872281 60.00000000 0.24748626 - 19892 3.49069371 0.60872281 61.00000000 0.24977909 - 19755 3.49209817 0.60872281 62.00000000 0.24849478 - 19687 3.49453988 0.60872281 63.00000000 0.25069155 - 19522 3.49024168 0.60872281 64.00000000 0.25193380 - 19643 3.49025333 0.60872281 65.00000000 0.24675315 - 19524 3.49130448 0.60872281 66.00000000 0.25117618 - 19668 3.48984695 0.60872281 67.00000000 0.24915650 - 19387 3.49196193 0.60872281 68.00000000 0.25337942 - 19466 3.49067891 0.60872281 69.00000000 0.25117499 - 19345 3.48731137 0.60872281 70.00000000 0.25234042 - 19362 3.49442953 0.60872281 71.00000000 0.24863342 - 19468 3.49206951 0.60872281 72.00000000 0.25165010 - 19419 3.49436429 0.60872281 73.00000000 0.25128694 - 19487 3.49082045 0.60872281 74.00000000 0.24941149 - 18941 3.49185388 0.60872281 75.00000000 0.25076152 - 19436 3.49270163 0.60872281 76.00000000 0.25107009 - 19364 3.48983680 0.60872281 77.00000000 0.25195369 - 19114 3.48643926 0.60872281 78.00000000 0.25014890 - 19050 3.49388663 0.60872281 79.00000000 0.24724128 - 19369 3.49233650 0.60872281 80.00000000 0.25066927 - 43135 4.97327629 0.76256829 1.00000000 0.24979380 - 42873 4.97737997 0.76256829 2.00000000 0.24910248 - 43263 4.97583244 0.76256829 3.00000000 0.25053609 - 43045 4.97261166 0.76256829 4.00000000 0.24971382 - 42955 4.97511408 0.76256829 5.00000000 0.25189755 - 43226 4.97201696 0.76256829 6.00000000 0.24888715 - 43122 4.97260320 0.76256829 7.00000000 0.24789218 - 42763 4.97724550 0.76256829 8.00000000 0.25181745 - 43288 4.97413457 0.76256829 9.00000000 0.24977679 - 42755 4.97662686 0.76256829 10.00000000 0.25083212 - 42611 4.97506068 0.76256829 11.00000000 0.25103723 - 42958 4.97677678 0.76256829 12.00000000 0.25056663 - 42524 4.97696338 0.76256829 13.00000000 0.24983625 - 42709 4.97775024 0.76256829 14.00000000 0.24816612 - 42746 4.97647479 0.76256829 15.00000000 0.25127962 - 42584 4.97410196 0.76256829 16.00000000 0.24946365 - 42346 4.97383826 0.76256829 17.00000000 0.24836737 - 41989 4.97743446 0.76256829 18.00000000 0.24937506 - 42308 4.97279794 0.76256829 19.00000000 0.24981772 - 42136 4.97281776 0.76256829 20.00000000 0.25152983 - 42153 4.97768826 0.76256829 21.00000000 0.24900620 - 41983 4.97356846 0.76256829 22.00000000 0.24959178 - 42105 4.97660385 0.76256829 23.00000000 0.25013245 - 41912 4.97762934 0.76256829 24.00000000 0.24992055 - 42065 4.98031448 0.76256829 25.00000000 0.24882380 - 41560 4.97661342 0.76256829 26.00000000 0.25170607 - 41751 4.97313546 0.76256829 27.00000000 0.25295867 - 41932 4.97466248 0.76256829 28.00000000 0.24870041 - 42011 4.98284648 0.76256829 29.00000000 0.25123451 - 41083 4.97621433 0.76256829 30.00000000 0.24834189 - 40980 4.97674365 0.76256829 31.00000000 0.25135984 - 41835 4.97302679 0.76256829 32.00000000 0.25201541 - 41466 4.97201527 0.76256829 33.00000000 0.24987277 - 41643 4.97824265 0.76256829 34.00000000 0.25019899 - 41689 4.97514813 0.76256829 35.00000000 0.24800066 - 41479 4.97469770 0.76256829 36.00000000 0.25020974 - 41274 4.97054354 0.76256829 37.00000000 0.24873398 - 41061 4.97173067 0.76256829 38.00000000 0.25108671 - 41375 4.97577887 0.76256829 39.00000000 0.25051035 - 41269 4.97409766 0.76256829 40.00000000 0.25015615 - 41307 4.97176012 0.76256829 41.00000000 0.24865585 - 40793 4.97268777 0.76256829 42.00000000 0.25022166 - 41027 4.97468235 0.76256829 43.00000000 0.24944773 - 41176 4.97687615 0.76256829 44.00000000 0.25000789 - 40914 4.97724906 0.76256829 45.00000000 0.25003682 - 40560 4.97952965 0.76256829 46.00000000 0.25010884 - 40757 4.97433957 0.76256829 47.00000000 0.25065375 - 40684 4.97755836 0.76256829 48.00000000 0.24896430 - 40650 4.97703322 0.76256829 49.00000000 0.24831424 - 40569 4.97654158 0.76256829 50.00000000 0.25094773 - 40384 4.97450780 0.76256829 51.00000000 0.24962246 - 40061 4.97823832 0.76256829 52.00000000 0.25134832 - 40978 4.97665638 0.76256829 53.00000000 0.25128600 - 40432 4.97441898 0.76256829 54.00000000 0.25212540 - 40457 4.98005174 0.76256829 55.00000000 0.25035657 - 40366 4.97483165 0.76256829 56.00000000 0.25034027 - 40448 4.97486448 0.76256829 57.00000000 0.24878800 - 40161 4.97646905 0.76256829 58.00000000 0.25063251 - 40109 4.97590998 0.76256829 59.00000000 0.25195812 - 40321 4.97654656 0.76256829 60.00000000 0.25118588 - 40292 4.97984197 0.76256829 61.00000000 0.24757666 - 40154 4.97609671 0.76256829 62.00000000 0.25141684 - 39966 4.97883381 0.76256829 63.00000000 0.25030289 - 39487 4.97697104 0.76256829 64.00000000 0.24982007 - 39527 4.97483049 0.76256829 65.00000000 0.24911644 - 39764 4.97874890 0.76256829 66.00000000 0.25088772 - 39464 4.97765596 0.76256829 67.00000000 0.24920565 - 39644 4.97218356 0.76256829 68.00000000 0.24971757 - 39356 4.97550576 0.76256829 69.00000000 0.24922031 - 39806 4.97355679 0.76256829 70.00000000 0.25141809 - 39354 4.98181739 0.76256829 71.00000000 0.25009555 - 39264 4.97581774 0.76256829 72.00000000 0.25071445 - 39610 4.97587302 0.76256829 73.00000000 0.24959593 - 39136 4.98069097 0.76256829 74.00000000 0.25075226 - 38945 4.97982482 0.76256829 75.00000000 0.24900555 - 39278 4.97308228 0.76256829 76.00000000 0.24951029 - 38802 4.97719399 0.76256829 77.00000000 0.25086844 - 39047 4.97447503 0.76256829 78.00000000 0.25150577 - 38806 4.97717733 0.76256829 79.00000000 0.25040064 - 39155 4.97931266 0.76256829 80.00000000 0.24855446 - 87642 7.08865715 0.91641447 1.00000000 0.24871780 - 87642 7.08890140 0.91641447 2.00000000 0.25001758 - 87520 7.09114392 0.91641447 3.00000000 0.24954524 - 87877 7.09340901 0.91641447 4.00000000 0.24929586 - 87197 7.09083320 0.91641447 5.00000000 0.24921198 - 87146 7.08897461 0.91641447 6.00000000 0.24940902 - 87060 7.08853419 0.91641447 7.00000000 0.24874534 - 86560 7.09075814 0.91641447 8.00000000 0.24975810 - 86856 7.08975797 0.91641447 9.00000000 0.24911355 - 86852 7.08670992 0.91641447 10.00000000 0.24977324 - 86430 7.09195379 0.91641447 11.00000000 0.25084662 - 86714 7.09155980 0.91641447 12.00000000 0.25129314 - 86160 7.09200770 0.91641447 13.00000000 0.25100402 - 86086 7.08884632 0.91641447 14.00000000 0.24920819 - 85928 7.09002493 0.91641447 15.00000000 0.25182927 - 85592 7.08851369 0.91641447 16.00000000 0.24882328 - 86583 7.08749201 0.91641447 17.00000000 0.24889465 - 85594 7.08852940 0.91641447 18.00000000 0.25084946 - 85022 7.09444241 0.91641447 19.00000000 0.25109743 - 85265 7.09405803 0.91641447 20.00000000 0.25059956 - 85644 7.09561611 0.91641447 21.00000000 0.25113572 - 85370 7.09065183 0.91641447 22.00000000 0.25030108 - 84856 7.08887487 0.91641447 23.00000000 0.25029377 - 85292 7.09120875 0.91641447 24.00000000 0.25085274 - 85180 7.08616960 0.91641447 25.00000000 0.25121501 - 85687 7.08912480 0.91641447 26.00000000 0.25150564 - 84511 7.08937170 0.91641447 27.00000000 0.24944233 - 84662 7.08455934 0.91641447 28.00000000 0.24980497 - 84050 7.09289499 0.91641447 29.00000000 0.25058074 - 84361 7.09366292 0.91641447 30.00000000 0.24989923 - 84384 7.09010015 0.91641447 31.00000000 0.24996699 - 83960 7.09294142 0.91641447 32.00000000 0.25026109 - 84127 7.09092185 0.91641447 33.00000000 0.25123485 - 84012 7.08990220 0.91641447 34.00000000 0.25004502 - 84249 7.08907875 0.91641447 35.00000000 0.24960714 - 84010 7.09175852 0.91641447 36.00000000 0.25060222 - 83421 7.08654471 0.91641447 37.00000000 0.24986883 - 83392 7.09136925 0.91641447 38.00000000 0.24951244 - 83345 7.09308637 0.91641447 39.00000000 0.25155153 - 83614 7.08900502 0.91641447 40.00000000 0.25060695 - 82757 7.08958081 0.91641447 41.00000000 0.24970076 - 82871 7.08921534 0.91641447 42.00000000 0.25079164 - 82701 7.08877696 0.91641447 43.00000000 0.25141317 - 82555 7.09266103 0.91641447 44.00000000 0.25087714 - 81935 7.08797058 0.91641447 45.00000000 0.25012457 - 82404 7.09166066 0.91641447 46.00000000 0.25073877 - 82786 7.09405591 0.91641447 47.00000000 0.25038219 - 82150 7.09011577 0.91641447 48.00000000 0.25221323 - 82284 7.08940602 0.91641447 49.00000000 0.25019509 - 82133 7.09142282 0.91641447 50.00000000 0.24925425 - 82322 7.08828137 0.91641447 51.00000000 0.25028275 - 82297 7.08823894 0.91641447 52.00000000 0.24967327 - 81779 7.09643285 0.91641447 53.00000000 0.24907598 - 81555 7.08773592 0.91641447 54.00000000 0.25136459 - 82187 7.09001559 0.91641447 55.00000000 0.25059347 - 81154 7.08974269 0.91641447 56.00000000 0.25073500 - 81355 7.09094358 0.91641447 57.00000000 0.25071861 - 81174 7.08868216 0.91641447 58.00000000 0.24948013 - 81702 7.09134652 0.91641447 59.00000000 0.25104519 - 81942 7.08922416 0.91641447 60.00000000 0.24989527 - 81457 7.08951144 0.91641447 61.00000000 0.24964558 - 80789 7.09571644 0.91641447 62.00000000 0.25097444 - 80388 7.09075257 0.91641447 63.00000000 0.24927652 - 80805 7.08869040 0.91641447 64.00000000 0.25050077 - 80588 7.09152653 0.91641447 65.00000000 0.25084397 - 80140 7.09025385 0.91641447 66.00000000 0.24886361 - 80606 7.08944653 0.91641447 67.00000000 0.25109631 - 80344 7.09252098 0.91641447 68.00000000 0.25028717 - 80342 7.09081708 0.91641447 69.00000000 0.24949659 - 79901 7.09162966 0.91641447 70.00000000 0.25080402 - 79548 7.09089744 0.91641447 71.00000000 0.24990270 - 79498 7.09022051 0.91641447 72.00000000 0.25086620 - 79910 7.09454236 0.91641447 73.00000000 0.25159566 - 80053 7.09132142 0.91641447 74.00000000 0.25046649 - 79387 7.08962462 0.91641447 75.00000000 0.25005805 - 79736 7.09152914 0.91641447 76.00000000 0.25017419 - 78985 7.08930103 0.91641447 77.00000000 0.25058076 - 80017 7.09126340 0.91641447 78.00000000 0.25041702 - 79110 7.08753820 0.91641447 79.00000000 0.24900174 - 79240 7.09163548 0.91641447 80.00000000 0.25045390 - 177021 10.10324404 1.07025958 1.00000000 0.25012431 - 177139 10.09942047 1.07025958 2.00000000 0.25059436 - 176919 10.10321007 1.07025958 3.00000000 0.24987918 - 177274 10.10333563 1.07025958 4.00000000 0.24899636 - 176284 10.09746646 1.07025958 5.00000000 0.25098915 - 176471 10.10026927 1.07025958 6.00000000 0.25047487 - 176630 10.10030789 1.07025958 7.00000000 0.24986723 - 176028 10.10275064 1.07025958 8.00000000 0.24984973 - 175673 10.10248379 1.07025958 9.00000000 0.25027408 - 175618 10.10610172 1.07025958 10.00000000 0.25076162 - 175392 10.10087195 1.07025958 11.00000000 0.24946641 - 174704 10.10319399 1.07025958 12.00000000 0.24999819 - 175177 10.10773406 1.07025958 13.00000000 0.25011243 - 174798 10.10188752 1.07025958 14.00000000 0.25055206 - 173871 10.10436762 1.07025958 15.00000000 0.25077921 - 174230 10.10614097 1.07025958 16.00000000 0.25013472 - 173428 10.10344501 1.07025958 17.00000000 0.25089603 - 174272 10.10157962 1.07025958 18.00000000 0.25016897 - 172416 10.09908691 1.07025958 19.00000000 0.25052284 - 173249 10.10301735 1.07025958 20.00000000 0.25072465 - 172832 10.09816378 1.07025958 21.00000000 0.24941757 - 172118 10.10368506 1.07025958 22.00000000 0.24963953 - 172139 10.10716821 1.07025958 23.00000000 0.25036731 - 171919 10.10497536 1.07025958 24.00000000 0.24970517 - 171731 10.10042677 1.07025958 25.00000000 0.25027187 - 171147 10.09877383 1.07025958 26.00000000 0.25076664 - 171881 10.10769485 1.07025958 27.00000000 0.25089407 - 172520 10.10297307 1.07025958 28.00000000 0.25035421 - 171431 10.10433732 1.07025958 29.00000000 0.25057090 - 170600 10.10193626 1.07025958 30.00000000 0.25017841 - 170070 10.10317975 1.07025958 31.00000000 0.24982591 - 169880 10.10065187 1.07025958 32.00000000 0.25047689 - 170174 10.10367967 1.07025958 33.00000000 0.25099718 - 169613 10.10235106 1.07025958 34.00000000 0.24972164 - 170109 10.10540507 1.07025958 35.00000000 0.24990297 - 169749 10.10497301 1.07025958 36.00000000 0.25080045 - 169045 10.10116499 1.07025958 37.00000000 0.25040027 - 169193 10.10236613 1.07025958 38.00000000 0.25001832 - 168333 10.10538229 1.07025958 39.00000000 0.25024787 - 168029 10.10608141 1.07025958 40.00000000 0.25086223 - 168371 10.10465041 1.07025958 41.00000000 0.25088488 - 168085 10.10304222 1.07025958 42.00000000 0.25034365 - 168225 10.10233069 1.07025958 43.00000000 0.24988979 - 167970 10.10718310 1.07025958 44.00000000 0.25036467 - 168006 10.10366084 1.07025958 45.00000000 0.25108828 - 167334 10.10170323 1.07025958 46.00000000 0.24955294 - 166853 10.10670840 1.07025958 47.00000000 0.25055761 - 167552 10.10508125 1.07025958 48.00000000 0.25019221 - 165807 10.10497905 1.07025958 49.00000000 0.24979830 - 165599 10.10404189 1.07025958 50.00000000 0.25056672 - 165981 10.10369660 1.07025958 51.00000000 0.25029233 - 165339 10.10409683 1.07025958 52.00000000 0.25044736 - 165495 10.10550876 1.07025958 53.00000000 0.25018109 - 165103 10.10204870 1.07025958 54.00000000 0.25139598 - 164857 10.10097842 1.07025958 55.00000000 0.25047731 - 165079 10.10848573 1.07025958 56.00000000 0.25059552 - 164586 10.10286968 1.07025958 57.00000000 0.25013675 - 165112 10.10615101 1.07025958 58.00000000 0.24968206 - 164598 10.10200192 1.07025958 59.00000000 0.25031982 - 164093 10.10717339 1.07025958 60.00000000 0.24991174 - 164929 10.10140102 1.07025958 61.00000000 0.25012233 - 163971 10.10228683 1.07025958 62.00000000 0.25100899 - 163275 10.10716299 1.07025958 63.00000000 0.24910572 - 163304 10.10480062 1.07025958 64.00000000 0.24986071 - 163167 10.10092649 1.07025958 65.00000000 0.25031213 - 162343 10.10731866 1.07025958 66.00000000 0.25042625 - 162162 10.10870623 1.07025958 67.00000000 0.24999470 - 162958 10.10099941 1.07025958 68.00000000 0.24961626 - 162722 10.10282718 1.07025958 69.00000000 0.25039305 - 162527 10.10143014 1.07025958 70.00000000 0.25033104 - 161926 10.10433666 1.07025958 71.00000000 0.25055654 - 161342 10.10432976 1.07025958 72.00000000 0.25105837 - 161185 10.10157895 1.07025958 73.00000000 0.25071140 - 161413 10.10241424 1.07025958 74.00000000 0.25055730 - 160382 10.10330849 1.07025958 75.00000000 0.24982399 - 161663 10.10577669 1.07025958 76.00000000 0.25118177 - 161001 10.10394042 1.07025958 77.00000000 0.25024502 - 160545 10.10604742 1.07025958 78.00000000 0.25031607 - 160109 10.10020926 1.07025958 79.00000000 0.25037684 - 158560 10.10478332 1.07025958 80.00000000 0.25026706 - 358087 14.39749345 1.22410814 1.00000000 0.24999937 - 358192 14.39883656 1.22410814 2.00000000 0.25068965 - 357387 14.40004351 1.22410814 3.00000000 0.24941568 - 358557 14.40120973 1.22410814 4.00000000 0.25009789 - 356011 14.39804830 1.22410814 5.00000000 0.24998817 - 357128 14.39858454 1.22410814 6.00000000 0.25036494 - 356772 14.40245192 1.22410814 7.00000000 0.25026847 - 355767 14.39756631 1.22410814 8.00000000 0.25012963 - 355265 14.39824386 1.22410814 9.00000000 0.25057180 - 354296 14.39530474 1.22410814 10.00000000 0.25011815 - 354598 14.40091521 1.22410814 11.00000000 0.25077311 - 354110 14.39467746 1.22410814 12.00000000 0.24981030 - 353678 14.39905589 1.22410814 13.00000000 0.25017482 - 352345 14.39557860 1.22410814 14.00000000 0.25052488 - 351917 14.39681379 1.22410814 15.00000000 0.24992793 - 352308 14.39915958 1.22410814 16.00000000 0.25085776 - 352130 14.40086010 1.22410814 17.00000000 0.25050203 - 351096 14.39719516 1.22410814 18.00000000 0.25033275 - 349354 14.39877164 1.22410814 19.00000000 0.25010343 - 349881 14.40017896 1.22410814 20.00000000 0.25030082 - 349086 14.40032560 1.22410814 21.00000000 0.25063138 - 348302 14.39506726 1.22410814 22.00000000 0.25102261 - 347218 14.39798229 1.22410814 23.00000000 0.25005800 - 347708 14.39744526 1.22410814 24.00000000 0.24978795 - 347796 14.39762628 1.22410814 25.00000000 0.25061443 - 346635 14.39570049 1.22410814 26.00000000 0.24965685 - 345620 14.39782903 1.22410814 27.00000000 0.25052428 - 345597 14.39757100 1.22410814 28.00000000 0.25041807 - 344859 14.40040006 1.22410814 29.00000000 0.25057090 - 345122 14.40100397 1.22410814 30.00000000 0.25053693 - 344764 14.40007372 1.22410814 31.00000000 0.25067979 - 343549 14.39629336 1.22410814 32.00000000 0.24989539 - 344354 14.39496086 1.22410814 33.00000000 0.25077351 - 343359 14.39861771 1.22410814 34.00000000 0.25057955 - 342489 14.39879653 1.22410814 35.00000000 0.24979181 - 342743 14.39480637 1.22410814 36.00000000 0.25005823 - 342444 14.39924110 1.22410814 37.00000000 0.25087358 - 341984 14.40072592 1.22410814 38.00000000 0.24995811 - 341244 14.40078966 1.22410814 39.00000000 0.25071892 - 340645 14.39682384 1.22410814 40.00000000 0.24993943 - 341339 14.40263543 1.22410814 41.00000000 0.25062664 - 339520 14.40191366 1.22410814 42.00000000 0.25082887 - 339246 14.39713744 1.22410814 43.00000000 0.25063491 - 339373 14.39900621 1.22410814 44.00000000 0.25072002 - 338439 14.40152757 1.22410814 45.00000000 0.25100077 - 339071 14.40118108 1.22410814 46.00000000 0.25081064 - 338239 14.39583613 1.22410814 47.00000000 0.25049294 - 336951 14.39621464 1.22410814 48.00000000 0.25001517 - 337097 14.39673122 1.22410814 49.00000000 0.24991087 - 336280 14.39876611 1.22410814 50.00000000 0.25063720 - 336269 14.40016177 1.22410814 51.00000000 0.25014120 - 335675 14.39820656 1.22410814 52.00000000 0.25045326 - 334371 14.39861259 1.22410814 53.00000000 0.25114622 - 334600 14.39895889 1.22410814 54.00000000 0.25045661 - 333502 14.39841977 1.22410814 55.00000000 0.25071042 - 333753 14.39221498 1.22410814 56.00000000 0.25021988 - 332064 14.39700867 1.22410814 57.00000000 0.25046235 - 333136 14.39940879 1.22410814 58.00000000 0.25029392 - 332218 14.39621510 1.22410814 59.00000000 0.24974383 - 332466 14.39616834 1.22410814 60.00000000 0.24969334 - 331664 14.39591060 1.22410814 61.00000000 0.25060621 - 330229 14.39920300 1.22410814 62.00000000 0.25021217 - 330245 14.40007413 1.22410814 63.00000000 0.25021211 - 329419 14.39816292 1.22410814 64.00000000 0.24965874 - 330058 14.40179657 1.22410814 65.00000000 0.25019398 - 329700 14.39633965 1.22410814 66.00000000 0.25052069 - 329117 14.39813151 1.22410814 67.00000000 0.25016880 - 328848 14.39730057 1.22410814 68.00000000 0.25018686 - 328211 14.40331395 1.22410814 69.00000000 0.25028481 - 327756 14.39786103 1.22410814 70.00000000 0.25058034 - 326905 14.39815411 1.22410814 71.00000000 0.25072066 - 327448 14.39874232 1.22410814 72.00000000 0.24960917 - 326559 14.39316540 1.22410814 73.00000000 0.25022916 - 325410 14.39293301 1.22410814 74.00000000 0.25090970 - 325362 14.39565086 1.22410814 75.00000000 0.24992325 - 324965 14.40113753 1.22410814 76.00000000 0.24989508 - 324669 14.40250525 1.22410814 77.00000000 0.25020726 - 324169 14.40095854 1.22410814 78.00000000 0.25104816 - 322804 14.39862071 1.22410814 79.00000000 0.25015639 - 322667 14.39723326 1.22410814 80.00000000 0.25038383 - 721405 20.51689367 1.37795248 1.00000000 0.24979265 - 720295 20.51972282 1.37795248 2.00000000 0.24988445 - 719700 20.51557539 1.37795248 3.00000000 0.25046555 - 719280 20.51954113 1.37795248 4.00000000 0.25036369 - 719001 20.51313953 1.37795248 5.00000000 0.25040997 - 718697 20.51933722 1.37795248 6.00000000 0.25067908 - 717678 20.51597272 1.37795248 7.00000000 0.25120785 - 718303 20.51601943 1.37795248 8.00000000 0.25060904 - 714388 20.52120369 1.37795248 9.00000000 0.25066986 - 715591 20.51844991 1.37795248 10.00000000 0.25024242 - 713260 20.51895946 1.37795248 11.00000000 0.25035589 - 713271 20.51455919 1.37795248 12.00000000 0.25081754 - 711370 20.51885843 1.37795248 13.00000000 0.25029395 - 711451 20.51500577 1.37795248 14.00000000 0.25041388 - 707401 20.51901083 1.37795248 15.00000000 0.25039570 - 710134 20.52104821 1.37795248 16.00000000 0.25089886 - 708556 20.51691562 1.37795248 17.00000000 0.25028513 - 707090 20.51228905 1.37795248 18.00000000 0.25064002 - 707620 20.51879339 1.37795248 19.00000000 0.25030578 - 703424 20.51913266 1.37795248 20.00000000 0.25071222 - 702569 20.51807312 1.37795248 21.00000000 0.24998514 - 702489 20.51899230 1.37795248 22.00000000 0.25034160 - 701008 20.52123191 1.37795248 23.00000000 0.24999942 - 700153 20.51688417 1.37795248 24.00000000 0.25037375 - 700310 20.51599655 1.37795248 25.00000000 0.25013362 - 698611 20.52014320 1.37795248 26.00000000 0.25066228 - 696878 20.51867465 1.37795248 27.00000000 0.25060093 - 695637 20.51801180 1.37795248 28.00000000 0.25030745 - 695566 20.51567771 1.37795248 29.00000000 0.25052850 - 694887 20.51455610 1.37795248 30.00000000 0.25043987 - 694292 20.51647566 1.37795248 31.00000000 0.25091018 - 693640 20.51896426 1.37795248 32.00000000 0.25017874 - 690949 20.51742665 1.37795248 33.00000000 0.25040712 - 691098 20.51993081 1.37795248 34.00000000 0.25056191 - 689874 20.52212905 1.37795248 35.00000000 0.25062204 - 688390 20.51848779 1.37795248 36.00000000 0.25030481 - 688436 20.51423030 1.37795248 37.00000000 0.25045744 - 689351 20.51883678 1.37795248 38.00000000 0.25034227 - 686631 20.51575291 1.37795248 39.00000000 0.25047803 - 684991 20.52127659 1.37795248 40.00000000 0.25065002 - 685316 20.51661469 1.37795248 41.00000000 0.25086516 - 685379 20.51847224 1.37795248 42.00000000 0.25091184 - 682058 20.51996556 1.37795248 43.00000000 0.25065966 - 683704 20.51715253 1.37795248 44.00000000 0.25080180 - 682189 20.51850043 1.37795248 45.00000000 0.25035903 - 682225 20.51877732 1.37795248 46.00000000 0.25106549 - 679870 20.51722734 1.37795248 47.00000000 0.25024742 - 678338 20.52283518 1.37795248 48.00000000 0.25042309 - 679327 20.51863700 1.37795248 49.00000000 0.25052212 - 677790 20.51997812 1.37795248 50.00000000 0.25057184 - 676294 20.51804629 1.37795248 51.00000000 0.25059891 - 675495 20.51675727 1.37795248 52.00000000 0.25056387 - 675298 20.52045196 1.37795248 53.00000000 0.25043389 - 675134 20.51660831 1.37795248 54.00000000 0.25021365 - 672956 20.51723106 1.37795248 55.00000000 0.25065020 - 673598 20.51877023 1.37795248 56.00000000 0.25036305 - 670857 20.51732945 1.37795248 57.00000000 0.25038900 - 670506 20.51755768 1.37795248 58.00000000 0.25034202 - 670340 20.51529364 1.37795248 59.00000000 0.25019647 - 667758 20.51739222 1.37795248 60.00000000 0.25008290 - 668927 20.51475936 1.37795248 61.00000000 0.25015549 - 667382 20.51433603 1.37795248 62.00000000 0.25030339 - 666077 20.51730458 1.37795248 63.00000000 0.25033187 - 664934 20.51754777 1.37795248 64.00000000 0.25030861 - 663996 20.51578331 1.37795248 65.00000000 0.25016700 - 664139 20.51367142 1.37795248 66.00000000 0.25080015 - 663949 20.51465518 1.37795248 67.00000000 0.25021871 - 661722 20.51598933 1.37795248 68.00000000 0.25028917 - 659832 20.51569356 1.37795248 69.00000000 0.25032024 - 658676 20.51571760 1.37795248 70.00000000 0.25038570 - 658452 20.51736131 1.37795248 71.00000000 0.25039471 - 657035 20.52316927 1.37795248 72.00000000 0.25009494 - 656905 20.51554482 1.37795248 73.00000000 0.25035934 - 656374 20.51687205 1.37795248 74.00000000 0.24970334 - 655660 20.51633445 1.37795248 75.00000000 0.25076855 - 654062 20.51901418 1.37795248 76.00000000 0.25055471 - 653496 20.51727610 1.37795248 77.00000000 0.25085610 - 650538 20.51655390 1.37795248 78.00000000 0.25018920 - 650321 20.51720010 1.37795248 79.00000000 0.25057156 - 650021 20.51914645 1.37795248 80.00000000 0.25036584 + 79 0.20602211 -0.62204752 1.00000000 0.24357345 + 63 0.20847270 -0.62204752 2.00000000 0.24703637 + 84 0.20813633 -0.62204752 3.00000000 0.26540002 + 71 0.20373064 -0.62204752 4.00000000 0.23861870 + 77 0.20329481 -0.62204752 5.00000000 0.20344381 + 77 0.20532648 -0.62204752 6.00000000 0.26559186 + 67 0.20744749 -0.62204752 7.00000000 0.21120747 + 69 0.20217849 -0.62204752 8.00000000 0.27010974 + 68 0.20391290 -0.62204752 9.00000000 0.23206119 + 65 0.20620854 -0.62204752 10.00000000 0.22447927 + 67 0.20354870 -0.62204752 11.00000000 0.28342620 + 65 0.20206496 -0.62204752 12.00000000 0.26757590 + 64 0.20743932 -0.62204752 13.00000000 0.21906213 + 69 0.20576563 -0.62204752 14.00000000 0.27771316 + 73 0.20247983 -0.62204752 15.00000000 0.21139800 + 73 0.20367652 -0.62204752 16.00000000 0.26248689 + 88 0.20178619 -0.62204752 17.00000000 0.21723357 + 76 0.20339351 -0.62204752 18.00000000 0.20702802 + 90 0.20832769 -0.62204752 19.00000000 0.26469113 + 72 0.21165726 -0.62204752 20.00000000 0.26487531 + 86 0.20820057 -0.62204752 21.00000000 0.25997167 + 72 0.20167498 -0.62204752 22.00000000 0.20881748 + 62 0.20784556 -0.62204752 23.00000000 0.28632494 + 74 0.20468372 -0.62204752 24.00000000 0.23009784 + 70 0.20709180 -0.62204752 25.00000000 0.24817285 + 62 0.20956177 -0.62204752 26.00000000 0.20571927 + 67 0.20209303 -0.62204752 27.00000000 0.27347167 + 75 0.20784964 -0.62204752 28.00000000 0.25042592 + 74 0.20859594 -0.62204752 29.00000000 0.24409828 + 58 0.20725259 -0.62204752 30.00000000 0.24266977 + 83 0.20685949 -0.62204752 31.00000000 0.21592384 + 72 0.20363480 -0.62204752 32.00000000 0.20501296 + 74 0.19602261 -0.62204752 33.00000000 0.23918433 + 71 0.20417001 -0.62204752 34.00000000 0.20704169 + 81 0.20378758 -0.62204752 35.00000000 0.26016390 + 80 0.20695603 -0.62204752 36.00000000 0.26047828 + 54 0.20643492 -0.62204752 37.00000000 0.24357400 + 61 0.20426333 -0.62204752 38.00000000 0.22215122 + 78 0.19965113 -0.62204752 39.00000000 0.21490597 + 63 0.20962576 -0.62204752 40.00000000 0.23284988 + 66 0.20357003 -0.62204752 41.00000000 0.27494904 + 69 0.20320110 -0.62204752 42.00000000 0.26735654 + 70 0.20853006 -0.62204752 43.00000000 0.24091799 + 76 0.20230049 -0.62204752 44.00000000 0.22890315 + 77 0.20942714 -0.62204752 45.00000000 0.23341507 + 77 0.20444352 -0.62204752 46.00000000 0.26137141 + 70 0.20311882 -0.62204752 47.00000000 0.26098838 + 73 0.20986102 -0.62204752 48.00000000 0.23326073 + 70 0.21381891 -0.62204752 49.00000000 0.23900579 + 74 0.20289012 -0.62204752 50.00000000 0.27610429 + 61 0.20046049 -0.62204752 51.00000000 0.24874983 + 71 0.20479117 -0.62204752 52.00000000 0.29658014 + 60 0.20341582 -0.62204752 53.00000000 0.23001634 + 66 0.20334358 -0.62204752 54.00000000 0.24541444 + 76 0.20750051 -0.62204752 55.00000000 0.27203350 + 86 0.20497765 -0.62204752 56.00000000 0.27307067 + 75 0.20812945 -0.62204752 57.00000000 0.26295995 + 81 0.20342007 -0.62204752 58.00000000 0.25407500 + 62 0.20363586 -0.62204752 59.00000000 0.24213219 + 79 0.20579190 -0.62204752 60.00000000 0.25287584 + 56 0.21115549 -0.62204752 61.00000000 0.29308094 + 71 0.20531465 -0.62204752 62.00000000 0.23802505 + 68 0.20695915 -0.62204752 63.00000000 0.28931440 + 64 0.20493727 -0.62204752 64.00000000 0.24696979 + 56 0.19899596 -0.62204752 65.00000000 0.24252849 + 68 0.19458260 -0.62204752 66.00000000 0.27947543 + 76 0.21166924 -0.62204752 67.00000000 0.24305116 + 70 0.20619468 -0.62204752 68.00000000 0.23486198 + 60 0.20335547 -0.62204752 69.00000000 0.20078150 + 62 0.20699048 -0.62204752 70.00000000 0.24985140 + 68 0.20473668 -0.62204752 71.00000000 0.27194234 + 60 0.20556750 -0.62204752 72.00000000 0.29844286 + 66 0.21008144 -0.62204752 73.00000000 0.25625682 + 70 0.21242366 -0.62204752 74.00000000 0.30772925 + 76 0.20274380 -0.62204752 75.00000000 0.25251391 + 53 0.20736832 -0.62204752 76.00000000 0.24465545 + 58 0.20252211 -0.62204752 77.00000000 0.20044186 + 56 0.20870057 -0.62204752 78.00000000 0.29270497 + 55 0.20629844 -0.62204752 79.00000000 0.23047612 + 78 0.20781636 -0.62204752 80.00000000 0.28700101 + 153 0.29504077 -0.46820059 1.00000000 0.21320953 + 142 0.29041600 -0.46820059 2.00000000 0.26067311 + 147 0.29446329 -0.46820059 3.00000000 0.23497285 + 142 0.28885001 -0.46820059 4.00000000 0.21242034 + 152 0.29532977 -0.46820059 5.00000000 0.25487567 + 148 0.29268046 -0.46820059 6.00000000 0.25370716 + 151 0.29310126 -0.46820059 7.00000000 0.27748249 + 156 0.29137362 -0.46820059 8.00000000 0.23771867 + 125 0.29459152 -0.46820059 9.00000000 0.22895148 + 154 0.29291420 -0.46820059 10.00000000 0.27916324 + 142 0.29229144 -0.46820059 11.00000000 0.24828694 + 146 0.28921570 -0.46820059 12.00000000 0.25825860 + 146 0.29657626 -0.46820059 13.00000000 0.23019549 + 137 0.29552869 -0.46820059 14.00000000 0.24283948 + 141 0.28912801 -0.46820059 15.00000000 0.28779666 + 137 0.28650291 -0.46820059 16.00000000 0.24186942 + 157 0.29505060 -0.46820059 17.00000000 0.27437575 + 163 0.29365202 -0.46820059 18.00000000 0.24849144 + 165 0.28746244 -0.46820059 19.00000000 0.24242066 + 140 0.29329592 -0.46820059 20.00000000 0.27297907 + 146 0.29477220 -0.46820059 21.00000000 0.24519404 + 143 0.29323798 -0.46820059 22.00000000 0.26847275 + 150 0.29359582 -0.46820059 23.00000000 0.26580121 + 142 0.29056308 -0.46820059 24.00000000 0.23280998 + 144 0.29224542 -0.46820059 25.00000000 0.25863723 + 135 0.29033612 -0.46820059 26.00000000 0.21853331 + 126 0.28908975 -0.46820059 27.00000000 0.23370633 + 116 0.29207335 -0.46820059 28.00000000 0.25864969 + 116 0.29387767 -0.46820059 29.00000000 0.28382445 + 155 0.29371000 -0.46820059 30.00000000 0.23203502 + 143 0.29335731 -0.46820059 31.00000000 0.20790481 + 145 0.29208380 -0.46820059 32.00000000 0.23353316 + 157 0.28588405 -0.46820059 33.00000000 0.23350552 + 148 0.29160091 -0.46820059 34.00000000 0.27253948 + 139 0.29899324 -0.46820059 35.00000000 0.25288678 + 146 0.29195532 -0.46820059 36.00000000 0.25208629 + 149 0.29202046 -0.46820059 37.00000000 0.26195849 + 151 0.29701393 -0.46820059 38.00000000 0.25327739 + 144 0.29716176 -0.46820059 39.00000000 0.26430949 + 154 0.29724466 -0.46820059 40.00000000 0.27176441 + 160 0.29447128 -0.46820059 41.00000000 0.26548966 + 154 0.29689250 -0.46820059 42.00000000 0.27496063 + 149 0.29378255 -0.46820059 43.00000000 0.23606678 + 149 0.29356633 -0.46820059 44.00000000 0.22017314 + 117 0.29492746 -0.46820059 45.00000000 0.25886172 + 132 0.29675697 -0.46820059 46.00000000 0.25475277 + 150 0.29343427 -0.46820059 47.00000000 0.25359073 + 125 0.29298513 -0.46820059 48.00000000 0.26710653 + 135 0.29595817 -0.46820059 49.00000000 0.25054521 + 123 0.28832352 -0.46820059 50.00000000 0.24381135 + 123 0.28838486 -0.46820059 51.00000000 0.24007443 + 124 0.29040139 -0.46820059 52.00000000 0.22476888 + 125 0.29081048 -0.46820059 53.00000000 0.24680008 + 126 0.29443358 -0.46820059 54.00000000 0.23818666 + 126 0.29453991 -0.46820059 55.00000000 0.25179238 + 96 0.29903626 -0.46820059 56.00000000 0.24860594 + 122 0.29191542 -0.46820059 57.00000000 0.26197588 + 138 0.29222827 -0.46820059 58.00000000 0.22281431 + 155 0.29377736 -0.46820059 59.00000000 0.27036182 + 132 0.29364296 -0.46820059 60.00000000 0.24368224 + 129 0.29483380 -0.46820059 61.00000000 0.22716074 + 133 0.29937589 -0.46820059 62.00000000 0.26172136 + 155 0.28997873 -0.46820059 63.00000000 0.24335178 + 139 0.29196047 -0.46820059 64.00000000 0.27140547 + 146 0.29169499 -0.46820059 65.00000000 0.25143544 + 120 0.29657169 -0.46820059 66.00000000 0.23548664 + 134 0.29277964 -0.46820059 67.00000000 0.25529094 + 134 0.29185860 -0.46820059 68.00000000 0.24391612 + 120 0.28870367 -0.46820059 69.00000000 0.23189111 + 118 0.29165501 -0.46820059 70.00000000 0.22093683 + 138 0.29522809 -0.46820059 71.00000000 0.23895790 + 130 0.29501421 -0.46820059 72.00000000 0.27654399 + 130 0.28757396 -0.46820059 73.00000000 0.26268798 + 122 0.28965251 -0.46820059 74.00000000 0.26055298 + 136 0.29313944 -0.46820059 75.00000000 0.24482154 + 145 0.29725622 -0.46820059 76.00000000 0.26467620 + 148 0.29266573 -0.46820059 77.00000000 0.25285678 + 143 0.28746710 -0.46820059 78.00000000 0.25025150 + 142 0.29836489 -0.46820059 79.00000000 0.24843896 + 128 0.28851266 -0.46820059 80.00000000 0.23867728 + 293 0.41663401 -0.31435498 1.00000000 0.23022157 + 298 0.41981794 -0.31435498 2.00000000 0.24242388 + 284 0.42042841 -0.31435498 3.00000000 0.25505089 + 304 0.41924355 -0.31435498 4.00000000 0.26295112 + 288 0.41825831 -0.31435498 5.00000000 0.24310658 + 308 0.41868184 -0.31435498 6.00000000 0.25468248 + 286 0.41554486 -0.31435498 7.00000000 0.26992702 + 304 0.41528790 -0.31435498 8.00000000 0.26153604 + 289 0.41407610 -0.31435498 9.00000000 0.27151224 + 285 0.41506079 -0.31435498 10.00000000 0.25256435 + 294 0.41192508 -0.31435498 11.00000000 0.25170763 + 291 0.41339558 -0.31435498 12.00000000 0.24262758 + 309 0.41261123 -0.31435498 13.00000000 0.26067878 + 296 0.42041007 -0.31435498 14.00000000 0.23489638 + 268 0.41761158 -0.31435498 15.00000000 0.25972298 + 310 0.41943420 -0.31435498 16.00000000 0.23915456 + 314 0.41615388 -0.31435498 17.00000000 0.23730221 + 251 0.41060778 -0.31435498 18.00000000 0.24263776 + 303 0.41630196 -0.31435498 19.00000000 0.26473264 + 310 0.41717271 -0.31435498 20.00000000 0.25549937 + 261 0.41898014 -0.31435498 21.00000000 0.23182411 + 284 0.41544975 -0.31435498 22.00000000 0.25938508 + 288 0.41840291 -0.31435498 23.00000000 0.24310655 + 315 0.41835636 -0.31435498 24.00000000 0.25173343 + 282 0.41753049 -0.31435498 25.00000000 0.25855667 + 299 0.41736387 -0.31435498 26.00000000 0.24487424 + 301 0.41722600 -0.31435498 27.00000000 0.27612968 + 291 0.41223418 -0.31435498 28.00000000 0.25470505 + 292 0.41496205 -0.31435498 29.00000000 0.24813107 + 319 0.41957609 -0.31435498 30.00000000 0.24512896 + 272 0.42046551 -0.31435498 31.00000000 0.26422828 + 297 0.41076112 -0.31435498 32.00000000 0.25675831 + 291 0.41995078 -0.31435498 33.00000000 0.25728589 + 306 0.41261085 -0.31435498 34.00000000 0.26124622 + 306 0.41869171 -0.31435498 35.00000000 0.25336383 + 267 0.41875093 -0.31435498 36.00000000 0.24927822 + 287 0.41712378 -0.31435498 37.00000000 0.27468700 + 290 0.41769515 -0.31435498 38.00000000 0.24395361 + 264 0.41742633 -0.31435498 39.00000000 0.25768799 + 282 0.42470301 -0.31435498 40.00000000 0.25026467 + 270 0.42019177 -0.31435498 41.00000000 0.28000911 + 306 0.41470053 -0.31435498 42.00000000 0.24767867 + 279 0.41534370 -0.31435498 43.00000000 0.22885170 + 280 0.41332799 -0.31435498 44.00000000 0.23315373 + 298 0.41806190 -0.31435498 45.00000000 0.27147974 + 310 0.41953015 -0.31435498 46.00000000 0.23828049 + 283 0.42132297 -0.31435498 47.00000000 0.27190217 + 290 0.41848580 -0.31435498 48.00000000 0.24367533 + 277 0.41799231 -0.31435498 49.00000000 0.24878589 + 274 0.41588789 -0.31435498 50.00000000 0.25485943 + 273 0.42169527 -0.31435498 51.00000000 0.27281250 + 286 0.41562415 -0.31435498 52.00000000 0.24747510 + 278 0.41382934 -0.31435498 53.00000000 0.25770485 + 302 0.41944662 -0.31435498 54.00000000 0.22809417 + 274 0.41726568 -0.31435498 55.00000000 0.25160695 + 291 0.41239570 -0.31435498 56.00000000 0.25636842 + 302 0.41206636 -0.31435498 57.00000000 0.26287446 + 275 0.41339838 -0.31435498 58.00000000 0.23325441 + 278 0.41248271 -0.31435498 59.00000000 0.25332160 + 284 0.41516778 -0.31435498 60.00000000 0.24254386 + 272 0.41344059 -0.31435498 61.00000000 0.23631966 + 289 0.41788267 -0.31435498 62.00000000 0.23805237 + 267 0.41648822 -0.31435498 63.00000000 0.25557915 + 278 0.42085189 -0.31435498 64.00000000 0.25074679 + 284 0.41905595 -0.31435498 65.00000000 0.25226554 + 287 0.41492343 -0.31435498 66.00000000 0.24336382 + 315 0.41306331 -0.31435498 67.00000000 0.23805790 + 273 0.41695427 -0.31435498 68.00000000 0.23342458 + 262 0.41432467 -0.31435498 69.00000000 0.25130568 + 272 0.42345835 -0.31435498 70.00000000 0.24136611 + 289 0.41351289 -0.31435498 71.00000000 0.24756534 + 288 0.41678125 -0.31435498 72.00000000 0.25166459 + 275 0.41601257 -0.31435498 73.00000000 0.24805799 + 265 0.41519422 -0.31435498 74.00000000 0.25211084 + 289 0.41579204 -0.31435498 75.00000000 0.25216998 + 290 0.41734386 -0.31435498 76.00000000 0.24670503 + 269 0.41971937 -0.31435498 77.00000000 0.25415394 + 290 0.41532159 -0.31435498 78.00000000 0.25228911 + 292 0.41652807 -0.31435498 79.00000000 0.23717365 + 266 0.41363735 -0.31435498 80.00000000 0.23191074 + 623 0.58735825 -0.16050875 1.00000000 0.24900950 + 614 0.59379564 -0.16050875 2.00000000 0.25188978 + 638 0.59523455 -0.16050875 3.00000000 0.26319441 + 628 0.59638274 -0.16050875 4.00000000 0.23382911 + 611 0.59357893 -0.16050875 5.00000000 0.26567207 + 611 0.59636261 -0.16050875 6.00000000 0.25261339 + 618 0.58815657 -0.16050875 7.00000000 0.24467697 + 574 0.59428456 -0.16050875 8.00000000 0.24295427 + 641 0.59574799 -0.16050875 9.00000000 0.25104151 + 605 0.59491331 -0.16050875 10.00000000 0.26100372 + 647 0.59351991 -0.16050875 11.00000000 0.25565060 + 583 0.59198266 -0.16050875 12.00000000 0.25711647 + 614 0.59322318 -0.16050875 13.00000000 0.23911457 + 598 0.59000552 -0.16050875 14.00000000 0.25320538 + 579 0.59355759 -0.16050875 15.00000000 0.25690609 + 620 0.59480058 -0.16050875 16.00000000 0.25374483 + 624 0.59380555 -0.16050875 17.00000000 0.25401062 + 628 0.59289507 -0.16050875 18.00000000 0.24642008 + 578 0.59121409 -0.16050875 19.00000000 0.26693192 + 628 0.59990847 -0.16050875 20.00000000 0.23493421 + 640 0.58852567 -0.16050875 21.00000000 0.24148991 + 615 0.59549301 -0.16050875 22.00000000 0.24885759 + 591 0.59257882 -0.16050875 23.00000000 0.24587710 + 601 0.59467178 -0.16050875 24.00000000 0.24606851 + 568 0.59075008 -0.16050875 25.00000000 0.25323685 + 567 0.59424790 -0.16050875 26.00000000 0.25747899 + 614 0.59617295 -0.16050875 27.00000000 0.22637292 + 564 0.59868204 -0.16050875 28.00000000 0.25913915 + 589 0.59402613 -0.16050875 29.00000000 0.24514285 + 622 0.59217578 -0.16050875 30.00000000 0.26325474 + 580 0.59245490 -0.16050875 31.00000000 0.25046229 + 607 0.59055095 -0.16050875 32.00000000 0.26559953 + 588 0.59440581 -0.16050875 33.00000000 0.23672679 + 618 0.59851910 -0.16050875 34.00000000 0.24745605 + 651 0.59160830 -0.16050875 35.00000000 0.24164444 + 568 0.58874302 -0.16050875 36.00000000 0.24000682 + 624 0.59533236 -0.16050875 37.00000000 0.26307619 + 624 0.59182650 -0.16050875 38.00000000 0.25746085 + 565 0.59350946 -0.16050875 39.00000000 0.23383001 + 585 0.59788051 -0.16050875 40.00000000 0.25633806 + 588 0.59410233 -0.16050875 41.00000000 0.24853131 + 589 0.59703805 -0.16050875 42.00000000 0.25402646 + 583 0.59763144 -0.16050875 43.00000000 0.24763349 + 582 0.59432764 -0.16050875 44.00000000 0.23527082 + 572 0.59641936 -0.16050875 45.00000000 0.23005448 + 599 0.59085189 -0.16050875 46.00000000 0.24027836 + 587 0.59361311 -0.16050875 47.00000000 0.24989051 + 599 0.59212354 -0.16050875 48.00000000 0.23648702 + 575 0.59583252 -0.16050875 49.00000000 0.26149565 + 600 0.59253455 -0.16050875 50.00000000 0.25181231 + 636 0.59141285 -0.16050875 51.00000000 0.25155155 + 577 0.59118213 -0.16050875 52.00000000 0.25260400 + 583 0.59743471 -0.16050875 53.00000000 0.25480487 + 572 0.59689814 -0.16050875 54.00000000 0.25941594 + 635 0.59194286 -0.16050875 55.00000000 0.25359007 + 596 0.59708731 -0.16050875 56.00000000 0.26291571 + 609 0.59089791 -0.16050875 57.00000000 0.24136889 + 552 0.58836258 -0.16050875 58.00000000 0.25584367 + 550 0.59158709 -0.16050875 59.00000000 0.25639153 + 594 0.59733138 -0.16050875 60.00000000 0.24235010 + 593 0.58837841 -0.16050875 61.00000000 0.26686347 + 546 0.59524804 -0.16050875 62.00000000 0.24995015 + 579 0.59715069 -0.16050875 63.00000000 0.24747061 + 574 0.59147335 -0.16050875 64.00000000 0.24512075 + 561 0.59590834 -0.16050875 65.00000000 0.24834329 + 550 0.59061215 -0.16050875 66.00000000 0.25279310 + 555 0.58874411 -0.16050875 67.00000000 0.24068853 + 573 0.58862717 -0.16050875 68.00000000 0.25707490 + 570 0.59680338 -0.16050875 69.00000000 0.24720160 + 534 0.59108627 -0.16050875 70.00000000 0.23846497 + 581 0.58985087 -0.16050875 71.00000000 0.25476359 + 530 0.58913378 -0.16050875 72.00000000 0.24366949 + 582 0.59433457 -0.16050875 73.00000000 0.25547456 + 554 0.59883773 -0.16050875 74.00000000 0.24699700 + 531 0.59728109 -0.16050875 75.00000000 0.24608168 + 564 0.59257496 -0.16050875 76.00000000 0.25760173 + 569 0.59863782 -0.16050875 77.00000000 0.26545929 + 553 0.58886085 -0.16050875 78.00000000 0.25815967 + 526 0.58954348 -0.16050875 79.00000000 0.24993117 + 569 0.58929798 -0.16050875 80.00000000 0.24542594 + 1278 0.84865844 -0.00666210 1.00000000 0.24221895 + 1261 0.84473940 -0.00666210 2.00000000 0.24997256 + 1296 0.85072974 -0.00666210 3.00000000 0.25017093 + 1238 0.84783566 -0.00666210 4.00000000 0.25972133 + 1301 0.84713598 -0.00666210 5.00000000 0.25127358 + 1242 0.85072908 -0.00666210 6.00000000 0.24560821 + 1238 0.84682170 -0.00666210 7.00000000 0.25521261 + 1276 0.84783032 -0.00666210 8.00000000 0.24626904 + 1282 0.85073319 -0.00666210 9.00000000 0.25285705 + 1283 0.84201010 -0.00666210 10.00000000 0.24169424 + 1191 0.84952111 -0.00666210 11.00000000 0.24913218 + 1189 0.84378979 -0.00666210 12.00000000 0.24611724 + 1280 0.84313807 -0.00666210 13.00000000 0.26343111 + 1242 0.84867945 -0.00666210 14.00000000 0.24982785 + 1225 0.84777349 -0.00666210 15.00000000 0.25143606 + 1251 0.84020203 -0.00666210 16.00000000 0.25116047 + 1212 0.85120935 -0.00666210 17.00000000 0.26700110 + 1187 0.84366924 -0.00666210 18.00000000 0.24952973 + 1197 0.84697298 -0.00666210 19.00000000 0.24753777 + 1241 0.84121105 -0.00666210 20.00000000 0.24688148 + 1220 0.84971871 -0.00666210 21.00000000 0.25312029 + 1228 0.84461344 -0.00666210 22.00000000 0.24814008 + 1224 0.84751731 -0.00666210 23.00000000 0.24605000 + 1214 0.84720888 -0.00666210 24.00000000 0.24890761 + 1177 0.84464673 -0.00666210 25.00000000 0.24435877 + 1303 0.84312976 -0.00666210 26.00000000 0.24583885 + 1220 0.84121718 -0.00666210 27.00000000 0.24112462 + 1174 0.84572079 -0.00666210 28.00000000 0.24892241 + 1197 0.84672532 -0.00666210 29.00000000 0.25961110 + 1177 0.84854583 -0.00666210 30.00000000 0.25744998 + 1242 0.85322763 -0.00666210 31.00000000 0.23624538 + 1110 0.85019338 -0.00666210 32.00000000 0.26067725 + 1178 0.84542598 -0.00666210 33.00000000 0.24750009 + 1181 0.84848033 -0.00666210 34.00000000 0.27377625 + 1193 0.84619361 -0.00666210 35.00000000 0.25450670 + 1200 0.84826867 -0.00666210 36.00000000 0.24622860 + 1265 0.84723949 -0.00666210 37.00000000 0.25261971 + 1176 0.84327661 -0.00666210 38.00000000 0.25355435 + 1234 0.84385878 -0.00666210 39.00000000 0.24943124 + 1169 0.84788452 -0.00666210 40.00000000 0.24772107 + 1172 0.84704539 -0.00666210 41.00000000 0.24876425 + 1191 0.84574220 -0.00666210 42.00000000 0.24457351 + 1228 0.84449043 -0.00666210 43.00000000 0.25655532 + 1178 0.84416555 -0.00666210 44.00000000 0.24569323 + 1150 0.84361733 -0.00666210 45.00000000 0.25097558 + 1205 0.84461566 -0.00666210 46.00000000 0.25586349 + 1160 0.84867905 -0.00666210 47.00000000 0.26405443 + 1153 0.84031147 -0.00666210 48.00000000 0.25577833 + 1173 0.84966612 -0.00666210 49.00000000 0.24366630 + 1225 0.84513614 -0.00666210 50.00000000 0.24036710 + 1217 0.85294386 -0.00666210 51.00000000 0.24371975 + 1157 0.84848884 -0.00666210 52.00000000 0.25678170 + 1209 0.84854163 -0.00666210 53.00000000 0.25221323 + 1193 0.83938788 -0.00666210 54.00000000 0.25678521 + 1200 0.84707011 -0.00666210 55.00000000 0.25708954 + 1191 0.84870985 -0.00666210 56.00000000 0.25724047 + 1118 0.85101578 -0.00666210 57.00000000 0.25364044 + 1138 0.84875260 -0.00666210 58.00000000 0.24604898 + 1165 0.84822621 -0.00666210 59.00000000 0.24462884 + 1133 0.85014212 -0.00666210 60.00000000 0.25710779 + 1098 0.84381920 -0.00666210 61.00000000 0.24966711 + 1159 0.84607009 -0.00666210 62.00000000 0.26188286 + 1209 0.84394505 -0.00666210 63.00000000 0.25109756 + 1208 0.83992133 -0.00666210 64.00000000 0.24792604 + 1200 0.84679967 -0.00666210 65.00000000 0.25131051 + 1215 0.84811574 -0.00666210 66.00000000 0.25004434 + 1193 0.84276884 -0.00666210 67.00000000 0.25174587 + 1126 0.84916083 -0.00666210 68.00000000 0.25521535 + 1176 0.84456472 -0.00666210 69.00000000 0.25430974 + 1151 0.84960085 -0.00666210 70.00000000 0.25446449 + 1148 0.84630951 -0.00666210 71.00000000 0.25117882 + 1162 0.84405783 -0.00666210 72.00000000 0.25623977 + 1160 0.85437782 -0.00666210 73.00000000 0.25437860 + 1157 0.84595660 -0.00666210 74.00000000 0.24302615 + 1147 0.85283629 -0.00666210 75.00000000 0.25254180 + 1158 0.85116031 -0.00666210 76.00000000 0.23892109 + 1154 0.84590500 -0.00666210 77.00000000 0.25564310 + 1189 0.84668074 -0.00666210 78.00000000 0.25741837 + 1119 0.85428602 -0.00666210 79.00000000 0.24886152 + 1138 0.84473000 -0.00666210 80.00000000 0.25210948 + 2658 1.20724747 0.14718457 1.00000000 0.24264366 + 2508 1.20732776 0.14718457 2.00000000 0.24887138 + 2540 1.20129284 0.14718457 3.00000000 0.24734376 + 2681 1.21046682 0.14718457 4.00000000 0.25076817 + 2529 1.20288705 0.14718457 5.00000000 0.24687677 + 2610 1.20766505 0.14718457 6.00000000 0.24612704 + 2500 1.21054812 0.14718457 7.00000000 0.24915733 + 2523 1.20452481 0.14718457 8.00000000 0.25616804 + 2519 1.20300702 0.14718457 9.00000000 0.24864746 + 2576 1.20946492 0.14718457 10.00000000 0.25728307 + 2468 1.20843177 0.14718457 11.00000000 0.24735771 + 2466 1.20416632 0.14718457 12.00000000 0.24270943 + 2501 1.20346009 0.14718457 13.00000000 0.25654045 + 2577 1.21085692 0.14718457 14.00000000 0.24744323 + 2516 1.20391111 0.14718457 15.00000000 0.25361661 + 2432 1.20555908 0.14718457 16.00000000 0.24981389 + 2481 1.20635070 0.14718457 17.00000000 0.24535182 + 2517 1.20115321 0.14718457 18.00000000 0.24357162 + 2468 1.20967042 0.14718457 19.00000000 0.25517594 + 2502 1.20452461 0.14718457 20.00000000 0.26015055 + 2573 1.20342299 0.14718457 21.00000000 0.24943750 + 2360 1.20353679 0.14718457 22.00000000 0.24968462 + 2558 1.21231536 0.14718457 23.00000000 0.24612121 + 2496 1.20256041 0.14718457 24.00000000 0.25416885 + 2504 1.21082225 0.14718457 25.00000000 0.25625242 + 2481 1.20716545 0.14718457 26.00000000 0.24849445 + 2474 1.20121815 0.14718457 27.00000000 0.26564892 + 2423 1.20541661 0.14718457 28.00000000 0.25633880 + 2392 1.21169311 0.14718457 29.00000000 0.25096525 + 2440 1.20586770 0.14718457 30.00000000 0.25499108 + 2545 1.20436032 0.14718457 31.00000000 0.24455444 + 2352 1.21263861 0.14718457 32.00000000 0.25321797 + 2411 1.20546822 0.14718457 33.00000000 0.25386370 + 2451 1.20553896 0.14718457 34.00000000 0.25158521 + 2373 1.20569181 0.14718457 35.00000000 0.25098503 + 2423 1.21139262 0.14718457 36.00000000 0.24126509 + 2414 1.19982661 0.14718457 37.00000000 0.25435426 + 2408 1.20662592 0.14718457 38.00000000 0.25294641 + 2480 1.20432581 0.14718457 39.00000000 0.24900975 + 2423 1.21088003 0.14718457 40.00000000 0.25562121 + 2403 1.20747161 0.14718457 41.00000000 0.25181148 + 2318 1.20805956 0.14718457 42.00000000 0.24865966 + 2395 1.20305878 0.14718457 43.00000000 0.25258434 + 2470 1.20772516 0.14718457 44.00000000 0.25113956 + 2370 1.20482044 0.14718457 45.00000000 0.24688097 + 2395 1.20693121 0.14718457 46.00000000 0.24441600 + 2358 1.21077837 0.14718457 47.00000000 0.24948881 + 2448 1.20572301 0.14718457 48.00000000 0.24822845 + 2472 1.20744711 0.14718457 49.00000000 0.25668705 + 2453 1.20110966 0.14718457 50.00000000 0.26091697 + 2355 1.20406686 0.14718457 51.00000000 0.25290616 + 2359 1.21006836 0.14718457 52.00000000 0.25351304 + 2391 1.20192635 0.14718457 53.00000000 0.25177015 + 2309 1.20905270 0.14718457 54.00000000 0.25366867 + 2364 1.20203243 0.14718457 55.00000000 0.25600877 + 2398 1.20037689 0.14718457 56.00000000 0.25435494 + 2363 1.20548979 0.14718457 57.00000000 0.24993747 + 2358 1.21088300 0.14718457 58.00000000 0.25401917 + 2403 1.20459775 0.14718457 59.00000000 0.25692868 + 2416 1.20720766 0.14718457 60.00000000 0.25606808 + 2407 1.20358994 0.14718457 61.00000000 0.25177657 + 2346 1.20960334 0.14718457 62.00000000 0.24802619 + 2373 1.21046906 0.14718457 63.00000000 0.25654052 + 2358 1.21274302 0.14718457 64.00000000 0.25685644 + 2356 1.20278142 0.14718457 65.00000000 0.24722595 + 2336 1.20711709 0.14718457 66.00000000 0.25179687 + 2389 1.21019088 0.14718457 67.00000000 0.24644672 + 2314 1.20633418 0.14718457 68.00000000 0.25985443 + 2413 1.20041350 0.14718457 69.00000000 0.25283546 + 2328 1.21112585 0.14718457 70.00000000 0.25195924 + 2306 1.20242654 0.14718457 71.00000000 0.26133067 + 2359 1.20756913 0.14718457 72.00000000 0.25266704 + 2329 1.21208590 0.14718457 73.00000000 0.25139210 + 2374 1.21036302 0.14718457 74.00000000 0.25932511 + 2291 1.20709163 0.14718457 75.00000000 0.25125262 + 2354 1.20474375 0.14718457 76.00000000 0.24873678 + 2275 1.21167320 0.14718457 77.00000000 0.24409239 + 2303 1.20643267 0.14718457 78.00000000 0.24631177 + 2418 1.20630701 0.14718457 79.00000000 0.24819842 + 2300 1.19925141 0.14718457 80.00000000 0.25061957 + 5261 1.72198222 0.30103000 1.00000000 0.25041251 + 5257 1.72329849 0.30103000 2.00000000 0.25040281 + 5183 1.71238991 0.30103000 3.00000000 0.24700870 + 5158 1.72272327 0.30103000 4.00000000 0.24923634 + 5271 1.71724073 0.30103000 5.00000000 0.24625698 + 5124 1.71737678 0.30103000 6.00000000 0.25274319 + 5138 1.72288205 0.30103000 7.00000000 0.24843508 + 5022 1.71824508 0.30103000 8.00000000 0.25578695 + 4979 1.71573170 0.30103000 9.00000000 0.24858876 + 5284 1.72544010 0.30103000 10.00000000 0.24951106 + 5068 1.72025222 0.30103000 11.00000000 0.24684544 + 5215 1.71915922 0.30103000 12.00000000 0.24707029 + 5037 1.71511187 0.30103000 13.00000000 0.25012609 + 5135 1.72202865 0.30103000 14.00000000 0.25024270 + 5039 1.71780267 0.30103000 15.00000000 0.25094904 + 5087 1.71577273 0.30103000 16.00000000 0.24716527 + 5072 1.71466692 0.30103000 17.00000000 0.25384665 + 5147 1.71526613 0.30103000 18.00000000 0.24935533 + 5008 1.71137889 0.30103000 19.00000000 0.25233920 + 5009 1.72182355 0.30103000 20.00000000 0.24942805 + 5051 1.72393651 0.30103000 21.00000000 0.25465872 + 5116 1.72181797 0.30103000 22.00000000 0.25260021 + 5044 1.71603269 0.30103000 23.00000000 0.24827705 + 5031 1.71931029 0.30103000 24.00000000 0.24699916 + 4987 1.72347071 0.30103000 25.00000000 0.24880907 + 5145 1.72017120 0.30103000 26.00000000 0.24888109 + 4862 1.71579712 0.30103000 27.00000000 0.25232556 + 4933 1.71559522 0.30103000 28.00000000 0.25700847 + 4839 1.72016193 0.30103000 29.00000000 0.24723873 + 4868 1.72041230 0.30103000 30.00000000 0.25198330 + 4914 1.71436004 0.30103000 31.00000000 0.25327214 + 5013 1.72730579 0.30103000 32.00000000 0.25264388 + 4918 1.72129242 0.30103000 33.00000000 0.25221089 + 4881 1.71971760 0.30103000 34.00000000 0.25283107 + 4779 1.71270977 0.30103000 35.00000000 0.24992314 + 4931 1.71762459 0.30103000 36.00000000 0.25727207 + 4905 1.72338183 0.30103000 37.00000000 0.25489241 + 4826 1.72040633 0.30103000 38.00000000 0.25283392 + 4873 1.71985241 0.30103000 39.00000000 0.25072652 + 4932 1.72208590 0.30103000 40.00000000 0.25740468 + 4914 1.72062247 0.30103000 41.00000000 0.25285800 + 4816 1.71228845 0.30103000 42.00000000 0.25087116 + 4931 1.72128420 0.30103000 43.00000000 0.25537117 + 4860 1.71745576 0.30103000 44.00000000 0.25102683 + 4890 1.72416280 0.30103000 45.00000000 0.25200210 + 4880 1.71831473 0.30103000 46.00000000 0.24876254 + 4858 1.71830960 0.30103000 47.00000000 0.25299448 + 4972 1.71737051 0.30103000 48.00000000 0.24713476 + 5018 1.71933532 0.30103000 49.00000000 0.25338030 + 4748 1.71785168 0.30103000 50.00000000 0.25268318 + 4789 1.72122870 0.30103000 51.00000000 0.24956640 + 4863 1.71883607 0.30103000 52.00000000 0.25119313 + 4776 1.71219892 0.30103000 53.00000000 0.25031540 + 4895 1.72243900 0.30103000 54.00000000 0.25321412 + 4811 1.71782484 0.30103000 55.00000000 0.24737526 + 4975 1.71893849 0.30103000 56.00000000 0.25367498 + 4816 1.71988735 0.30103000 57.00000000 0.24797704 + 4842 1.71443982 0.30103000 58.00000000 0.24959076 + 4833 1.72679587 0.30103000 59.00000000 0.25406547 + 4815 1.72083994 0.30103000 60.00000000 0.24711866 + 4744 1.71735287 0.30103000 61.00000000 0.24775883 + 4734 1.71908123 0.30103000 62.00000000 0.24800580 + 4851 1.71674582 0.30103000 63.00000000 0.25375006 + 4914 1.72174842 0.30103000 64.00000000 0.24942283 + 4707 1.72317749 0.30103000 65.00000000 0.25061265 + 4826 1.71752888 0.30103000 66.00000000 0.25443238 + 4807 1.72131757 0.30103000 67.00000000 0.25232290 + 4906 1.71332261 0.30103000 68.00000000 0.25247100 + 4893 1.72517166 0.30103000 69.00000000 0.25579504 + 4667 1.72237210 0.30103000 70.00000000 0.25368408 + 4713 1.71613563 0.30103000 71.00000000 0.24273876 + 4690 1.71939852 0.30103000 72.00000000 0.24816620 + 4715 1.72184386 0.30103000 73.00000000 0.25258362 + 4708 1.72551617 0.30103000 74.00000000 0.24747331 + 4687 1.71579713 0.30103000 75.00000000 0.24851538 + 4903 1.71365940 0.30103000 76.00000000 0.25109933 + 4662 1.71873859 0.30103000 77.00000000 0.25031449 + 4637 1.72031000 0.30103000 78.00000000 0.24717922 + 4789 1.72156681 0.30103000 79.00000000 0.24443894 + 4676 1.71696381 0.30103000 80.00000000 0.25212961 + 10502 2.44880593 0.45487534 1.00000000 0.24937541 + 10560 2.44987132 0.45487534 2.00000000 0.25166453 + 10659 2.44733756 0.45487534 3.00000000 0.25077197 + 10464 2.45115646 0.45487534 4.00000000 0.25114322 + 10390 2.45033098 0.45487534 5.00000000 0.24803164 + 10293 2.45247446 0.45487534 6.00000000 0.25103168 + 10503 2.45079582 0.45487534 7.00000000 0.24893445 + 10446 2.45381709 0.45487534 8.00000000 0.25632355 + 10296 2.45120098 0.45487534 9.00000000 0.25360806 + 10269 2.45265698 0.45487534 10.00000000 0.24792261 + 10552 2.45306412 0.45487534 11.00000000 0.25450427 + 10568 2.45381909 0.45487534 12.00000000 0.24971666 + 10274 2.44869185 0.45487534 13.00000000 0.24896471 + 10400 2.45499325 0.45487534 14.00000000 0.24990714 + 10278 2.44432749 0.45487534 15.00000000 0.25003623 + 10226 2.45865483 0.45487534 16.00000000 0.24743454 + 10377 2.45086395 0.45487534 17.00000000 0.24919140 + 10283 2.45209009 0.45487534 18.00000000 0.25026954 + 10212 2.45201959 0.45487534 19.00000000 0.25097763 + 10341 2.45148357 0.45487534 20.00000000 0.25245064 + 10247 2.44994839 0.45487534 21.00000000 0.25095810 + 10114 2.44970675 0.45487534 22.00000000 0.24844261 + 10062 2.44826052 0.45487534 23.00000000 0.24722557 + 10085 2.44675280 0.45487534 24.00000000 0.25008204 + 10291 2.45355124 0.45487534 25.00000000 0.24645430 + 10264 2.45046501 0.45487534 26.00000000 0.25070319 + 10218 2.44774506 0.45487534 27.00000000 0.24906820 + 10089 2.44782013 0.45487534 28.00000000 0.24796186 + 10180 2.45491428 0.45487534 29.00000000 0.24839106 + 10140 2.45568478 0.45487534 30.00000000 0.24870153 + 10089 2.45260591 0.45487534 31.00000000 0.24605513 + 9966 2.44237206 0.45487534 32.00000000 0.24906181 + 10021 2.44581796 0.45487534 33.00000000 0.24731708 + 10260 2.45018005 0.45487534 34.00000000 0.25010342 + 9879 2.45036569 0.45487534 35.00000000 0.25118430 + 10066 2.45089319 0.45487534 36.00000000 0.24831106 + 10231 2.45392838 0.45487534 37.00000000 0.24941693 + 9995 2.44625302 0.45487534 38.00000000 0.25125106 + 9959 2.45179808 0.45487534 39.00000000 0.25158035 + 9792 2.44967584 0.45487534 40.00000000 0.24966366 + 9861 2.45065897 0.45487534 41.00000000 0.24878990 + 9898 2.45097488 0.45487534 42.00000000 0.24989330 + 9901 2.44999970 0.45487534 43.00000000 0.25198781 + 9901 2.44675828 0.45487534 44.00000000 0.24949721 + 9884 2.44728109 0.45487534 45.00000000 0.25256280 + 9943 2.45248535 0.45487534 46.00000000 0.25373882 + 10050 2.45008974 0.45487534 47.00000000 0.24672896 + 9917 2.44684083 0.45487534 48.00000000 0.25201967 + 9759 2.45457469 0.45487534 49.00000000 0.25129989 + 9805 2.44505000 0.45487534 50.00000000 0.25057826 + 9867 2.44822415 0.45487534 51.00000000 0.24974414 + 9721 2.45609997 0.45487534 52.00000000 0.24745842 + 9791 2.44770484 0.45487534 53.00000000 0.25457603 + 9812 2.45027427 0.45487534 54.00000000 0.25072822 + 9747 2.44737678 0.45487534 55.00000000 0.25306163 + 9627 2.44512739 0.45487534 56.00000000 0.25165414 + 9887 2.45580888 0.45487534 57.00000000 0.24833025 + 9881 2.44627108 0.45487534 58.00000000 0.25157174 + 9783 2.45535524 0.45487534 59.00000000 0.25355349 + 9775 2.45387524 0.45487534 60.00000000 0.25034264 + 9574 2.45268750 0.45487534 61.00000000 0.25048304 + 9972 2.45314834 0.45487534 62.00000000 0.25278905 + 9617 2.44256594 0.45487534 63.00000000 0.24793802 + 9700 2.44967750 0.45487534 64.00000000 0.25193325 + 9618 2.45433916 0.45487534 65.00000000 0.25272482 + 9658 2.45024976 0.45487534 66.00000000 0.24903259 + 9766 2.44933218 0.45487534 67.00000000 0.24780024 + 9605 2.45499992 0.45487534 68.00000000 0.25070543 + 9619 2.45151270 0.45487534 69.00000000 0.24732529 + 9609 2.44175431 0.45487534 70.00000000 0.25486642 + 9508 2.44777005 0.45487534 71.00000000 0.24751134 + 9594 2.45222014 0.45487534 72.00000000 0.24794017 + 9574 2.45645598 0.45487534 73.00000000 0.25418088 + 9532 2.44865994 0.45487534 74.00000000 0.24955389 + 9644 2.45163018 0.45487534 75.00000000 0.25009618 + 9481 2.45228466 0.45487534 76.00000000 0.24907232 + 9416 2.44977556 0.45487534 77.00000000 0.25179226 + 9535 2.45343767 0.45487534 78.00000000 0.25255853 + 9462 2.45018720 0.45487534 79.00000000 0.25035488 + 9422 2.45114906 0.45487534 80.00000000 0.24855754 + 21391 3.49363041 0.60872281 1.00000000 0.24901921 + 21047 3.48925484 0.60872281 2.00000000 0.24849264 + 21189 3.49001919 0.60872281 3.00000000 0.24908057 + 21341 3.48904660 0.60872281 4.00000000 0.25147965 + 21393 3.48892611 0.60872281 5.00000000 0.25228487 + 21207 3.48741736 0.60872281 6.00000000 0.25112141 + 21131 3.49055880 0.60872281 7.00000000 0.25049952 + 21134 3.48340173 0.60872281 8.00000000 0.24817794 + 21168 3.48015204 0.60872281 9.00000000 0.24837837 + 21233 3.49132754 0.60872281 10.00000000 0.25043651 + 21254 3.49388466 0.60872281 11.00000000 0.24802331 + 21041 3.48552806 0.60872281 12.00000000 0.25167622 + 21155 3.49141272 0.60872281 13.00000000 0.24884965 + 20839 3.49147782 0.60872281 14.00000000 0.24922186 + 20880 3.48455033 0.60872281 15.00000000 0.25017817 + 20630 3.48726219 0.60872281 16.00000000 0.25086686 + 20858 3.49045632 0.60872281 17.00000000 0.25115300 + 21040 3.48918811 0.60872281 18.00000000 0.25107433 + 20910 3.49037462 0.60872281 19.00000000 0.25104593 + 20597 3.49649895 0.60872281 20.00000000 0.24914539 + 20717 3.48894334 0.60872281 21.00000000 0.24989721 + 20805 3.49278727 0.60872281 22.00000000 0.24825965 + 20756 3.49499081 0.60872281 23.00000000 0.24889072 + 20939 3.48779241 0.60872281 24.00000000 0.24775295 + 20733 3.48996909 0.60872281 25.00000000 0.25084995 + 20475 3.49016951 0.60872281 26.00000000 0.25036774 + 20753 3.49208208 0.60872281 27.00000000 0.25104585 + 20167 3.49147470 0.60872281 28.00000000 0.25281991 + 20673 3.49295930 0.60872281 29.00000000 0.25122999 + 20596 3.49235378 0.60872281 30.00000000 0.24908911 + 20610 3.49291425 0.60872281 31.00000000 0.25103633 + 20422 3.49377582 0.60872281 32.00000000 0.24891935 + 20500 3.49510130 0.60872281 33.00000000 0.25124347 + 20405 3.48919949 0.60872281 34.00000000 0.25261536 + 20567 3.49217232 0.60872281 35.00000000 0.24921344 + 20454 3.49202260 0.60872281 36.00000000 0.24875115 + 20401 3.49550352 0.60872281 37.00000000 0.25001144 + 20381 3.49345280 0.60872281 38.00000000 0.24975663 + 19989 3.49194750 0.60872281 39.00000000 0.24932107 + 20171 3.48977271 0.60872281 40.00000000 0.24921477 + 20129 3.49866778 0.60872281 41.00000000 0.24850835 + 20132 3.49489916 0.60872281 42.00000000 0.25105074 + 20048 3.49489986 0.60872281 43.00000000 0.25240038 + 20173 3.49350104 0.60872281 44.00000000 0.25036681 + 19978 3.48746732 0.60872281 45.00000000 0.24913210 + 20096 3.49428084 0.60872281 46.00000000 0.24970837 + 20017 3.49310946 0.60872281 47.00000000 0.24938494 + 20092 3.49658862 0.60872281 48.00000000 0.25064541 + 20061 3.49320540 0.60872281 49.00000000 0.25114357 + 19915 3.48945326 0.60872281 50.00000000 0.25255161 + 20048 3.48960369 0.60872281 51.00000000 0.25052228 + 19896 3.49253427 0.60872281 52.00000000 0.25280301 + 19957 3.49176640 0.60872281 53.00000000 0.24866156 + 19845 3.49086493 0.60872281 54.00000000 0.24923251 + 19932 3.49316091 0.60872281 55.00000000 0.25098290 + 19955 3.49463408 0.60872281 56.00000000 0.24884202 + 19594 3.49365888 0.60872281 57.00000000 0.25051386 + 19629 3.48479382 0.60872281 58.00000000 0.24836428 + 20193 3.49054145 0.60872281 59.00000000 0.25010282 + 19729 3.49518568 0.60872281 60.00000000 0.24748626 + 19892 3.48748722 0.60872281 61.00000000 0.24977909 + 19755 3.49485080 0.60872281 62.00000000 0.24849478 + 19687 3.49340132 0.60872281 63.00000000 0.25069155 + 19522 3.48813656 0.60872281 64.00000000 0.25193380 + 19643 3.49498699 0.60872281 65.00000000 0.24675315 + 19524 3.48777979 0.60872281 66.00000000 0.25117618 + 19668 3.48974884 0.60872281 67.00000000 0.24915650 + 19387 3.49024979 0.60872281 68.00000000 0.25337942 + 19466 3.48777861 0.60872281 69.00000000 0.25117499 + 19345 3.48461336 0.60872281 70.00000000 0.25234042 + 19362 3.49202889 0.60872281 71.00000000 0.24863342 + 19468 3.49041370 0.60872281 72.00000000 0.25165010 + 19419 3.49613814 0.60872281 73.00000000 0.25128694 + 19487 3.49212407 0.60872281 74.00000000 0.24941149 + 18941 3.48982034 0.60872281 75.00000000 0.25076152 + 19436 3.49539003 0.60872281 76.00000000 0.25107009 + 19364 3.48995370 0.60872281 77.00000000 0.25195369 + 19114 3.48975540 0.60872281 78.00000000 0.25014890 + 19050 3.49561649 0.60872281 79.00000000 0.24724128 + 19369 3.49309961 0.60872281 80.00000000 0.25066927 + 43135 4.97337704 0.76256829 1.00000000 0.24979380 + 42873 4.97624653 0.76256829 2.00000000 0.24910248 + 43263 4.97698339 0.76256829 3.00000000 0.25053609 + 43045 4.97240916 0.76256829 4.00000000 0.24971382 + 42955 4.97308218 0.76256829 5.00000000 0.25189755 + 43226 4.97039310 0.76256829 6.00000000 0.24888715 + 43122 4.97387732 0.76256829 7.00000000 0.24789218 + 42763 4.97689208 0.76256829 8.00000000 0.25181745 + 43288 4.97863746 0.76256829 9.00000000 0.24977679 + 42755 4.97841904 0.76256829 10.00000000 0.25083212 + 42611 4.97693976 0.76256829 11.00000000 0.25103723 + 42958 4.97610804 0.76256829 12.00000000 0.25056663 + 42524 4.97706963 0.76256829 13.00000000 0.24983625 + 42709 4.97866237 0.76256829 14.00000000 0.24816612 + 42746 4.97933967 0.76256829 15.00000000 0.25127962 + 42584 4.97407174 0.76256829 16.00000000 0.24946365 + 42346 4.97682215 0.76256829 17.00000000 0.24836737 + 41989 4.97775783 0.76256829 18.00000000 0.24937506 + 42308 4.97242219 0.76256829 19.00000000 0.24981772 + 42136 4.97149291 0.76256829 20.00000000 0.25152983 + 42153 4.97716233 0.76256829 21.00000000 0.24900620 + 41983 4.96924214 0.76256829 22.00000000 0.24959178 + 42105 4.97790949 0.76256829 23.00000000 0.25013245 + 41912 4.97745254 0.76256829 24.00000000 0.24992055 + 42065 4.97732742 0.76256829 25.00000000 0.24882380 + 41560 4.97739021 0.76256829 26.00000000 0.25170607 + 41751 4.97268487 0.76256829 27.00000000 0.25295867 + 41932 4.97716725 0.76256829 28.00000000 0.24870041 + 42011 4.98281704 0.76256829 29.00000000 0.25123451 + 41083 4.97433838 0.76256829 30.00000000 0.24834189 + 40980 4.97582664 0.76256829 31.00000000 0.25135984 + 41835 4.97233146 0.76256829 32.00000000 0.25201541 + 41466 4.97445166 0.76256829 33.00000000 0.24987277 + 41643 4.97832496 0.76256829 34.00000000 0.25019899 + 41689 4.97562119 0.76256829 35.00000000 0.24800066 + 41479 4.97205640 0.76256829 36.00000000 0.25020974 + 41274 4.97133795 0.76256829 37.00000000 0.24873398 + 41061 4.97287461 0.76256829 38.00000000 0.25108671 + 41375 4.97221645 0.76256829 39.00000000 0.25051035 + 41269 4.97135776 0.76256829 40.00000000 0.25015615 + 41307 4.96956460 0.76256829 41.00000000 0.24865585 + 40793 4.97252089 0.76256829 42.00000000 0.25022166 + 41027 4.97628190 0.76256829 43.00000000 0.24944773 + 41176 4.97934419 0.76256829 44.00000000 0.25000789 + 40914 4.97375105 0.76256829 45.00000000 0.25003682 + 40560 4.97988960 0.76256829 46.00000000 0.25010884 + 40757 4.97237527 0.76256829 47.00000000 0.25065375 + 40684 4.97669396 0.76256829 48.00000000 0.24896430 + 40650 4.97612268 0.76256829 49.00000000 0.24831424 + 40569 4.97414976 0.76256829 50.00000000 0.25094773 + 40384 4.97020053 0.76256829 51.00000000 0.24962246 + 40061 4.97827526 0.76256829 52.00000000 0.25134832 + 40978 4.97697642 0.76256829 53.00000000 0.25128600 + 40432 4.97313964 0.76256829 54.00000000 0.25212540 + 40457 4.97841777 0.76256829 55.00000000 0.25035657 + 40366 4.97223742 0.76256829 56.00000000 0.25034027 + 40448 4.97725285 0.76256829 57.00000000 0.24878800 + 40161 4.97223924 0.76256829 58.00000000 0.25063251 + 40109 4.97824253 0.76256829 59.00000000 0.25195812 + 40321 4.97780716 0.76256829 60.00000000 0.25118588 + 40292 4.98285502 0.76256829 61.00000000 0.24757666 + 40154 4.97724398 0.76256829 62.00000000 0.25141684 + 39966 4.98225838 0.76256829 63.00000000 0.25030289 + 39487 4.97377374 0.76256829 64.00000000 0.24982007 + 39527 4.97023101 0.76256829 65.00000000 0.24911644 + 39764 4.97733525 0.76256829 66.00000000 0.25088772 + 39464 4.98197315 0.76256829 67.00000000 0.24920565 + 39644 4.97417282 0.76256829 68.00000000 0.24971757 + 39356 4.97447349 0.76256829 69.00000000 0.24922031 + 39806 4.97168451 0.76256829 70.00000000 0.25141809 + 39354 4.97911277 0.76256829 71.00000000 0.25009555 + 39264 4.97436837 0.76256829 72.00000000 0.25071445 + 39610 4.97520949 0.76256829 73.00000000 0.24959593 + 39136 4.98145265 0.76256829 74.00000000 0.25075226 + 38945 4.97983563 0.76256829 75.00000000 0.24900555 + 39278 4.97322178 0.76256829 76.00000000 0.24951029 + 38802 4.97913745 0.76256829 77.00000000 0.25086844 + 39047 4.97328106 0.76256829 78.00000000 0.25150577 + 38806 4.97671129 0.76256829 79.00000000 0.25040064 + 39155 4.98062369 0.76256829 80.00000000 0.24855446 + 87642 7.08892900 0.91641447 1.00000000 0.24871780 + 87642 7.08721240 0.91641447 2.00000000 0.25001758 + 87520 7.09061535 0.91641447 3.00000000 0.24954524 + 87877 7.09117303 0.91641447 4.00000000 0.24929586 + 87197 7.09385937 0.91641447 5.00000000 0.24921198 + 87146 7.08949338 0.91641447 6.00000000 0.24940902 + 87060 7.08884714 0.91641447 7.00000000 0.24874534 + 86560 7.09087233 0.91641447 8.00000000 0.24975810 + 86856 7.09305198 0.91641447 9.00000000 0.24911355 + 86852 7.08360211 0.91641447 10.00000000 0.24977324 + 86430 7.08844163 0.91641447 11.00000000 0.25084662 + 86714 7.09344758 0.91641447 12.00000000 0.25129314 + 86160 7.09105329 0.91641447 13.00000000 0.25100402 + 86086 7.09183436 0.91641447 14.00000000 0.24920819 + 85928 7.09029395 0.91641447 15.00000000 0.25182927 + 85592 7.08814556 0.91641447 16.00000000 0.24882328 + 86583 7.08788326 0.91641447 17.00000000 0.24889465 + 85594 7.09085252 0.91641447 18.00000000 0.25084946 + 85022 7.09229071 0.91641447 19.00000000 0.25109743 + 85265 7.09423045 0.91641447 20.00000000 0.25059956 + 85644 7.09477482 0.91641447 21.00000000 0.25113572 + 85370 7.08884330 0.91641447 22.00000000 0.25030108 + 84856 7.08603478 0.91641447 23.00000000 0.25029377 + 85292 7.09092505 0.91641447 24.00000000 0.25085274 + 85180 7.08620652 0.91641447 25.00000000 0.25121501 + 85687 7.09155166 0.91641447 26.00000000 0.25150564 + 84511 7.08984725 0.91641447 27.00000000 0.24944233 + 84662 7.08221979 0.91641447 28.00000000 0.24980497 + 84050 7.09564136 0.91641447 29.00000000 0.25058074 + 84361 7.09457224 0.91641447 30.00000000 0.24989923 + 84384 7.09102512 0.91641447 31.00000000 0.24996699 + 83960 7.09388354 0.91641447 32.00000000 0.25026109 + 84127 7.08979469 0.91641447 33.00000000 0.25123485 + 84012 7.09246716 0.91641447 34.00000000 0.25004502 + 84249 7.09055882 0.91641447 35.00000000 0.24960714 + 84010 7.09457835 0.91641447 36.00000000 0.25060222 + 83421 7.08639144 0.91641447 37.00000000 0.24986883 + 83392 7.09058824 0.91641447 38.00000000 0.24951244 + 83345 7.09439090 0.91641447 39.00000000 0.25155153 + 83614 7.08622951 0.91641447 40.00000000 0.25060695 + 82757 7.09069089 0.91641447 41.00000000 0.24970076 + 82871 7.09145957 0.91641447 42.00000000 0.25079164 + 82701 7.08692509 0.91641447 43.00000000 0.25141317 + 82555 7.09241920 0.91641447 44.00000000 0.25087714 + 81935 7.09110345 0.91641447 45.00000000 0.25012457 + 82404 7.09045139 0.91641447 46.00000000 0.25073877 + 82786 7.09071870 0.91641447 47.00000000 0.25038219 + 82150 7.09393224 0.91641447 48.00000000 0.25221323 + 82284 7.09035734 0.91641447 49.00000000 0.25019509 + 82133 7.09509356 0.91641447 50.00000000 0.24925425 + 82322 7.09099868 0.91641447 51.00000000 0.25028275 + 82297 7.08735063 0.91641447 52.00000000 0.24967327 + 81779 7.09835072 0.91641447 53.00000000 0.24907598 + 81555 7.08926834 0.91641447 54.00000000 0.25136459 + 82187 7.08994059 0.91641447 55.00000000 0.25059347 + 81154 7.09062350 0.91641447 56.00000000 0.25073500 + 81355 7.09230024 0.91641447 57.00000000 0.25071861 + 81174 7.08727003 0.91641447 58.00000000 0.24948013 + 81702 7.09039672 0.91641447 59.00000000 0.25104519 + 81942 7.08693936 0.91641447 60.00000000 0.24989527 + 81457 7.08561447 0.91641447 61.00000000 0.24964558 + 80789 7.09840327 0.91641447 62.00000000 0.25097444 + 80388 7.09269583 0.91641447 63.00000000 0.24927652 + 80805 7.08472065 0.91641447 64.00000000 0.25050077 + 80588 7.09703413 0.91641447 65.00000000 0.25084397 + 80140 7.09176065 0.91641447 66.00000000 0.24886361 + 80606 7.09175933 0.91641447 67.00000000 0.25109631 + 80344 7.09143869 0.91641447 68.00000000 0.25028717 + 80342 7.09287465 0.91641447 69.00000000 0.24949659 + 79901 7.08978674 0.91641447 70.00000000 0.25080402 + 79548 7.09037388 0.91641447 71.00000000 0.24990270 + 79498 7.08803803 0.91641447 72.00000000 0.25086620 + 79910 7.09906024 0.91641447 73.00000000 0.25159566 + 80053 7.08946131 0.91641447 74.00000000 0.25046649 + 79387 7.08936970 0.91641447 75.00000000 0.25005805 + 79736 7.09561737 0.91641447 76.00000000 0.25017419 + 78985 7.08626082 0.91641447 77.00000000 0.25058076 + 80017 7.08802716 0.91641447 78.00000000 0.25041702 + 79110 7.09126342 0.91641447 79.00000000 0.24900174 + 79240 7.09283409 0.91641447 80.00000000 0.25045390 + 177021 10.10473337 1.07025958 1.00000000 0.25012431 + 177139 10.10042090 1.07025958 2.00000000 0.25059436 + 176919 10.10374697 1.07025958 3.00000000 0.24987918 + 177274 10.10296827 1.07025958 4.00000000 0.24899636 + 176284 10.09586153 1.07025958 5.00000000 0.25098915 + 176471 10.09999437 1.07025958 6.00000000 0.25047487 + 176630 10.10288385 1.07025958 7.00000000 0.24986723 + 176028 10.10267406 1.07025958 8.00000000 0.24984973 + 175673 10.10228465 1.07025958 9.00000000 0.25027408 + 175618 10.10883222 1.07025958 10.00000000 0.25076162 + 175392 10.10030553 1.07025958 11.00000000 0.24946641 + 174704 10.10200022 1.07025958 12.00000000 0.24999819 + 175177 10.10875305 1.07025958 13.00000000 0.25011243 + 174798 10.10139731 1.07025958 14.00000000 0.25055206 + 173871 10.10466498 1.07025958 15.00000000 0.25077921 + 174230 10.10713226 1.07025958 16.00000000 0.25013472 + 173428 10.10037208 1.07025958 17.00000000 0.25089603 + 174272 10.10688096 1.07025958 18.00000000 0.25016897 + 172416 10.10093272 1.07025958 19.00000000 0.25052284 + 173249 10.10388048 1.07025958 20.00000000 0.25072465 + 172832 10.09745389 1.07025958 21.00000000 0.24941757 + 172118 10.10261407 1.07025958 22.00000000 0.24963953 + 172139 10.10616118 1.07025958 23.00000000 0.25036731 + 171919 10.10565057 1.07025958 24.00000000 0.24970517 + 171731 10.10123078 1.07025958 25.00000000 0.25027187 + 171147 10.09946605 1.07025958 26.00000000 0.25076664 + 171881 10.10187499 1.07025958 27.00000000 0.25089407 + 172520 10.10339268 1.07025958 28.00000000 0.25035421 + 171431 10.10534788 1.07025958 29.00000000 0.25057090 + 170600 10.10010710 1.07025958 30.00000000 0.25017841 + 170070 10.10514391 1.07025958 31.00000000 0.24982591 + 169880 10.10118481 1.07025958 32.00000000 0.25047689 + 170174 10.10504626 1.07025958 33.00000000 0.25099718 + 169613 10.10211533 1.07025958 34.00000000 0.24972164 + 170109 10.10560504 1.07025958 35.00000000 0.24990297 + 169749 10.10056055 1.07025958 36.00000000 0.25080045 + 169045 10.09944635 1.07025958 37.00000000 0.25040027 + 169193 10.10215972 1.07025958 38.00000000 0.25001832 + 168333 10.10552103 1.07025958 39.00000000 0.25024787 + 168029 10.10393346 1.07025958 40.00000000 0.25086223 + 168371 10.10543821 1.07025958 41.00000000 0.25088488 + 168085 10.10292957 1.07025958 42.00000000 0.25034365 + 168225 10.10277372 1.07025958 43.00000000 0.24988979 + 167970 10.10482374 1.07025958 44.00000000 0.25036467 + 168006 10.10323032 1.07025958 45.00000000 0.25108828 + 167334 10.10129583 1.07025958 46.00000000 0.24955294 + 166853 10.10560279 1.07025958 47.00000000 0.25055761 + 167552 10.10076373 1.07025958 48.00000000 0.25019221 + 165807 10.10453678 1.07025958 49.00000000 0.24979830 + 165599 10.10698245 1.07025958 50.00000000 0.25056672 + 165981 10.10322603 1.07025958 51.00000000 0.25029233 + 165339 10.10589060 1.07025958 52.00000000 0.25044736 + 165495 10.10796224 1.07025958 53.00000000 0.25018109 + 165103 10.10111890 1.07025958 54.00000000 0.25139598 + 164857 10.10404718 1.07025958 55.00000000 0.25047731 + 165079 10.11181137 1.07025958 56.00000000 0.25059552 + 164586 10.10178194 1.07025958 57.00000000 0.25013675 + 165112 10.10873577 1.07025958 58.00000000 0.24968206 + 164598 10.09798757 1.07025958 59.00000000 0.25031982 + 164093 10.10577442 1.07025958 60.00000000 0.24991174 + 164929 10.10217910 1.07025958 61.00000000 0.25012233 + 163971 10.09768550 1.07025958 62.00000000 0.25100899 + 163275 10.10737264 1.07025958 63.00000000 0.24910572 + 163304 10.10184928 1.07025958 64.00000000 0.24986071 + 163167 10.10072349 1.07025958 65.00000000 0.25031213 + 162343 10.10742502 1.07025958 66.00000000 0.25042625 + 162162 10.10930329 1.07025958 67.00000000 0.24999470 + 162958 10.09573190 1.07025958 68.00000000 0.24961626 + 162722 10.10843997 1.07025958 69.00000000 0.25039305 + 162527 10.10436392 1.07025958 70.00000000 0.25033104 + 161926 10.10419304 1.07025958 71.00000000 0.25055654 + 161342 10.10166552 1.07025958 72.00000000 0.25105837 + 161185 10.10218921 1.07025958 73.00000000 0.25071140 + 161413 10.09992008 1.07025958 74.00000000 0.25055730 + 160382 10.09966457 1.07025958 75.00000000 0.24982399 + 161663 10.10751892 1.07025958 76.00000000 0.25118177 + 161001 10.10504705 1.07025958 77.00000000 0.25024502 + 160545 10.10615081 1.07025958 78.00000000 0.25031607 + 160109 10.09684165 1.07025958 79.00000000 0.25037684 + 158560 10.10566429 1.07025958 80.00000000 0.25026706 + 358087 14.39867256 1.22410814 1.00000000 0.24999937 + 358192 14.39840672 1.22410814 2.00000000 0.25068965 + 357387 14.40447263 1.22410814 3.00000000 0.24941568 + 358557 14.40217921 1.22410814 4.00000000 0.25009789 + 356011 14.39821895 1.22410814 5.00000000 0.24998817 + 357128 14.39992357 1.22410814 6.00000000 0.25036494 + 356772 14.40443182 1.22410814 7.00000000 0.25026847 + 355767 14.39813271 1.22410814 8.00000000 0.25012963 + 355265 14.39560421 1.22410814 9.00000000 0.25057180 + 354296 14.39649144 1.22410814 10.00000000 0.25011815 + 354598 14.40222350 1.22410814 11.00000000 0.25077311 + 354110 14.39547019 1.22410814 12.00000000 0.24981030 + 353678 14.39671823 1.22410814 13.00000000 0.25017482 + 352345 14.39386708 1.22410814 14.00000000 0.25052488 + 351917 14.39746712 1.22410814 15.00000000 0.24992793 + 352308 14.39586373 1.22410814 16.00000000 0.25085776 + 352130 14.40355622 1.22410814 17.00000000 0.25050203 + 351096 14.40228656 1.22410814 18.00000000 0.25033275 + 349354 14.39877607 1.22410814 19.00000000 0.25010343 + 349881 14.40265861 1.22410814 20.00000000 0.25030082 + 349086 14.39986744 1.22410814 21.00000000 0.25063138 + 348302 14.38859300 1.22410814 22.00000000 0.25102261 + 347218 14.39789952 1.22410814 23.00000000 0.25005800 + 347708 14.39576792 1.22410814 24.00000000 0.24978795 + 347796 14.39540619 1.22410814 25.00000000 0.25061443 + 346635 14.39579123 1.22410814 26.00000000 0.24965685 + 345620 14.39632322 1.22410814 27.00000000 0.25052428 + 345597 14.39810446 1.22410814 28.00000000 0.25041807 + 344859 14.40136368 1.22410814 29.00000000 0.25057090 + 345122 14.40392323 1.22410814 30.00000000 0.25053693 + 344764 14.40078356 1.22410814 31.00000000 0.25067979 + 343549 14.40086458 1.22410814 32.00000000 0.24989539 + 344354 14.39618878 1.22410814 33.00000000 0.25077351 + 343359 14.39771447 1.22410814 34.00000000 0.25057955 + 342489 14.39771193 1.22410814 35.00000000 0.24979181 + 342743 14.39382875 1.22410814 36.00000000 0.25005823 + 342444 14.39884355 1.22410814 37.00000000 0.25087358 + 341984 14.40025571 1.22410814 38.00000000 0.24995811 + 341244 14.39894910 1.22410814 39.00000000 0.25071892 + 340645 14.39564273 1.22410814 40.00000000 0.24993943 + 341339 14.40323300 1.22410814 41.00000000 0.25062664 + 339520 14.40322896 1.22410814 42.00000000 0.25082887 + 339246 14.39640129 1.22410814 43.00000000 0.25063491 + 339373 14.40046194 1.22410814 44.00000000 0.25072002 + 338439 14.39771181 1.22410814 45.00000000 0.25100077 + 339071 14.40066167 1.22410814 46.00000000 0.25081064 + 338239 14.39731618 1.22410814 47.00000000 0.25049294 + 336951 14.39624535 1.22410814 48.00000000 0.25001517 + 337097 14.39798224 1.22410814 49.00000000 0.24991087 + 336280 14.39615251 1.22410814 50.00000000 0.25063720 + 336269 14.39863747 1.22410814 51.00000000 0.25014120 + 335675 14.39710815 1.22410814 52.00000000 0.25045326 + 334371 14.39892770 1.22410814 53.00000000 0.25114622 + 334600 14.40128011 1.22410814 54.00000000 0.25045661 + 333502 14.40059445 1.22410814 55.00000000 0.25071042 + 333753 14.39274809 1.22410814 56.00000000 0.25021988 + 332064 14.39582787 1.22410814 57.00000000 0.25046235 + 333136 14.39737892 1.22410814 58.00000000 0.25029392 + 332218 14.39705570 1.22410814 59.00000000 0.24974383 + 332466 14.39638389 1.22410814 60.00000000 0.24969334 + 331664 14.39461956 1.22410814 61.00000000 0.25060621 + 330229 14.40184533 1.22410814 62.00000000 0.25021217 + 330245 14.40149884 1.22410814 63.00000000 0.25021211 + 329419 14.39785919 1.22410814 64.00000000 0.24965874 + 330058 14.39867861 1.22410814 65.00000000 0.25019398 + 329700 14.39718457 1.22410814 66.00000000 0.25052069 + 329117 14.39443903 1.22410814 67.00000000 0.25016880 + 328848 14.39738698 1.22410814 68.00000000 0.25018686 + 328211 14.40405652 1.22410814 69.00000000 0.25028481 + 327756 14.39719794 1.22410814 70.00000000 0.25058034 + 326905 14.39870995 1.22410814 71.00000000 0.25072066 + 327448 14.40003251 1.22410814 72.00000000 0.24960917 + 326559 14.39104757 1.22410814 73.00000000 0.25022916 + 325410 14.38966882 1.22410814 74.00000000 0.25090970 + 325362 14.39684287 1.22410814 75.00000000 0.24992325 + 324965 14.40075106 1.22410814 76.00000000 0.24989508 + 324669 14.40220359 1.22410814 77.00000000 0.25020726 + 324169 14.40673251 1.22410814 78.00000000 0.25104816 + 322804 14.39875045 1.22410814 79.00000000 0.25015639 + 322667 14.39344422 1.22410814 80.00000000 0.25038383 + 721405 20.51987576 1.37795248 1.00000000 0.24979265 + 720295 20.52056870 1.37795248 2.00000000 0.24988445 + 719700 20.51474860 1.37795248 3.00000000 0.25046555 + 719280 20.51644687 1.37795248 4.00000000 0.25036369 + 719001 20.51532930 1.37795248 5.00000000 0.25040997 + 718697 20.51667831 1.37795248 6.00000000 0.25067908 + 717678 20.51355059 1.37795248 7.00000000 0.25120785 + 718303 20.51449405 1.37795248 8.00000000 0.25060904 + 714388 20.51939346 1.37795248 9.00000000 0.25066986 + 715591 20.51678528 1.37795248 10.00000000 0.25024242 + 713260 20.51819638 1.37795248 11.00000000 0.25035589 + 713271 20.51335936 1.37795248 12.00000000 0.25081754 + 711370 20.51848243 1.37795248 13.00000000 0.25029395 + 711451 20.51584720 1.37795248 14.00000000 0.25041388 + 707401 20.51918522 1.37795248 15.00000000 0.25039570 + 710134 20.52298797 1.37795248 16.00000000 0.25089886 + 708556 20.51817552 1.37795248 17.00000000 0.25028513 + 707090 20.51503567 1.37795248 18.00000000 0.25064002 + 707620 20.51988212 1.37795248 19.00000000 0.25030578 + 703424 20.52120179 1.37795248 20.00000000 0.25071222 + 702569 20.51494789 1.37795248 21.00000000 0.24998514 + 702489 20.51796110 1.37795248 22.00000000 0.25034160 + 701008 20.52290406 1.37795248 23.00000000 0.24999942 + 700153 20.51836391 1.37795248 24.00000000 0.25037375 + 700310 20.51402356 1.37795248 25.00000000 0.25013362 + 698611 20.51845689 1.37795248 26.00000000 0.25066228 + 696878 20.51688962 1.37795248 27.00000000 0.25060093 + 695637 20.51704580 1.37795248 28.00000000 0.25030745 + 695566 20.51623158 1.37795248 29.00000000 0.25052850 + 694887 20.51420155 1.37795248 30.00000000 0.25043987 + 694292 20.51537817 1.37795248 31.00000000 0.25091018 + 693640 20.51634354 1.37795248 32.00000000 0.25017874 + 690949 20.51847579 1.37795248 33.00000000 0.25040712 + 691098 20.51756605 1.37795248 34.00000000 0.25056191 + 689874 20.52670060 1.37795248 35.00000000 0.25062204 + 688390 20.51749807 1.37795248 36.00000000 0.25030481 + 688436 20.51570834 1.37795248 37.00000000 0.25045744 + 689351 20.51836777 1.37795248 38.00000000 0.25034227 + 686631 20.51583893 1.37795248 39.00000000 0.25047803 + 684991 20.52497711 1.37795248 40.00000000 0.25065002 + 685316 20.51579119 1.37795248 41.00000000 0.25086516 + 685379 20.52112924 1.37795248 42.00000000 0.25091184 + 682058 20.51953578 1.37795248 43.00000000 0.25065966 + 683704 20.51508538 1.37795248 44.00000000 0.25080180 + 682189 20.51663860 1.37795248 45.00000000 0.25035903 + 682225 20.52028128 1.37795248 46.00000000 0.25106549 + 679870 20.51657124 1.37795248 47.00000000 0.25024742 + 678338 20.52382864 1.37795248 48.00000000 0.25042309 + 679327 20.52101391 1.37795248 49.00000000 0.25052212 + 677790 20.52234221 1.37795248 50.00000000 0.25057184 + 676294 20.51812333 1.37795248 51.00000000 0.25059891 + 675495 20.51662619 1.37795248 52.00000000 0.25056387 + 675298 20.52107524 1.37795248 53.00000000 0.25043389 + 675134 20.52017975 1.37795248 54.00000000 0.25021365 + 672956 20.51638271 1.37795248 55.00000000 0.25065020 + 673598 20.52027264 1.37795248 56.00000000 0.25036305 + 670857 20.52012101 1.37795248 57.00000000 0.25038900 + 670506 20.51406117 1.37795248 58.00000000 0.25034202 + 670340 20.51656668 1.37795248 59.00000000 0.25019647 + 667758 20.51683938 1.37795248 60.00000000 0.25008290 + 668927 20.51275267 1.37795248 61.00000000 0.25015549 + 667382 20.51570699 1.37795248 62.00000000 0.25030339 + 666077 20.51533579 1.37795248 63.00000000 0.25033187 + 664934 20.51589478 1.37795248 64.00000000 0.25030861 + 663996 20.51794542 1.37795248 65.00000000 0.25016700 + 664139 20.51356665 1.37795248 66.00000000 0.25080015 + 663949 20.51670202 1.37795248 67.00000000 0.25021871 + 661722 20.51617329 1.37795248 68.00000000 0.25028917 + 659832 20.51438841 1.37795248 69.00000000 0.25032024 + 658676 20.51348252 1.37795248 70.00000000 0.25038570 + 658452 20.51360683 1.37795248 71.00000000 0.25039471 + 657035 20.52584161 1.37795248 72.00000000 0.25009494 + 656905 20.51480027 1.37795248 73.00000000 0.25035934 + 656374 20.51754602 1.37795248 74.00000000 0.24970334 + 655660 20.51532396 1.37795248 75.00000000 0.25076855 + 654062 20.52347412 1.37795248 76.00000000 0.25055471 + 653496 20.51719813 1.37795248 77.00000000 0.25085610 + 650538 20.51775271 1.37795248 78.00000000 0.25018920 + 650321 20.51294823 1.37795248 79.00000000 0.25057156 + 650021 20.51798178 1.37795248 80.00000000 0.25036584 diff --git a/theory/tests/cmass_DR_periodic b/theory/tests/cmass_DR_periodic index 61f6f66b..c00ac44e 100644 --- a/theory/tests/cmass_DR_periodic +++ b/theory/tests/cmass_DR_periodic @@ -1,1120 +1,1120 @@ - 79 0.20855053 -0.62204752 1.00000000 0.24357345 - 63 0.20738666 -0.62204752 2.00000000 0.24703637 - 85 0.20811062 -0.62204752 3.00000000 0.26444588 - 71 0.20423465 -0.62204752 4.00000000 0.23861870 - 77 0.20389037 -0.62204752 5.00000000 0.20344381 - 77 0.20316577 -0.62204752 6.00000000 0.26559186 - 67 0.20789033 -0.62204752 7.00000000 0.21120747 - 69 0.20456204 -0.62204752 8.00000000 0.27010974 - 68 0.20556634 -0.62204752 9.00000000 0.23206119 - 65 0.20576203 -0.62204752 10.00000000 0.22447927 - 68 0.20522147 -0.62204752 11.00000000 0.27960899 - 65 0.20449168 -0.62204752 12.00000000 0.26757590 - 64 0.20611204 -0.62204752 13.00000000 0.21906213 - 69 0.20802822 -0.62204752 14.00000000 0.27771316 - 75 0.20365242 -0.62204752 15.00000000 0.21758112 - 73 0.20266199 -0.62204752 16.00000000 0.26248689 - 88 0.20393350 -0.62204752 17.00000000 0.21723357 - 76 0.20356092 -0.62204752 18.00000000 0.20702802 - 90 0.20357265 -0.62204752 19.00000000 0.26469113 - 72 0.20870180 -0.62204752 20.00000000 0.26487531 - 86 0.20748066 -0.62204752 21.00000000 0.25997167 - 72 0.20405768 -0.62204752 22.00000000 0.20881748 - 63 0.20868910 -0.62204752 23.00000000 0.28573606 - 75 0.20485392 -0.62204752 24.00000000 0.22883442 - 70 0.20557159 -0.62204752 25.00000000 0.24817285 - 63 0.20772896 -0.62204752 26.00000000 0.20701463 - 67 0.20487260 -0.62204752 27.00000000 0.27347167 - 76 0.20592650 -0.62204752 28.00000000 0.24882996 - 75 0.20584870 -0.62204752 29.00000000 0.24472421 - 59 0.20605207 -0.62204752 30.00000000 0.24641980 - 84 0.20692450 -0.62204752 31.00000000 0.22448177 - 72 0.20458811 -0.62204752 32.00000000 0.20501296 - 74 0.19868427 -0.62204752 33.00000000 0.23918433 - 72 0.20430633 -0.62204752 34.00000000 0.20448322 - 82 0.20526298 -0.62204752 35.00000000 0.26038029 - 81 0.20582327 -0.62204752 36.00000000 0.26073103 - 54 0.21073297 -0.62204752 37.00000000 0.24357400 - 62 0.20583947 -0.62204752 38.00000000 0.22214915 - 79 0.20107614 -0.62204752 39.00000000 0.21404962 - 63 0.20705791 -0.62204752 40.00000000 0.23284988 - 66 0.20441715 -0.62204752 41.00000000 0.27494904 - 69 0.20631689 -0.62204752 42.00000000 0.26735654 - 70 0.20980756 -0.62204752 43.00000000 0.24091799 - 76 0.20637839 -0.62204752 44.00000000 0.22890315 - 78 0.20685443 -0.62204752 45.00000000 0.23430933 - 78 0.20411101 -0.62204752 46.00000000 0.25816003 - 71 0.20255424 -0.62204752 47.00000000 0.25774302 - 76 0.20872580 -0.62204752 48.00000000 0.22685713 - 72 0.20924224 -0.62204752 49.00000000 0.23466940 - 74 0.20617418 -0.62204752 50.00000000 0.27610429 - 63 0.20389871 -0.62204752 51.00000000 0.24323466 - 72 0.20534751 -0.62204752 52.00000000 0.30045262 - 60 0.20582372 -0.62204752 53.00000000 0.23001634 - 66 0.20153307 -0.62204752 54.00000000 0.24541444 - 76 0.20809843 -0.62204752 55.00000000 0.27203350 - 86 0.20300359 -0.62204752 56.00000000 0.27307067 - 76 0.20701862 -0.62204752 57.00000000 0.26297570 - 83 0.20352978 -0.62204752 58.00000000 0.24947282 - 64 0.20379897 -0.62204752 59.00000000 0.23551398 - 79 0.20335377 -0.62204752 60.00000000 0.25287584 - 57 0.20912158 -0.62204752 61.00000000 0.29138291 - 73 0.20821944 -0.62204752 62.00000000 0.24918699 - 70 0.20589348 -0.62204752 63.00000000 0.28555087 - 65 0.20706050 -0.62204752 64.00000000 0.25126265 - 59 0.20506014 -0.62204752 65.00000000 0.25489341 - 69 0.19827884 -0.62204752 66.00000000 0.27569288 - 79 0.21095751 -0.62204752 67.00000000 0.24974385 - 75 0.20126661 -0.62204752 68.00000000 0.23264031 - 60 0.20340291 -0.62204752 69.00000000 0.20078150 - 63 0.20375787 -0.62204752 70.00000000 0.25498347 - 68 0.20316888 -0.62204752 71.00000000 0.27194234 - 61 0.20339782 -0.62204752 72.00000000 0.29651284 - 68 0.20759729 -0.62204752 73.00000000 0.25674596 - 71 0.21074426 -0.62204752 74.00000000 0.30380497 - 77 0.20165881 -0.62204752 75.00000000 0.25017876 - 53 0.20818179 -0.62204752 76.00000000 0.24465545 - 61 0.20335590 -0.62204752 77.00000000 0.20609063 - 57 0.20556856 -0.62204752 78.00000000 0.29165347 - 56 0.20387733 -0.62204752 79.00000000 0.22694727 - 78 0.20737653 -0.62204752 80.00000000 0.28700101 - 153 0.29470608 -0.46820059 1.00000000 0.21320953 - 142 0.29095413 -0.46820059 2.00000000 0.26067311 - 147 0.29372732 -0.46820059 3.00000000 0.23497285 - 142 0.29091622 -0.46820059 4.00000000 0.21242034 - 152 0.29525933 -0.46820059 5.00000000 0.25487567 - 148 0.29394005 -0.46820059 6.00000000 0.25370716 - 151 0.29218487 -0.46820059 7.00000000 0.27748249 - 156 0.29207373 -0.46820059 8.00000000 0.23771867 - 125 0.29268456 -0.46820059 9.00000000 0.22895148 - 154 0.29122479 -0.46820059 10.00000000 0.27916324 - 143 0.29543724 -0.46820059 11.00000000 0.24720323 - 146 0.29082655 -0.46820059 12.00000000 0.25825860 - 146 0.29396348 -0.46820059 13.00000000 0.23019549 - 137 0.29676333 -0.46820059 14.00000000 0.24283948 - 145 0.29171684 -0.46820059 15.00000000 0.28600109 - 137 0.28770924 -0.46820059 16.00000000 0.24186942 - 158 0.29535691 -0.46820059 17.00000000 0.27267783 - 163 0.29577986 -0.46820059 18.00000000 0.24849144 - 165 0.29030048 -0.46820059 19.00000000 0.24242066 - 142 0.29249028 -0.46820059 20.00000000 0.27195425 - 146 0.29482481 -0.46820059 21.00000000 0.24519404 - 143 0.29316775 -0.46820059 22.00000000 0.26847275 - 151 0.29460644 -0.46820059 23.00000000 0.26416693 - 142 0.28950087 -0.46820059 24.00000000 0.23280998 - 145 0.29374155 -0.46820059 25.00000000 0.25950454 - 135 0.29281250 -0.46820059 26.00000000 0.21853331 - 126 0.28935920 -0.46820059 27.00000000 0.23370633 - 116 0.29363094 -0.46820059 28.00000000 0.25864969 - 117 0.29153393 -0.46820059 29.00000000 0.28384371 - 156 0.29199172 -0.46820059 30.00000000 0.23071081 - 143 0.29147544 -0.46820059 31.00000000 0.20790481 - 147 0.28995410 -0.46820059 32.00000000 0.23609655 - 159 0.28940938 -0.46820059 33.00000000 0.23337768 - 151 0.29124690 -0.46820059 34.00000000 0.26990905 - 139 0.29704287 -0.46820059 35.00000000 0.25288678 - 147 0.29175660 -0.46820059 36.00000000 0.25137193 - 152 0.29079175 -0.46820059 37.00000000 0.25942760 - 152 0.29727753 -0.46820059 38.00000000 0.25178241 - 144 0.29421782 -0.46820059 39.00000000 0.26430949 - 156 0.29378953 -0.46820059 40.00000000 0.27183250 - 160 0.29621308 -0.46820059 41.00000000 0.26548966 - 155 0.29344452 -0.46820059 42.00000000 0.27383388 - 153 0.29580554 -0.46820059 43.00000000 0.23327527 - 150 0.29262769 -0.46820059 44.00000000 0.21874948 - 117 0.29382335 -0.46820059 45.00000000 0.25886172 - 134 0.29579639 -0.46820059 46.00000000 0.25442650 - 152 0.29416579 -0.46820059 47.00000000 0.25885869 - 129 0.29195538 -0.46820059 48.00000000 0.26662217 - 135 0.29781204 -0.46820059 49.00000000 0.25054521 - 126 0.28875970 -0.46820059 50.00000000 0.23922377 - 124 0.28906824 -0.46820059 51.00000000 0.24147721 - 124 0.28986698 -0.46820059 52.00000000 0.22476888 - 129 0.29140029 -0.46820059 53.00000000 0.24799096 - 127 0.28891078 -0.46820059 54.00000000 0.23828856 - 130 0.29261575 -0.46820059 55.00000000 0.24980863 - 97 0.29555396 -0.46820059 56.00000000 0.24795141 - 124 0.29578072 -0.46820059 57.00000000 0.26546066 - 139 0.29331814 -0.46820059 58.00000000 0.22251753 - 158 0.29207986 -0.46820059 59.00000000 0.27136485 - 135 0.29106462 -0.46820059 60.00000000 0.24209099 - 129 0.29529337 -0.46820059 61.00000000 0.22716074 - 135 0.29572250 -0.46820059 62.00000000 0.26602926 - 158 0.28926187 -0.46820059 63.00000000 0.24143115 - 140 0.29157616 -0.46820059 64.00000000 0.26972438 - 149 0.28880286 -0.46820059 65.00000000 0.24995118 - 123 0.29411455 -0.46820059 66.00000000 0.24005543 - 136 0.29263654 -0.46820059 67.00000000 0.25905547 - 134 0.29245347 -0.46820059 68.00000000 0.24391612 - 122 0.28993609 -0.46820059 69.00000000 0.22873003 - 122 0.29232143 -0.46820059 70.00000000 0.21551515 - 141 0.29427239 -0.46820059 71.00000000 0.23885720 - 131 0.29609769 -0.46820059 72.00000000 0.27527688 - 133 0.29011219 -0.46820059 73.00000000 0.26349414 - 127 0.29106229 -0.46820059 74.00000000 0.25821951 - 138 0.29165543 -0.46820059 75.00000000 0.24454295 - 149 0.29703355 -0.46820059 76.00000000 0.26129613 - 150 0.29301981 -0.46820059 77.00000000 0.25150447 - 146 0.28874196 -0.46820059 78.00000000 0.24811742 - 147 0.29480482 -0.46820059 79.00000000 0.24650295 - 132 0.29351898 -0.46820059 80.00000000 0.23650063 - 293 0.41439379 -0.31435498 1.00000000 0.23022157 - 300 0.41823594 -0.31435498 2.00000000 0.24134053 - 284 0.41953101 -0.31435498 3.00000000 0.25505089 - 304 0.41787345 -0.31435498 4.00000000 0.26295112 - 289 0.41946876 -0.31435498 5.00000000 0.24363488 - 308 0.41641408 -0.31435498 6.00000000 0.25468248 - 287 0.41542975 -0.31435498 7.00000000 0.27196165 - 305 0.41509168 -0.31435498 8.00000000 0.26081102 - 291 0.41660569 -0.31435498 9.00000000 0.27212697 - 286 0.41407303 -0.31435498 10.00000000 0.25171438 - 295 0.41555862 -0.31435498 11.00000000 0.25120250 - 292 0.41602236 -0.31435498 12.00000000 0.24362302 - 312 0.41455890 -0.31435498 13.00000000 0.25984942 - 299 0.41963915 -0.31435498 14.00000000 0.23357472 - 271 0.41614184 -0.31435498 15.00000000 0.26352280 - 311 0.42174279 -0.31435498 16.00000000 0.24035356 - 316 0.41400906 -0.31435498 17.00000000 0.23653049 - 252 0.41329636 -0.31435498 18.00000000 0.24167916 - 306 0.41664787 -0.31435498 19.00000000 0.26358685 - 311 0.41833322 -0.31435498 20.00000000 0.25486975 - 263 0.41597494 -0.31435498 21.00000000 0.23353330 - 286 0.41456176 -0.31435498 22.00000000 0.25881657 - 290 0.41757611 -0.31435498 23.00000000 0.24321788 - 315 0.41685671 -0.31435498 24.00000000 0.25173343 - 284 0.41619740 -0.31435498 25.00000000 0.25707691 - 299 0.41293209 -0.31435498 26.00000000 0.24487424 - 301 0.41767988 -0.31435498 27.00000000 0.27612968 - 292 0.41408453 -0.31435498 28.00000000 0.25422229 - 293 0.41456608 -0.31435498 29.00000000 0.24749889 - 322 0.41933359 -0.31435498 30.00000000 0.24777262 - 273 0.41508651 -0.31435498 31.00000000 0.26388888 - 302 0.41678836 -0.31435498 32.00000000 0.25893630 - 294 0.41901316 -0.31435498 33.00000000 0.25619203 - 307 0.41484227 -0.31435498 34.00000000 0.26081197 - 307 0.41781660 -0.31435498 35.00000000 0.25439073 - 271 0.41857922 -0.31435498 36.00000000 0.25206224 - 288 0.41635690 -0.31435498 37.00000000 0.27445160 - 290 0.41830498 -0.31435498 38.00000000 0.24395361 - 269 0.42075056 -0.31435498 39.00000000 0.25342204 - 285 0.42121248 -0.31435498 40.00000000 0.24886169 - 271 0.41825763 -0.31435498 41.00000000 0.28068332 - 310 0.41223651 -0.31435498 42.00000000 0.24662758 - 284 0.41094110 -0.31435498 43.00000000 0.22716608 - 283 0.41304492 -0.31435498 44.00000000 0.23196142 - 302 0.41720876 -0.31435498 45.00000000 0.27140998 - 312 0.42008345 -0.31435498 46.00000000 0.24088548 - 287 0.41843472 -0.31435498 47.00000000 0.27056648 - 293 0.41686891 -0.31435498 48.00000000 0.24326827 - 281 0.42151076 -0.31435498 49.00000000 0.24854468 - 278 0.41898565 -0.31435498 50.00000000 0.25711674 - 275 0.42055624 -0.31435498 51.00000000 0.27238546 - 287 0.41413970 -0.31435498 52.00000000 0.24663185 - 286 0.41444551 -0.31435498 53.00000000 0.25667349 - 304 0.41747666 -0.31435498 54.00000000 0.22853686 - 278 0.41711207 -0.31435498 55.00000000 0.25122379 - 293 0.41441016 -0.31435498 56.00000000 0.25599487 - 306 0.41242483 -0.31435498 57.00000000 0.26341195 - 278 0.41548926 -0.31435498 58.00000000 0.23398499 - 280 0.41143946 -0.31435498 59.00000000 0.25348809 - 286 0.41612764 -0.31435498 60.00000000 0.24201886 - 275 0.41771021 -0.31435498 61.00000000 0.23899016 - 294 0.41760530 -0.31435498 62.00000000 0.23821332 - 275 0.41519028 -0.31435498 63.00000000 0.25698248 - 286 0.42172049 -0.31435498 64.00000000 0.24989512 - 286 0.41665728 -0.31435498 65.00000000 0.25058062 - 291 0.41403997 -0.31435498 66.00000000 0.24415422 - 319 0.41583196 -0.31435498 67.00000000 0.23811328 - 275 0.41798200 -0.31435498 68.00000000 0.23191726 - 265 0.41593304 -0.31435498 69.00000000 0.25202189 - 276 0.41954091 -0.31435498 70.00000000 0.24017734 - 296 0.41373688 -0.31435498 71.00000000 0.24983697 - 290 0.41402343 -0.31435498 72.00000000 0.25059560 - 279 0.41655581 -0.31435498 73.00000000 0.24879939 - 270 0.41872860 -0.31435498 74.00000000 0.25331627 - 292 0.42042033 -0.31435498 75.00000000 0.25349793 - 297 0.41854472 -0.31435498 76.00000000 0.24500728 - 276 0.41798231 -0.31435498 77.00000000 0.25175063 - 298 0.41474287 -0.31435498 78.00000000 0.25142310 - 297 0.41581341 -0.31435498 79.00000000 0.23474797 - 273 0.41737752 -0.31435498 80.00000000 0.23378704 - 625 0.59158079 -0.16050875 1.00000000 0.24888817 - 614 0.59245679 -0.16050875 2.00000000 0.25188978 - 638 0.59498855 -0.16050875 3.00000000 0.26319441 - 628 0.59701755 -0.16050875 4.00000000 0.23382911 - 612 0.59242322 -0.16050875 5.00000000 0.26579707 - 611 0.59319550 -0.16050875 6.00000000 0.25261339 - 619 0.59283946 -0.16050875 7.00000000 0.24447021 - 577 0.59342990 -0.16050875 8.00000000 0.24392010 - 644 0.59403000 -0.16050875 9.00000000 0.25153650 - 608 0.59629567 -0.16050875 10.00000000 0.26157165 - 650 0.59505742 -0.16050875 11.00000000 0.25558233 - 584 0.59095911 -0.16050875 12.00000000 0.25673441 - 616 0.59396137 -0.16050875 13.00000000 0.23900615 - 599 0.59045330 -0.16050875 14.00000000 0.25410140 - 580 0.59415851 -0.16050875 15.00000000 0.25713378 - 623 0.59688412 -0.16050875 16.00000000 0.25298072 - 626 0.59365178 -0.16050875 17.00000000 0.25361309 - 631 0.59325109 -0.16050875 18.00000000 0.24657889 - 584 0.59268263 -0.16050875 19.00000000 0.26692584 - 629 0.59559105 -0.16050875 20.00000000 0.23488344 - 642 0.59091128 -0.16050875 21.00000000 0.24096471 - 616 0.59547286 -0.16050875 22.00000000 0.24851963 - 592 0.59277269 -0.16050875 23.00000000 0.24605224 - 608 0.59265145 -0.16050875 24.00000000 0.24555574 - 569 0.59183837 -0.16050875 25.00000000 0.25291669 - 569 0.59447768 -0.16050875 26.00000000 0.25813534 - 615 0.59303692 -0.16050875 27.00000000 0.22602196 - 568 0.59900358 -0.16050875 28.00000000 0.25882265 - 591 0.59216408 -0.16050875 29.00000000 0.24451882 - 631 0.59491596 -0.16050875 30.00000000 0.26374669 - 589 0.59349607 -0.16050875 31.00000000 0.24991260 - 612 0.59239051 -0.16050875 32.00000000 0.26463450 - 594 0.59604016 -0.16050875 33.00000000 0.23637541 - 620 0.59586644 -0.16050875 34.00000000 0.24694804 - 653 0.59080456 -0.16050875 35.00000000 0.24176244 - 570 0.59035160 -0.16050875 36.00000000 0.23940273 - 629 0.59581751 -0.16050875 37.00000000 0.26401930 - 631 0.59331387 -0.16050875 38.00000000 0.25658887 - 574 0.59525082 -0.16050875 39.00000000 0.23716456 - 587 0.59507756 -0.16050875 40.00000000 0.25593978 - 593 0.59335646 -0.16050875 41.00000000 0.24772784 - 595 0.59561615 -0.16050875 42.00000000 0.25282848 - 590 0.59985330 -0.16050875 43.00000000 0.24838601 - 591 0.59215756 -0.16050875 44.00000000 0.23596788 - 577 0.59428629 -0.16050875 45.00000000 0.23155476 - 607 0.59176572 -0.16050875 46.00000000 0.23890960 - 593 0.59506352 -0.16050875 47.00000000 0.24959220 - 604 0.59602237 -0.16050875 48.00000000 0.23482736 - 579 0.59587891 -0.16050875 49.00000000 0.26091488 - 608 0.59197071 -0.16050875 50.00000000 0.25051996 - 641 0.59212244 -0.16050875 51.00000000 0.25212689 - 582 0.59094203 -0.16050875 52.00000000 0.25185156 - 588 0.59524303 -0.16050875 53.00000000 0.25384130 - 583 0.59404188 -0.16050875 54.00000000 0.26038124 - 642 0.59203456 -0.16050875 55.00000000 0.25483304 - 612 0.59639149 -0.16050875 56.00000000 0.26164055 - 615 0.59361677 -0.16050875 57.00000000 0.24028520 - 562 0.59026942 -0.16050875 58.00000000 0.25778240 - 556 0.59392680 -0.16050875 59.00000000 0.25708497 - 598 0.59540741 -0.16050875 60.00000000 0.24111409 - 600 0.58979465 -0.16050875 61.00000000 0.26619671 - 551 0.59551404 -0.16050875 62.00000000 0.24952242 - 587 0.59679273 -0.16050875 63.00000000 0.24618727 - 589 0.59223554 -0.16050875 64.00000000 0.24379174 - 567 0.59620823 -0.16050875 65.00000000 0.24991433 - 561 0.59183338 -0.16050875 66.00000000 0.25195357 - 562 0.59244025 -0.16050875 67.00000000 0.24227840 - 588 0.59127894 -0.16050875 68.00000000 0.25542714 - 579 0.59122829 -0.16050875 69.00000000 0.24742932 - 543 0.59313539 -0.16050875 70.00000000 0.23856596 - 587 0.58988265 -0.16050875 71.00000000 0.25401824 - 536 0.59578121 -0.16050875 72.00000000 0.24598656 - 588 0.59289861 -0.16050875 73.00000000 0.25560790 - 565 0.59797415 -0.16050875 74.00000000 0.24442647 - 545 0.59506793 -0.16050875 75.00000000 0.24834726 - 577 0.59387782 -0.16050875 76.00000000 0.25790214 - 579 0.59429723 -0.16050875 77.00000000 0.26522679 - 558 0.59030820 -0.16050875 78.00000000 0.25761139 - 535 0.58995411 -0.16050875 79.00000000 0.25147943 - 580 0.59302429 -0.16050875 80.00000000 0.24465136 - 1278 0.84842146 -0.00666210 1.00000000 0.24221895 - 1264 0.84525240 -0.00666210 2.00000000 0.25002568 - 1297 0.84843511 -0.00666210 3.00000000 0.25043093 - 1238 0.84708944 -0.00666210 4.00000000 0.25972133 - 1305 0.84655785 -0.00666210 5.00000000 0.25102135 - 1245 0.84810350 -0.00666210 6.00000000 0.24548052 - 1242 0.84901089 -0.00666210 7.00000000 0.25498725 - 1277 0.84950210 -0.00666210 8.00000000 0.24626344 - 1284 0.84867421 -0.00666210 9.00000000 0.25252878 - 1286 0.84249217 -0.00666210 10.00000000 0.24208002 - 1196 0.84863612 -0.00666210 11.00000000 0.24954483 - 1192 0.84451174 -0.00666210 12.00000000 0.24563105 - 1285 0.84594470 -0.00666210 13.00000000 0.26299773 - 1243 0.84895151 -0.00666210 14.00000000 0.25019320 - 1229 0.84690366 -0.00666210 15.00000000 0.25118957 - 1259 0.84293780 -0.00666210 16.00000000 0.25203162 - 1220 0.85177205 -0.00666210 17.00000000 0.26681562 - 1192 0.84318447 -0.00666210 18.00000000 0.24994185 - 1199 0.84880703 -0.00666210 19.00000000 0.24763778 - 1246 0.84559656 -0.00666210 20.00000000 0.24683942 - 1226 0.84410641 -0.00666210 21.00000000 0.25239875 - 1240 0.84556528 -0.00666210 22.00000000 0.24753457 - 1229 0.84673438 -0.00666210 23.00000000 0.24548618 - 1218 0.84795708 -0.00666210 24.00000000 0.24962584 - 1185 0.84488398 -0.00666210 25.00000000 0.24362365 - 1313 0.84738002 -0.00666210 26.00000000 0.24575393 - 1228 0.84411752 -0.00666210 27.00000000 0.24156374 - 1182 0.84600607 -0.00666210 28.00000000 0.24827116 - 1201 0.84806742 -0.00666210 29.00000000 0.25945093 - 1188 0.84936736 -0.00666210 30.00000000 0.25747371 - 1250 0.84676774 -0.00666210 31.00000000 0.23655129 - 1125 0.84753106 -0.00666210 32.00000000 0.26065642 - 1188 0.84647700 -0.00666210 33.00000000 0.24760830 - 1190 0.84618376 -0.00666210 34.00000000 0.27439267 - 1205 0.84055584 -0.00666210 35.00000000 0.25517737 - 1209 0.84640630 -0.00666210 36.00000000 0.24540893 - 1270 0.84575499 -0.00666210 37.00000000 0.25288607 - 1189 0.84392404 -0.00666210 38.00000000 0.25308067 - 1247 0.84587461 -0.00666210 39.00000000 0.24925473 - 1177 0.84670299 -0.00666210 40.00000000 0.24742934 - 1184 0.84498537 -0.00666210 41.00000000 0.24942252 - 1203 0.84748199 -0.00666210 42.00000000 0.24541562 - 1237 0.84540465 -0.00666210 43.00000000 0.25744933 - 1191 0.84402663 -0.00666210 44.00000000 0.24580292 - 1165 0.84622253 -0.00666210 45.00000000 0.25101931 - 1216 0.84545915 -0.00666210 46.00000000 0.25609460 - 1170 0.84779652 -0.00666210 47.00000000 0.26491469 - 1164 0.83915584 -0.00666210 48.00000000 0.25570463 - 1193 0.84583615 -0.00666210 49.00000000 0.24417203 - 1240 0.84441738 -0.00666210 50.00000000 0.24096204 - 1230 0.84905718 -0.00666210 51.00000000 0.24368011 - 1168 0.85013335 -0.00666210 52.00000000 0.25598818 - 1226 0.84991300 -0.00666210 53.00000000 0.25272545 - 1210 0.84400929 -0.00666210 54.00000000 0.25648446 - 1223 0.84576137 -0.00666210 55.00000000 0.25776999 - 1208 0.84760494 -0.00666210 56.00000000 0.25863136 - 1134 0.84936654 -0.00666210 57.00000000 0.25275689 - 1157 0.85085970 -0.00666210 58.00000000 0.24651364 - 1181 0.84957095 -0.00666210 59.00000000 0.24498609 - 1151 0.84839021 -0.00666210 60.00000000 0.25762164 - 1113 0.84715252 -0.00666210 61.00000000 0.25017096 - 1178 0.84453994 -0.00666210 62.00000000 0.26304719 - 1229 0.84158379 -0.00666210 63.00000000 0.25073566 - 1220 0.84226435 -0.00666210 64.00000000 0.24746440 - 1224 0.84835249 -0.00666210 65.00000000 0.25099877 - 1230 0.84514902 -0.00666210 66.00000000 0.25008851 - 1209 0.84340731 -0.00666210 67.00000000 0.25159563 - 1143 0.84880419 -0.00666210 68.00000000 0.25469776 - 1194 0.84694867 -0.00666210 69.00000000 0.25535199 - 1172 0.85020742 -0.00666210 70.00000000 0.25446016 - 1168 0.84968076 -0.00666210 71.00000000 0.24964148 - 1185 0.84454813 -0.00666210 72.00000000 0.25637117 - 1178 0.85034729 -0.00666210 73.00000000 0.25572288 - 1181 0.84596227 -0.00666210 74.00000000 0.24554167 - 1165 0.84829450 -0.00666210 75.00000000 0.25217513 - 1186 0.84916390 -0.00666210 76.00000000 0.24089960 - 1172 0.84588201 -0.00666210 77.00000000 0.25378459 - 1214 0.84615012 -0.00666210 78.00000000 0.25851510 - 1150 0.85044103 -0.00666210 79.00000000 0.24776144 - 1164 0.84483803 -0.00666210 80.00000000 0.25230723 - 2664 1.20862511 0.14718457 1.00000000 0.24280090 - 2515 1.20441982 0.14718457 2.00000000 0.24867018 - 2545 1.20206790 0.14718457 3.00000000 0.24770559 - 2686 1.20906094 0.14718457 4.00000000 0.25061878 - 2534 1.20639533 0.14718457 5.00000000 0.24692151 - 2615 1.20390328 0.14718457 6.00000000 0.24632771 - 2505 1.20969778 0.14718457 7.00000000 0.24970032 - 2527 1.20600115 0.14718457 8.00000000 0.25664409 - 2526 1.20534589 0.14718457 9.00000000 0.24879758 - 2586 1.20884873 0.14718457 10.00000000 0.25688423 - 2473 1.20474213 0.14718457 11.00000000 0.24738252 - 2483 1.20680854 0.14718457 12.00000000 0.24285319 - 2518 1.20461377 0.14718457 13.00000000 0.25657298 - 2588 1.20765961 0.14718457 14.00000000 0.24718998 - 2532 1.20504931 0.14718457 15.00000000 0.25306278 - 2443 1.20615431 0.14718457 16.00000000 0.24944833 - 2493 1.20732591 0.14718457 17.00000000 0.24558867 - 2525 1.20513516 0.14718457 18.00000000 0.24361211 - 2476 1.20962154 0.14718457 19.00000000 0.25503786 - 2517 1.20700689 0.14718457 20.00000000 0.26031776 - 2583 1.20358768 0.14718457 21.00000000 0.24918204 - 2377 1.20564706 0.14718457 22.00000000 0.24896134 - 2577 1.20990949 0.14718457 23.00000000 0.24617928 - 2514 1.20538566 0.14718457 24.00000000 0.25434077 - 2523 1.21027438 0.14718457 25.00000000 0.25679193 - 2503 1.20579755 0.14718457 26.00000000 0.24878908 - 2492 1.20411165 0.14718457 27.00000000 0.26544235 - 2447 1.20509550 0.14718457 28.00000000 0.25660657 - 2413 1.20745834 0.14718457 29.00000000 0.25116635 - 2462 1.20672169 0.14718457 30.00000000 0.25586832 - 2569 1.20783896 0.14718457 31.00000000 0.24445397 - 2378 1.21012216 0.14718457 32.00000000 0.25285130 - 2437 1.20588017 0.14718457 33.00000000 0.25432843 - 2475 1.20376843 0.14718457 34.00000000 0.25193688 - 2392 1.20367762 0.14718457 35.00000000 0.25062543 - 2449 1.20702217 0.14718457 36.00000000 0.24126433 - 2434 1.20534919 0.14718457 37.00000000 0.25437578 - 2427 1.20571049 0.14718457 38.00000000 0.25347561 - 2504 1.20549984 0.14718457 39.00000000 0.24857700 - 2449 1.21219937 0.14718457 40.00000000 0.25460168 - 2434 1.20613306 0.14718457 41.00000000 0.25185894 - 2344 1.20672764 0.14718457 42.00000000 0.24859580 - 2432 1.20667939 0.14718457 43.00000000 0.25223019 - 2496 1.20882714 0.14718457 44.00000000 0.25097297 - 2397 1.20458392 0.14718457 45.00000000 0.24675843 - 2424 1.20604309 0.14718457 46.00000000 0.24336427 - 2382 1.20831922 0.14718457 47.00000000 0.24980134 - 2475 1.20574364 0.14718457 48.00000000 0.24834771 - 2492 1.20762224 0.14718457 49.00000000 0.25701054 - 2479 1.20196504 0.14718457 50.00000000 0.26032272 - 2382 1.20672364 0.14718457 51.00000000 0.25266519 - 2398 1.20694788 0.14718457 52.00000000 0.25319200 - 2421 1.20237231 0.14718457 53.00000000 0.25164192 - 2343 1.20737273 0.14718457 54.00000000 0.25369013 - 2397 1.20181589 0.14718457 55.00000000 0.25641505 - 2439 1.20193789 0.14718457 56.00000000 0.25478378 - 2402 1.20635338 0.14718457 57.00000000 0.25044380 - 2394 1.20830881 0.14718457 58.00000000 0.25346709 - 2449 1.20629606 0.14718457 59.00000000 0.25763613 - 2458 1.20690991 0.14718457 60.00000000 0.25520392 - 2452 1.20376862 0.14718457 61.00000000 0.25143954 - 2391 1.20855557 0.14718457 62.00000000 0.24845452 - 2413 1.20835379 0.14718457 63.00000000 0.25722474 - 2414 1.21061717 0.14718457 64.00000000 0.25677770 - 2400 1.20369520 0.14718457 65.00000000 0.24722518 - 2381 1.20585304 0.14718457 66.00000000 0.25109193 - 2422 1.20845508 0.14718457 67.00000000 0.24633658 - 2356 1.20752860 0.14718457 68.00000000 0.25878058 - 2463 1.20313649 0.14718457 69.00000000 0.25320475 - 2363 1.20690277 0.14718457 70.00000000 0.25169272 - 2353 1.20562035 0.14718457 71.00000000 0.26096779 - 2404 1.20820308 0.14718457 72.00000000 0.25259835 - 2375 1.20600810 0.14718457 73.00000000 0.25180022 - 2411 1.20651129 0.14718457 74.00000000 0.25905138 - 2338 1.20769526 0.14718457 75.00000000 0.25174438 - 2403 1.20478866 0.14718457 76.00000000 0.24832101 - 2323 1.20986422 0.14718457 77.00000000 0.24511081 - 2351 1.20619455 0.14718457 78.00000000 0.24599388 - 2459 1.20639179 0.14718457 79.00000000 0.24714041 - 2348 1.20120144 0.14718457 80.00000000 0.25065294 - 5271 1.72100301 0.30103000 1.00000000 0.25062481 - 5270 1.71898476 0.30103000 2.00000000 0.25021807 - 5201 1.71322506 0.30103000 3.00000000 0.24683126 - 5166 1.72364164 0.30103000 4.00000000 0.24919360 - 5284 1.71842129 0.30103000 5.00000000 0.24611354 - 5145 1.71985969 0.30103000 6.00000000 0.25254255 - 5149 1.72042731 0.30103000 7.00000000 0.24857361 - 5045 1.71886268 0.30103000 8.00000000 0.25573609 - 4999 1.71731703 0.30103000 9.00000000 0.24853447 - 5305 1.72321737 0.30103000 10.00000000 0.24958263 - 5095 1.72138597 0.30103000 11.00000000 0.24655375 - 5231 1.71946089 0.30103000 12.00000000 0.24689919 - 5055 1.71722692 0.30103000 13.00000000 0.25007551 - 5161 1.72153066 0.30103000 14.00000000 0.25013895 - 5060 1.71942328 0.30103000 15.00000000 0.25091603 - 5125 1.71598953 0.30103000 16.00000000 0.24728011 - 5102 1.71941068 0.30103000 17.00000000 0.25424646 - 5170 1.71569246 0.30103000 18.00000000 0.24926939 - 5039 1.71652813 0.30103000 19.00000000 0.25280966 - 5044 1.72264428 0.30103000 20.00000000 0.24958179 - 5087 1.72008834 0.30103000 21.00000000 0.25455625 - 5149 1.72176959 0.30103000 22.00000000 0.25260675 - 5089 1.71518418 0.30103000 23.00000000 0.24832086 - 5056 1.72031211 0.30103000 24.00000000 0.24679471 - 5020 1.72006772 0.30103000 25.00000000 0.24931063 - 5191 1.72132015 0.30103000 26.00000000 0.24854240 - 4904 1.71665386 0.30103000 27.00000000 0.25263889 - 4976 1.71784678 0.30103000 28.00000000 0.25729664 - 4896 1.72097605 0.30103000 29.00000000 0.24716396 - 4918 1.72077831 0.30103000 30.00000000 0.25155143 - 4949 1.71618898 0.30103000 31.00000000 0.25327098 - 5060 1.72527213 0.30103000 32.00000000 0.25290257 - 4958 1.71999475 0.30103000 33.00000000 0.25276080 - 4935 1.71911203 0.30103000 34.00000000 0.25251498 - 4825 1.71836479 0.30103000 35.00000000 0.25010908 - 4985 1.71801989 0.30103000 36.00000000 0.25688373 - 4953 1.72003620 0.30103000 37.00000000 0.25467044 - 4879 1.72150097 0.30103000 38.00000000 0.25213319 - 4928 1.71797970 0.30103000 39.00000000 0.25043556 - 4985 1.71999990 0.30103000 40.00000000 0.25681447 - 4978 1.71785348 0.30103000 41.00000000 0.25261242 - 4884 1.71385974 0.30103000 42.00000000 0.25084780 - 4979 1.72229884 0.30103000 43.00000000 0.25510563 - 4920 1.71844548 0.30103000 44.00000000 0.25032123 - 4955 1.72312751 0.30103000 45.00000000 0.25161280 - 4952 1.72098304 0.30103000 46.00000000 0.24826622 - 4926 1.71861482 0.30103000 47.00000000 0.25289673 - 5033 1.71968189 0.30103000 48.00000000 0.24793855 - 5086 1.72043520 0.30103000 49.00000000 0.25332199 - 4810 1.71947076 0.30103000 50.00000000 0.25269462 - 4846 1.71959117 0.30103000 51.00000000 0.25022096 - 4937 1.71469870 0.30103000 52.00000000 0.25098109 - 4845 1.71749933 0.30103000 53.00000000 0.25024632 - 4967 1.72243420 0.30103000 54.00000000 0.25334838 - 4881 1.71994301 0.30103000 55.00000000 0.24820630 - 5062 1.72036657 0.30103000 56.00000000 0.25373784 - 4898 1.71749999 0.30103000 57.00000000 0.24766675 - 4942 1.71598925 0.30103000 58.00000000 0.24943137 - 4903 1.72376028 0.30103000 59.00000000 0.25382645 - 4889 1.72278736 0.30103000 60.00000000 0.24806164 - 4803 1.71887079 0.30103000 61.00000000 0.24776544 - 4816 1.72103709 0.30103000 62.00000000 0.24911242 - 4926 1.72139359 0.30103000 63.00000000 0.25297203 - 4991 1.71917905 0.30103000 64.00000000 0.24909894 - 4795 1.71980392 0.30103000 65.00000000 0.25116713 - 4908 1.71508356 0.30103000 66.00000000 0.25418058 - 4902 1.72148711 0.30103000 67.00000000 0.25206313 - 5000 1.71682587 0.30103000 68.00000000 0.25317893 - 4979 1.72298460 0.30103000 69.00000000 0.25595238 - 4748 1.71934206 0.30103000 70.00000000 0.25402668 - 4798 1.71865866 0.30103000 71.00000000 0.24278148 - 4780 1.72014740 0.30103000 72.00000000 0.24779650 - 4800 1.71964687 0.30103000 73.00000000 0.25243515 - 4792 1.72061672 0.30103000 74.00000000 0.24834917 - 4795 1.71647862 0.30103000 75.00000000 0.24846577 - 4992 1.71575585 0.30103000 76.00000000 0.25025871 - 4761 1.71566239 0.30103000 77.00000000 0.25056897 - 4738 1.71865816 0.30103000 78.00000000 0.24761739 - 4883 1.71805019 0.30103000 79.00000000 0.24447632 - 4783 1.71837985 0.30103000 80.00000000 0.25251775 - 10540 2.45056297 0.45487534 1.00000000 0.24926448 - 10590 2.44901235 0.45487534 2.00000000 0.25172278 - 10687 2.44585371 0.45487534 3.00000000 0.25065897 - 10511 2.45097161 0.45487534 4.00000000 0.25101629 - 10430 2.44983740 0.45487534 5.00000000 0.24816214 - 10352 2.45344881 0.45487534 6.00000000 0.25078004 - 10559 2.45110106 0.45487534 7.00000000 0.24897786 - 10495 2.45285225 0.45487534 8.00000000 0.25637632 - 10341 2.45228370 0.45487534 9.00000000 0.25348416 - 10317 2.44739259 0.45487534 10.00000000 0.24795030 - 10605 2.45101066 0.45487534 11.00000000 0.25442146 - 10624 2.45273321 0.45487534 12.00000000 0.24964434 - 10336 2.44935738 0.45487534 13.00000000 0.24881915 - 10469 2.45432945 0.45487534 14.00000000 0.24990621 - 10342 2.44803604 0.45487534 15.00000000 0.24978647 - 10295 2.45500673 0.45487534 16.00000000 0.24728866 - 10455 2.44988605 0.45487534 17.00000000 0.24907914 - 10350 2.45115478 0.45487534 18.00000000 0.25047414 - 10278 2.45070750 0.45487534 19.00000000 0.25091012 - 10412 2.44806218 0.45487534 20.00000000 0.25238080 - 10325 2.45019683 0.45487534 21.00000000 0.25136624 - 10202 2.44766068 0.45487534 22.00000000 0.24847341 - 10150 2.45183171 0.45487534 23.00000000 0.24743660 - 10166 2.44805690 0.45487534 24.00000000 0.24980852 - 10381 2.45185787 0.45487534 25.00000000 0.24643314 - 10346 2.44555371 0.45487534 26.00000000 0.25049290 - 10313 2.45288646 0.45487534 27.00000000 0.24906014 - 10181 2.44974091 0.45487534 28.00000000 0.24811631 - 10302 2.45567621 0.45487534 29.00000000 0.24842166 - 10262 2.45256165 0.45487534 30.00000000 0.24894253 - 10187 2.45155020 0.45487534 31.00000000 0.24583006 - 10080 2.44778119 0.45487534 32.00000000 0.24893529 - 10138 2.44857626 0.45487534 33.00000000 0.24753659 - 10376 2.44933932 0.45487534 34.00000000 0.25030820 - 9984 2.45138174 0.45487534 35.00000000 0.25118516 - 10182 2.45265573 0.45487534 36.00000000 0.24825293 - 10329 2.45497800 0.45487534 37.00000000 0.24927002 - 10106 2.45180563 0.45487534 38.00000000 0.25096468 - 10093 2.45236258 0.45487534 39.00000000 0.25149265 - 9912 2.44996778 0.45487534 40.00000000 0.24904297 - 9976 2.44855032 0.45487534 41.00000000 0.24908301 - 10033 2.45105858 0.45487534 42.00000000 0.24921526 - 10051 2.44825660 0.45487534 43.00000000 0.25171568 - 10041 2.44774405 0.45487534 44.00000000 0.24935109 - 10013 2.44950965 0.45487534 45.00000000 0.25228599 - 10067 2.45124826 0.45487534 46.00000000 0.25370459 - 10186 2.44753198 0.45487534 47.00000000 0.24729351 - 10065 2.44731916 0.45487534 48.00000000 0.25209485 - 9923 2.45226276 0.45487534 49.00000000 0.25120447 - 9950 2.44437519 0.45487534 50.00000000 0.25066408 - 10003 2.44804046 0.45487534 51.00000000 0.25020639 - 9875 2.45240259 0.45487534 52.00000000 0.24767882 - 9933 2.44888136 0.45487534 53.00000000 0.25441608 - 9959 2.44804959 0.45487534 54.00000000 0.25070590 - 9899 2.44854153 0.45487534 55.00000000 0.25331910 - 9762 2.44864737 0.45487534 56.00000000 0.25123390 - 10062 2.45410429 0.45487534 57.00000000 0.24795199 - 10048 2.44837613 0.45487534 58.00000000 0.25137230 - 9949 2.45576123 0.45487534 59.00000000 0.25332811 - 9955 2.45290598 0.45487534 60.00000000 0.25024841 - 9718 2.45160808 0.45487534 61.00000000 0.25070629 - 10145 2.45071548 0.45487534 62.00000000 0.25265377 - 9809 2.44795574 0.45487534 63.00000000 0.24816835 - 9886 2.44909310 0.45487534 64.00000000 0.25196909 - 9778 2.45359593 0.45487534 65.00000000 0.25200719 - 9847 2.44974568 0.45487534 66.00000000 0.24892799 - 9925 2.44714451 0.45487534 67.00000000 0.24772934 - 9798 2.45063674 0.45487534 68.00000000 0.25063928 - 9798 2.44899131 0.45487534 69.00000000 0.24778308 - 9801 2.44491176 0.45487534 70.00000000 0.25517225 - 9709 2.45245641 0.45487534 71.00000000 0.24722351 - 9768 2.44807859 0.45487534 72.00000000 0.24738273 - 9777 2.45585067 0.45487534 73.00000000 0.25446172 - 9727 2.45281431 0.45487534 74.00000000 0.24975335 - 9889 2.44966166 0.45487534 75.00000000 0.24993416 - 9681 2.45449076 0.45487534 76.00000000 0.24910448 - 9656 2.44838085 0.45487534 77.00000000 0.25174592 - 9724 2.45275052 0.45487534 78.00000000 0.25291647 - 9684 2.44882481 0.45487534 79.00000000 0.25058870 - 9630 2.45023243 0.45487534 80.00000000 0.24908108 - 21498 3.48994267 0.60872281 1.00000000 0.24915830 - 21144 3.48799464 0.60872281 2.00000000 0.24845112 - 21279 3.49382276 0.60872281 3.00000000 0.24902405 - 21451 3.48655192 0.60872281 4.00000000 0.25142276 - 21497 3.48924105 0.60872281 5.00000000 0.25233490 - 21317 3.49062087 0.60872281 6.00000000 0.25107709 - 21244 3.49443475 0.60872281 7.00000000 0.25027151 - 21249 3.48676227 0.60872281 8.00000000 0.24837662 - 21298 3.48463521 0.60872281 9.00000000 0.24832203 - 21364 3.48982157 0.60872281 10.00000000 0.25045848 - 21381 3.49388128 0.60872281 11.00000000 0.24815435 - 21176 3.49163070 0.60872281 12.00000000 0.25170884 - 21307 3.48940031 0.60872281 13.00000000 0.24863627 - 21009 3.49245847 0.60872281 14.00000000 0.24922841 - 21038 3.48836680 0.60872281 15.00000000 0.25022264 - 20799 3.49007048 0.60872281 16.00000000 0.25108226 - 21010 3.48748337 0.60872281 17.00000000 0.25128410 - 21215 3.48942506 0.60872281 18.00000000 0.25088992 - 21090 3.49296456 0.60872281 19.00000000 0.25100680 - 20773 3.49258519 0.60872281 20.00000000 0.24933612 - 20909 3.48992650 0.60872281 21.00000000 0.24975159 - 20989 3.49410702 0.60872281 22.00000000 0.24828976 - 20939 3.49080960 0.60872281 23.00000000 0.24858760 - 21133 3.49129077 0.60872281 24.00000000 0.24795021 - 20952 3.48792687 0.60872281 25.00000000 0.25083563 - 20696 3.48845609 0.60872281 26.00000000 0.25023479 - 20958 3.49411546 0.60872281 27.00000000 0.25103251 - 20393 3.49193791 0.60872281 28.00000000 0.25316558 - 20896 3.49214185 0.60872281 29.00000000 0.25117394 - 20830 3.49205334 0.60872281 30.00000000 0.24895861 - 20871 3.49109676 0.60872281 31.00000000 0.25134606 - 20672 3.49287950 0.60872281 32.00000000 0.24881978 - 20721 3.49401839 0.60872281 33.00000000 0.25114319 - 20670 3.49018471 0.60872281 34.00000000 0.25297581 - 20788 3.49244104 0.60872281 35.00000000 0.24928076 - 20690 3.49208468 0.60872281 36.00000000 0.24891849 - 20702 3.49243171 0.60872281 37.00000000 0.24996117 - 20626 3.49440735 0.60872281 38.00000000 0.25008013 - 20261 3.49335622 0.60872281 39.00000000 0.24915399 - 20467 3.49066571 0.60872281 40.00000000 0.24946879 - 20374 3.49658598 0.60872281 41.00000000 0.24859353 - 20421 3.49650223 0.60872281 42.00000000 0.25087045 - 20328 3.49331870 0.60872281 43.00000000 0.25213814 - 20496 3.49366611 0.60872281 44.00000000 0.25027788 - 20290 3.48881360 0.60872281 45.00000000 0.24935234 - 20393 3.49314888 0.60872281 46.00000000 0.24954717 - 20369 3.49225420 0.60872281 47.00000000 0.24927059 - 20426 3.49481612 0.60872281 48.00000000 0.25075387 - 20366 3.49133725 0.60872281 49.00000000 0.25125612 - 20227 3.49015607 0.60872281 50.00000000 0.25234109 - 20371 3.48894532 0.60872281 51.00000000 0.25045214 - 20206 3.49158540 0.60872281 52.00000000 0.25310968 - 20303 3.49217441 0.60872281 53.00000000 0.24843167 - 20175 3.48881415 0.60872281 54.00000000 0.24887198 - 20280 3.49067470 0.60872281 55.00000000 0.25084989 - 20330 3.49356885 0.60872281 56.00000000 0.24863967 - 19940 3.49156543 0.60872281 57.00000000 0.25037294 - 19993 3.48757510 0.60872281 58.00000000 0.24842208 - 20517 3.49156245 0.60872281 59.00000000 0.25017521 - 20112 3.49253772 0.60872281 60.00000000 0.24773175 - 20272 3.49085140 0.60872281 61.00000000 0.24996469 - 20107 3.49238029 0.60872281 62.00000000 0.24901700 - 20045 3.49438783 0.60872281 63.00000000 0.25054511 - 19895 3.48977925 0.60872281 64.00000000 0.25212663 - 20003 3.49064009 0.60872281 65.00000000 0.24684804 - 19946 3.49193973 0.60872281 66.00000000 0.25128892 - 20084 3.49008052 0.60872281 67.00000000 0.24949775 - 19790 3.49202234 0.60872281 68.00000000 0.25328189 - 19887 3.49168984 0.60872281 69.00000000 0.25120634 - 19723 3.48788035 0.60872281 70.00000000 0.25268825 - 19775 3.49385416 0.60872281 71.00000000 0.24890415 - 19919 3.49194788 0.60872281 72.00000000 0.25122262 - 19870 3.49459779 0.60872281 73.00000000 0.25087681 - 19934 3.49083558 0.60872281 74.00000000 0.24928904 - 19374 3.49241373 0.60872281 75.00000000 0.25038367 - 19855 3.49281964 0.60872281 76.00000000 0.25074249 - 19841 3.49061312 0.60872281 77.00000000 0.25217334 - 19576 3.48664102 0.60872281 78.00000000 0.25044997 - 19482 3.49443836 0.60872281 79.00000000 0.24717201 - 19812 3.49263874 0.60872281 80.00000000 0.25078852 - 43438 4.97389638 0.76256829 1.00000000 0.24977346 - 43153 4.97779192 0.76256829 2.00000000 0.24910500 - 43566 4.97647010 0.76256829 3.00000000 0.25047875 - 43346 4.97307264 0.76256829 4.00000000 0.24981382 - 43282 4.97518570 0.76256829 5.00000000 0.25191107 - 43571 4.97239152 0.76256829 6.00000000 0.24895633 - 43444 4.97319045 0.76256829 7.00000000 0.24795213 - 43110 4.97745902 0.76256829 8.00000000 0.25178981 - 43629 4.97466135 0.76256829 9.00000000 0.24961866 - 43096 4.97663769 0.76256829 10.00000000 0.25093461 - 42955 4.97517100 0.76256829 11.00000000 0.25101981 - 43298 4.97733151 0.76256829 12.00000000 0.25070158 - 42911 4.97686428 0.76256829 13.00000000 0.24992821 - 43114 4.97790117 0.76256829 14.00000000 0.24815538 - 43142 4.97662000 0.76256829 15.00000000 0.25119465 - 43009 4.97418287 0.76256829 16.00000000 0.24945959 - 42749 4.97411547 0.76256829 17.00000000 0.24833657 - 42389 4.97746950 0.76256829 18.00000000 0.24951831 - 42723 4.97248268 0.76256829 19.00000000 0.24972459 - 42584 4.97304169 0.76256829 20.00000000 0.25142669 - 42578 4.97748996 0.76256829 21.00000000 0.24904808 - 42466 4.97380331 0.76256829 22.00000000 0.24970855 - 42549 4.97710112 0.76256829 23.00000000 0.25029173 - 42391 4.97755904 0.76256829 24.00000000 0.25004697 - 42553 4.98032063 0.76256829 25.00000000 0.24890449 - 42059 4.97679403 0.76256829 26.00000000 0.25178456 - 42261 4.97358627 0.76256829 27.00000000 0.25283228 - 42479 4.97481537 0.76256829 28.00000000 0.24859724 - 42526 4.98278724 0.76256829 29.00000000 0.25129008 - 41666 4.97695055 0.76256829 30.00000000 0.24851939 - 41523 4.97694044 0.76256829 31.00000000 0.25127340 - 42368 4.97326113 0.76256829 32.00000000 0.25195838 - 42051 4.97296551 0.76256829 33.00000000 0.24971949 - 42204 4.97848275 0.76256829 34.00000000 0.24995170 - 42304 4.97555495 0.76256829 35.00000000 0.24788561 - 42074 4.97523293 0.76256829 36.00000000 0.25015055 - 41902 4.97093659 0.76256829 37.00000000 0.24890099 - 41626 4.97175191 0.76256829 38.00000000 0.25097153 - 41991 4.97627848 0.76256829 39.00000000 0.25071650 - 41893 4.97470785 0.76256829 40.00000000 0.25005801 - 41940 4.97216353 0.76256829 41.00000000 0.24863012 - 41418 4.97263270 0.76256829 42.00000000 0.25032249 - 41731 4.97473858 0.76256829 43.00000000 0.24943856 - 41877 4.97732821 0.76256829 44.00000000 0.24992604 - 41563 4.97783404 0.76256829 45.00000000 0.25002095 - 41226 4.97994027 0.76256829 46.00000000 0.25005923 - 41443 4.97491329 0.76256829 47.00000000 0.25051410 - 41361 4.97876331 0.76256829 48.00000000 0.24915591 - 41378 4.97733524 0.76256829 49.00000000 0.24859721 - 41324 4.97714755 0.76256829 50.00000000 0.25104885 - 41118 4.97449304 0.76256829 51.00000000 0.24956691 - 40810 4.97869241 0.76256829 52.00000000 0.25117064 - 41729 4.97711180 0.76256829 53.00000000 0.25126685 - 41214 4.97500350 0.76256829 54.00000000 0.25230199 - 41309 4.98039319 0.76256829 55.00000000 0.25063363 - 41197 4.97545133 0.76256829 56.00000000 0.25055750 - 41227 4.97532673 0.76256829 57.00000000 0.24877274 - 40946 4.97610109 0.76256829 58.00000000 0.25053770 - 40908 4.97664567 0.76256829 59.00000000 0.25205837 - 41136 4.97649132 0.76256829 60.00000000 0.25095107 - 41120 4.97995923 0.76256829 61.00000000 0.24777936 - 41032 4.97589709 0.76256829 62.00000000 0.25137038 - 40794 4.97882585 0.76256829 63.00000000 0.25025099 - 40298 4.97716065 0.76256829 64.00000000 0.25012985 - 40404 4.97516980 0.76256829 65.00000000 0.24923948 - 40595 4.97915912 0.76256829 66.00000000 0.25092696 - 40349 4.97798996 0.76256829 67.00000000 0.24943532 - 40610 4.97359449 0.76256829 68.00000000 0.24998354 - 40287 4.97634396 0.76256829 69.00000000 0.24942854 - 40689 4.97383433 0.76256829 70.00000000 0.25141229 - 40264 4.98183120 0.76256829 71.00000000 0.25026932 - 40173 4.97633081 0.76256829 72.00000000 0.25073160 - 40564 4.97634589 0.76256829 73.00000000 0.24948927 - 40050 4.98148048 0.76256829 74.00000000 0.25062646 - 39946 4.97941483 0.76256829 75.00000000 0.24910485 - 40258 4.97315988 0.76256829 76.00000000 0.24977679 - 39724 4.97779327 0.76256829 77.00000000 0.25075170 - 39920 4.97509473 0.76256829 78.00000000 0.25143610 - 39789 4.97719235 0.76256829 79.00000000 0.25056304 - 40153 4.97887323 0.76256829 80.00000000 0.24866603 - 88496 7.08915086 0.91641447 1.00000000 0.24878189 - 88459 7.08960928 0.91641447 2.00000000 0.24997628 - 88366 7.09156411 0.91641447 3.00000000 0.24950120 - 88738 7.09411959 0.91641447 4.00000000 0.24923027 - 88074 7.09108897 0.91641447 5.00000000 0.24921741 - 88013 7.08988921 0.91641447 6.00000000 0.24948595 - 87904 7.08884418 0.91641447 7.00000000 0.24880428 - 87448 7.09165379 0.91641447 8.00000000 0.24971979 - 87726 7.09030651 0.91641447 9.00000000 0.24909082 - 87747 7.08737775 0.91641447 10.00000000 0.24978666 - 87354 7.09290563 0.91641447 11.00000000 0.25077438 - 87682 7.09205203 0.91641447 12.00000000 0.25125249 - 87108 7.09275464 0.91641447 13.00000000 0.25095501 - 87080 7.08954902 0.91641447 14.00000000 0.24929234 - 86930 7.09036900 0.91641447 15.00000000 0.25200037 - 86657 7.08895093 0.91641447 16.00000000 0.24904013 - 87693 7.08771824 0.91641447 17.00000000 0.24890158 - 86724 7.08917083 0.91641447 18.00000000 0.25079711 - 86114 7.09472279 0.91641447 19.00000000 0.25106064 - 86338 7.09442769 0.91641447 20.00000000 0.25062834 - 86798 7.09623550 0.91641447 21.00000000 0.25119805 - 86505 7.09134732 0.91641447 22.00000000 0.25025134 - 86082 7.08944359 0.91641447 23.00000000 0.25033405 - 86470 7.09200686 0.91641447 24.00000000 0.25090677 - 86422 7.08641872 0.91641447 25.00000000 0.25131084 - 86888 7.08994984 0.91641447 26.00000000 0.25154568 - 85736 7.08988188 0.91641447 27.00000000 0.24934367 - 85941 7.08500529 0.91641447 28.00000000 0.24968198 - 85274 7.09352410 0.91641447 29.00000000 0.25059830 - 85689 7.09428304 0.91641447 30.00000000 0.24961812 - 85680 7.09094450 0.91641447 31.00000000 0.24988466 - 85327 7.09353114 0.91641447 32.00000000 0.25018327 - 85460 7.09124813 0.91641447 33.00000000 0.25123898 - 85508 7.09044311 0.91641447 34.00000000 0.25025794 - 85678 7.08994013 0.91641447 35.00000000 0.24961122 - 85513 7.09272219 0.91641447 36.00000000 0.25053155 - 84936 7.08783464 0.91641447 37.00000000 0.25003346 - 84842 7.09161305 0.91641447 38.00000000 0.24952072 - 84861 7.09374825 0.91641447 39.00000000 0.25143195 - 85141 7.08936920 0.91641447 40.00000000 0.25058685 - 84301 7.09058716 0.91641447 41.00000000 0.24968832 - 84377 7.08991205 0.91641447 42.00000000 0.25069691 - 84311 7.08919073 0.91641447 43.00000000 0.25133447 - 84163 7.09421601 0.91641447 44.00000000 0.25098698 - 83489 7.08818227 0.91641447 45.00000000 0.25022730 - 84092 7.09213541 0.91641447 46.00000000 0.25088253 - 84408 7.09350796 0.91641447 47.00000000 0.25036457 - 83782 7.09093272 0.91641447 48.00000000 0.25219496 - 83984 7.08978973 0.91641447 49.00000000 0.25026220 - 83860 7.09107984 0.91641447 50.00000000 0.24930776 - 83975 7.08880250 0.91641447 51.00000000 0.25044298 - 84017 7.08874058 0.91641447 52.00000000 0.24976371 - 83518 7.09633900 0.91641447 53.00000000 0.24911983 - 83318 7.08833880 0.91641447 54.00000000 0.25146924 - 84038 7.09005673 0.91641447 55.00000000 0.25072257 - 82872 7.09063007 0.91641447 56.00000000 0.25094463 - 83188 7.09090859 0.91641447 57.00000000 0.25079072 - 83037 7.08945215 0.91641447 58.00000000 0.24957460 - 83544 7.09189242 0.91641447 59.00000000 0.25106016 - 83752 7.08941520 0.91641447 60.00000000 0.24982125 - 83379 7.09016592 0.91641447 61.00000000 0.24979332 - 82724 7.09639014 0.91641447 62.00000000 0.25115529 - 82360 7.09183548 0.91641447 63.00000000 0.24907402 - 82732 7.08940188 0.91641447 64.00000000 0.25048468 - 82620 7.09238675 0.91641447 65.00000000 0.25080382 - 82031 7.09050566 0.91641447 66.00000000 0.24868837 - 82629 7.09016361 0.91641447 67.00000000 0.25102738 - 82414 7.09310151 0.91641447 68.00000000 0.25049774 - 82410 7.09117302 0.91641447 69.00000000 0.24973081 - 81941 7.09223086 0.91641447 70.00000000 0.25093532 - 81605 7.09171385 0.91641447 71.00000000 0.24996688 - 81540 7.09018906 0.91641447 72.00000000 0.25092703 - 82084 7.09510797 0.91641447 73.00000000 0.25161310 - 82151 7.09241217 0.91641447 74.00000000 0.25045882 - 81603 7.09064068 0.91641447 75.00000000 0.25008298 - 81917 7.09161346 0.91641447 76.00000000 0.25017495 - 81240 7.08957179 0.91641447 77.00000000 0.25060737 - 82190 7.09193095 0.91641447 78.00000000 0.25053461 - 81381 7.08807510 0.91641447 79.00000000 0.24912525 - 81402 7.09263041 0.91641447 80.00000000 0.25034436 - 179219 10.10469745 1.07025958 1.00000000 0.25010904 - 179368 10.10052465 1.07025958 2.00000000 0.25057618 - 179177 10.10495802 1.07025958 3.00000000 0.24989586 - 179576 10.10497381 1.07025958 4.00000000 0.24901873 - 178699 10.09845416 1.07025958 5.00000000 0.25096304 - 178944 10.10190123 1.07025958 6.00000000 0.25038274 - 179056 10.10132627 1.07025958 7.00000000 0.24994257 - 178513 10.10432722 1.07025958 8.00000000 0.24987328 - 178193 10.10402725 1.07025958 9.00000000 0.25022244 - 178166 10.10744256 1.07025958 10.00000000 0.25063081 - 178056 10.10265799 1.07025958 11.00000000 0.24953208 - 177260 10.10423536 1.07025958 12.00000000 0.25003397 - 177735 10.10868770 1.07025958 13.00000000 0.25010541 - 177564 10.10341923 1.07025958 14.00000000 0.25056020 - 176598 10.10517139 1.07025958 15.00000000 0.25080425 - 177024 10.10737268 1.07025958 16.00000000 0.25021877 - 176213 10.10421922 1.07025958 17.00000000 0.25102746 - 177000 10.10325424 1.07025958 18.00000000 0.25017420 - 175256 10.10043836 1.07025958 19.00000000 0.25053080 - 176170 10.10502031 1.07025958 20.00000000 0.25070899 - 175724 10.09936805 1.07025958 21.00000000 0.24930907 - 174946 10.10471159 1.07025958 22.00000000 0.24969674 - 175119 10.10844141 1.07025958 23.00000000 0.25048034 - 174888 10.10669242 1.07025958 24.00000000 0.24972179 - 174863 10.10134503 1.07025958 25.00000000 0.25030284 - 174201 10.10032977 1.07025958 26.00000000 0.25084103 - 175089 10.10861472 1.07025958 27.00000000 0.25101910 - 175691 10.10378647 1.07025958 28.00000000 0.25034572 - 174699 10.10562798 1.07025958 29.00000000 0.25059419 - 173929 10.10329152 1.07025958 30.00000000 0.25014622 - 173400 10.10402019 1.07025958 31.00000000 0.24980223 - 173297 10.10216102 1.07025958 32.00000000 0.25045763 - 173592 10.10497591 1.07025958 33.00000000 0.25091505 - 173058 10.10384863 1.07025958 34.00000000 0.24955761 - 173576 10.10677222 1.07025958 35.00000000 0.24984304 - 173208 10.10604255 1.07025958 36.00000000 0.25087267 - 172549 10.10254530 1.07025958 37.00000000 0.25036610 - 172835 10.10334002 1.07025958 38.00000000 0.24998856 - 171964 10.10689664 1.07025958 39.00000000 0.25029361 - 171716 10.10694274 1.07025958 40.00000000 0.25079256 - 171998 10.10577793 1.07025958 41.00000000 0.25097171 - 171844 10.10376794 1.07025958 42.00000000 0.25035823 - 171972 10.10405103 1.07025958 43.00000000 0.24992945 - 171863 10.10835428 1.07025958 44.00000000 0.25031825 - 171833 10.10467759 1.07025958 45.00000000 0.25107811 - 171241 10.10264826 1.07025958 46.00000000 0.24959629 - 170811 10.10787831 1.07025958 47.00000000 0.25071383 - 171605 10.10635738 1.07025958 48.00000000 0.25015948 - 169813 10.10629654 1.07025958 49.00000000 0.24984737 - 169636 10.10482529 1.07025958 50.00000000 0.25057894 - 170111 10.10413935 1.07025958 51.00000000 0.25045446 - 169384 10.10588887 1.07025958 52.00000000 0.25040747 - 169568 10.10674971 1.07025958 53.00000000 0.25013347 - 169396 10.10349276 1.07025958 54.00000000 0.25146693 - 169164 10.10254731 1.07025958 55.00000000 0.25049658 - 169313 10.10974037 1.07025958 56.00000000 0.25069127 - 168937 10.10379863 1.07025958 57.00000000 0.25021260 - 169451 10.10800355 1.07025958 58.00000000 0.24974861 - 168989 10.10430136 1.07025958 59.00000000 0.25039325 - 168495 10.10821686 1.07025958 60.00000000 0.24997833 - 169338 10.10251187 1.07025958 61.00000000 0.25005669 - 168433 10.10332403 1.07025958 62.00000000 0.25113023 - 167781 10.10741748 1.07025958 63.00000000 0.24912125 - 167917 10.10620450 1.07025958 64.00000000 0.25000227 - 167676 10.10285353 1.07025958 65.00000000 0.25030935 - 167106 10.10838716 1.07025958 66.00000000 0.25032044 - 166880 10.11066627 1.07025958 67.00000000 0.25004958 - 167840 10.10211021 1.07025958 68.00000000 0.24977471 - 167528 10.10475993 1.07025958 69.00000000 0.25067610 - 167208 10.10275290 1.07025958 70.00000000 0.25042851 - 166934 10.10567136 1.07025958 71.00000000 0.25069190 - 166192 10.10593611 1.07025958 72.00000000 0.25112792 - 166057 10.10290635 1.07025958 73.00000000 0.25080242 - 166381 10.10430563 1.07025958 74.00000000 0.25059913 - 165377 10.10503038 1.07025958 75.00000000 0.24984240 - 166687 10.10706615 1.07025958 76.00000000 0.25105849 - 166048 10.10503875 1.07025958 77.00000000 0.25042103 - 165722 10.10732325 1.07025958 78.00000000 0.25041282 - 165181 10.10154723 1.07025958 79.00000000 0.25049974 - 163586 10.10611105 1.07025958 80.00000000 0.25017164 - 364661 14.40001971 1.22410814 1.00000000 0.24991528 - 364646 14.40082105 1.22410814 2.00000000 0.25074541 - 363922 14.40291670 1.22410814 3.00000000 0.24938329 - 365085 14.40378056 1.22410814 4.00000000 0.25005407 - 362711 14.40047422 1.22410814 5.00000000 0.24996119 - 363823 14.40140013 1.22410814 6.00000000 0.25040248 - 363486 14.40479076 1.22410814 7.00000000 0.25032250 - 362681 14.40037063 1.22410814 8.00000000 0.25017783 - 362248 14.40042585 1.22410814 9.00000000 0.25054765 - 361394 14.39805413 1.22410814 10.00000000 0.25004217 - 361786 14.40371780 1.22410814 11.00000000 0.25085869 - 361188 14.39744544 1.22410814 12.00000000 0.24983356 - 360879 14.40196057 1.22410814 13.00000000 0.25027001 - 359607 14.39854088 1.22410814 14.00000000 0.25045594 - 359183 14.39908541 1.22410814 15.00000000 0.24994290 - 359841 14.40197883 1.22410814 16.00000000 0.25085961 - 359685 14.40401593 1.22410814 17.00000000 0.25055802 - 358714 14.39973121 1.22410814 18.00000000 0.25034637 - 356901 14.40126102 1.22410814 19.00000000 0.25015368 - 357657 14.40307557 1.22410814 20.00000000 0.25032579 - 356724 14.40264171 1.22410814 21.00000000 0.25062634 - 356284 14.39737513 1.22410814 22.00000000 0.25094412 - 355105 14.40025792 1.22410814 23.00000000 0.25013514 - 355753 14.39984516 1.22410814 24.00000000 0.24976959 - 355665 14.39975178 1.22410814 25.00000000 0.25060205 - 354826 14.39776663 1.22410814 26.00000000 0.24982927 - 353791 14.40034213 1.22410814 27.00000000 0.25050912 - 354155 14.40070858 1.22410814 28.00000000 0.25045445 - 353296 14.40317343 1.22410814 29.00000000 0.25066590 - 353633 14.40331017 1.22410814 30.00000000 0.25054307 - 353378 14.40259884 1.22410814 31.00000000 0.25058994 - 352355 14.39942298 1.22410814 32.00000000 0.24998211 - 353049 14.39785098 1.22410814 33.00000000 0.25093559 - 352173 14.40107030 1.22410814 34.00000000 0.25062131 - 351267 14.40117810 1.22410814 35.00000000 0.24978754 - 351921 14.39744601 1.22410814 36.00000000 0.24992820 - 351524 14.40157178 1.22410814 37.00000000 0.25094988 - 351246 14.40320283 1.22410814 38.00000000 0.25009100 - 350204 14.40303477 1.22410814 39.00000000 0.25070405 - 349795 14.39886546 1.22410814 40.00000000 0.25003689 - 350692 14.40486548 1.22410814 41.00000000 0.25060106 - 348776 14.40433046 1.22410814 42.00000000 0.25072663 - 348637 14.39897627 1.22410814 43.00000000 0.25060250 - 348949 14.40198107 1.22410814 44.00000000 0.25076618 - 348052 14.40374070 1.22410814 45.00000000 0.25098408 - 348909 14.40324168 1.22410814 46.00000000 0.25093920 - 348080 14.39888675 1.22410814 47.00000000 0.25050318 - 346762 14.39857952 1.22410814 48.00000000 0.25004056 - 346946 14.39900486 1.22410814 49.00000000 0.25003039 - 346311 14.40106006 1.22410814 50.00000000 0.25069469 - 346312 14.40259876 1.22410814 51.00000000 0.25010213 - 345924 14.40026342 1.22410814 52.00000000 0.25048441 - 344731 14.40144635 1.22410814 53.00000000 0.25114430 - 344868 14.40150926 1.22410814 54.00000000 0.25047269 - 343801 14.40087109 1.22410814 55.00000000 0.25072333 - 344211 14.39536135 1.22410814 56.00000000 0.25031136 - 342658 14.39986470 1.22410814 57.00000000 0.25059846 - 343820 14.40216107 1.22410814 58.00000000 0.25035334 - 343085 14.39857597 1.22410814 59.00000000 0.24974640 - 343251 14.39813762 1.22410814 60.00000000 0.24982313 - 342582 14.39800605 1.22410814 61.00000000 0.25058278 - 341181 14.40135149 1.22410814 62.00000000 0.25030775 - 341174 14.40277617 1.22410814 63.00000000 0.25023041 - 340559 14.40073510 1.22410814 64.00000000 0.24961378 - 341039 14.40484163 1.22410814 65.00000000 0.25028254 - 340685 14.39910235 1.22410814 66.00000000 0.25057247 - 340545 14.40094885 1.22410814 67.00000000 0.25023314 - 340268 14.39983848 1.22410814 68.00000000 0.25029080 - 339426 14.40696599 1.22410814 69.00000000 0.25040291 - 339420 14.40050454 1.22410814 70.00000000 0.25056812 - 338401 14.40030497 1.22410814 71.00000000 0.25081777 - 339078 14.40079447 1.22410814 72.00000000 0.24972688 - 338484 14.39573110 1.22410814 73.00000000 0.25037185 - 337130 14.39572896 1.22410814 74.00000000 0.25089135 - 337232 14.39842699 1.22410814 75.00000000 0.24995092 - 336834 14.40382085 1.22410814 76.00000000 0.25005064 - 336443 14.40469814 1.22410814 77.00000000 0.25024594 - 336190 14.40314246 1.22410814 78.00000000 0.25097643 - 334865 14.40114014 1.22410814 79.00000000 0.25023971 - 334731 14.39924448 1.22410814 80.00000000 0.25051485 - 739869 20.52261924 1.37795248 1.00000000 0.24976736 - 739070 20.52460493 1.37795248 2.00000000 0.24993472 - 738366 20.52087747 1.37795248 3.00000000 0.25055423 - 738513 20.52490675 1.37795248 4.00000000 0.25036053 - 737971 20.51817104 1.37795248 5.00000000 0.25043530 - 737652 20.52441754 1.37795248 6.00000000 0.25057740 - 736737 20.52146697 1.37795248 7.00000000 0.25113220 - 737811 20.52184630 1.37795248 8.00000000 0.25066738 - 733932 20.52647999 1.37795248 9.00000000 0.25063879 - 735399 20.52368605 1.37795248 10.00000000 0.25022582 - 733071 20.52375479 1.37795248 11.00000000 0.25040172 - 733136 20.52043522 1.37795248 12.00000000 0.25075648 - 731471 20.52402805 1.37795248 13.00000000 0.25034645 - 731779 20.52019434 1.37795248 14.00000000 0.25039828 - 727655 20.52378865 1.37795248 15.00000000 0.25030350 - 730717 20.52711746 1.37795248 16.00000000 0.25088451 - 729104 20.52269390 1.37795248 17.00000000 0.25032048 - 727761 20.51826223 1.37795248 18.00000000 0.25065997 - 728513 20.52451575 1.37795248 19.00000000 0.25026742 - 724311 20.52418925 1.37795248 20.00000000 0.25067161 - 723703 20.52373819 1.37795248 21.00000000 0.25005168 - 723750 20.52475523 1.37795248 22.00000000 0.25037605 - 722454 20.52639580 1.37795248 23.00000000 0.25000736 - 721842 20.52170308 1.37795248 24.00000000 0.25026410 - 721804 20.52124399 1.37795248 25.00000000 0.25010031 - 720354 20.52470865 1.37795248 26.00000000 0.25061100 - 718772 20.52375638 1.37795248 27.00000000 0.25065982 - 717984 20.52349384 1.37795248 28.00000000 0.25028428 - 718117 20.52087501 1.37795248 29.00000000 0.25045141 - 717411 20.52009917 1.37795248 30.00000000 0.25042096 - 716999 20.52169308 1.37795248 31.00000000 0.25089851 - 716811 20.52449939 1.37795248 32.00000000 0.25014399 - 714187 20.52306789 1.37795248 33.00000000 0.25033167 - 714197 20.52574782 1.37795248 34.00000000 0.25053942 - 713266 20.52756634 1.37795248 35.00000000 0.25060324 - 711984 20.52365523 1.37795248 36.00000000 0.25029415 - 712445 20.52051480 1.37795248 37.00000000 0.25043266 - 713148 20.52415411 1.37795248 38.00000000 0.25040217 - 710437 20.52045457 1.37795248 39.00000000 0.25050464 - 708674 20.52668961 1.37795248 40.00000000 0.25064104 - 709481 20.52141864 1.37795248 41.00000000 0.25094130 - 709614 20.52389438 1.37795248 42.00000000 0.25082146 - 706577 20.52440017 1.37795248 43.00000000 0.25065835 - 708343 20.52284563 1.37795248 44.00000000 0.25074041 - 706886 20.52296649 1.37795248 45.00000000 0.25042622 - 707315 20.52420930 1.37795248 46.00000000 0.25111938 - 705447 20.52241109 1.37795248 47.00000000 0.25028894 - 703603 20.52770403 1.37795248 48.00000000 0.25044838 - 704797 20.52367882 1.37795248 49.00000000 0.25050573 - 703575 20.52499023 1.37795248 50.00000000 0.25064153 - 702100 20.52232598 1.37795248 51.00000000 0.25059027 - 701678 20.52283044 1.37795248 52.00000000 0.25059179 - 701281 20.52566192 1.37795248 53.00000000 0.25048719 - 701046 20.52245831 1.37795248 54.00000000 0.25023470 - 699083 20.52253174 1.37795248 55.00000000 0.25067137 - 699791 20.52443207 1.37795248 56.00000000 0.25034754 - 697477 20.52301977 1.37795248 57.00000000 0.25047175 - 697437 20.52370780 1.37795248 58.00000000 0.25028679 - 697123 20.52030582 1.37795248 59.00000000 0.25026056 - 694972 20.52233933 1.37795248 60.00000000 0.25007132 - 696168 20.52008493 1.37795248 61.00000000 0.25025424 - 694854 20.51967430 1.37795248 62.00000000 0.25038518 - 693118 20.52298982 1.37795248 63.00000000 0.25034464 - 692497 20.52265053 1.37795248 64.00000000 0.25036860 - 691541 20.52129145 1.37795248 65.00000000 0.25018513 - 692000 20.52012241 1.37795248 66.00000000 0.25080918 - 691797 20.51940483 1.37795248 67.00000000 0.25026361 - 689687 20.52167898 1.37795248 68.00000000 0.25035374 - 687982 20.52069423 1.37795248 69.00000000 0.25032815 - 686998 20.52115133 1.37795248 70.00000000 0.25046108 - 686999 20.52260612 1.37795248 71.00000000 0.25049472 - 685786 20.52847451 1.37795248 72.00000000 0.25013049 - 686049 20.52112697 1.37795248 73.00000000 0.25043426 - 685226 20.52201603 1.37795248 74.00000000 0.24976814 - 684856 20.52115285 1.37795248 75.00000000 0.25071201 - 683480 20.52431037 1.37795248 76.00000000 0.25060416 - 682609 20.52280633 1.37795248 77.00000000 0.25089303 - 680178 20.52309762 1.37795248 78.00000000 0.25028217 - 680080 20.52295610 1.37795248 79.00000000 0.25060095 - 680094 20.52440411 1.37795248 80.00000000 0.25037382 + 79 0.20602211 -0.62204752 1.00000000 0.24357345 + 63 0.20847270 -0.62204752 2.00000000 0.24703637 + 85 0.20814491 -0.62204752 3.00000000 0.26444588 + 71 0.20373064 -0.62204752 4.00000000 0.23861870 + 77 0.20329481 -0.62204752 5.00000000 0.20344381 + 77 0.20532648 -0.62204752 6.00000000 0.26559186 + 67 0.20744749 -0.62204752 7.00000000 0.21120747 + 69 0.20217849 -0.62204752 8.00000000 0.27010974 + 68 0.20391290 -0.62204752 9.00000000 0.23206119 + 65 0.20620854 -0.62204752 10.00000000 0.22447927 + 68 0.20358106 -0.62204752 11.00000000 0.27960899 + 65 0.20206496 -0.62204752 12.00000000 0.26757590 + 64 0.20743932 -0.62204752 13.00000000 0.21906213 + 69 0.20576563 -0.62204752 14.00000000 0.27771316 + 75 0.20389893 -0.62204752 15.00000000 0.21758112 + 73 0.20367652 -0.62204752 16.00000000 0.26248689 + 88 0.20178619 -0.62204752 17.00000000 0.21723357 + 76 0.20339351 -0.62204752 18.00000000 0.20702802 + 90 0.20832769 -0.62204752 19.00000000 0.26469113 + 72 0.21165726 -0.62204752 20.00000000 0.26487531 + 86 0.20820057 -0.62204752 21.00000000 0.25997167 + 72 0.20167498 -0.62204752 22.00000000 0.20881748 + 63 0.20769396 -0.62204752 23.00000000 0.28573606 + 75 0.20481305 -0.62204752 24.00000000 0.22883442 + 70 0.20709180 -0.62204752 25.00000000 0.24817285 + 63 0.20912172 -0.62204752 26.00000000 0.20701463 + 67 0.20209303 -0.62204752 27.00000000 0.27347167 + 76 0.20774595 -0.62204752 28.00000000 0.24882996 + 75 0.20885864 -0.62204752 29.00000000 0.24472421 + 59 0.20674755 -0.62204752 30.00000000 0.24641980 + 84 0.20649602 -0.62204752 31.00000000 0.22448177 + 72 0.20363480 -0.62204752 32.00000000 0.20501296 + 74 0.19602261 -0.62204752 33.00000000 0.23918433 + 72 0.20415869 -0.62204752 34.00000000 0.20448322 + 82 0.20390466 -0.62204752 35.00000000 0.26038029 + 81 0.20685928 -0.62204752 36.00000000 0.26073103 + 54 0.20643492 -0.62204752 37.00000000 0.24357400 + 62 0.20453824 -0.62204752 38.00000000 0.22214915 + 79 0.19946214 -0.62204752 39.00000000 0.21404962 + 63 0.20962576 -0.62204752 40.00000000 0.23284988 + 66 0.20357003 -0.62204752 41.00000000 0.27494904 + 69 0.20320110 -0.62204752 42.00000000 0.26735654 + 70 0.20853006 -0.62204752 43.00000000 0.24091799 + 76 0.20230049 -0.62204752 44.00000000 0.22890315 + 78 0.20962153 -0.62204752 45.00000000 0.23430933 + 78 0.20444161 -0.62204752 46.00000000 0.25816003 + 71 0.20309321 -0.62204752 47.00000000 0.25774302 + 76 0.20976997 -0.62204752 48.00000000 0.22685713 + 72 0.21368411 -0.62204752 49.00000000 0.23466940 + 74 0.20289012 -0.62204752 50.00000000 0.27610429 + 63 0.20067876 -0.62204752 51.00000000 0.24323466 + 72 0.20418733 -0.62204752 52.00000000 0.30045262 + 60 0.20341582 -0.62204752 53.00000000 0.23001634 + 66 0.20334358 -0.62204752 54.00000000 0.24541444 + 76 0.20750051 -0.62204752 55.00000000 0.27203350 + 86 0.20497765 -0.62204752 56.00000000 0.27307067 + 76 0.20834784 -0.62204752 57.00000000 0.26297570 + 83 0.20347407 -0.62204752 58.00000000 0.24947282 + 64 0.20360291 -0.62204752 59.00000000 0.23551398 + 79 0.20579190 -0.62204752 60.00000000 0.25287584 + 57 0.21126374 -0.62204752 61.00000000 0.29138291 + 73 0.20707465 -0.62204752 62.00000000 0.24918699 + 70 0.20692318 -0.62204752 63.00000000 0.28555087 + 65 0.20544932 -0.62204752 64.00000000 0.25126265 + 59 0.20109199 -0.62204752 65.00000000 0.25489341 + 69 0.19461639 -0.62204752 66.00000000 0.27569288 + 79 0.21218265 -0.62204752 67.00000000 0.24974385 + 75 0.20514211 -0.62204752 68.00000000 0.23264031 + 60 0.20335547 -0.62204752 69.00000000 0.20078150 + 63 0.20689635 -0.62204752 70.00000000 0.25498347 + 68 0.20473668 -0.62204752 71.00000000 0.27194234 + 61 0.20523639 -0.62204752 72.00000000 0.29651284 + 68 0.21030218 -0.62204752 73.00000000 0.25674596 + 71 0.21240232 -0.62204752 74.00000000 0.30380497 + 77 0.20262491 -0.62204752 75.00000000 0.25017876 + 53 0.20736832 -0.62204752 76.00000000 0.24465545 + 61 0.20170438 -0.62204752 77.00000000 0.20609063 + 57 0.20841061 -0.62204752 78.00000000 0.29165347 + 56 0.20623853 -0.62204752 79.00000000 0.22694727 + 78 0.20781636 -0.62204752 80.00000000 0.28700101 + 153 0.29504077 -0.46820059 1.00000000 0.21320953 + 142 0.29041600 -0.46820059 2.00000000 0.26067311 + 147 0.29446329 -0.46820059 3.00000000 0.23497285 + 142 0.28885001 -0.46820059 4.00000000 0.21242034 + 152 0.29532977 -0.46820059 5.00000000 0.25487567 + 148 0.29268046 -0.46820059 6.00000000 0.25370716 + 151 0.29310126 -0.46820059 7.00000000 0.27748249 + 156 0.29137362 -0.46820059 8.00000000 0.23771867 + 125 0.29459152 -0.46820059 9.00000000 0.22895148 + 154 0.29291420 -0.46820059 10.00000000 0.27916324 + 143 0.29241063 -0.46820059 11.00000000 0.24720323 + 146 0.28921570 -0.46820059 12.00000000 0.25825860 + 146 0.29657626 -0.46820059 13.00000000 0.23019549 + 137 0.29552869 -0.46820059 14.00000000 0.24283948 + 145 0.28890496 -0.46820059 15.00000000 0.28600109 + 137 0.28650291 -0.46820059 16.00000000 0.24186942 + 158 0.29505575 -0.46820059 17.00000000 0.27267783 + 163 0.29365202 -0.46820059 18.00000000 0.24849144 + 165 0.28746244 -0.46820059 19.00000000 0.24242066 + 142 0.29319437 -0.46820059 20.00000000 0.27195425 + 146 0.29477220 -0.46820059 21.00000000 0.24519404 + 143 0.29323798 -0.46820059 22.00000000 0.26847275 + 151 0.29359064 -0.46820059 23.00000000 0.26416693 + 142 0.29056308 -0.46820059 24.00000000 0.23280998 + 145 0.29244909 -0.46820059 25.00000000 0.25950454 + 135 0.29033612 -0.46820059 26.00000000 0.21853331 + 126 0.28908975 -0.46820059 27.00000000 0.23370633 + 116 0.29207335 -0.46820059 28.00000000 0.25864969 + 117 0.29372882 -0.46820059 29.00000000 0.28384371 + 156 0.29373238 -0.46820059 30.00000000 0.23071081 + 143 0.29335731 -0.46820059 31.00000000 0.20790481 + 147 0.29277616 -0.46820059 32.00000000 0.23609655 + 159 0.28591836 -0.46820059 33.00000000 0.23337768 + 151 0.29122423 -0.46820059 34.00000000 0.26990905 + 139 0.29899324 -0.46820059 35.00000000 0.25288678 + 147 0.29195077 -0.46820059 36.00000000 0.25137193 + 152 0.29181607 -0.46820059 37.00000000 0.25942760 + 152 0.29699137 -0.46820059 38.00000000 0.25178241 + 144 0.29716176 -0.46820059 39.00000000 0.26430949 + 156 0.29656639 -0.46820059 40.00000000 0.27183250 + 160 0.29447128 -0.46820059 41.00000000 0.26548966 + 155 0.29686738 -0.46820059 42.00000000 0.27383388 + 153 0.29370982 -0.46820059 43.00000000 0.23327527 + 150 0.29356697 -0.46820059 44.00000000 0.21874948 + 117 0.29492746 -0.46820059 45.00000000 0.25886172 + 134 0.29641979 -0.46820059 46.00000000 0.25442650 + 152 0.29392838 -0.46820059 47.00000000 0.25885869 + 129 0.29353328 -0.46820059 48.00000000 0.26662217 + 135 0.29595817 -0.46820059 49.00000000 0.25054521 + 126 0.28844611 -0.46820059 50.00000000 0.23922377 + 124 0.28805317 -0.46820059 51.00000000 0.24147721 + 124 0.29040139 -0.46820059 52.00000000 0.22476888 + 129 0.29049005 -0.46820059 53.00000000 0.24799096 + 127 0.29408523 -0.46820059 54.00000000 0.23828856 + 130 0.29443389 -0.46820059 55.00000000 0.24980863 + 97 0.29866562 -0.46820059 56.00000000 0.24795141 + 124 0.29168266 -0.46820059 57.00000000 0.26546066 + 139 0.29219694 -0.46820059 58.00000000 0.22251753 + 158 0.29393717 -0.46820059 59.00000000 0.27136485 + 135 0.29340536 -0.46820059 60.00000000 0.24209099 + 129 0.29483380 -0.46820059 61.00000000 0.22716074 + 135 0.30000901 -0.46820059 62.00000000 0.26602926 + 158 0.28967850 -0.46820059 63.00000000 0.24143115 + 140 0.29192615 -0.46820059 64.00000000 0.26972438 + 149 0.29137597 -0.46820059 65.00000000 0.24995118 + 123 0.29557617 -0.46820059 66.00000000 0.24005543 + 136 0.29167512 -0.46820059 67.00000000 0.25905547 + 134 0.29185860 -0.46820059 68.00000000 0.24391612 + 122 0.28870261 -0.46820059 69.00000000 0.22873003 + 122 0.29175415 -0.46820059 70.00000000 0.21551515 + 141 0.29550289 -0.46820059 71.00000000 0.23885720 + 131 0.29509713 -0.46820059 72.00000000 0.27527688 + 133 0.28732798 -0.46820059 73.00000000 0.26349414 + 127 0.29053864 -0.46820059 74.00000000 0.25821951 + 138 0.29296072 -0.46820059 75.00000000 0.24454295 + 149 0.29702175 -0.46820059 76.00000000 0.26129613 + 150 0.29246208 -0.46820059 77.00000000 0.25150447 + 146 0.28749784 -0.46820059 78.00000000 0.24811742 + 147 0.29804549 -0.46820059 79.00000000 0.24650295 + 132 0.28889336 -0.46820059 80.00000000 0.23650063 + 293 0.41663401 -0.31435498 1.00000000 0.23022157 + 300 0.41995141 -0.31435498 2.00000000 0.24134053 + 284 0.42042841 -0.31435498 3.00000000 0.25505089 + 304 0.41924355 -0.31435498 4.00000000 0.26295112 + 289 0.41849546 -0.31435498 5.00000000 0.24363488 + 308 0.41868184 -0.31435498 6.00000000 0.25468248 + 287 0.41521795 -0.31435498 7.00000000 0.27196165 + 305 0.41530764 -0.31435498 8.00000000 0.26081102 + 291 0.41418787 -0.31435498 9.00000000 0.27212697 + 286 0.41505574 -0.31435498 10.00000000 0.25171438 + 295 0.41201476 -0.31435498 11.00000000 0.25120250 + 292 0.41302041 -0.31435498 12.00000000 0.24362302 + 312 0.41242556 -0.31435498 13.00000000 0.25984942 + 299 0.42044989 -0.31435498 14.00000000 0.23357472 + 271 0.41831913 -0.31435498 15.00000000 0.26352280 + 311 0.41931304 -0.31435498 16.00000000 0.24035356 + 316 0.41624096 -0.31435498 17.00000000 0.23653049 + 252 0.41060729 -0.31435498 18.00000000 0.24167916 + 306 0.41623194 -0.31435498 19.00000000 0.26358685 + 311 0.41718690 -0.31435498 20.00000000 0.25486975 + 263 0.41933052 -0.31435498 21.00000000 0.23353330 + 286 0.41554030 -0.31435498 22.00000000 0.25881657 + 290 0.41820731 -0.31435498 23.00000000 0.24321788 + 315 0.41835636 -0.31435498 24.00000000 0.25173343 + 284 0.41756471 -0.31435498 25.00000000 0.25707691 + 299 0.41736387 -0.31435498 26.00000000 0.24487424 + 301 0.41722600 -0.31435498 27.00000000 0.27612968 + 292 0.41219848 -0.31435498 28.00000000 0.25422229 + 293 0.41491925 -0.31435498 29.00000000 0.24749889 + 322 0.41968532 -0.31435498 30.00000000 0.24777262 + 273 0.42032254 -0.31435498 31.00000000 0.26388888 + 302 0.41071576 -0.31435498 32.00000000 0.25893630 + 294 0.42025217 -0.31435498 33.00000000 0.25619203 + 307 0.41254604 -0.31435498 34.00000000 0.26081197 + 307 0.41855215 -0.31435498 35.00000000 0.25439073 + 271 0.41871435 -0.31435498 36.00000000 0.25206224 + 288 0.41704290 -0.31435498 37.00000000 0.27445160 + 290 0.41769515 -0.31435498 38.00000000 0.24395361 + 269 0.41739868 -0.31435498 39.00000000 0.25342204 + 285 0.42458317 -0.31435498 40.00000000 0.24886169 + 271 0.41975053 -0.31435498 41.00000000 0.28068332 + 310 0.41439588 -0.31435498 42.00000000 0.24662758 + 284 0.41495712 -0.31435498 43.00000000 0.22716608 + 283 0.41335622 -0.31435498 44.00000000 0.23196142 + 302 0.41797816 -0.31435498 45.00000000 0.27140998 + 312 0.41994029 -0.31435498 46.00000000 0.24088548 + 287 0.42136523 -0.31435498 47.00000000 0.27056648 + 293 0.41879157 -0.31435498 48.00000000 0.24326827 + 281 0.41855216 -0.31435498 49.00000000 0.24854468 + 278 0.41544628 -0.31435498 50.00000000 0.25711674 + 275 0.42146440 -0.31435498 51.00000000 0.27238546 + 287 0.41562075 -0.31435498 52.00000000 0.24663185 + 286 0.41407476 -0.31435498 53.00000000 0.25667349 + 304 0.41943351 -0.31435498 54.00000000 0.22853686 + 278 0.41754090 -0.31435498 55.00000000 0.25122379 + 293 0.41217674 -0.31435498 56.00000000 0.25599487 + 306 0.41159691 -0.31435498 57.00000000 0.26341195 + 278 0.41300798 -0.31435498 58.00000000 0.23398499 + 280 0.41252144 -0.31435498 59.00000000 0.25348809 + 286 0.41505621 -0.31435498 60.00000000 0.24201886 + 275 0.41414993 -0.31435498 61.00000000 0.23899016 + 294 0.41830251 -0.31435498 62.00000000 0.23821332 + 275 0.41565587 -0.31435498 63.00000000 0.25698248 + 286 0.42071673 -0.31435498 64.00000000 0.24989512 + 286 0.41904771 -0.31435498 65.00000000 0.25058062 + 291 0.41460433 -0.31435498 66.00000000 0.24415422 + 319 0.41321772 -0.31435498 67.00000000 0.23811328 + 275 0.41693325 -0.31435498 68.00000000 0.23191726 + 265 0.41357949 -0.31435498 69.00000000 0.25202189 + 276 0.42337491 -0.31435498 70.00000000 0.24017734 + 296 0.41340521 -0.31435498 71.00000000 0.24983697 + 290 0.41692999 -0.31435498 72.00000000 0.25059560 + 279 0.41565842 -0.31435498 73.00000000 0.24879939 + 270 0.41592525 -0.31435498 74.00000000 0.25331627 + 292 0.41612990 -0.31435498 75.00000000 0.25349793 + 297 0.41797353 -0.31435498 76.00000000 0.24500728 + 276 0.41990340 -0.31435498 77.00000000 0.25175063 + 298 0.41578935 -0.31435498 78.00000000 0.25142310 + 297 0.41638627 -0.31435498 79.00000000 0.23474797 + 273 0.41390892 -0.31435498 80.00000000 0.23378704 + 625 0.58725658 -0.16050875 1.00000000 0.24888817 + 614 0.59379564 -0.16050875 2.00000000 0.25188978 + 638 0.59523455 -0.16050875 3.00000000 0.26319441 + 628 0.59638274 -0.16050875 4.00000000 0.23382911 + 612 0.59364502 -0.16050875 5.00000000 0.26579707 + 611 0.59636261 -0.16050875 6.00000000 0.25261339 + 619 0.58813815 -0.16050875 7.00000000 0.24447021 + 577 0.59420082 -0.16050875 8.00000000 0.24392010 + 644 0.59519989 -0.16050875 9.00000000 0.25153650 + 608 0.59502711 -0.16050875 10.00000000 0.26157165 + 650 0.59366549 -0.16050875 11.00000000 0.25558233 + 584 0.59197111 -0.16050875 12.00000000 0.25673441 + 616 0.59331572 -0.16050875 13.00000000 0.23900615 + 599 0.59048994 -0.16050875 14.00000000 0.25410140 + 580 0.59329294 -0.16050875 15.00000000 0.25713378 + 623 0.59460956 -0.16050875 16.00000000 0.25298072 + 626 0.59390606 -0.16050875 17.00000000 0.25361309 + 631 0.59268945 -0.16050875 18.00000000 0.24657889 + 584 0.59082123 -0.16050875 19.00000000 0.26692584 + 629 0.59992266 -0.16050875 20.00000000 0.23488344 + 642 0.58848774 -0.16050875 21.00000000 0.24096471 + 616 0.59550115 -0.16050875 22.00000000 0.24851963 + 592 0.59246380 -0.16050875 23.00000000 0.24605224 + 608 0.59436559 -0.16050875 24.00000000 0.24555574 + 569 0.59075594 -0.16050875 25.00000000 0.25291669 + 569 0.59433204 -0.16050875 26.00000000 0.25813534 + 615 0.59617398 -0.16050875 27.00000000 0.22602196 + 568 0.59871792 -0.16050875 28.00000000 0.25882265 + 591 0.59403404 -0.16050875 29.00000000 0.24451882 + 631 0.59201902 -0.16050875 30.00000000 0.26374669 + 589 0.59208716 -0.16050875 31.00000000 0.24991260 + 612 0.59038600 -0.16050875 32.00000000 0.26463450 + 594 0.59409545 -0.16050875 33.00000000 0.23637541 + 620 0.59857955 -0.16050875 34.00000000 0.24694804 + 653 0.59161042 -0.16050875 35.00000000 0.24176244 + 570 0.58877814 -0.16050875 36.00000000 0.23940273 + 629 0.59554930 -0.16050875 37.00000000 0.26401930 + 631 0.59190883 -0.16050875 38.00000000 0.25658887 + 574 0.59332174 -0.16050875 39.00000000 0.23716456 + 587 0.59799996 -0.16050875 40.00000000 0.25593978 + 593 0.59424856 -0.16050875 41.00000000 0.24772784 + 595 0.59715911 -0.16050875 42.00000000 0.25282848 + 590 0.59799902 -0.16050875 43.00000000 0.24838601 + 591 0.59328664 -0.16050875 44.00000000 0.23596788 + 577 0.59673365 -0.16050875 45.00000000 0.23155476 + 607 0.59120090 -0.16050875 46.00000000 0.23890960 + 593 0.59347080 -0.16050875 47.00000000 0.24959220 + 604 0.59206539 -0.16050875 48.00000000 0.23482736 + 579 0.59566707 -0.16050875 49.00000000 0.26091488 + 608 0.59314787 -0.16050875 50.00000000 0.25051996 + 641 0.59138590 -0.16050875 51.00000000 0.25212689 + 582 0.59083777 -0.16050875 52.00000000 0.25185156 + 588 0.59739164 -0.16050875 53.00000000 0.25384130 + 583 0.59718327 -0.16050875 54.00000000 0.26038124 + 642 0.59208753 -0.16050875 55.00000000 0.25483304 + 612 0.59666650 -0.16050875 56.00000000 0.26164055 + 615 0.59098060 -0.16050875 57.00000000 0.24028520 + 562 0.58890994 -0.16050875 58.00000000 0.25778240 + 556 0.59187494 -0.16050875 59.00000000 0.25708497 + 598 0.59733374 -0.16050875 60.00000000 0.24111409 + 600 0.58760886 -0.16050875 61.00000000 0.26619671 + 551 0.59508724 -0.16050875 62.00000000 0.24952242 + 587 0.59689459 -0.16050875 63.00000000 0.24618727 + 589 0.59159336 -0.16050875 64.00000000 0.24379174 + 567 0.59560354 -0.16050875 65.00000000 0.24991433 + 561 0.59006404 -0.16050875 66.00000000 0.25195357 + 562 0.58896654 -0.16050875 67.00000000 0.24227840 + 588 0.58911771 -0.16050875 68.00000000 0.25542714 + 579 0.59674083 -0.16050875 69.00000000 0.24742932 + 543 0.59074422 -0.16050875 70.00000000 0.23856596 + 587 0.59028218 -0.16050875 71.00000000 0.25401824 + 536 0.58987457 -0.16050875 72.00000000 0.24598656 + 588 0.59441454 -0.16050875 73.00000000 0.25560790 + 565 0.59871918 -0.16050875 74.00000000 0.24442647 + 545 0.59655686 -0.16050875 75.00000000 0.24834726 + 577 0.59276357 -0.16050875 76.00000000 0.25790214 + 579 0.59882435 -0.16050875 77.00000000 0.26522679 + 558 0.58857400 -0.16050875 78.00000000 0.25761139 + 535 0.58921099 -0.16050875 79.00000000 0.25147943 + 580 0.58955949 -0.16050875 80.00000000 0.24465136 + 1278 0.84865844 -0.00666210 1.00000000 0.24221895 + 1264 0.84458774 -0.00666210 2.00000000 0.25002568 + 1297 0.85096698 -0.00666210 3.00000000 0.25043093 + 1238 0.84783566 -0.00666210 4.00000000 0.25972133 + 1305 0.84721751 -0.00666210 5.00000000 0.25102135 + 1245 0.85078600 -0.00666210 6.00000000 0.24548052 + 1242 0.84685028 -0.00666210 7.00000000 0.25498725 + 1277 0.84785023 -0.00666210 8.00000000 0.24626344 + 1284 0.85074178 -0.00666210 9.00000000 0.25252878 + 1286 0.84235131 -0.00666210 10.00000000 0.24208002 + 1196 0.84977576 -0.00666210 11.00000000 0.24954483 + 1192 0.84383521 -0.00666210 12.00000000 0.24563105 + 1285 0.84313792 -0.00666210 13.00000000 0.26299773 + 1243 0.84869553 -0.00666210 14.00000000 0.25019320 + 1229 0.84765193 -0.00666210 15.00000000 0.25118957 + 1259 0.83972814 -0.00666210 16.00000000 0.25203162 + 1220 0.85122236 -0.00666210 17.00000000 0.26681562 + 1192 0.84334205 -0.00666210 18.00000000 0.24994185 + 1199 0.84672723 -0.00666210 19.00000000 0.24763778 + 1246 0.84136981 -0.00666210 20.00000000 0.24683942 + 1226 0.84957194 -0.00666210 21.00000000 0.25239875 + 1240 0.84504091 -0.00666210 22.00000000 0.24753457 + 1229 0.84754352 -0.00666210 23.00000000 0.24548618 + 1218 0.84694799 -0.00666210 24.00000000 0.24962584 + 1185 0.84446237 -0.00666210 25.00000000 0.24362365 + 1313 0.84306562 -0.00666210 26.00000000 0.24575393 + 1228 0.84144765 -0.00666210 27.00000000 0.24156374 + 1182 0.84568075 -0.00666210 28.00000000 0.24827116 + 1201 0.84669185 -0.00666210 29.00000000 0.25945093 + 1188 0.84859528 -0.00666210 30.00000000 0.25747371 + 1250 0.85265637 -0.00666210 31.00000000 0.23655129 + 1125 0.85100974 -0.00666210 32.00000000 0.26065642 + 1188 0.84541402 -0.00666210 33.00000000 0.24760830 + 1190 0.84890242 -0.00666210 34.00000000 0.27439267 + 1205 0.84504633 -0.00666210 35.00000000 0.25517737 + 1209 0.84816341 -0.00666210 36.00000000 0.24540893 + 1270 0.84732652 -0.00666210 37.00000000 0.25288607 + 1189 0.84286455 -0.00666210 38.00000000 0.25308067 + 1247 0.84416660 -0.00666210 39.00000000 0.24925473 + 1177 0.84772846 -0.00666210 40.00000000 0.24742934 + 1184 0.84682043 -0.00666210 41.00000000 0.24942252 + 1203 0.84622144 -0.00666210 42.00000000 0.24541562 + 1237 0.84391627 -0.00666210 43.00000000 0.25744933 + 1191 0.84428092 -0.00666210 44.00000000 0.24580292 + 1165 0.84334197 -0.00666210 45.00000000 0.25101931 + 1216 0.84486984 -0.00666210 46.00000000 0.25609460 + 1170 0.84909965 -0.00666210 47.00000000 0.26491469 + 1164 0.83998617 -0.00666210 48.00000000 0.25570463 + 1193 0.84993760 -0.00666210 49.00000000 0.24417203 + 1240 0.84589368 -0.00666210 50.00000000 0.24096204 + 1230 0.85326671 -0.00666210 51.00000000 0.24368011 + 1168 0.84811998 -0.00666210 52.00000000 0.25598818 + 1226 0.84847973 -0.00666210 53.00000000 0.25272545 + 1210 0.83925291 -0.00666210 54.00000000 0.25648446 + 1223 0.84762967 -0.00666210 55.00000000 0.25776999 + 1208 0.84761470 -0.00666210 56.00000000 0.25863136 + 1134 0.85122634 -0.00666210 57.00000000 0.25275689 + 1157 0.84903631 -0.00666210 58.00000000 0.24651364 + 1181 0.84801888 -0.00666210 59.00000000 0.24498609 + 1151 0.84970773 -0.00666210 60.00000000 0.25762164 + 1113 0.84379041 -0.00666210 61.00000000 0.25017096 + 1178 0.84634579 -0.00666210 62.00000000 0.26304719 + 1229 0.84392900 -0.00666210 63.00000000 0.25073566 + 1220 0.84005284 -0.00666210 64.00000000 0.24746440 + 1224 0.84656395 -0.00666210 65.00000000 0.25099877 + 1230 0.84841893 -0.00666210 66.00000000 0.25008851 + 1209 0.84237566 -0.00666210 67.00000000 0.25159563 + 1143 0.84889274 -0.00666210 68.00000000 0.25469776 + 1194 0.84524084 -0.00666210 69.00000000 0.25535199 + 1172 0.84944611 -0.00666210 70.00000000 0.25446016 + 1168 0.84625696 -0.00666210 71.00000000 0.24964148 + 1185 0.84372102 -0.00666210 72.00000000 0.25637117 + 1178 0.85463189 -0.00666210 73.00000000 0.25572288 + 1181 0.84602257 -0.00666210 74.00000000 0.24554167 + 1165 0.85267926 -0.00666210 75.00000000 0.25217513 + 1186 0.85048481 -0.00666210 76.00000000 0.24089960 + 1172 0.84597994 -0.00666210 77.00000000 0.25378459 + 1214 0.84689983 -0.00666210 78.00000000 0.25851510 + 1150 0.85338817 -0.00666210 79.00000000 0.24776144 + 1164 0.84472058 -0.00666210 80.00000000 0.25230723 + 2664 1.20716279 0.14718457 1.00000000 0.24280090 + 2515 1.20718840 0.14718457 2.00000000 0.24867018 + 2545 1.20112429 0.14718457 3.00000000 0.24770559 + 2686 1.21043840 0.14718457 4.00000000 0.25061878 + 2534 1.20300454 0.14718457 5.00000000 0.24692151 + 2615 1.20781776 0.14718457 6.00000000 0.24632771 + 2505 1.21043218 0.14718457 7.00000000 0.24970032 + 2527 1.20465747 0.14718457 8.00000000 0.25664409 + 2526 1.20341860 0.14718457 9.00000000 0.24879758 + 2586 1.20940981 0.14718457 10.00000000 0.25688423 + 2473 1.20843505 0.14718457 11.00000000 0.24738252 + 2483 1.20408294 0.14718457 12.00000000 0.24285319 + 2518 1.20361931 0.14718457 13.00000000 0.25657298 + 2588 1.21116173 0.14718457 14.00000000 0.24718998 + 2532 1.20369901 0.14718457 15.00000000 0.25306278 + 2443 1.20564229 0.14718457 16.00000000 0.24944833 + 2493 1.20660674 0.14718457 17.00000000 0.24558867 + 2525 1.20139750 0.14718457 18.00000000 0.24361211 + 2476 1.20969065 0.14718457 19.00000000 0.25503786 + 2517 1.20485128 0.14718457 20.00000000 0.26031776 + 2583 1.20358659 0.14718457 21.00000000 0.24918204 + 2377 1.20360319 0.14718457 22.00000000 0.24896134 + 2577 1.21202006 0.14718457 23.00000000 0.24617928 + 2514 1.20253749 0.14718457 24.00000000 0.25434077 + 2523 1.21098331 0.14718457 25.00000000 0.25679193 + 2503 1.20737091 0.14718457 26.00000000 0.24878908 + 2492 1.20113057 0.14718457 27.00000000 0.26544235 + 2447 1.20574389 0.14718457 28.00000000 0.25660657 + 2413 1.21192386 0.14718457 29.00000000 0.25116635 + 2462 1.20618281 0.14718457 30.00000000 0.25586832 + 2569 1.20412230 0.14718457 31.00000000 0.24445397 + 2378 1.21299730 0.14718457 32.00000000 0.25285130 + 2437 1.20589295 0.14718457 33.00000000 0.25432843 + 2475 1.20467308 0.14718457 34.00000000 0.25193688 + 2392 1.20575562 0.14718457 35.00000000 0.25062543 + 2449 1.21143498 0.14718457 36.00000000 0.24126433 + 2434 1.20004663 0.14718457 37.00000000 0.25437578 + 2427 1.20603297 0.14718457 38.00000000 0.25347561 + 2504 1.20422927 0.14718457 39.00000000 0.24857700 + 2449 1.21097069 0.14718457 40.00000000 0.25460168 + 2434 1.20772574 0.14718457 41.00000000 0.25185894 + 2344 1.20772357 0.14718457 42.00000000 0.24859580 + 2432 1.20317855 0.14718457 43.00000000 0.25223019 + 2496 1.20782703 0.14718457 44.00000000 0.25097297 + 2397 1.20485541 0.14718457 45.00000000 0.24675843 + 2424 1.20705339 0.14718457 46.00000000 0.24336427 + 2382 1.21071462 0.14718457 47.00000000 0.24980134 + 2475 1.20547552 0.14718457 48.00000000 0.24834771 + 2492 1.20769757 0.14718457 49.00000000 0.25701054 + 2479 1.20178211 0.14718457 50.00000000 0.26032272 + 2382 1.20439304 0.14718457 51.00000000 0.25266519 + 2398 1.21035346 0.14718457 52.00000000 0.25319200 + 2421 1.20233780 0.14718457 53.00000000 0.25164192 + 2343 1.20906574 0.14718457 54.00000000 0.25369013 + 2397 1.20226760 0.14718457 55.00000000 0.25641505 + 2439 1.20031847 0.14718457 56.00000000 0.25478378 + 2402 1.20460574 0.14718457 57.00000000 0.25044380 + 2394 1.21057590 0.14718457 58.00000000 0.25346709 + 2449 1.20456739 0.14718457 59.00000000 0.25763613 + 2458 1.20771610 0.14718457 60.00000000 0.25520392 + 2452 1.20411743 0.14718457 61.00000000 0.25143954 + 2391 1.21034066 0.14718457 62.00000000 0.24845452 + 2413 1.21054513 0.14718457 63.00000000 0.25722474 + 2414 1.21290504 0.14718457 64.00000000 0.25677770 + 2400 1.20260698 0.14718457 65.00000000 0.24722518 + 2381 1.20719711 0.14718457 66.00000000 0.25109193 + 2422 1.21044311 0.14718457 67.00000000 0.24633658 + 2356 1.20644200 0.14718457 68.00000000 0.25878058 + 2463 1.20039228 0.14718457 69.00000000 0.25320475 + 2363 1.21090685 0.14718457 70.00000000 0.25169272 + 2353 1.20211638 0.14718457 71.00000000 0.26096779 + 2404 1.20791013 0.14718457 72.00000000 0.25259835 + 2375 1.21141056 0.14718457 73.00000000 0.25180022 + 2411 1.21015972 0.14718457 74.00000000 0.25905138 + 2338 1.20725304 0.14718457 75.00000000 0.25174438 + 2403 1.20511338 0.14718457 76.00000000 0.24832101 + 2323 1.21098259 0.14718457 77.00000000 0.24511081 + 2351 1.20654146 0.14718457 78.00000000 0.24599388 + 2459 1.20627324 0.14718457 79.00000000 0.24714041 + 2348 1.19981860 0.14718457 80.00000000 0.25065294 + 5271 1.72195551 0.30103000 1.00000000 0.25062481 + 5270 1.72322027 0.30103000 2.00000000 0.25021807 + 5201 1.71254902 0.30103000 3.00000000 0.24683126 + 5166 1.72273888 0.30103000 4.00000000 0.24919360 + 5284 1.71722664 0.30103000 5.00000000 0.24611354 + 5145 1.71743191 0.30103000 6.00000000 0.25254255 + 5149 1.72313894 0.30103000 7.00000000 0.24857361 + 5045 1.71839436 0.30103000 8.00000000 0.25573609 + 4999 1.71560917 0.30103000 9.00000000 0.24853447 + 5305 1.72564946 0.30103000 10.00000000 0.24958263 + 5095 1.72024316 0.30103000 11.00000000 0.24655375 + 5231 1.71925962 0.30103000 12.00000000 0.24689919 + 5055 1.71499867 0.30103000 13.00000000 0.25007551 + 5161 1.72225157 0.30103000 14.00000000 0.25013895 + 5060 1.71807490 0.30103000 15.00000000 0.25091603 + 5125 1.71525708 0.30103000 16.00000000 0.24728011 + 5102 1.71435958 0.30103000 17.00000000 0.25424646 + 5170 1.71536280 0.30103000 18.00000000 0.24926939 + 5039 1.71186305 0.30103000 19.00000000 0.25280966 + 5044 1.72200126 0.30103000 20.00000000 0.24958179 + 5087 1.72367815 0.30103000 21.00000000 0.25455625 + 5149 1.72201314 0.30103000 22.00000000 0.25260675 + 5089 1.71591130 0.30103000 23.00000000 0.24832086 + 5056 1.71957456 0.30103000 24.00000000 0.24679471 + 5020 1.72364768 0.30103000 25.00000000 0.24931063 + 5191 1.71971991 0.30103000 26.00000000 0.24854240 + 4904 1.71557562 0.30103000 27.00000000 0.25263889 + 4976 1.71563654 0.30103000 28.00000000 0.25729664 + 4896 1.72022283 0.30103000 29.00000000 0.24716396 + 4918 1.72007704 0.30103000 30.00000000 0.25155143 + 4949 1.71448141 0.30103000 31.00000000 0.25327098 + 5060 1.72740488 0.30103000 32.00000000 0.25290257 + 4958 1.72077905 0.30103000 33.00000000 0.25276080 + 4935 1.71979458 0.30103000 34.00000000 0.25251498 + 4825 1.71271976 0.30103000 35.00000000 0.25010908 + 4985 1.71713766 0.30103000 36.00000000 0.25688373 + 4953 1.72360644 0.30103000 37.00000000 0.25467044 + 4879 1.72089803 0.30103000 38.00000000 0.25213319 + 4928 1.71965194 0.30103000 39.00000000 0.25043556 + 4985 1.72222693 0.30103000 40.00000000 0.25681447 + 4978 1.72048365 0.30103000 41.00000000 0.25261242 + 4884 1.71248085 0.30103000 42.00000000 0.25084780 + 4979 1.72089755 0.30103000 43.00000000 0.25510563 + 4920 1.71690812 0.30103000 44.00000000 0.25032123 + 4955 1.72385933 0.30103000 45.00000000 0.25161280 + 4952 1.71777544 0.30103000 46.00000000 0.24826622 + 4926 1.71801893 0.30103000 47.00000000 0.25289673 + 5033 1.71763307 0.30103000 48.00000000 0.24793855 + 5086 1.71967494 0.30103000 49.00000000 0.25332199 + 4810 1.71810863 0.30103000 50.00000000 0.25269462 + 4846 1.72095077 0.30103000 51.00000000 0.25022096 + 4937 1.71861967 0.30103000 52.00000000 0.25098109 + 4845 1.71245653 0.30103000 53.00000000 0.25024632 + 4967 1.72270903 0.30103000 54.00000000 0.25334838 + 4881 1.71860075 0.30103000 55.00000000 0.24820630 + 5062 1.71958831 0.30103000 56.00000000 0.25373784 + 4898 1.71904397 0.30103000 57.00000000 0.24766675 + 4942 1.71391686 0.30103000 58.00000000 0.24943137 + 4903 1.72657275 0.30103000 59.00000000 0.25382645 + 4889 1.72101627 0.30103000 60.00000000 0.24806164 + 4803 1.71705736 0.30103000 61.00000000 0.24776544 + 4816 1.71899729 0.30103000 62.00000000 0.24911242 + 4926 1.71681996 0.30103000 63.00000000 0.25297203 + 4991 1.72159667 0.30103000 64.00000000 0.24909894 + 4795 1.72334477 0.30103000 65.00000000 0.25116713 + 4908 1.71676869 0.30103000 66.00000000 0.25418058 + 4902 1.72091987 0.30103000 67.00000000 0.25206313 + 5000 1.71437174 0.30103000 68.00000000 0.25317893 + 4979 1.72480406 0.30103000 69.00000000 0.25595238 + 4748 1.72304054 0.30103000 70.00000000 0.25402668 + 4798 1.71655185 0.30103000 71.00000000 0.24278148 + 4780 1.71978068 0.30103000 72.00000000 0.24779650 + 4800 1.72227420 0.30103000 73.00000000 0.25243515 + 4792 1.72430940 0.30103000 74.00000000 0.24834917 + 4795 1.71648468 0.30103000 75.00000000 0.24846577 + 4992 1.71373744 0.30103000 76.00000000 0.25025871 + 4761 1.71901565 0.30103000 77.00000000 0.25056897 + 4738 1.72086716 0.30103000 78.00000000 0.24761739 + 4883 1.72134213 0.30103000 79.00000000 0.24447632 + 4783 1.71827582 0.30103000 80.00000000 0.25251775 + 10540 2.44898280 0.45487534 1.00000000 0.24926448 + 10590 2.44987254 0.45487534 2.00000000 0.25172278 + 10687 2.44739484 0.45487534 3.00000000 0.25065897 + 10511 2.45145176 0.45487534 4.00000000 0.25101629 + 10430 2.45005442 0.45487534 5.00000000 0.24816214 + 10352 2.45251409 0.45487534 6.00000000 0.25078004 + 10559 2.45069852 0.45487534 7.00000000 0.24897786 + 10495 2.45374511 0.45487534 8.00000000 0.25637632 + 10341 2.45132936 0.45487534 9.00000000 0.25348416 + 10317 2.45274132 0.45487534 10.00000000 0.24795030 + 10605 2.45282735 0.45487534 11.00000000 0.25442146 + 10624 2.45398611 0.45487534 12.00000000 0.24964434 + 10336 2.44849072 0.45487534 13.00000000 0.24881915 + 10469 2.45529603 0.45487534 14.00000000 0.24990621 + 10342 2.44435093 0.45487534 15.00000000 0.24978647 + 10295 2.45882057 0.45487534 16.00000000 0.24728866 + 10455 2.45138523 0.45487534 17.00000000 0.24907914 + 10350 2.45176195 0.45487534 18.00000000 0.25047414 + 10278 2.45242915 0.45487534 19.00000000 0.25091012 + 10412 2.45147210 0.45487534 20.00000000 0.25238080 + 10325 2.44987150 0.45487534 21.00000000 0.25136624 + 10202 2.45022192 0.45487534 22.00000000 0.24847341 + 10150 2.44834175 0.45487534 23.00000000 0.24743660 + 10166 2.44681491 0.45487534 24.00000000 0.24980852 + 10381 2.45372647 0.45487534 25.00000000 0.24643314 + 10346 2.45083219 0.45487534 26.00000000 0.25049290 + 10313 2.44800833 0.45487534 27.00000000 0.24906014 + 10181 2.44819500 0.45487534 28.00000000 0.24811631 + 10302 2.45503833 0.45487534 29.00000000 0.24842166 + 10262 2.45497902 0.45487534 30.00000000 0.24894253 + 10187 2.45287751 0.45487534 31.00000000 0.24583006 + 10080 2.44217171 0.45487534 32.00000000 0.24893529 + 10138 2.44582224 0.45487534 33.00000000 0.24753659 + 10376 2.45060233 0.45487534 34.00000000 0.25030820 + 9984 2.45064087 0.45487534 35.00000000 0.25118516 + 10182 2.45030200 0.45487534 36.00000000 0.24825293 + 10329 2.45384541 0.45487534 37.00000000 0.24927002 + 10106 2.44612574 0.45487534 38.00000000 0.25096468 + 10093 2.45217004 0.45487534 39.00000000 0.25149265 + 9912 2.44931102 0.45487534 40.00000000 0.24904297 + 9976 2.45089235 0.45487534 41.00000000 0.24908301 + 10033 2.45097936 0.45487534 42.00000000 0.24921526 + 10051 2.44976864 0.45487534 43.00000000 0.25171568 + 10041 2.44662576 0.45487534 44.00000000 0.24935109 + 10013 2.44732479 0.45487534 45.00000000 0.25228599 + 10067 2.45229683 0.45487534 46.00000000 0.25370459 + 10186 2.44936399 0.45487534 47.00000000 0.24729351 + 10065 2.44710767 0.45487534 48.00000000 0.25209485 + 9923 2.45485700 0.45487534 49.00000000 0.25120447 + 9950 2.44478928 0.45487534 50.00000000 0.25066408 + 10003 2.44837567 0.45487534 51.00000000 0.25020639 + 9875 2.45522108 0.45487534 52.00000000 0.24767882 + 9933 2.44762887 0.45487534 53.00000000 0.25441608 + 9959 2.45074142 0.45487534 54.00000000 0.25070590 + 9899 2.44707489 0.45487534 55.00000000 0.25331910 + 9762 2.44474253 0.45487534 56.00000000 0.25123390 + 10062 2.45604768 0.45487534 57.00000000 0.24795199 + 10048 2.44583939 0.45487534 58.00000000 0.25137230 + 9949 2.45481692 0.45487534 59.00000000 0.25332811 + 9955 2.45408873 0.45487534 60.00000000 0.25024841 + 9718 2.45221559 0.45487534 61.00000000 0.25070629 + 10145 2.45311526 0.45487534 62.00000000 0.25265377 + 9809 2.44252452 0.45487534 63.00000000 0.24816835 + 9886 2.45001777 0.45487534 64.00000000 0.25196909 + 9778 2.45439053 0.45487534 65.00000000 0.25200719 + 9847 2.45030066 0.45487534 66.00000000 0.24892799 + 9925 2.44893679 0.45487534 67.00000000 0.24772934 + 9798 2.45482447 0.45487534 68.00000000 0.25063928 + 9798 2.45115464 0.45487534 69.00000000 0.24778308 + 9801 2.44242588 0.45487534 70.00000000 0.25517225 + 9709 2.44803177 0.45487534 71.00000000 0.24722351 + 9768 2.45178766 0.45487534 72.00000000 0.24738273 + 9777 2.45578261 0.45487534 73.00000000 0.25446172 + 9727 2.44960291 0.45487534 74.00000000 0.24975335 + 9889 2.45138414 0.45487534 75.00000000 0.24993416 + 9681 2.45155035 0.45487534 76.00000000 0.24910448 + 9656 2.45011826 0.45487534 77.00000000 0.25174592 + 9724 2.45281579 0.45487534 78.00000000 0.25291647 + 9684 2.45059043 0.45487534 79.00000000 0.25058870 + 9630 2.45090509 0.45487534 80.00000000 0.24908108 + 21498 3.49381662 0.60872281 1.00000000 0.24915830 + 21144 3.48924661 0.60872281 2.00000000 0.24845112 + 21279 3.49011936 0.60872281 3.00000000 0.24902405 + 21451 3.48936749 0.60872281 4.00000000 0.25142276 + 21497 3.48883488 0.60872281 5.00000000 0.25233490 + 21317 3.48762997 0.60872281 6.00000000 0.25107709 + 21244 3.49071286 0.60872281 7.00000000 0.25027151 + 21249 3.48347757 0.60872281 8.00000000 0.24837662 + 21298 3.48015906 0.60872281 9.00000000 0.24832203 + 21364 3.49150908 0.60872281 10.00000000 0.25045848 + 21381 3.49420325 0.60872281 11.00000000 0.24815435 + 21176 3.48565250 0.60872281 12.00000000 0.25170884 + 21307 3.49182879 0.60872281 13.00000000 0.24863627 + 21009 3.49158871 0.60872281 14.00000000 0.24922841 + 21038 3.48459329 0.60872281 15.00000000 0.25022264 + 20799 3.48713747 0.60872281 16.00000000 0.25108226 + 21010 3.49034191 0.60872281 17.00000000 0.25128410 + 21215 3.48934333 0.60872281 18.00000000 0.25088992 + 21090 3.49031141 0.60872281 19.00000000 0.25100680 + 20773 3.49630494 0.60872281 20.00000000 0.24933612 + 20909 3.48926396 0.60872281 21.00000000 0.24975159 + 20989 3.49219153 0.60872281 22.00000000 0.24828976 + 20939 3.49507051 0.60872281 23.00000000 0.24858760 + 21133 3.48846591 0.60872281 24.00000000 0.24795021 + 20952 3.49011202 0.60872281 25.00000000 0.25083563 + 20696 3.49016605 0.60872281 26.00000000 0.25023479 + 20958 3.49221170 0.60872281 27.00000000 0.25103251 + 20393 3.49139780 0.60872281 28.00000000 0.25316558 + 20896 3.49229328 0.60872281 29.00000000 0.25117394 + 20830 3.49224182 0.60872281 30.00000000 0.24895861 + 20871 3.49223037 0.60872281 31.00000000 0.25134606 + 20672 3.49432391 0.60872281 32.00000000 0.24881978 + 20721 3.49525034 0.60872281 33.00000000 0.25114319 + 20670 3.48997459 0.60872281 34.00000000 0.25297581 + 20788 3.49282260 0.60872281 35.00000000 0.24928076 + 20690 3.49245214 0.60872281 36.00000000 0.24891849 + 20702 3.49524640 0.60872281 37.00000000 0.24996117 + 20626 3.49339678 0.60872281 38.00000000 0.25008013 + 20261 3.49177879 0.60872281 39.00000000 0.24915399 + 20467 3.49050513 0.60872281 40.00000000 0.24946879 + 20374 3.49888803 0.60872281 41.00000000 0.24859353 + 20421 3.49509394 0.60872281 42.00000000 0.25087045 + 20328 3.49528239 0.60872281 43.00000000 0.25213814 + 20496 3.49366243 0.60872281 44.00000000 0.25027788 + 20290 3.48767711 0.60872281 45.00000000 0.24935234 + 20393 3.49434646 0.60872281 46.00000000 0.24954717 + 20369 3.49367228 0.60872281 47.00000000 0.24927059 + 20426 3.49610866 0.60872281 48.00000000 0.25075387 + 20366 3.49280308 0.60872281 49.00000000 0.25125612 + 20227 3.48965871 0.60872281 50.00000000 0.25234109 + 20371 3.48938326 0.60872281 51.00000000 0.25045214 + 20206 3.49271242 0.60872281 52.00000000 0.25310968 + 20303 3.49203860 0.60872281 53.00000000 0.24843167 + 20175 3.49069795 0.60872281 54.00000000 0.24887198 + 20280 3.49252676 0.60872281 55.00000000 0.25084989 + 20330 3.49458868 0.60872281 56.00000000 0.24863967 + 19940 3.49321880 0.60872281 57.00000000 0.25037294 + 19993 3.48490646 0.60872281 58.00000000 0.24842208 + 20517 3.49101635 0.60872281 59.00000000 0.25017521 + 20112 3.49515342 0.60872281 60.00000000 0.24773175 + 20272 3.48714584 0.60872281 61.00000000 0.24996469 + 20107 3.49494536 0.60872281 62.00000000 0.24901700 + 20045 3.49328296 0.60872281 63.00000000 0.25054511 + 19895 3.48782725 0.60872281 64.00000000 0.25212663 + 20003 3.49507513 0.60872281 65.00000000 0.24684804 + 19946 3.48853027 0.60872281 66.00000000 0.25128892 + 20084 3.48967433 0.60872281 67.00000000 0.24949775 + 19790 3.49075280 0.60872281 68.00000000 0.25328189 + 19887 3.48853679 0.60872281 69.00000000 0.25120634 + 19723 3.48512924 0.60872281 70.00000000 0.25268825 + 19775 3.49119271 0.60872281 71.00000000 0.24890415 + 19919 3.49004851 0.60872281 72.00000000 0.25122262 + 19870 3.49623899 0.60872281 73.00000000 0.25087681 + 19934 3.49213432 0.60872281 74.00000000 0.24928904 + 19374 3.49007696 0.60872281 75.00000000 0.25038367 + 19855 3.49554410 0.60872281 76.00000000 0.25074249 + 19841 3.49046852 0.60872281 77.00000000 0.25217334 + 19576 3.48984581 0.60872281 78.00000000 0.25044997 + 19482 3.49581982 0.60872281 79.00000000 0.24717201 + 19812 3.49343582 0.60872281 80.00000000 0.25078852 + 43438 4.97389678 0.76256829 1.00000000 0.24977346 + 43153 4.97688777 0.76256829 2.00000000 0.24910500 + 43566 4.97740404 0.76256829 3.00000000 0.25047875 + 43346 4.97291109 0.76256829 4.00000000 0.24981382 + 43282 4.97313137 0.76256829 5.00000000 0.25191107 + 43571 4.97080137 0.76256829 6.00000000 0.24895633 + 43444 4.97451277 0.76256829 7.00000000 0.24795213 + 43110 4.97698213 0.76256829 8.00000000 0.25178981 + 43629 4.97935704 0.76256829 9.00000000 0.24961866 + 43096 4.97807429 0.76256829 10.00000000 0.25093461 + 42955 4.97688283 0.76256829 11.00000000 0.25101981 + 43298 4.97653250 0.76256829 12.00000000 0.25070158 + 42911 4.97683558 0.76256829 13.00000000 0.24992821 + 43114 4.97887675 0.76256829 14.00000000 0.24815538 + 43142 4.97942371 0.76256829 15.00000000 0.25119465 + 43009 4.97412959 0.76256829 16.00000000 0.24945959 + 42749 4.97700699 0.76256829 17.00000000 0.24833657 + 42389 4.97782209 0.76256829 18.00000000 0.24951831 + 42723 4.97218676 0.76256829 19.00000000 0.24972459 + 42584 4.97171720 0.76256829 20.00000000 0.25142669 + 42578 4.97680855 0.76256829 21.00000000 0.24904808 + 42466 4.96968504 0.76256829 22.00000000 0.24970855 + 42549 4.97814942 0.76256829 23.00000000 0.25029173 + 42391 4.97733556 0.76256829 24.00000000 0.25004697 + 42553 4.97704283 0.76256829 25.00000000 0.24890449 + 42059 4.97807692 0.76256829 26.00000000 0.25178456 + 42261 4.97306598 0.76256829 27.00000000 0.25283228 + 42479 4.97715892 0.76256829 28.00000000 0.24859724 + 42526 4.98290343 0.76256829 29.00000000 0.25129008 + 41666 4.97547355 0.76256829 30.00000000 0.24851939 + 41523 4.97592340 0.76256829 31.00000000 0.25127340 + 42368 4.97236225 0.76256829 32.00000000 0.25195838 + 42051 4.97534969 0.76256829 33.00000000 0.24971949 + 42204 4.97864792 0.76256829 34.00000000 0.24995170 + 42304 4.97574617 0.76256829 35.00000000 0.24788561 + 42074 4.97211631 0.76256829 36.00000000 0.25015055 + 41902 4.97125803 0.76256829 37.00000000 0.24890099 + 41626 4.97263303 0.76256829 38.00000000 0.25097153 + 41991 4.97248327 0.76256829 39.00000000 0.25071650 + 41893 4.97193565 0.76256829 40.00000000 0.25005801 + 41940 4.97019099 0.76256829 41.00000000 0.24863012 + 41418 4.97288325 0.76256829 42.00000000 0.25032249 + 41731 4.97652068 0.76256829 43.00000000 0.24943856 + 41877 4.97960116 0.76256829 44.00000000 0.24992604 + 41563 4.97450527 0.76256829 45.00000000 0.25002095 + 41226 4.98017300 0.76256829 46.00000000 0.25005923 + 41443 4.97261484 0.76256829 47.00000000 0.25051410 + 41361 4.97766201 0.76256829 48.00000000 0.24915591 + 41378 4.97637152 0.76256829 49.00000000 0.24859721 + 41324 4.97467470 0.76256829 50.00000000 0.25104885 + 41118 4.97029103 0.76256829 51.00000000 0.24956691 + 40810 4.97895551 0.76256829 52.00000000 0.25117064 + 41729 4.97717515 0.76256829 53.00000000 0.25126685 + 41214 4.97400558 0.76256829 54.00000000 0.25230199 + 41309 4.97893675 0.76256829 55.00000000 0.25063363 + 41197 4.97337085 0.76256829 56.00000000 0.25055750 + 41227 4.97777557 0.76256829 57.00000000 0.24877274 + 40946 4.97255897 0.76256829 58.00000000 0.25053770 + 40908 4.97900250 0.76256829 59.00000000 0.25205837 + 41136 4.97792258 0.76256829 60.00000000 0.25095107 + 41120 4.98217469 0.76256829 61.00000000 0.24777936 + 41032 4.97725324 0.76256829 62.00000000 0.25137038 + 40794 4.98226541 0.76256829 63.00000000 0.25025099 + 40298 4.97431409 0.76256829 64.00000000 0.25012985 + 40404 4.97089578 0.76256829 65.00000000 0.24923948 + 40595 4.97756391 0.76256829 66.00000000 0.25092696 + 40349 4.98226810 0.76256829 67.00000000 0.24943532 + 40610 4.97503007 0.76256829 68.00000000 0.24998354 + 40287 4.97591424 0.76256829 69.00000000 0.24942854 + 40689 4.97179407 0.76256829 70.00000000 0.25141229 + 40264 4.97931352 0.76256829 71.00000000 0.25026932 + 40173 4.97460228 0.76256829 72.00000000 0.25073160 + 40564 4.97577302 0.76256829 73.00000000 0.24948927 + 40050 4.98231412 0.76256829 74.00000000 0.25062646 + 39946 4.97952893 0.76256829 75.00000000 0.24910485 + 40258 4.97329147 0.76256829 76.00000000 0.24977679 + 39724 4.97964732 0.76256829 77.00000000 0.25075170 + 39920 4.97412469 0.76256829 78.00000000 0.25143610 + 39789 4.97700662 0.76256829 79.00000000 0.25056304 + 40153 4.98052714 0.76256829 80.00000000 0.24866603 + 88496 7.08943234 0.91641447 1.00000000 0.24878189 + 88459 7.08782099 0.91641447 2.00000000 0.24997628 + 88366 7.09069620 0.91641447 3.00000000 0.24950120 + 88738 7.09190955 0.91641447 4.00000000 0.24923027 + 88074 7.09386409 0.91641447 5.00000000 0.24921741 + 88013 7.09053671 0.91641447 6.00000000 0.24948595 + 87904 7.08901282 0.91641447 7.00000000 0.24880428 + 87448 7.09190543 0.91641447 8.00000000 0.24971979 + 87726 7.09323430 0.91641447 9.00000000 0.24909082 + 87747 7.08464107 0.91641447 10.00000000 0.24978666 + 87354 7.08965934 0.91641447 11.00000000 0.25077438 + 87682 7.09401053 0.91641447 12.00000000 0.25125249 + 87108 7.09188826 0.91641447 13.00000000 0.25095501 + 87080 7.09257271 0.91641447 14.00000000 0.24929234 + 86930 7.09043518 0.91641447 15.00000000 0.25200037 + 86657 7.08842821 0.91641447 16.00000000 0.24904013 + 87693 7.08813010 0.91641447 17.00000000 0.24890158 + 86724 7.09117085 0.91641447 18.00000000 0.25079711 + 86114 7.09216700 0.91641447 19.00000000 0.25106064 + 86338 7.09496076 0.91641447 20.00000000 0.25062834 + 86798 7.09548859 0.91641447 21.00000000 0.25119805 + 86505 7.08968921 0.91641447 22.00000000 0.25025134 + 86082 7.08669077 0.91641447 23.00000000 0.25033405 + 86470 7.09154609 0.91641447 24.00000000 0.25090677 + 86422 7.08670715 0.91641447 25.00000000 0.25131084 + 86888 7.09253491 0.91641447 26.00000000 0.25154568 + 85736 7.09002346 0.91641447 27.00000000 0.24934367 + 85941 7.08270964 0.91641447 28.00000000 0.24968198 + 85274 7.09628886 0.91641447 29.00000000 0.25059830 + 85689 7.09517247 0.91641447 30.00000000 0.24961812 + 85680 7.09195750 0.91641447 31.00000000 0.24988466 + 85327 7.09443060 0.91641447 32.00000000 0.25018327 + 85460 7.08979152 0.91641447 33.00000000 0.25123898 + 85508 7.09293639 0.91641447 34.00000000 0.25025794 + 85678 7.09135281 0.91641447 35.00000000 0.24961122 + 85513 7.09507850 0.91641447 36.00000000 0.25053155 + 84936 7.08729446 0.91641447 37.00000000 0.25003346 + 84842 7.09031145 0.91641447 38.00000000 0.24952072 + 84861 7.09458527 0.91641447 39.00000000 0.25143195 + 85141 7.08693533 0.91641447 40.00000000 0.25058685 + 84301 7.09147346 0.91641447 41.00000000 0.24968832 + 84377 7.09217048 0.91641447 42.00000000 0.25069691 + 84311 7.08690996 0.91641447 43.00000000 0.25133447 + 84163 7.09468118 0.91641447 44.00000000 0.25098698 + 83489 7.09134421 0.91641447 45.00000000 0.25022730 + 84092 7.09149413 0.91641447 46.00000000 0.25088253 + 84408 7.08990397 0.91641447 47.00000000 0.25036457 + 83782 7.09514101 0.91641447 48.00000000 0.25219496 + 83984 7.09078576 0.91641447 49.00000000 0.25026220 + 83860 7.09494191 0.91641447 50.00000000 0.24930776 + 83975 7.09161275 0.91641447 51.00000000 0.25044298 + 84017 7.08784651 0.91641447 52.00000000 0.24976371 + 83518 7.09785370 0.91641447 53.00000000 0.24911983 + 83318 7.08995923 0.91641447 54.00000000 0.25146924 + 84038 7.08937026 0.91641447 55.00000000 0.25072257 + 82872 7.09106723 0.91641447 56.00000000 0.25094463 + 83188 7.09207406 0.91641447 57.00000000 0.25079072 + 83037 7.08839790 0.91641447 58.00000000 0.24957460 + 83544 7.09127777 0.91641447 59.00000000 0.25106016 + 83752 7.08739874 0.91641447 60.00000000 0.24982125 + 83379 7.08642339 0.91641447 61.00000000 0.24979332 + 82724 7.09902656 0.91641447 62.00000000 0.25115529 + 82360 7.09361527 0.91641447 63.00000000 0.24907402 + 82732 7.08542793 0.91641447 64.00000000 0.25048468 + 82620 7.09743422 0.91641447 65.00000000 0.25080382 + 82031 7.09206263 0.91641447 66.00000000 0.24868837 + 82629 7.09209126 0.91641447 67.00000000 0.25102738 + 82414 7.09234204 0.91641447 68.00000000 0.25049774 + 82410 7.09307656 0.91641447 69.00000000 0.24973081 + 81941 7.09043383 0.91641447 70.00000000 0.25093532 + 81605 7.09134621 0.91641447 71.00000000 0.24996688 + 81540 7.08851085 0.91641447 72.00000000 0.25092703 + 82084 7.09984298 0.91641447 73.00000000 0.25161310 + 82151 7.09060316 0.91641447 74.00000000 0.25045882 + 81603 7.09043533 0.91641447 75.00000000 0.25008298 + 81917 7.09505167 0.91641447 76.00000000 0.25017495 + 81240 7.08681800 0.91641447 77.00000000 0.25060737 + 82190 7.08855077 0.91641447 78.00000000 0.25053461 + 81381 7.09195195 0.91641447 79.00000000 0.24912525 + 81402 7.09406445 0.91641447 80.00000000 0.25034436 + 179219 10.10637535 1.07025958 1.00000000 0.25010904 + 179368 10.10161239 1.07025958 2.00000000 0.25057618 + 179177 10.10544034 1.07025958 3.00000000 0.24989586 + 179576 10.10499753 1.07025958 4.00000000 0.24901873 + 178699 10.09626660 1.07025958 5.00000000 0.25096304 + 178944 10.10124043 1.07025958 6.00000000 0.25038274 + 179056 10.10337267 1.07025958 7.00000000 0.24994257 + 178513 10.10423193 1.07025958 8.00000000 0.24987328 + 178193 10.10348922 1.07025958 9.00000000 0.25022244 + 178166 10.11023227 1.07025958 10.00000000 0.25063081 + 178056 10.10193788 1.07025958 11.00000000 0.24953208 + 177260 10.10312243 1.07025958 12.00000000 0.25003397 + 177735 10.10975829 1.07025958 13.00000000 0.25010541 + 177564 10.10259704 1.07025958 14.00000000 0.25056020 + 176598 10.10564668 1.07025958 15.00000000 0.25080425 + 177024 10.10822975 1.07025958 16.00000000 0.25021877 + 176213 10.10111346 1.07025958 17.00000000 0.25102746 + 177000 10.10808487 1.07025958 18.00000000 0.25017420 + 175256 10.10226598 1.07025958 19.00000000 0.25053080 + 176170 10.10608506 1.07025958 20.00000000 0.25070899 + 175724 10.09896486 1.07025958 21.00000000 0.24930907 + 174946 10.10348293 1.07025958 22.00000000 0.24969674 + 175119 10.10759885 1.07025958 23.00000000 0.25048034 + 174888 10.10743297 1.07025958 24.00000000 0.24972179 + 174863 10.10244885 1.07025958 25.00000000 0.25030284 + 174201 10.10078699 1.07025958 26.00000000 0.25084103 + 175089 10.10242732 1.07025958 27.00000000 0.25101910 + 175691 10.10410579 1.07025958 28.00000000 0.25034572 + 174699 10.10709462 1.07025958 29.00000000 0.25059419 + 173929 10.10154294 1.07025958 30.00000000 0.25014622 + 173400 10.10592993 1.07025958 31.00000000 0.24980223 + 173297 10.10271528 1.07025958 32.00000000 0.25045763 + 173592 10.10610385 1.07025958 33.00000000 0.25091505 + 173058 10.10349035 1.07025958 34.00000000 0.24955761 + 173576 10.10740554 1.07025958 35.00000000 0.24984304 + 173208 10.10169464 1.07025958 36.00000000 0.25087267 + 172549 10.10099565 1.07025958 37.00000000 0.25036610 + 172835 10.10288671 1.07025958 38.00000000 0.24998856 + 171964 10.10654120 1.07025958 39.00000000 0.25029361 + 171716 10.10506827 1.07025958 40.00000000 0.25079256 + 171998 10.10668210 1.07025958 41.00000000 0.25097171 + 171844 10.10271812 1.07025958 42.00000000 0.25035823 + 171972 10.10416417 1.07025958 43.00000000 0.24992945 + 171863 10.10623180 1.07025958 44.00000000 0.25031825 + 171833 10.10403795 1.07025958 45.00000000 0.25107811 + 171241 10.10242842 1.07025958 46.00000000 0.24959629 + 170811 10.10734232 1.07025958 47.00000000 0.25071383 + 171605 10.10232127 1.07025958 48.00000000 0.25015948 + 169813 10.10597537 1.07025958 49.00000000 0.24984737 + 169636 10.10772555 1.07025958 50.00000000 0.25057894 + 170111 10.10362971 1.07025958 51.00000000 0.25045446 + 169384 10.10792001 1.07025958 52.00000000 0.25040747 + 169568 10.10904902 1.07025958 53.00000000 0.25013347 + 169396 10.10254976 1.07025958 54.00000000 0.25146693 + 169164 10.10518542 1.07025958 55.00000000 0.25049658 + 169313 10.11335905 1.07025958 56.00000000 0.25069127 + 168937 10.10287251 1.07025958 57.00000000 0.25021260 + 169451 10.11042254 1.07025958 58.00000000 0.24974861 + 168989 10.10084075 1.07025958 59.00000000 0.25039325 + 168495 10.10708257 1.07025958 60.00000000 0.24997833 + 169338 10.10305516 1.07025958 61.00000000 0.25005669 + 168433 10.09846267 1.07025958 62.00000000 0.25113023 + 167781 10.10771839 1.07025958 63.00000000 0.24912125 + 167917 10.10359924 1.07025958 64.00000000 0.25000227 + 167676 10.10242030 1.07025958 65.00000000 0.25030935 + 167106 10.10837333 1.07025958 66.00000000 0.25032044 + 166880 10.11145058 1.07025958 67.00000000 0.25004958 + 167840 10.09709881 1.07025958 68.00000000 0.24977471 + 167528 10.11005408 1.07025958 69.00000000 0.25067610 + 167208 10.10629357 1.07025958 70.00000000 0.25042851 + 166934 10.10621371 1.07025958 71.00000000 0.25069190 + 166192 10.10354195 1.07025958 72.00000000 0.25112792 + 166057 10.10369334 1.07025958 73.00000000 0.25080242 + 166381 10.10164356 1.07025958 74.00000000 0.25059913 + 165377 10.10196081 1.07025958 75.00000000 0.24984240 + 166687 10.10879714 1.07025958 76.00000000 0.25105849 + 166048 10.10582911 1.07025958 77.00000000 0.25042103 + 165722 10.10697519 1.07025958 78.00000000 0.25041282 + 165181 10.09795422 1.07025958 79.00000000 0.25049974 + 163586 10.10713772 1.07025958 80.00000000 0.25017164 + 364661 14.40093516 1.22410814 1.00000000 0.24991528 + 364646 14.40046745 1.22410814 2.00000000 0.25074541 + 363922 14.40719584 1.22410814 3.00000000 0.24938329 + 365085 14.40483677 1.22410814 4.00000000 0.25005407 + 362711 14.40027711 1.22410814 5.00000000 0.24996119 + 363823 14.40319726 1.22410814 6.00000000 0.25040248 + 363486 14.40722852 1.22410814 7.00000000 0.25032250 + 362681 14.40126961 1.22410814 8.00000000 0.25017783 + 362248 14.39794500 1.22410814 9.00000000 0.25054765 + 361394 14.39900648 1.22410814 10.00000000 0.25004217 + 361786 14.40538411 1.22410814 11.00000000 0.25085869 + 361188 14.39839038 1.22410814 12.00000000 0.24983356 + 360879 14.39978176 1.22410814 13.00000000 0.25027001 + 359607 14.39734175 1.22410814 14.00000000 0.25045594 + 359183 14.39948860 1.22410814 15.00000000 0.24994290 + 359841 14.39940349 1.22410814 16.00000000 0.25085961 + 359685 14.40678764 1.22410814 17.00000000 0.25055802 + 358714 14.40455481 1.22410814 18.00000000 0.25034637 + 356901 14.40176475 1.22410814 19.00000000 0.25015368 + 357657 14.40546462 1.22410814 20.00000000 0.25032579 + 356724 14.40262748 1.22410814 21.00000000 0.25062634 + 356284 14.39148406 1.22410814 22.00000000 0.25094412 + 355105 14.40022689 1.22410814 23.00000000 0.25013514 + 355753 14.39858550 1.22410814 24.00000000 0.24976959 + 355665 14.39813013 1.22410814 25.00000000 0.25060205 + 354826 14.39794675 1.22410814 26.00000000 0.24982927 + 353791 14.39900971 1.22410814 27.00000000 0.25050912 + 354155 14.40148713 1.22410814 28.00000000 0.25045445 + 353296 14.40468452 1.22410814 29.00000000 0.25066590 + 353633 14.40640982 1.22410814 30.00000000 0.25054307 + 353378 14.40328696 1.22410814 31.00000000 0.25058994 + 352355 14.40414605 1.22410814 32.00000000 0.24998211 + 353049 14.39827838 1.22410814 33.00000000 0.25093559 + 352173 14.40068300 1.22410814 34.00000000 0.25062131 + 351267 14.40020784 1.22410814 35.00000000 0.24978754 + 351921 14.39634813 1.22410814 36.00000000 0.24992820 + 351524 14.40091444 1.22410814 37.00000000 0.25094988 + 351246 14.40346282 1.22410814 38.00000000 0.25009100 + 350204 14.40130303 1.22410814 39.00000000 0.25070405 + 349795 14.39775784 1.22410814 40.00000000 0.25003689 + 350692 14.40497084 1.22410814 41.00000000 0.25060106 + 348776 14.40575443 1.22410814 42.00000000 0.25072663 + 348637 14.39816858 1.22410814 43.00000000 0.25060250 + 348949 14.40366618 1.22410814 44.00000000 0.25076618 + 348052 14.40001954 1.22410814 45.00000000 0.25098408 + 348909 14.40348537 1.22410814 46.00000000 0.25093920 + 348080 14.40079938 1.22410814 47.00000000 0.25050318 + 346762 14.39870556 1.22410814 48.00000000 0.25004056 + 346946 14.40056223 1.22410814 49.00000000 0.25003039 + 346311 14.39839086 1.22410814 50.00000000 0.25069469 + 346312 14.40114006 1.22410814 51.00000000 0.25010213 + 345924 14.39946264 1.22410814 52.00000000 0.25048441 + 344731 14.40206925 1.22410814 53.00000000 0.25114430 + 344868 14.40355999 1.22410814 54.00000000 0.25047269 + 343801 14.40292186 1.22410814 55.00000000 0.25072333 + 344211 14.39624536 1.22410814 56.00000000 0.25031136 + 342658 14.39845971 1.22410814 57.00000000 0.25059846 + 343820 14.40037973 1.22410814 58.00000000 0.25035334 + 343085 14.39976176 1.22410814 59.00000000 0.24974640 + 343251 14.39808664 1.22410814 60.00000000 0.24982313 + 342582 14.39635226 1.22410814 61.00000000 0.25058278 + 341181 14.40363877 1.22410814 62.00000000 0.25030775 + 341174 14.40385212 1.22410814 63.00000000 0.25023041 + 340559 14.40000149 1.22410814 64.00000000 0.24961378 + 341039 14.40229042 1.22410814 65.00000000 0.25028254 + 340685 14.39956119 1.22410814 66.00000000 0.25057247 + 340545 14.39777357 1.22410814 67.00000000 0.25023314 + 340268 14.40038726 1.22410814 68.00000000 0.25029080 + 339426 14.40782076 1.22410814 69.00000000 0.25040291 + 339420 14.40038192 1.22410814 70.00000000 0.25056812 + 338401 14.40141103 1.22410814 71.00000000 0.25081777 + 339078 14.40141937 1.22410814 72.00000000 0.24972688 + 338484 14.39369058 1.22410814 73.00000000 0.25037185 + 337130 14.39255430 1.22410814 74.00000000 0.25089135 + 337232 14.39962910 1.22410814 75.00000000 0.24995092 + 336834 14.40325867 1.22410814 76.00000000 0.25005064 + 336443 14.40462043 1.22410814 77.00000000 0.25024594 + 336190 14.40932307 1.22410814 78.00000000 0.25097643 + 334865 14.40107120 1.22410814 79.00000000 0.25023971 + 334731 14.39560173 1.22410814 80.00000000 0.25051485 + 739869 20.52593614 1.37795248 1.00000000 0.24976736 + 739070 20.52595322 1.37795248 2.00000000 0.24993472 + 738366 20.52003104 1.37795248 3.00000000 0.25055423 + 738513 20.52152625 1.37795248 4.00000000 0.25036053 + 737971 20.52021327 1.37795248 5.00000000 0.25043530 + 737652 20.52151457 1.37795248 6.00000000 0.25057740 + 736737 20.51924750 1.37795248 7.00000000 0.25113220 + 737811 20.51990390 1.37795248 8.00000000 0.25066738 + 733932 20.52437661 1.37795248 9.00000000 0.25063879 + 735399 20.52189132 1.37795248 10.00000000 0.25022582 + 733071 20.52328299 1.37795248 11.00000000 0.25040172 + 733136 20.51876205 1.37795248 12.00000000 0.25075648 + 731471 20.52362276 1.37795248 13.00000000 0.25034645 + 731779 20.52120021 1.37795248 14.00000000 0.25039828 + 727655 20.52374587 1.37795248 15.00000000 0.25030350 + 730717 20.52897424 1.37795248 16.00000000 0.25088451 + 729104 20.52453946 1.37795248 17.00000000 0.25032048 + 727761 20.52062090 1.37795248 18.00000000 0.25065997 + 728513 20.52579292 1.37795248 19.00000000 0.25026742 + 724311 20.52625226 1.37795248 20.00000000 0.25067161 + 723703 20.52127617 1.37795248 21.00000000 0.25005168 + 723750 20.52419346 1.37795248 22.00000000 0.25037605 + 722454 20.52838530 1.37795248 23.00000000 0.25000736 + 721842 20.52315012 1.37795248 24.00000000 0.25026410 + 721804 20.51928370 1.37795248 25.00000000 0.25010031 + 720354 20.52292283 1.37795248 26.00000000 0.25061100 + 718772 20.52202757 1.37795248 27.00000000 0.25065982 + 717984 20.52311543 1.37795248 28.00000000 0.25028428 + 718117 20.52139186 1.37795248 29.00000000 0.25045141 + 717411 20.51995696 1.37795248 30.00000000 0.25042096 + 716999 20.51952715 1.37795248 31.00000000 0.25089851 + 716811 20.52171752 1.37795248 32.00000000 0.25014399 + 714187 20.52437755 1.37795248 33.00000000 0.25033167 + 714197 20.52326207 1.37795248 34.00000000 0.25053942 + 713266 20.53197818 1.37795248 35.00000000 0.25060324 + 711984 20.52277059 1.37795248 36.00000000 0.25029415 + 712445 20.52208123 1.37795248 37.00000000 0.25043266 + 713148 20.52314525 1.37795248 38.00000000 0.25040217 + 710437 20.52060843 1.37795248 39.00000000 0.25050464 + 708674 20.53060673 1.37795248 40.00000000 0.25064104 + 709481 20.52001027 1.37795248 41.00000000 0.25094130 + 709614 20.52626967 1.37795248 42.00000000 0.25082146 + 706577 20.52347693 1.37795248 43.00000000 0.25065835 + 708343 20.52049174 1.37795248 44.00000000 0.25074041 + 706886 20.52097441 1.37795248 45.00000000 0.25042622 + 707315 20.52553522 1.37795248 46.00000000 0.25111938 + 705447 20.52232802 1.37795248 47.00000000 0.25028894 + 703603 20.52859336 1.37795248 48.00000000 0.25044838 + 704797 20.52529605 1.37795248 49.00000000 0.25050573 + 703575 20.52642245 1.37795248 50.00000000 0.25064153 + 702100 20.52283481 1.37795248 51.00000000 0.25059027 + 701678 20.52291963 1.37795248 52.00000000 0.25059179 + 701281 20.52645438 1.37795248 53.00000000 0.25048719 + 701046 20.52550183 1.37795248 54.00000000 0.25023470 + 699083 20.52198670 1.37795248 55.00000000 0.25067137 + 699791 20.52582593 1.37795248 56.00000000 0.25034754 + 697477 20.52559244 1.37795248 57.00000000 0.25047175 + 697437 20.52010781 1.37795248 58.00000000 0.25028679 + 697123 20.52066235 1.37795248 59.00000000 0.25026056 + 694972 20.52192833 1.37795248 60.00000000 0.25007132 + 696168 20.51871248 1.37795248 61.00000000 0.25025424 + 694854 20.51943814 1.37795248 62.00000000 0.25038518 + 693118 20.52094499 1.37795248 63.00000000 0.25034464 + 692497 20.52088144 1.37795248 64.00000000 0.25036860 + 691541 20.52251213 1.37795248 65.00000000 0.25018513 + 692000 20.52033268 1.37795248 66.00000000 0.25080918 + 691797 20.52106597 1.37795248 67.00000000 0.25026361 + 689687 20.52228417 1.37795248 68.00000000 0.25035374 + 687982 20.51954072 1.37795248 69.00000000 0.25032815 + 686998 20.51922711 1.37795248 70.00000000 0.25046108 + 686999 20.51893898 1.37795248 71.00000000 0.25049472 + 685786 20.53207469 1.37795248 72.00000000 0.25013049 + 686049 20.52069587 1.37795248 73.00000000 0.25043426 + 685226 20.52210786 1.37795248 74.00000000 0.24976814 + 684856 20.52004159 1.37795248 75.00000000 0.25071201 + 683480 20.52906362 1.37795248 76.00000000 0.25060416 + 682609 20.52273502 1.37795248 77.00000000 0.25089303 + 680178 20.52492620 1.37795248 78.00000000 0.25028217 + 680080 20.51863021 1.37795248 79.00000000 0.25060095 + 680094 20.52339560 1.37795248 80.00000000 0.25037382 diff --git a/theory/tests/cmass_RR_periodic b/theory/tests/cmass_RR_periodic index f71f7d6b..3f421ba9 100644 --- a/theory/tests/cmass_RR_periodic +++ b/theory/tests/cmass_RR_periodic @@ -1,1120 +1,1120 @@ - 710 0.20444758 -0.62204752 1.00000000 0.25172249 - 712 0.20648106 -0.62204752 2.00000000 0.25383309 - 720 0.20632685 -0.62204752 3.00000000 0.25228620 - 796 0.20557784 -0.62204752 4.00000000 0.25462309 - 716 0.20396609 -0.62204752 5.00000000 0.25837612 - 740 0.20693642 -0.62204752 6.00000000 0.26928372 - 722 0.20604216 -0.62204752 7.00000000 0.25650072 - 786 0.20472798 -0.62204752 8.00000000 0.24776232 - 728 0.20454045 -0.62204752 9.00000000 0.27197844 - 770 0.20417358 -0.62204752 10.00000000 0.25543309 - 632 0.20378056 -0.62204752 11.00000000 0.26265764 - 708 0.20429733 -0.62204752 12.00000000 0.25654717 - 740 0.20208761 -0.62204752 13.00000000 0.26344602 - 760 0.20586795 -0.62204752 14.00000000 0.25543968 - 718 0.20427023 -0.62204752 15.00000000 0.24695875 - 752 0.20475785 -0.62204752 16.00000000 0.23245127 - 730 0.20556662 -0.62204752 17.00000000 0.23799859 - 658 0.20434743 -0.62204752 18.00000000 0.27410433 - 736 0.20592896 -0.62204752 19.00000000 0.24544059 - 788 0.20481072 -0.62204752 20.00000000 0.24966699 - 760 0.20354236 -0.62204752 21.00000000 0.25526878 - 764 0.20634908 -0.62204752 22.00000000 0.23456706 - 706 0.20456538 -0.62204752 23.00000000 0.25452188 - 730 0.20496132 -0.62204752 24.00000000 0.24800051 - 728 0.20508605 -0.62204752 25.00000000 0.23744709 - 752 0.20595137 -0.62204752 26.00000000 0.23345318 - 668 0.20429693 -0.62204752 27.00000000 0.23139450 - 730 0.20544959 -0.62204752 28.00000000 0.24789177 - 736 0.20567649 -0.62204752 29.00000000 0.24075763 - 684 0.20293286 -0.62204752 30.00000000 0.27446657 - 712 0.20531329 -0.62204752 31.00000000 0.24731910 - 692 0.20529810 -0.62204752 32.00000000 0.25134975 - 684 0.20564295 -0.62204752 33.00000000 0.23795749 - 712 0.20369985 -0.62204752 34.00000000 0.24373954 - 668 0.20563530 -0.62204752 35.00000000 0.22860488 - 706 0.20467762 -0.62204752 36.00000000 0.23307569 - 678 0.20500439 -0.62204752 37.00000000 0.21820148 - 732 0.20679767 -0.62204752 38.00000000 0.23814514 - 710 0.20542384 -0.62204752 39.00000000 0.25002728 - 744 0.20257749 -0.62204752 40.00000000 0.24666066 - 702 0.20621406 -0.62204752 41.00000000 0.26523359 - 688 0.20523794 -0.62204752 42.00000000 0.24173821 - 744 0.20460996 -0.62204752 43.00000000 0.24799158 - 760 0.20411872 -0.62204752 44.00000000 0.25585516 - 666 0.20633110 -0.62204752 45.00000000 0.23484545 - 694 0.20598652 -0.62204752 46.00000000 0.26160953 - 732 0.20546451 -0.62204752 47.00000000 0.26362451 - 682 0.20653696 -0.62204752 48.00000000 0.22496135 - 638 0.20549472 -0.62204752 49.00000000 0.23598646 - 730 0.20425424 -0.62204752 50.00000000 0.25897677 - 716 0.20487835 -0.62204752 51.00000000 0.24973360 - 738 0.20739682 -0.62204752 52.00000000 0.24797558 - 680 0.20590341 -0.62204752 53.00000000 0.26177669 - 670 0.20440855 -0.62204752 54.00000000 0.24057601 - 680 0.20378276 -0.62204752 55.00000000 0.26594866 - 688 0.20406214 -0.62204752 56.00000000 0.27506636 - 748 0.20472251 -0.62204752 57.00000000 0.23347085 - 714 0.20374471 -0.62204752 58.00000000 0.27692133 - 678 0.20444178 -0.62204752 59.00000000 0.27838175 - 708 0.20218008 -0.62204752 60.00000000 0.23106301 - 640 0.20488496 -0.62204752 61.00000000 0.22261795 - 666 0.20566583 -0.62204752 62.00000000 0.24655298 - 654 0.20614165 -0.62204752 63.00000000 0.23668648 - 720 0.20571163 -0.62204752 64.00000000 0.22797267 - 760 0.20544036 -0.62204752 65.00000000 0.23906171 - 696 0.20540161 -0.62204752 66.00000000 0.25548907 - 698 0.20568904 -0.62204752 67.00000000 0.25216138 - 672 0.20398753 -0.62204752 68.00000000 0.24505030 - 694 0.20438501 -0.62204752 69.00000000 0.23996296 - 636 0.20667445 -0.62204752 70.00000000 0.23522133 - 602 0.20335647 -0.62204752 71.00000000 0.26367535 - 714 0.20434082 -0.62204752 72.00000000 0.23998103 - 676 0.20532608 -0.62204752 73.00000000 0.24405271 - 654 0.20150301 -0.62204752 74.00000000 0.25292935 - 622 0.20711585 -0.62204752 75.00000000 0.23532813 - 708 0.20479848 -0.62204752 76.00000000 0.24745721 - 692 0.20441394 -0.62204752 77.00000000 0.24994518 - 656 0.20414459 -0.62204752 78.00000000 0.25077435 - 696 0.20611630 -0.62204752 79.00000000 0.25208199 - 682 0.20521391 -0.62204752 80.00000000 0.26097556 - 1520 0.29344566 -0.46820059 1.00000000 0.24927692 - 1492 0.29131190 -0.46820059 2.00000000 0.26464897 - 1502 0.29394002 -0.46820059 3.00000000 0.25746757 - 1480 0.29263873 -0.46820059 4.00000000 0.24818772 - 1580 0.29340131 -0.46820059 5.00000000 0.24327129 - 1440 0.29120921 -0.46820059 6.00000000 0.24505125 - 1498 0.29224509 -0.46820059 7.00000000 0.25892860 - 1464 0.29254666 -0.46820059 8.00000000 0.25354609 - 1544 0.29398979 -0.46820059 9.00000000 0.26484383 - 1500 0.29077074 -0.46820059 10.00000000 0.26265305 - 1466 0.29175660 -0.46820059 11.00000000 0.24966897 - 1562 0.29298662 -0.46820059 12.00000000 0.25709667 - 1574 0.29307800 -0.46820059 13.00000000 0.22544208 - 1462 0.29261280 -0.46820059 14.00000000 0.25143345 - 1452 0.29234560 -0.46820059 15.00000000 0.25984149 - 1524 0.29331138 -0.46820059 16.00000000 0.24724871 - 1468 0.29023765 -0.46820059 17.00000000 0.26928406 - 1496 0.29373519 -0.46820059 18.00000000 0.25583530 - 1524 0.29239943 -0.46820059 19.00000000 0.26089944 - 1518 0.29441859 -0.46820059 20.00000000 0.23749952 - 1592 0.29286096 -0.46820059 21.00000000 0.24658498 - 1430 0.29087621 -0.46820059 22.00000000 0.25877783 - 1512 0.29242707 -0.46820059 23.00000000 0.24519723 - 1474 0.29323468 -0.46820059 24.00000000 0.24727479 - 1422 0.29151645 -0.46820059 25.00000000 0.25407771 - 1368 0.29224526 -0.46820059 26.00000000 0.26287745 - 1436 0.29352866 -0.46820059 27.00000000 0.24760901 - 1468 0.29172932 -0.46820059 28.00000000 0.24628194 - 1386 0.29047897 -0.46820059 29.00000000 0.26290391 - 1386 0.29181827 -0.46820059 30.00000000 0.24423294 - 1488 0.29260717 -0.46820059 31.00000000 0.24999807 - 1404 0.29258397 -0.46820059 32.00000000 0.25077399 - 1602 0.29232057 -0.46820059 33.00000000 0.24521052 - 1372 0.29368782 -0.46820059 34.00000000 0.25433241 - 1436 0.29267357 -0.46820059 35.00000000 0.24415630 - 1520 0.29301413 -0.46820059 36.00000000 0.25130775 - 1442 0.29358638 -0.46820059 37.00000000 0.23620400 - 1480 0.29148928 -0.46820059 38.00000000 0.24639131 - 1406 0.29298927 -0.46820059 39.00000000 0.25430245 - 1412 0.29137807 -0.46820059 40.00000000 0.25233172 - 1490 0.29154909 -0.46820059 41.00000000 0.24519385 - 1470 0.29381966 -0.46820059 42.00000000 0.24161192 - 1428 0.29133788 -0.46820059 43.00000000 0.25492084 - 1430 0.29222285 -0.46820059 44.00000000 0.24182048 - 1388 0.29370744 -0.46820059 45.00000000 0.24049128 - 1482 0.29197508 -0.46820059 46.00000000 0.26093196 - 1352 0.29243000 -0.46820059 47.00000000 0.23101309 - 1458 0.29324005 -0.46820059 48.00000000 0.24699177 - 1510 0.29176826 -0.46820059 49.00000000 0.25627570 - 1484 0.29273428 -0.46820059 50.00000000 0.24227538 - 1514 0.29271832 -0.46820059 51.00000000 0.24515377 - 1504 0.29367415 -0.46820059 52.00000000 0.24541377 - 1370 0.29203415 -0.46820059 53.00000000 0.24241856 - 1412 0.29307016 -0.46820059 54.00000000 0.25285419 - 1458 0.29131176 -0.46820059 55.00000000 0.25929775 - 1432 0.29397765 -0.46820059 56.00000000 0.25406318 - 1416 0.29164580 -0.46820059 57.00000000 0.23900101 - 1362 0.29273674 -0.46820059 58.00000000 0.25865881 - 1354 0.29197737 -0.46820059 59.00000000 0.25401189 - 1406 0.29149710 -0.46820059 60.00000000 0.25668709 - 1474 0.29286476 -0.46820059 61.00000000 0.24564828 - 1324 0.29007949 -0.46820059 62.00000000 0.23824680 - 1426 0.29280630 -0.46820059 63.00000000 0.25423639 - 1402 0.29129932 -0.46820059 64.00000000 0.25136052 - 1476 0.28988517 -0.46820059 65.00000000 0.25273681 - 1390 0.28974281 -0.46820059 66.00000000 0.25834656 - 1336 0.29207310 -0.46820059 67.00000000 0.25671397 - 1374 0.29202150 -0.46820059 68.00000000 0.25861150 - 1460 0.29423696 -0.46820059 69.00000000 0.25265185 - 1424 0.29324454 -0.46820059 70.00000000 0.25489850 - 1318 0.29168909 -0.46820059 71.00000000 0.25933486 - 1364 0.29279873 -0.46820059 72.00000000 0.26597673 - 1382 0.29191753 -0.46820059 73.00000000 0.23806405 - 1408 0.29287876 -0.46820059 74.00000000 0.25030138 - 1382 0.29135657 -0.46820059 75.00000000 0.24032994 - 1376 0.29195124 -0.46820059 76.00000000 0.24529484 - 1420 0.29161751 -0.46820059 77.00000000 0.24793476 - 1408 0.29069780 -0.46820059 78.00000000 0.24160524 - 1438 0.29269843 -0.46820059 79.00000000 0.24995725 - 1380 0.29162198 -0.46820059 80.00000000 0.24421959 - 3140 0.41520572 -0.31435498 1.00000000 0.24016647 - 3016 0.41509652 -0.31435498 2.00000000 0.24680446 - 2892 0.41715294 -0.31435498 3.00000000 0.24945477 - 3052 0.41617755 -0.31435498 4.00000000 0.25046884 - 3056 0.41747539 -0.31435498 5.00000000 0.25132998 - 2972 0.41609857 -0.31435498 6.00000000 0.25157138 - 3134 0.41749442 -0.31435498 7.00000000 0.24095854 - 2996 0.41738216 -0.31435498 8.00000000 0.25810454 - 3084 0.41808716 -0.31435498 9.00000000 0.24710275 - 3092 0.41574679 -0.31435498 10.00000000 0.24435261 - 2976 0.41655276 -0.31435498 11.00000000 0.24157513 - 2986 0.41622628 -0.31435498 12.00000000 0.25109435 - 3018 0.41655595 -0.31435498 13.00000000 0.23475364 - 3070 0.41640090 -0.31435498 14.00000000 0.24960889 - 3008 0.41636622 -0.31435498 15.00000000 0.24627683 - 3084 0.41733291 -0.31435498 16.00000000 0.24982614 - 2974 0.41748148 -0.31435498 17.00000000 0.25830281 - 3024 0.41849392 -0.31435498 18.00000000 0.25261774 - 3022 0.41853930 -0.31435498 19.00000000 0.25696166 - 3008 0.41697025 -0.31435498 20.00000000 0.25041559 - 3006 0.41592894 -0.31435498 21.00000000 0.24853463 - 2982 0.41670199 -0.31435498 22.00000000 0.25276289 - 2920 0.41861630 -0.31435498 23.00000000 0.24844374 - 2948 0.41776401 -0.31435498 24.00000000 0.24274450 - 2916 0.41783708 -0.31435498 25.00000000 0.25369462 - 3092 0.41752838 -0.31435498 26.00000000 0.23836057 - 2910 0.41966763 -0.31435498 27.00000000 0.24691897 - 3106 0.41799032 -0.31435498 28.00000000 0.24767431 - 2936 0.41715934 -0.31435498 29.00000000 0.24919795 - 3006 0.41692867 -0.31435498 30.00000000 0.24971874 - 2968 0.41523791 -0.31435498 31.00000000 0.23901850 - 2894 0.41620659 -0.31435498 32.00000000 0.24470237 - 2822 0.41619807 -0.31435498 33.00000000 0.25368302 - 2888 0.41719275 -0.31435498 34.00000000 0.24638213 - 2978 0.41599448 -0.31435498 35.00000000 0.25882594 - 2842 0.41859377 -0.31435498 36.00000000 0.24881595 - 2934 0.41558486 -0.31435498 37.00000000 0.24728182 - 2918 0.41751725 -0.31435498 38.00000000 0.26130396 - 2982 0.41864728 -0.31435498 39.00000000 0.24232067 - 2910 0.41483091 -0.31435498 40.00000000 0.24949872 - 3042 0.41645866 -0.31435498 41.00000000 0.25147873 - 2952 0.41602747 -0.31435498 42.00000000 0.24940943 - 2958 0.41626832 -0.31435498 43.00000000 0.24712815 - 2782 0.41670276 -0.31435498 44.00000000 0.26062117 - 2766 0.41642405 -0.31435498 45.00000000 0.24552046 - 2984 0.41767094 -0.31435498 46.00000000 0.24776060 - 2946 0.41694486 -0.31435498 47.00000000 0.25653493 - 2874 0.41624680 -0.31435498 48.00000000 0.24859756 - 2880 0.41553814 -0.31435498 49.00000000 0.25287913 - 2890 0.41670477 -0.31435498 50.00000000 0.24457979 - 2878 0.41689553 -0.31435498 51.00000000 0.25677410 - 2902 0.41711621 -0.31435498 52.00000000 0.25695976 - 2942 0.41770983 -0.31435498 53.00000000 0.25012165 - 2928 0.41607877 -0.31435498 54.00000000 0.24843349 - 2946 0.41836695 -0.31435498 55.00000000 0.24601197 - 2932 0.41824046 -0.31435498 56.00000000 0.25510469 - 2990 0.41578901 -0.31435498 57.00000000 0.24275860 - 2850 0.41611863 -0.31435498 58.00000000 0.25193657 - 2870 0.41694764 -0.31435498 59.00000000 0.26160924 - 2800 0.41630431 -0.31435498 60.00000000 0.24745179 - 2862 0.41655051 -0.31435498 61.00000000 0.25364825 - 2808 0.41605516 -0.31435498 62.00000000 0.24465027 - 2964 0.41628298 -0.31435498 63.00000000 0.25538864 - 2738 0.41564885 -0.31435498 64.00000000 0.25435475 - 2876 0.41782081 -0.31435498 65.00000000 0.25076064 - 2834 0.41963771 -0.31435498 66.00000000 0.25431047 - 2876 0.41735242 -0.31435498 67.00000000 0.25739367 - 2848 0.41669765 -0.31435498 68.00000000 0.25193855 - 2768 0.41771940 -0.31435498 69.00000000 0.24792444 - 2814 0.41799272 -0.31435498 70.00000000 0.25049986 - 2750 0.41719341 -0.31435498 71.00000000 0.26010763 - 2878 0.41653018 -0.31435498 72.00000000 0.24547708 - 2952 0.41591575 -0.31435498 73.00000000 0.24356037 - 2786 0.41567709 -0.31435498 74.00000000 0.24641241 - 2782 0.41553583 -0.31435498 75.00000000 0.25518374 - 2752 0.41645741 -0.31435498 76.00000000 0.25405475 - 2840 0.41768427 -0.31435498 77.00000000 0.25974641 - 2808 0.41670135 -0.31435498 78.00000000 0.24707044 - 2728 0.41737800 -0.31435498 79.00000000 0.24115313 - 2536 0.41762493 -0.31435498 80.00000000 0.25404793 - 6280 0.59297506 -0.16050875 1.00000000 0.24409196 - 6136 0.59498563 -0.16050875 2.00000000 0.24934879 - 6182 0.59317380 -0.16050875 3.00000000 0.24882228 - 6300 0.59484525 -0.16050875 4.00000000 0.24874619 - 5998 0.59594604 -0.16050875 5.00000000 0.25978897 - 6164 0.59297977 -0.16050875 6.00000000 0.25378496 - 6172 0.59269770 -0.16050875 7.00000000 0.24839616 - 6122 0.59390483 -0.16050875 8.00000000 0.24993611 - 6288 0.59411158 -0.16050875 9.00000000 0.25422510 - 5906 0.59516780 -0.16050875 10.00000000 0.25209728 - 6170 0.59437571 -0.16050875 11.00000000 0.24484990 - 6002 0.59362915 -0.16050875 12.00000000 0.25214220 - 6138 0.59338999 -0.16050875 13.00000000 0.24601730 - 6118 0.59495773 -0.16050875 14.00000000 0.24822279 - 6262 0.59439034 -0.16050875 15.00000000 0.25052117 - 5988 0.59278602 -0.16050875 16.00000000 0.24702400 - 6134 0.59209733 -0.16050875 17.00000000 0.24845918 - 6280 0.59409338 -0.16050875 18.00000000 0.25283305 - 6086 0.59460625 -0.16050875 19.00000000 0.25193078 - 5954 0.59378707 -0.16050875 20.00000000 0.24894693 - 5954 0.59468090 -0.16050875 21.00000000 0.24193010 - 5958 0.59395718 -0.16050875 22.00000000 0.24699521 - 5950 0.59425852 -0.16050875 23.00000000 0.25354509 - 5942 0.59504561 -0.16050875 24.00000000 0.25271373 - 6210 0.59476553 -0.16050875 25.00000000 0.25151377 - 6114 0.59401118 -0.16050875 26.00000000 0.25109730 - 5748 0.59345510 -0.16050875 27.00000000 0.25314666 - 5824 0.59565610 -0.16050875 28.00000000 0.24603881 - 5974 0.59359412 -0.16050875 29.00000000 0.25690111 - 5896 0.59382420 -0.16050875 30.00000000 0.25311526 - 5754 0.59488913 -0.16050875 31.00000000 0.25643528 - 6088 0.59236846 -0.16050875 32.00000000 0.24277157 - 5940 0.59414322 -0.16050875 33.00000000 0.25351313 - 6052 0.59491679 -0.16050875 34.00000000 0.25039160 - 5998 0.59329535 -0.16050875 35.00000000 0.25494187 - 6020 0.59241558 -0.16050875 36.00000000 0.24889683 - 6060 0.59160076 -0.16050875 37.00000000 0.24873102 - 5988 0.59255062 -0.16050875 38.00000000 0.25375127 - 5766 0.59482246 -0.16050875 39.00000000 0.25288031 - 5786 0.59409373 -0.16050875 40.00000000 0.25169623 - 6168 0.59264658 -0.16050875 41.00000000 0.24686784 - 5916 0.59418479 -0.16050875 42.00000000 0.24717503 - 6024 0.59374793 -0.16050875 43.00000000 0.24524612 - 5852 0.59489156 -0.16050875 44.00000000 0.25009629 - 6006 0.59593306 -0.16050875 45.00000000 0.24688860 - 5802 0.59628294 -0.16050875 46.00000000 0.24769053 - 5650 0.59324765 -0.16050875 47.00000000 0.25335086 - 5986 0.59424204 -0.16050875 48.00000000 0.24004102 - 5784 0.59349244 -0.16050875 49.00000000 0.25227021 - 5970 0.59541225 -0.16050875 50.00000000 0.24215962 - 6012 0.59400090 -0.16050875 51.00000000 0.25427113 - 5910 0.59240222 -0.16050875 52.00000000 0.24726810 - 5946 0.59449325 -0.16050875 53.00000000 0.25294575 - 6056 0.59599381 -0.16050875 54.00000000 0.25839909 - 5936 0.59584024 -0.16050875 55.00000000 0.25332043 - 5934 0.59381918 -0.16050875 56.00000000 0.24671959 - 5760 0.59118194 -0.16050875 57.00000000 0.25519801 - 5942 0.59431811 -0.16050875 58.00000000 0.25166856 - 5822 0.59580349 -0.16050875 59.00000000 0.24909440 - 5908 0.59357586 -0.16050875 60.00000000 0.24975001 - 5716 0.59427326 -0.16050875 61.00000000 0.25089095 - 5862 0.59417524 -0.16050875 62.00000000 0.24943134 - 5928 0.59523990 -0.16050875 63.00000000 0.24853365 - 5742 0.59273859 -0.16050875 64.00000000 0.24802153 - 5726 0.59423386 -0.16050875 65.00000000 0.25299753 - 5768 0.59439557 -0.16050875 66.00000000 0.25358789 - 5756 0.59615807 -0.16050875 67.00000000 0.25196857 - 5814 0.59522631 -0.16050875 68.00000000 0.24611113 - 5860 0.59213854 -0.16050875 69.00000000 0.25611549 - 5808 0.59162742 -0.16050875 70.00000000 0.25262874 - 5760 0.59211367 -0.16050875 71.00000000 0.24043543 - 5884 0.59397933 -0.16050875 72.00000000 0.25093993 - 5782 0.59204926 -0.16050875 73.00000000 0.25510294 - 5646 0.59570956 -0.16050875 74.00000000 0.24807365 - 5738 0.59429791 -0.16050875 75.00000000 0.25327431 - 5832 0.59297680 -0.16050875 76.00000000 0.24671930 - 5710 0.59418454 -0.16050875 77.00000000 0.24939843 - 5570 0.59590816 -0.16050875 78.00000000 0.25115730 - 5684 0.59310078 -0.16050875 79.00000000 0.25380128 - 5462 0.59397825 -0.16050875 80.00000000 0.25423647 - 12368 0.84559981 -0.00666210 1.00000000 0.25212428 - 12764 0.84405468 -0.00666210 2.00000000 0.25057635 - 12476 0.84656684 -0.00666210 3.00000000 0.25271150 - 12408 0.84812905 -0.00666210 4.00000000 0.24982280 - 12514 0.84544312 -0.00666210 5.00000000 0.24786811 - 12344 0.84757809 -0.00666210 6.00000000 0.25308001 - 12332 0.84559732 -0.00666210 7.00000000 0.25281156 - 12364 0.84646350 -0.00666210 8.00000000 0.25219531 - 12290 0.84681577 -0.00666210 9.00000000 0.24886792 - 12332 0.84639451 -0.00666210 10.00000000 0.25474227 - 12516 0.84596141 -0.00666210 11.00000000 0.24717716 - 12326 0.84639194 -0.00666210 12.00000000 0.24979747 - 12216 0.84636216 -0.00666210 13.00000000 0.24763656 - 12422 0.84667290 -0.00666210 14.00000000 0.25115386 - 12556 0.84600991 -0.00666210 15.00000000 0.24698497 - 12612 0.84548254 -0.00666210 16.00000000 0.24481892 - 12424 0.84683032 -0.00666210 17.00000000 0.25215772 - 12424 0.84565697 -0.00666210 18.00000000 0.24759229 - 12680 0.84598391 -0.00666210 19.00000000 0.25389968 - 12674 0.84619191 -0.00666210 20.00000000 0.25207924 - 12402 0.84725413 -0.00666210 21.00000000 0.25315652 - 12420 0.84620484 -0.00666210 22.00000000 0.24718062 - 12548 0.84686818 -0.00666210 23.00000000 0.25578020 - 12198 0.84677820 -0.00666210 24.00000000 0.24548130 - 12072 0.84717735 -0.00666210 25.00000000 0.25145436 - 12034 0.84635127 -0.00666210 26.00000000 0.25367212 - 12042 0.84838254 -0.00666210 27.00000000 0.24641882 - 12484 0.84598351 -0.00666210 28.00000000 0.25007461 - 12252 0.84731267 -0.00666210 29.00000000 0.25147427 - 12220 0.84556092 -0.00666210 30.00000000 0.25208460 - 12116 0.84759251 -0.00666210 31.00000000 0.24748779 - 12256 0.84650172 -0.00666210 32.00000000 0.25393056 - 12182 0.84605819 -0.00666210 33.00000000 0.25040819 - 12132 0.84631032 -0.00666210 34.00000000 0.25186550 - 12100 0.84555129 -0.00666210 35.00000000 0.25683867 - 11950 0.84473764 -0.00666210 36.00000000 0.25203750 - 12408 0.84481748 -0.00666210 37.00000000 0.25188368 - 12078 0.84556045 -0.00666210 38.00000000 0.24980350 - 11808 0.84711000 -0.00666210 39.00000000 0.24712952 - 11878 0.84692327 -0.00666210 40.00000000 0.25023030 - 12058 0.84643349 -0.00666210 41.00000000 0.25227504 - 11926 0.84620274 -0.00666210 42.00000000 0.24522228 - 11832 0.84639395 -0.00666210 43.00000000 0.24746591 - 12224 0.84579440 -0.00666210 44.00000000 0.25044072 - 11810 0.84679702 -0.00666210 45.00000000 0.24825261 - 11984 0.84630840 -0.00666210 46.00000000 0.24639565 - 11902 0.84945148 -0.00666210 47.00000000 0.25104921 - 12014 0.84718725 -0.00666210 48.00000000 0.24994882 - 12180 0.84767696 -0.00666210 49.00000000 0.24593114 - 12072 0.84626226 -0.00666210 50.00000000 0.25703528 - 12050 0.84580350 -0.00666210 51.00000000 0.25139750 - 11972 0.84846220 -0.00666210 52.00000000 0.24963202 - 12052 0.84813483 -0.00666210 53.00000000 0.24797916 - 11782 0.84628287 -0.00666210 54.00000000 0.25437747 - 11632 0.84685145 -0.00666210 55.00000000 0.25198048 - 11892 0.84472001 -0.00666210 56.00000000 0.25003231 - 11946 0.84623984 -0.00666210 57.00000000 0.24438588 - 11910 0.84440457 -0.00666210 58.00000000 0.24752416 - 11966 0.84729699 -0.00666210 59.00000000 0.24946348 - 11656 0.84730754 -0.00666210 60.00000000 0.25396597 - 11506 0.84584660 -0.00666210 61.00000000 0.25074577 - 11524 0.84795152 -0.00666210 62.00000000 0.24529583 - 11614 0.84370445 -0.00666210 63.00000000 0.25089251 - 12060 0.84755165 -0.00666210 64.00000000 0.25256322 - 11458 0.84764552 -0.00666210 65.00000000 0.24633638 - 11588 0.84648236 -0.00666210 66.00000000 0.25569470 - 11862 0.84680090 -0.00666210 67.00000000 0.24973809 - 11882 0.84540830 -0.00666210 68.00000000 0.25435358 - 11604 0.84737508 -0.00666210 69.00000000 0.24500933 - 11794 0.84882896 -0.00666210 70.00000000 0.25070279 - 11474 0.84603870 -0.00666210 71.00000000 0.25347157 - 11798 0.84678246 -0.00666210 72.00000000 0.25070838 - 11482 0.84610657 -0.00666210 73.00000000 0.25058424 - 11644 0.84785207 -0.00666210 74.00000000 0.25079883 - 11520 0.84545385 -0.00666210 75.00000000 0.25453709 - 11800 0.84483082 -0.00666210 76.00000000 0.24939885 - 11500 0.84721274 -0.00666210 77.00000000 0.24742880 - 11552 0.84576729 -0.00666210 78.00000000 0.24562293 - 11532 0.84668052 -0.00666210 79.00000000 0.25148333 - 11636 0.84612535 -0.00666210 80.00000000 0.25230290 - 25474 1.20629086 0.14718457 1.00000000 0.25041849 - 25372 1.20551323 0.14718457 2.00000000 0.25205180 - 25360 1.20625600 0.14718457 3.00000000 0.24705617 - 25108 1.20809838 0.14718457 4.00000000 0.24710015 - 25340 1.20696894 0.14718457 5.00000000 0.25006702 - 25344 1.20609471 0.14718457 6.00000000 0.24880367 - 25570 1.20537673 0.14718457 7.00000000 0.24983865 - 25486 1.20718305 0.14718457 8.00000000 0.25019861 - 25544 1.20688493 0.14718457 9.00000000 0.24994469 - 24606 1.20825991 0.14718457 10.00000000 0.24988393 - 25208 1.20529120 0.14718457 11.00000000 0.24831642 - 25176 1.20597442 0.14718457 12.00000000 0.24988470 - 25152 1.20673197 0.14718457 13.00000000 0.25200698 - 25114 1.20582311 0.14718457 14.00000000 0.24995442 - 25334 1.20731681 0.14718457 15.00000000 0.24914535 - 25336 1.20549811 0.14718457 16.00000000 0.24830978 - 24918 1.20572692 0.14718457 17.00000000 0.25224340 - 25514 1.20558195 0.14718457 18.00000000 0.25280247 - 24944 1.20785114 0.14718457 19.00000000 0.25253591 - 24730 1.20731056 0.14718457 20.00000000 0.25458454 - 24984 1.20671568 0.14718457 21.00000000 0.24989965 - 25014 1.20677979 0.14718457 22.00000000 0.24971493 - 25072 1.20658687 0.14718457 23.00000000 0.25146926 - 24862 1.20622990 0.14718457 24.00000000 0.24887361 - 24580 1.20796672 0.14718457 25.00000000 0.25090990 - 25168 1.20662364 0.14718457 26.00000000 0.24984492 - 24964 1.20623610 0.14718457 27.00000000 0.25085851 - 24780 1.20590262 0.14718457 28.00000000 0.25100360 - 24608 1.20723239 0.14718457 29.00000000 0.24791131 - 24522 1.20593448 0.14718457 30.00000000 0.25166840 - 24846 1.20705200 0.14718457 31.00000000 0.24819636 - 25288 1.20922885 0.14718457 32.00000000 0.25174572 - 24430 1.20509065 0.14718457 33.00000000 0.25132278 - 24656 1.20685211 0.14718457 34.00000000 0.24850800 - 24640 1.20658484 0.14718457 35.00000000 0.24692737 - 24272 1.20649434 0.14718457 36.00000000 0.25028298 - 24696 1.20531333 0.14718457 37.00000000 0.25070848 - 24820 1.20606611 0.14718457 38.00000000 0.24853113 - 24302 1.20582999 0.14718457 39.00000000 0.25061248 - 24460 1.20635358 0.14718457 40.00000000 0.24742922 - 24438 1.20592644 0.14718457 41.00000000 0.24980427 - 24542 1.20696940 0.14718457 42.00000000 0.25075420 - 24930 1.20625244 0.14718457 43.00000000 0.25134327 - 24926 1.20594258 0.14718457 44.00000000 0.25009506 - 24294 1.20551668 0.14718457 45.00000000 0.24978691 - 24414 1.20791490 0.14718457 46.00000000 0.24806146 - 24540 1.20702062 0.14718457 47.00000000 0.25215184 - 24342 1.20679240 0.14718457 48.00000000 0.25293881 - 24358 1.20648104 0.14718457 49.00000000 0.25058649 - 23960 1.20744667 0.14718457 50.00000000 0.25305303 - 23968 1.20766176 0.14718457 51.00000000 0.25161246 - 23748 1.20623778 0.14718457 52.00000000 0.25220377 - 23890 1.20731878 0.14718457 53.00000000 0.24718691 - 24150 1.20553200 0.14718457 54.00000000 0.24878403 - 24024 1.20689074 0.14718457 55.00000000 0.25090984 - 24274 1.20480627 0.14718457 56.00000000 0.24769312 - 24284 1.20593725 0.14718457 57.00000000 0.25274357 - 24040 1.20796418 0.14718457 58.00000000 0.24998965 - 23914 1.20634789 0.14718457 59.00000000 0.24855047 - 23752 1.20726507 0.14718457 60.00000000 0.24963601 - 24160 1.20774242 0.14718457 61.00000000 0.25121635 - 23806 1.20626571 0.14718457 62.00000000 0.24617217 - 23816 1.20742037 0.14718457 63.00000000 0.24998195 - 23914 1.20521456 0.14718457 64.00000000 0.24826628 - 23682 1.20557734 0.14718457 65.00000000 0.25293112 - 23700 1.20743556 0.14718457 66.00000000 0.25462701 - 23588 1.20609624 0.14718457 67.00000000 0.24976093 - 23818 1.20662685 0.14718457 68.00000000 0.24944133 - 23848 1.20583479 0.14718457 69.00000000 0.24981252 - 23772 1.20479538 0.14718457 70.00000000 0.25127784 - 23372 1.20732806 0.14718457 71.00000000 0.25220545 - 23946 1.20662039 0.14718457 72.00000000 0.24578450 - 23156 1.20812455 0.14718457 73.00000000 0.25024503 - 23348 1.20621719 0.14718457 74.00000000 0.24694495 - 23782 1.20733395 0.14718457 75.00000000 0.25179164 - 23228 1.20629616 0.14718457 76.00000000 0.25390143 - 23572 1.20885559 0.14718457 77.00000000 0.24648884 - 23562 1.20691322 0.14718457 78.00000000 0.25102172 - 23540 1.20577775 0.14718457 79.00000000 0.25011880 - 23258 1.20486248 0.14718457 80.00000000 0.25335324 - 51062 1.71902184 0.30103000 1.00000000 0.24770563 - 51962 1.71688920 0.30103000 2.00000000 0.24733526 - 51524 1.71865738 0.30103000 3.00000000 0.24906768 - 51466 1.71973711 0.30103000 4.00000000 0.24828655 - 51898 1.71719766 0.30103000 5.00000000 0.25145835 - 51714 1.71894692 0.30103000 6.00000000 0.25143487 - 51770 1.72022914 0.30103000 7.00000000 0.24787296 - 52168 1.71972396 0.30103000 8.00000000 0.24914619 - 52044 1.72092039 0.30103000 9.00000000 0.25214925 - 51464 1.71891035 0.30103000 10.00000000 0.24986251 - 51208 1.71882660 0.30103000 11.00000000 0.25198069 - 51098 1.72005014 0.30103000 12.00000000 0.25053056 - 51590 1.71939097 0.30103000 13.00000000 0.25077740 - 50978 1.72002132 0.30103000 14.00000000 0.24948304 - 51144 1.71937123 0.30103000 15.00000000 0.24968470 - 50828 1.71752287 0.30103000 16.00000000 0.25017777 - 51236 1.71868314 0.30103000 17.00000000 0.25281088 - 50788 1.71825009 0.30103000 18.00000000 0.24768560 - 50352 1.71946307 0.30103000 19.00000000 0.25103290 - 50696 1.71914685 0.30103000 20.00000000 0.25261118 - 50362 1.71893887 0.30103000 21.00000000 0.24794111 - 50806 1.71937291 0.30103000 22.00000000 0.24890935 - 50812 1.71893114 0.30103000 23.00000000 0.25111686 - 50496 1.71755634 0.30103000 24.00000000 0.24925431 - 50538 1.71844052 0.30103000 25.00000000 0.24975189 - 50168 1.72052095 0.30103000 26.00000000 0.25073960 - 50296 1.72015000 0.30103000 27.00000000 0.24969410 - 50840 1.71960924 0.30103000 28.00000000 0.24898100 - 50332 1.71937784 0.30103000 29.00000000 0.24946365 - 50330 1.71740458 0.30103000 30.00000000 0.25159452 - 50396 1.71784796 0.30103000 31.00000000 0.25093071 - 50000 1.71878432 0.30103000 32.00000000 0.25134825 - 49954 1.72079550 0.30103000 33.00000000 0.25138652 - 50168 1.72009687 0.30103000 34.00000000 0.25167730 - 50088 1.71912158 0.30103000 35.00000000 0.24952284 - 49952 1.71886769 0.30103000 36.00000000 0.24924050 - 49450 1.71873745 0.30103000 37.00000000 0.24787035 - 49920 1.72051544 0.30103000 38.00000000 0.25150070 - 50062 1.71781779 0.30103000 39.00000000 0.25376058 - 49692 1.71854858 0.30103000 40.00000000 0.25185940 - 50172 1.72005711 0.30103000 41.00000000 0.25080869 - 49840 1.71846781 0.30103000 42.00000000 0.25229677 - 49690 1.71949434 0.30103000 43.00000000 0.24898409 - 49472 1.72161164 0.30103000 44.00000000 0.24935151 - 49340 1.71869180 0.30103000 45.00000000 0.25218806 - 49254 1.71831826 0.30103000 46.00000000 0.24918341 - 50154 1.72059262 0.30103000 47.00000000 0.25041333 - 49756 1.71952708 0.30103000 48.00000000 0.25036104 - 49214 1.72023000 0.30103000 49.00000000 0.25023048 - 49136 1.72016167 0.30103000 50.00000000 0.25301235 - 49478 1.71972406 0.30103000 51.00000000 0.24922569 - 49390 1.72052014 0.30103000 52.00000000 0.25057768 - 49048 1.72021747 0.30103000 53.00000000 0.25022027 - 48700 1.71904900 0.30103000 54.00000000 0.24965582 - 48724 1.72009426 0.30103000 55.00000000 0.24827617 - 49354 1.71874883 0.30103000 56.00000000 0.24947969 - 48672 1.72029150 0.30103000 57.00000000 0.24969940 - 49030 1.72051044 0.30103000 58.00000000 0.24852439 - 48982 1.71953042 0.30103000 59.00000000 0.24925114 - 48030 1.71925694 0.30103000 60.00000000 0.24901178 - 49128 1.72066100 0.30103000 61.00000000 0.25260111 - 48500 1.71829883 0.30103000 62.00000000 0.24996596 - 47924 1.71875623 0.30103000 63.00000000 0.24922548 - 48568 1.71919878 0.30103000 64.00000000 0.25077181 - 48758 1.71854524 0.30103000 65.00000000 0.24804419 - 48364 1.71814900 0.30103000 66.00000000 0.24925315 - 47848 1.71903160 0.30103000 67.00000000 0.24805165 - 48362 1.71974775 0.30103000 68.00000000 0.24926250 - 47536 1.71816036 0.30103000 69.00000000 0.24989401 - 47988 1.71900603 0.30103000 70.00000000 0.24862019 - 47730 1.71800951 0.30103000 71.00000000 0.25185737 - 48150 1.71859300 0.30103000 72.00000000 0.24875347 - 47832 1.71911820 0.30103000 73.00000000 0.24777640 - 47918 1.71818126 0.30103000 74.00000000 0.24845121 - 47942 1.72073691 0.30103000 75.00000000 0.24963293 - 48212 1.71857995 0.30103000 76.00000000 0.24932594 - 47718 1.71902410 0.30103000 77.00000000 0.25020236 - 47424 1.71888280 0.30103000 78.00000000 0.25130913 - 47718 1.71930955 0.30103000 79.00000000 0.24995475 - 47578 1.71905835 0.30103000 80.00000000 0.24742140 - 105382 2.45038010 0.45487534 1.00000000 0.24985720 - 104996 2.44921944 0.45487534 2.00000000 0.25041436 - 105322 2.45048819 0.45487534 3.00000000 0.25034708 - 105486 2.44975729 0.45487534 4.00000000 0.24845202 - 104482 2.45159667 0.45487534 5.00000000 0.24885416 - 105488 2.44950425 0.45487534 6.00000000 0.25244325 - 105028 2.44962655 0.45487534 7.00000000 0.25067568 - 104172 2.44886378 0.45487534 8.00000000 0.25047536 - 104420 2.44957152 0.45487534 9.00000000 0.24854802 - 104134 2.44955742 0.45487534 10.00000000 0.25029489 - 105010 2.45010078 0.45487534 11.00000000 0.24859224 - 104050 2.44915241 0.45487534 12.00000000 0.24980155 - 103768 2.45016465 0.45487534 13.00000000 0.25016145 - 103818 2.44971740 0.45487534 14.00000000 0.25012251 - 104026 2.45116545 0.45487534 15.00000000 0.24987869 - 103668 2.45190584 0.45487534 16.00000000 0.25186499 - 103450 2.44852589 0.45487534 17.00000000 0.24973742 - 104108 2.44930578 0.45487534 18.00000000 0.24776684 - 103838 2.45061171 0.45487534 19.00000000 0.25039991 - 103074 2.45027357 0.45487534 20.00000000 0.25012897 - 103778 2.44842520 0.45487534 21.00000000 0.24898203 - 102980 2.44893458 0.45487534 22.00000000 0.25006235 - 102234 2.45024045 0.45487534 23.00000000 0.25014793 - 102994 2.44911590 0.45487534 24.00000000 0.24970560 - 102272 2.44911436 0.45487534 25.00000000 0.24921523 - 102738 2.44749101 0.45487534 26.00000000 0.25053955 - 101964 2.44976424 0.45487534 27.00000000 0.24955374 - 102198 2.45160260 0.45487534 28.00000000 0.24844228 - 101646 2.45146132 0.45487534 29.00000000 0.24978249 - 102276 2.44986809 0.45487534 30.00000000 0.24818427 - 103260 2.45011735 0.45487534 31.00000000 0.25132628 - 102234 2.45149470 0.45487534 32.00000000 0.25006738 - 101178 2.44777996 0.45487534 33.00000000 0.25047829 - 102082 2.44860319 0.45487534 34.00000000 0.25098879 - 101720 2.45137342 0.45487534 35.00000000 0.25106272 - 101516 2.44829538 0.45487534 36.00000000 0.25106017 - 102422 2.44766010 0.45487534 37.00000000 0.25043462 - 100756 2.45259973 0.45487534 38.00000000 0.24979486 - 101034 2.44832059 0.45487534 39.00000000 0.25108538 - 100890 2.44882227 0.45487534 40.00000000 0.24808374 - 100414 2.45176197 0.45487534 41.00000000 0.24777427 - 101008 2.45093567 0.45487534 42.00000000 0.24941169 - 100512 2.45026235 0.45487534 43.00000000 0.25272133 - 100466 2.45030293 0.45487534 44.00000000 0.24984360 - 100136 2.44975422 0.45487534 45.00000000 0.24950589 - 100782 2.44767292 0.45487534 46.00000000 0.25119914 - 101028 2.44795583 0.45487534 47.00000000 0.25197916 - 100008 2.45046347 0.45487534 48.00000000 0.25146694 - 99616 2.44948537 0.45487534 49.00000000 0.25141539 - 99326 2.45058566 0.45487534 50.00000000 0.25172247 - 99458 2.44886669 0.45487534 51.00000000 0.25102900 - 100818 2.44941441 0.45487534 52.00000000 0.24961618 - 98852 2.45041406 0.45487534 53.00000000 0.25104177 - 99528 2.45039637 0.45487534 54.00000000 0.24969411 - 100136 2.44920379 0.45487534 55.00000000 0.24810849 - 98772 2.45015944 0.45487534 56.00000000 0.24999642 - 98976 2.44996367 0.45487534 57.00000000 0.24824501 - 98652 2.45085313 0.45487534 58.00000000 0.25116967 - 99252 2.45207450 0.45487534 59.00000000 0.24964343 - 98256 2.44948200 0.45487534 60.00000000 0.24958137 - 98506 2.44949278 0.45487534 61.00000000 0.24944612 - 98462 2.45035436 0.45487534 62.00000000 0.24924332 - 98978 2.44888779 0.45487534 63.00000000 0.25209840 - 98712 2.44973958 0.45487534 64.00000000 0.24958000 - 98112 2.44973634 0.45487534 65.00000000 0.25161078 - 98320 2.45179170 0.45487534 66.00000000 0.24962966 - 97690 2.44857734 0.45487534 67.00000000 0.25062709 - 98592 2.44817043 0.45487534 68.00000000 0.24931235 - 97712 2.44961348 0.45487534 69.00000000 0.24993082 - 97136 2.44761576 0.45487534 70.00000000 0.25014587 - 97598 2.45040784 0.45487534 71.00000000 0.24835041 - 96816 2.45182761 0.45487534 72.00000000 0.24919213 - 98084 2.45076034 0.45487534 73.00000000 0.25081729 - 96814 2.44950742 0.45487534 74.00000000 0.25055178 - 97102 2.45236804 0.45487534 75.00000000 0.24974357 - 97856 2.44921086 0.45487534 76.00000000 0.25088372 - 97056 2.45117942 0.45487534 77.00000000 0.25128532 - 97200 2.44928034 0.45487534 78.00000000 0.25011754 - 96890 2.44912101 0.45487534 79.00000000 0.24910747 - 95932 2.44941268 0.45487534 80.00000000 0.24929075 - 213872 3.49177691 0.60872281 1.00000000 0.24995164 - 214410 3.49134062 0.60872281 2.00000000 0.24983900 - 213522 3.49087670 0.60872281 3.00000000 0.25085679 - 213790 3.49215038 0.60872281 4.00000000 0.25050831 - 212724 3.49227422 0.60872281 5.00000000 0.24997773 - 212662 3.48964206 0.60872281 6.00000000 0.25042533 - 213212 3.48946355 0.60872281 7.00000000 0.25122084 - 212418 3.49206751 0.60872281 8.00000000 0.24902221 - 212718 3.49178836 0.60872281 9.00000000 0.24954447 - 212234 3.49229595 0.60872281 10.00000000 0.25039678 - 212122 3.49085168 0.60872281 11.00000000 0.25007076 - 210648 3.49185061 0.60872281 12.00000000 0.24902289 - 211330 3.49138963 0.60872281 13.00000000 0.25089207 - 210984 3.49281087 0.60872281 14.00000000 0.25012257 - 211360 3.49111031 0.60872281 15.00000000 0.25095010 - 211230 3.49194361 0.60872281 16.00000000 0.24893769 - 210308 3.49001258 0.60872281 17.00000000 0.25062626 - 210936 3.49076379 0.60872281 18.00000000 0.24948320 - 210956 3.49171400 0.60872281 19.00000000 0.25096370 - 209734 3.49200949 0.60872281 20.00000000 0.24974784 - 208664 3.49241701 0.60872281 21.00000000 0.25190335 - 210248 3.49107393 0.60872281 22.00000000 0.25095544 - 209372 3.49076586 0.60872281 23.00000000 0.25042849 - 207810 3.49202538 0.60872281 24.00000000 0.24898018 - 209302 3.49374344 0.60872281 25.00000000 0.24863619 - 208084 3.49062671 0.60872281 26.00000000 0.25021399 - 207380 3.49209308 0.60872281 27.00000000 0.24980123 - 207310 3.49028171 0.60872281 28.00000000 0.25058690 - 207650 3.49367737 0.60872281 29.00000000 0.24992598 - 207566 3.49306016 0.60872281 30.00000000 0.25087131 - 207072 3.48931829 0.60872281 31.00000000 0.24975828 - 206680 3.48988105 0.60872281 32.00000000 0.24954660 - 206500 3.49112970 0.60872281 33.00000000 0.25011544 - 206790 3.49193543 0.60872281 34.00000000 0.25013395 - 206474 3.48971144 0.60872281 35.00000000 0.25038087 - 206622 3.49235829 0.60872281 36.00000000 0.24881440 - 205072 3.49012137 0.60872281 37.00000000 0.25127167 - 205746 3.49234839 0.60872281 38.00000000 0.24994917 - 205186 3.49263705 0.60872281 39.00000000 0.25024072 - 205726 3.49021065 0.60872281 40.00000000 0.25022802 - 204556 3.49115774 0.60872281 41.00000000 0.24986608 - 204922 3.49199776 0.60872281 42.00000000 0.24888558 - 204336 3.49099012 0.60872281 43.00000000 0.25045035 - 205434 3.49121051 0.60872281 44.00000000 0.25056494 - 204240 3.49419042 0.60872281 45.00000000 0.24954009 - 204304 3.49017960 0.60872281 46.00000000 0.25022252 - 204644 3.49052051 0.60872281 47.00000000 0.24921754 - 202538 3.49176826 0.60872281 48.00000000 0.24906459 - 203500 3.49207604 0.60872281 49.00000000 0.25013119 - 201964 3.49003722 0.60872281 50.00000000 0.25072614 - 202784 3.49019477 0.60872281 51.00000000 0.25009555 - 202402 3.49023863 0.60872281 52.00000000 0.25024438 - 202082 3.49100649 0.60872281 53.00000000 0.25131575 - 201272 3.49117204 0.60872281 54.00000000 0.24894556 - 202054 3.49289470 0.60872281 55.00000000 0.24868890 - 201696 3.49217334 0.60872281 56.00000000 0.25027555 - 199962 3.49110921 0.60872281 57.00000000 0.24930896 - 201334 3.49222851 0.60872281 58.00000000 0.24989396 - 201068 3.49149073 0.60872281 59.00000000 0.24985154 - 200566 3.48998355 0.60872281 60.00000000 0.24924255 - 200446 3.49092652 0.60872281 61.00000000 0.25051242 - 200150 3.49047212 0.60872281 62.00000000 0.25142144 - 199814 3.48980436 0.60872281 63.00000000 0.24914754 - 198142 3.49240199 0.60872281 64.00000000 0.24937243 - 200188 3.49158812 0.60872281 65.00000000 0.25162961 - 198520 3.49025967 0.60872281 66.00000000 0.24906183 - 198910 3.49145029 0.60872281 67.00000000 0.25060903 - 198232 3.49297917 0.60872281 68.00000000 0.24966831 - 198730 3.49077271 0.60872281 69.00000000 0.24901096 - 198094 3.49134972 0.60872281 70.00000000 0.24998896 - 198134 3.48973124 0.60872281 71.00000000 0.24954398 - 198166 3.49189957 0.60872281 72.00000000 0.25014304 - 198386 3.49076015 0.60872281 73.00000000 0.25055928 - 197756 3.49258779 0.60872281 74.00000000 0.24984293 - 196380 3.49252812 0.60872281 75.00000000 0.25098733 - 197096 3.49246355 0.60872281 76.00000000 0.25046211 - 196204 3.49080214 0.60872281 77.00000000 0.24829091 - 196518 3.49095867 0.60872281 78.00000000 0.25137894 - 196646 3.49360121 0.60872281 79.00000000 0.24868403 - 196196 3.49121039 0.60872281 80.00000000 0.24934936 - 434190 4.97791834 0.76256829 1.00000000 0.25039901 - 434242 4.97491551 0.76256829 2.00000000 0.24973697 - 432708 4.97698011 0.76256829 3.00000000 0.25073341 - 432198 4.97672039 0.76256829 4.00000000 0.24997795 - 429922 4.97538189 0.76256829 5.00000000 0.25048567 - 432008 4.97434951 0.76256829 6.00000000 0.24977425 - 431792 4.97589674 0.76256829 7.00000000 0.24996249 - 432340 4.97592789 0.76256829 8.00000000 0.25039358 - 431854 4.97487562 0.76256829 9.00000000 0.24950448 - 430406 4.97342001 0.76256829 10.00000000 0.24978200 - 429316 4.97565406 0.76256829 11.00000000 0.25025092 - 428920 4.97670240 0.76256829 12.00000000 0.25056464 - 427432 4.97547362 0.76256829 13.00000000 0.24974816 - 427694 4.97433214 0.76256829 14.00000000 0.24997016 - 429794 4.97671916 0.76256829 15.00000000 0.25109097 - 427438 4.97561309 0.76256829 16.00000000 0.24918003 - 426476 4.97548786 0.76256829 17.00000000 0.24989773 - 426792 4.97670862 0.76256829 18.00000000 0.25061498 - 426302 4.97511123 0.76256829 19.00000000 0.25068311 - 424948 4.97695053 0.76256829 20.00000000 0.24952122 - 425842 4.97729073 0.76256829 21.00000000 0.25004654 - 426702 4.97559601 0.76256829 22.00000000 0.24849851 - 424768 4.97623698 0.76256829 23.00000000 0.24973070 - 424508 4.97321059 0.76256829 24.00000000 0.24998220 - 424156 4.97628568 0.76256829 25.00000000 0.25019744 - 423038 4.97659191 0.76256829 26.00000000 0.25007910 - 422588 4.97565931 0.76256829 27.00000000 0.24953688 - 423162 4.97607286 0.76256829 28.00000000 0.25050779 - 422112 4.97473665 0.76256829 29.00000000 0.25016720 - 421268 4.97676777 0.76256829 30.00000000 0.25038411 - 421244 4.97501213 0.76256829 31.00000000 0.25086680 - 421352 4.97513414 0.76256829 32.00000000 0.25027333 - 421178 4.97590951 0.76256829 33.00000000 0.25014407 - 419094 4.97450796 0.76256829 34.00000000 0.24991771 - 417982 4.97557421 0.76256829 35.00000000 0.24983348 - 419572 4.97449616 0.76256829 36.00000000 0.25039641 - 420638 4.97476422 0.76256829 37.00000000 0.25006238 - 416730 4.97495280 0.76256829 38.00000000 0.25009938 - 415746 4.97607505 0.76256829 39.00000000 0.24924812 - 416684 4.97546739 0.76256829 40.00000000 0.24955362 - 416506 4.97616305 0.76256829 41.00000000 0.24998399 - 417018 4.97339076 0.76256829 42.00000000 0.25032264 - 415408 4.97663728 0.76256829 43.00000000 0.25037142 - 413902 4.97595375 0.76256829 44.00000000 0.25043762 - 414748 4.97448164 0.76256829 45.00000000 0.25032963 - 412960 4.97633798 0.76256829 46.00000000 0.25030157 - 413278 4.97573503 0.76256829 47.00000000 0.24940300 - 411798 4.97684292 0.76256829 48.00000000 0.24952963 - 411692 4.97637318 0.76256829 49.00000000 0.25068637 - 411384 4.97709833 0.76256829 50.00000000 0.25022291 - 410148 4.97580755 0.76256829 51.00000000 0.25008859 - 410598 4.97376730 0.76256829 52.00000000 0.24995804 - 410162 4.97558943 0.76256829 53.00000000 0.24937095 - 409946 4.97646484 0.76256829 54.00000000 0.25060569 - 410468 4.97640399 0.76256829 55.00000000 0.25014318 - 407480 4.97764953 0.76256829 56.00000000 0.25056952 - 407350 4.97430470 0.76256829 57.00000000 0.24973775 - 409034 4.97530502 0.76256829 58.00000000 0.25041164 - 407960 4.97597320 0.76256829 59.00000000 0.24953282 - 408044 4.97611952 0.76256829 60.00000000 0.25012525 - 406026 4.97780490 0.76256829 61.00000000 0.25027609 - 405192 4.97602405 0.76256829 62.00000000 0.25020095 - 406102 4.97493173 0.76256829 63.00000000 0.25106258 - 405256 4.97445427 0.76256829 64.00000000 0.24912572 - 404296 4.97576598 0.76256829 65.00000000 0.24984525 - 405152 4.97593556 0.76256829 66.00000000 0.25018872 - 403202 4.97295899 0.76256829 67.00000000 0.24916602 - 402280 4.97530048 0.76256829 68.00000000 0.24949748 - 403268 4.97689217 0.76256829 69.00000000 0.25006221 - 403710 4.97481721 0.76256829 70.00000000 0.25068450 - 403638 4.97518320 0.76256829 71.00000000 0.25003802 - 401118 4.97591302 0.76256829 72.00000000 0.24982484 - 400604 4.97517329 0.76256829 73.00000000 0.24866608 - 399796 4.97482923 0.76256829 74.00000000 0.24957315 - 399580 4.97576414 0.76256829 75.00000000 0.24912799 - 400974 4.97437809 0.76256829 76.00000000 0.25100339 - 398380 4.97730341 0.76256829 77.00000000 0.25011324 - 398622 4.97511217 0.76256829 78.00000000 0.25046093 - 398898 4.97527936 0.76256829 79.00000000 0.24926484 - 398170 4.97700124 0.76256829 80.00000000 0.24979170 - 883192 7.09181021 0.91641447 1.00000000 0.24997188 - 882946 7.09141513 0.91641447 2.00000000 0.25029262 - 879426 7.08936178 0.91641447 3.00000000 0.24997931 - 879652 7.08972373 0.91641447 4.00000000 0.24952314 - 878552 7.09104034 0.91641447 5.00000000 0.25007708 - 878154 7.09065050 0.91641447 6.00000000 0.25017873 - 875230 7.08998328 0.91641447 7.00000000 0.24997010 - 876990 7.09143052 0.91641447 8.00000000 0.24966899 - 874404 7.08771783 0.91641447 9.00000000 0.25040874 - 873526 7.09100549 0.91641447 10.00000000 0.24991328 - 874560 7.09330637 0.91641447 11.00000000 0.25008988 - 872148 7.09108497 0.91641447 12.00000000 0.24989974 - 873966 7.09183325 0.91641447 13.00000000 0.25023944 - 870212 7.09168881 0.91641447 14.00000000 0.24997688 - 870166 7.08981764 0.91641447 15.00000000 0.24983738 - 870142 7.08941764 0.91641447 16.00000000 0.25078798 - 868860 7.08978275 0.91641447 17.00000000 0.25017610 - 867642 7.09289687 0.91641447 18.00000000 0.25024648 - 864854 7.09108258 0.91641447 19.00000000 0.25079575 - 864562 7.08991585 0.91641447 20.00000000 0.24995827 - 861962 7.09103607 0.91641447 21.00000000 0.24965221 - 862802 7.09073148 0.91641447 22.00000000 0.24984492 - 860744 7.09159898 0.91641447 23.00000000 0.25035384 - 864848 7.08873952 0.91641447 24.00000000 0.24952291 - 860516 7.08989320 0.91641447 25.00000000 0.24992037 - 861128 7.08926224 0.91641447 26.00000000 0.25031955 - 858804 7.08928061 0.91641447 27.00000000 0.25021735 - 857578 7.09149755 0.91641447 28.00000000 0.25011006 - 856840 7.09127436 0.91641447 29.00000000 0.24951473 - 856194 7.09057839 0.91641447 30.00000000 0.25026683 - 853982 7.09128670 0.91641447 31.00000000 0.25043473 - 853964 7.09198225 0.91641447 32.00000000 0.24968278 - 850440 7.09290145 0.91641447 33.00000000 0.25051742 - 851632 7.09202761 0.91641447 34.00000000 0.25005427 - 849806 7.09334364 0.91641447 35.00000000 0.24962344 - 848924 7.09137371 0.91641447 36.00000000 0.24999951 - 847700 7.09123177 0.91641447 37.00000000 0.25044077 - 847012 7.09094743 0.91641447 38.00000000 0.25024750 - 846596 7.08877462 0.91641447 39.00000000 0.24983804 - 844044 7.08964619 0.91641447 40.00000000 0.25001553 - 844082 7.09006321 0.91641447 41.00000000 0.25018375 - 845840 7.09183436 0.91641447 42.00000000 0.25014347 - 844470 7.09087541 0.91641447 43.00000000 0.25017935 - 842100 7.09195346 0.91641447 44.00000000 0.25039699 - 838860 7.09074532 0.91641447 45.00000000 0.25043168 - 841000 7.09069627 0.91641447 46.00000000 0.24967172 - 840518 7.08751592 0.91641447 47.00000000 0.24977531 - 840954 7.08948351 0.91641447 48.00000000 0.25028762 - 837676 7.09061677 0.91641447 49.00000000 0.25027003 - 835896 7.09024887 0.91641447 50.00000000 0.25019703 - 836756 7.09058725 0.91641447 51.00000000 0.24993262 - 835730 7.08968990 0.91641447 52.00000000 0.24973170 - 832744 7.09037314 0.91641447 53.00000000 0.24925400 - 832420 7.09115971 0.91641447 54.00000000 0.24948493 - 832890 7.09061104 0.91641447 55.00000000 0.24977143 - 831768 7.09193121 0.91641447 56.00000000 0.25001032 - 832250 7.09171974 0.91641447 57.00000000 0.25020065 - 830620 7.09046568 0.91641447 58.00000000 0.25020521 - 828310 7.09193500 0.91641447 59.00000000 0.25024765 - 826672 7.09109705 0.91641447 60.00000000 0.24991689 - 826270 7.08876967 0.91641447 61.00000000 0.24986872 - 823832 7.08980381 0.91641447 62.00000000 0.24981465 - 823282 7.08983300 0.91641447 63.00000000 0.25001752 - 823818 7.09005175 0.91641447 64.00000000 0.25008507 - 819262 7.09022824 0.91641447 65.00000000 0.25015555 - 820206 7.09142447 0.91641447 66.00000000 0.25088039 - 821720 7.09127017 0.91641447 67.00000000 0.25047490 - 820232 7.08965152 0.91641447 68.00000000 0.25000110 - 817752 7.09166300 0.91641447 69.00000000 0.25014541 - 817532 7.09030239 0.91641447 70.00000000 0.24987313 - 817082 7.08994969 0.91641447 71.00000000 0.24961869 - 815650 7.08959539 0.91641447 72.00000000 0.24981343 - 815950 7.09207700 0.91641447 73.00000000 0.24958837 - 816354 7.08909873 0.91641447 74.00000000 0.24984320 - 812312 7.08878694 0.91641447 75.00000000 0.24997385 - 811698 7.09202063 0.91641447 76.00000000 0.24893088 - 812948 7.09337633 0.91641447 77.00000000 0.25011903 - 807728 7.09145997 0.91641447 78.00000000 0.25024370 - 809680 7.09107759 0.91641447 79.00000000 0.24986372 - 807096 7.08905040 0.91641447 80.00000000 0.24987958 - 1792714 10.10432117 1.07025958 1.00000000 0.25001392 - 1790536 10.10547886 1.07025958 2.00000000 0.25023278 - 1790502 10.10625090 1.07025958 3.00000000 0.25057072 - 1787934 10.10388276 1.07025958 4.00000000 0.25025982 - 1782364 10.10475156 1.07025958 5.00000000 0.24926193 - 1784516 10.10584084 1.07025958 6.00000000 0.25009450 - 1782522 10.10388548 1.07025958 7.00000000 0.24992409 - 1778716 10.10626786 1.07025958 8.00000000 0.24972602 - 1779934 10.10626225 1.07025958 9.00000000 0.25029768 - 1776620 10.10433286 1.07025958 10.00000000 0.24937575 - 1775626 10.10516811 1.07025958 11.00000000 0.25009154 - 1773000 10.10287864 1.07025958 12.00000000 0.25025695 - 1770966 10.10534348 1.07025958 13.00000000 0.24996405 - 1768666 10.10504492 1.07025958 14.00000000 0.24995602 - 1767344 10.10669551 1.07025958 15.00000000 0.25006105 - 1763976 10.10422945 1.07025958 16.00000000 0.25059874 - 1760618 10.10481901 1.07025958 17.00000000 0.25042696 - 1761356 10.10491841 1.07025958 18.00000000 0.24969082 - 1759590 10.10226727 1.07025958 19.00000000 0.25041442 - 1756156 10.10386141 1.07025958 20.00000000 0.25009652 - 1755346 10.10552413 1.07025958 21.00000000 0.25024572 - 1754488 10.10564874 1.07025958 22.00000000 0.24991241 - 1752320 10.10498971 1.07025958 23.00000000 0.24982312 - 1750898 10.10392949 1.07025958 24.00000000 0.25024931 - 1747280 10.10578063 1.07025958 25.00000000 0.24984089 - 1743146 10.10601677 1.07025958 26.00000000 0.25023318 - 1739566 10.10576966 1.07025958 27.00000000 0.25000670 - 1741410 10.10525396 1.07025958 28.00000000 0.24979271 - 1740558 10.10514387 1.07025958 29.00000000 0.25062984 - 1737832 10.10314296 1.07025958 30.00000000 0.25048917 - 1734544 10.10432886 1.07025958 31.00000000 0.24997952 - 1732784 10.10416877 1.07025958 32.00000000 0.25028317 - 1733968 10.10366448 1.07025958 33.00000000 0.24986229 - 1731532 10.10491045 1.07025958 34.00000000 0.25018537 - 1728372 10.10471343 1.07025958 35.00000000 0.25016173 - 1725690 10.10370725 1.07025958 36.00000000 0.25026325 - 1721638 10.10566373 1.07025958 37.00000000 0.24988848 - 1723280 10.10432300 1.07025958 38.00000000 0.24989459 - 1715882 10.10439270 1.07025958 39.00000000 0.24959306 - 1717190 10.10479984 1.07025958 40.00000000 0.25004903 - 1718892 10.10300597 1.07025958 41.00000000 0.25030005 - 1716170 10.10691857 1.07025958 42.00000000 0.25019211 - 1711030 10.10485030 1.07025958 43.00000000 0.25046758 - 1708914 10.10478947 1.07025958 44.00000000 0.25022768 - 1709684 10.10470030 1.07025958 45.00000000 0.24979562 - 1706152 10.10520963 1.07025958 46.00000000 0.24983741 - 1704114 10.10388944 1.07025958 47.00000000 0.25030787 - 1704618 10.10274972 1.07025958 48.00000000 0.25012544 - 1705904 10.10561733 1.07025958 49.00000000 0.24993421 - 1699596 10.10373067 1.07025958 50.00000000 0.25009415 - 1701884 10.10524240 1.07025958 51.00000000 0.24997979 - 1695016 10.10512527 1.07025958 52.00000000 0.24965752 - 1692980 10.10642210 1.07025958 53.00000000 0.25037765 - 1689310 10.10593254 1.07025958 54.00000000 0.25025990 - 1689174 10.10354469 1.07025958 55.00000000 0.25071919 - 1687206 10.10514388 1.07025958 56.00000000 0.25004086 - 1683454 10.10429866 1.07025958 57.00000000 0.24992238 - 1686410 10.10605670 1.07025958 58.00000000 0.24978794 - 1679798 10.10359255 1.07025958 59.00000000 0.24998234 - 1679426 10.10580332 1.07025958 60.00000000 0.25042388 - 1677840 10.10382946 1.07025958 61.00000000 0.25005268 - 1677896 10.10507601 1.07025958 62.00000000 0.24980871 - 1672132 10.10482971 1.07025958 63.00000000 0.24985628 - 1673476 10.10577565 1.07025958 64.00000000 0.24980252 - 1670408 10.10682078 1.07025958 65.00000000 0.24967401 - 1666544 10.10620615 1.07025958 66.00000000 0.25008306 - 1665158 10.10387279 1.07025958 67.00000000 0.25021845 - 1665348 10.10581416 1.07025958 68.00000000 0.24984232 - 1661050 10.10534822 1.07025958 69.00000000 0.25009678 - 1659508 10.10411686 1.07025958 70.00000000 0.25001312 - 1658314 10.10358827 1.07025958 71.00000000 0.24977793 - 1658934 10.10402351 1.07025958 72.00000000 0.25028240 - 1654086 10.10405213 1.07025958 73.00000000 0.25022208 - 1657630 10.10559771 1.07025958 74.00000000 0.25029506 - 1651280 10.10425930 1.07025958 75.00000000 0.24997297 - 1653580 10.10561349 1.07025958 76.00000000 0.25000961 - 1647648 10.10421104 1.07025958 77.00000000 0.25031552 - 1644946 10.10448523 1.07025958 78.00000000 0.24990617 - 1641742 10.10376908 1.07025958 79.00000000 0.25009781 - 1638376 10.10397857 1.07025958 80.00000000 0.25028533 - 3644310 14.40224560 1.22410814 1.00000000 0.25007499 - 3636606 14.40109416 1.22410814 2.00000000 0.24989749 - 3632302 14.40111922 1.22410814 3.00000000 0.24988967 - 3629542 14.40031021 1.22410814 4.00000000 0.25012171 - 3626622 14.39940526 1.22410814 5.00000000 0.25016682 - 3625338 14.39956487 1.22410814 6.00000000 0.25014134 - 3616750 14.39882111 1.22410814 7.00000000 0.24981575 - 3610280 14.40088769 1.22410814 8.00000000 0.25018767 - 3609488 14.40078853 1.22410814 9.00000000 0.25008251 - 3608290 14.40337667 1.22410814 10.00000000 0.24983183 - 3599722 14.40231264 1.22410814 11.00000000 0.25031490 - 3602670 14.40054942 1.22410814 12.00000000 0.25036369 - 3594194 14.40082434 1.22410814 13.00000000 0.25018746 - 3589644 14.40074733 1.22410814 14.00000000 0.25007582 - 3585868 14.40172429 1.22410814 15.00000000 0.25008741 - 3583064 14.40038825 1.22410814 16.00000000 0.25002676 - 3578352 14.39856475 1.22410814 17.00000000 0.25005262 - 3576962 14.40142309 1.22410814 18.00000000 0.25033697 - 3572842 14.39961081 1.22410814 19.00000000 0.25016160 - 3564060 14.40215582 1.22410814 20.00000000 0.25010014 - 3560700 14.40079850 1.22410814 21.00000000 0.25034338 - 3563370 14.40016386 1.22410814 22.00000000 0.24988018 - 3558230 14.39926535 1.22410814 23.00000000 0.24980725 - 3550496 14.40157471 1.22410814 24.00000000 0.25025424 - 3545410 14.40076100 1.22410814 25.00000000 0.25032113 - 3543902 14.39936703 1.22410814 26.00000000 0.25006583 - 3536266 14.40174824 1.22410814 27.00000000 0.25019341 - 3537096 14.40158743 1.22410814 28.00000000 0.25000128 - 3531722 14.40091001 1.22410814 29.00000000 0.24989114 - 3529596 14.40178885 1.22410814 30.00000000 0.24998716 - 3520662 14.39935261 1.22410814 31.00000000 0.25016391 - 3523038 14.39956408 1.22410814 32.00000000 0.25032085 - 3519438 14.39859986 1.22410814 33.00000000 0.24976478 - 3510020 14.40223925 1.22410814 34.00000000 0.25013029 - 3509938 14.40028067 1.22410814 35.00000000 0.25000547 - 3506704 14.40051936 1.22410814 36.00000000 0.25000621 - 3501870 14.39877962 1.22410814 37.00000000 0.25011305 - 3499122 14.40025522 1.22410814 38.00000000 0.25005473 - 3492334 14.40160629 1.22410814 39.00000000 0.25001308 - 3487352 14.40017620 1.22410814 40.00000000 0.25002245 - 3485356 14.39979205 1.22410814 41.00000000 0.25000997 - 3478870 14.40145075 1.22410814 42.00000000 0.24995298 - 3478630 14.40130432 1.22410814 43.00000000 0.25016703 - 3477498 14.40296611 1.22410814 44.00000000 0.25007552 - 3473854 14.40106268 1.22410814 45.00000000 0.25001437 - 3466876 14.40249964 1.22410814 46.00000000 0.24985345 - 3457648 14.40102494 1.22410814 47.00000000 0.24998727 - 3458812 14.40024521 1.22410814 48.00000000 0.24989989 - 3450862 14.40047799 1.22410814 49.00000000 0.24999876 - 3452612 14.39883897 1.22410814 50.00000000 0.25039610 - 3449634 14.39965964 1.22410814 51.00000000 0.24987567 - 3441332 14.40099280 1.22410814 52.00000000 0.25000774 - 3439184 14.40207354 1.22410814 53.00000000 0.24983323 - 3434590 14.40010885 1.22410814 54.00000000 0.25018916 - 3429930 14.39970793 1.22410814 55.00000000 0.25025235 - 3425808 14.40132973 1.22410814 56.00000000 0.25015169 - 3424032 14.40133014 1.22410814 57.00000000 0.24985642 - 3419370 14.40157953 1.22410814 58.00000000 0.25007880 - 3416686 14.40293451 1.22410814 59.00000000 0.24990849 - 3414792 14.40094971 1.22410814 60.00000000 0.25008052 - 3410890 14.39944346 1.22410814 61.00000000 0.24992947 - 3407146 14.39840300 1.22410814 62.00000000 0.25025932 - 3395186 14.39987725 1.22410814 63.00000000 0.24995574 - 3399360 14.39967392 1.22410814 64.00000000 0.25035245 - 3395326 14.40157546 1.22410814 65.00000000 0.25026720 - 3388312 14.39996642 1.22410814 66.00000000 0.24992944 - 3385860 14.40134128 1.22410814 67.00000000 0.24996276 - 3378120 14.40114486 1.22410814 68.00000000 0.25000217 - 3375540 14.40187108 1.22410814 69.00000000 0.24969795 - 3373968 14.40077292 1.22410814 70.00000000 0.24980779 - 3373924 14.39919608 1.22410814 71.00000000 0.25026823 - 3363692 14.39978079 1.22410814 72.00000000 0.25019318 - 3360040 14.40194126 1.22410814 73.00000000 0.25009232 - 3357078 14.40143694 1.22410814 74.00000000 0.24994628 - 3356036 14.39937346 1.22410814 75.00000000 0.25007774 - 3344980 14.40057296 1.22410814 76.00000000 0.24991399 - 3346688 14.40083226 1.22410814 77.00000000 0.25002237 - 3344182 14.40081877 1.22410814 78.00000000 0.25018513 - 3338292 14.40033907 1.22410814 79.00000000 0.25014209 - 3334962 14.40072186 1.22410814 80.00000000 0.25003356 - 7391084 20.52187086 1.37795248 1.00000000 0.25005527 - 7386700 20.52300325 1.37795248 2.00000000 0.24993905 - 7382048 20.52257550 1.37795248 3.00000000 0.25036230 - 7369504 20.52255824 1.37795248 4.00000000 0.25020263 - 7371002 20.52206283 1.37795248 5.00000000 0.24998634 - 7365980 20.52177834 1.37795248 6.00000000 0.25006039 - 7347210 20.52244653 1.37795248 7.00000000 0.25016938 - 7338012 20.52133564 1.37795248 8.00000000 0.24995625 - 7330268 20.52091352 1.37795248 9.00000000 0.25000730 - 7327156 20.52233686 1.37795248 10.00000000 0.25007290 - 7321138 20.52250462 1.37795248 11.00000000 0.25000555 - 7308896 20.52236628 1.37795248 12.00000000 0.25013532 - 7304346 20.52073076 1.37795248 13.00000000 0.24996633 - 7295668 20.52218317 1.37795248 14.00000000 0.25016202 - 7282662 20.52126165 1.37795248 15.00000000 0.25003543 - 7279744 20.52438106 1.37795248 16.00000000 0.25012080 - 7257144 20.52058549 1.37795248 17.00000000 0.25025322 - 7256862 20.52209719 1.37795248 18.00000000 0.25007566 - 7248146 20.52145329 1.37795248 19.00000000 0.25013529 - 7249148 20.51916645 1.37795248 20.00000000 0.25009766 - 7235310 20.52322774 1.37795248 21.00000000 0.24994008 - 7225184 20.52264094 1.37795248 22.00000000 0.24984904 - 7214620 20.52234311 1.37795248 23.00000000 0.25008755 - 7217770 20.52240015 1.37795248 24.00000000 0.25013928 - 7204580 20.52090152 1.37795248 25.00000000 0.25003075 - 7193404 20.52125278 1.37795248 26.00000000 0.25014628 - 7189514 20.52394211 1.37795248 27.00000000 0.24991394 - 7173994 20.52483847 1.37795248 28.00000000 0.25008499 - 7169730 20.52357864 1.37795248 29.00000000 0.25007808 - 7167510 20.52143323 1.37795248 30.00000000 0.24996660 - 7156096 20.52237861 1.37795248 31.00000000 0.25002961 - 7148230 20.52343019 1.37795248 32.00000000 0.24986105 - 7140728 20.52275335 1.37795248 33.00000000 0.24997179 - 7133902 20.52277346 1.37795248 34.00000000 0.25006499 - 7128400 20.52162427 1.37795248 35.00000000 0.25007274 - 7117920 20.52393029 1.37795248 36.00000000 0.24997325 - 7109440 20.52465403 1.37795248 37.00000000 0.24998616 - 7107204 20.52326746 1.37795248 38.00000000 0.25003544 - 7088188 20.52365576 1.37795248 39.00000000 0.25005799 - 7083466 20.52037960 1.37795248 40.00000000 0.25004816 - 7088398 20.52274696 1.37795248 41.00000000 0.25013894 - 7074536 20.52374988 1.37795248 42.00000000 0.25008258 - 7060988 20.52182660 1.37795248 43.00000000 0.25003521 - 7056312 20.52249523 1.37795248 44.00000000 0.24994730 - 7048008 20.52233892 1.37795248 45.00000000 0.25003152 - 7042316 20.52259128 1.37795248 46.00000000 0.24992349 - 7027962 20.52144655 1.37795248 47.00000000 0.25008519 - 7026384 20.52316557 1.37795248 48.00000000 0.25020938 - 7014170 20.52242559 1.37795248 49.00000000 0.25013574 - 7014478 20.52173013 1.37795248 50.00000000 0.25007075 - 6999598 20.52293003 1.37795248 51.00000000 0.25022378 - 6992630 20.52254275 1.37795248 52.00000000 0.24995059 - 6987422 20.52153914 1.37795248 53.00000000 0.25002566 - 6978376 20.52056114 1.37795248 54.00000000 0.24992610 - 6966796 20.52229599 1.37795248 55.00000000 0.25019028 - 6964286 20.52313123 1.37795248 56.00000000 0.25011751 - 6947628 20.52327430 1.37795248 57.00000000 0.25010465 - 6939812 20.52223840 1.37795248 58.00000000 0.25001742 - 6932770 20.52436579 1.37795248 59.00000000 0.25017372 - 6926526 20.52045785 1.37795248 60.00000000 0.25030709 - 6925866 20.52290991 1.37795248 61.00000000 0.25014050 - 6916818 20.52332470 1.37795248 62.00000000 0.25001670 - 6902760 20.52158093 1.37795248 63.00000000 0.25002204 - 6892484 20.52376236 1.37795248 64.00000000 0.24994444 - 6891970 20.52084564 1.37795248 65.00000000 0.25010772 - 6876574 20.52408673 1.37795248 66.00000000 0.25017980 - 6876910 20.52039753 1.37795248 67.00000000 0.24996941 - 6867414 20.52261200 1.37795248 68.00000000 0.25004101 - 6857596 20.52174971 1.37795248 69.00000000 0.24997905 - 6852704 20.52207969 1.37795248 70.00000000 0.25016791 - 6840968 20.52137003 1.37795248 71.00000000 0.25001879 - 6829562 20.52331289 1.37795248 72.00000000 0.25009055 - 6823294 20.52211850 1.37795248 73.00000000 0.25001436 - 6814068 20.52276513 1.37795248 74.00000000 0.25020450 - 6811550 20.52207784 1.37795248 75.00000000 0.25015788 - 6799628 20.52287470 1.37795248 76.00000000 0.25008529 - 6798006 20.52152468 1.37795248 77.00000000 0.25000650 - 6782450 20.52032078 1.37795248 78.00000000 0.25023012 - 6777592 20.52408400 1.37795248 79.00000000 0.24988382 - 6765088 20.52288019 1.37795248 80.00000000 0.25019217 + 710 0.20196722 -0.62204752 1.00000000 0.25172249 + 712 0.20768601 -0.62204752 2.00000000 0.25383309 + 720 0.20541695 -0.62204752 3.00000000 0.25228620 + 796 0.20697681 -0.62204752 4.00000000 0.25462309 + 716 0.20368447 -0.62204752 5.00000000 0.25837612 + 740 0.20645000 -0.62204752 6.00000000 0.26928372 + 722 0.20634008 -0.62204752 7.00000000 0.25650072 + 786 0.20718280 -0.62204752 8.00000000 0.24776232 + 728 0.20527500 -0.62204752 9.00000000 0.27197844 + 770 0.20491456 -0.62204752 10.00000000 0.25543309 + 632 0.20510153 -0.62204752 11.00000000 0.26265764 + 708 0.20266616 -0.62204752 12.00000000 0.25654717 + 740 0.20058836 -0.62204752 13.00000000 0.26344602 + 760 0.20638689 -0.62204752 14.00000000 0.25543968 + 718 0.20479957 -0.62204752 15.00000000 0.24695875 + 752 0.20640744 -0.62204752 16.00000000 0.23245127 + 730 0.20527358 -0.62204752 17.00000000 0.23799859 + 658 0.20504035 -0.62204752 18.00000000 0.27410433 + 736 0.20443906 -0.62204752 19.00000000 0.24544059 + 788 0.20441870 -0.62204752 20.00000000 0.24966699 + 760 0.20269221 -0.62204752 21.00000000 0.25526878 + 764 0.20744043 -0.62204752 22.00000000 0.23456706 + 706 0.20491745 -0.62204752 23.00000000 0.25452188 + 730 0.20492809 -0.62204752 24.00000000 0.24800051 + 728 0.20575357 -0.62204752 25.00000000 0.23744709 + 752 0.20462645 -0.62204752 26.00000000 0.23345318 + 668 0.20395558 -0.62204752 27.00000000 0.23139450 + 730 0.20411575 -0.62204752 28.00000000 0.24789177 + 736 0.20510120 -0.62204752 29.00000000 0.24075763 + 684 0.20251364 -0.62204752 30.00000000 0.27446657 + 712 0.20495608 -0.62204752 31.00000000 0.24731910 + 692 0.20409540 -0.62204752 32.00000000 0.25134975 + 684 0.20715761 -0.62204752 33.00000000 0.23795749 + 712 0.20377425 -0.62204752 34.00000000 0.24373954 + 668 0.20568335 -0.62204752 35.00000000 0.22860488 + 706 0.20608790 -0.62204752 36.00000000 0.23307569 + 678 0.20444760 -0.62204752 37.00000000 0.21820148 + 732 0.20761319 -0.62204752 38.00000000 0.23814514 + 710 0.20522114 -0.62204752 39.00000000 0.25002728 + 744 0.20236267 -0.62204752 40.00000000 0.24666066 + 702 0.20592382 -0.62204752 41.00000000 0.26523359 + 688 0.20601480 -0.62204752 42.00000000 0.24173821 + 744 0.20267840 -0.62204752 43.00000000 0.24799158 + 760 0.20593866 -0.62204752 44.00000000 0.25585516 + 666 0.20538183 -0.62204752 45.00000000 0.23484545 + 694 0.20512449 -0.62204752 46.00000000 0.26160953 + 732 0.20519663 -0.62204752 47.00000000 0.26362451 + 682 0.20613197 -0.62204752 48.00000000 0.22496135 + 638 0.20683279 -0.62204752 49.00000000 0.23598646 + 730 0.20462115 -0.62204752 50.00000000 0.25897677 + 716 0.20423031 -0.62204752 51.00000000 0.24973360 + 738 0.20816549 -0.62204752 52.00000000 0.24797558 + 680 0.20624520 -0.62204752 53.00000000 0.26177669 + 670 0.20394827 -0.62204752 54.00000000 0.24057601 + 680 0.20537422 -0.62204752 55.00000000 0.26594866 + 688 0.20434866 -0.62204752 56.00000000 0.27506636 + 748 0.20346133 -0.62204752 57.00000000 0.23347085 + 714 0.20293070 -0.62204752 58.00000000 0.27692133 + 678 0.20535383 -0.62204752 59.00000000 0.27838175 + 708 0.20240716 -0.62204752 60.00000000 0.23106301 + 640 0.20499104 -0.62204752 61.00000000 0.22261795 + 666 0.20581285 -0.62204752 62.00000000 0.24655298 + 654 0.20626668 -0.62204752 63.00000000 0.23668648 + 720 0.20521565 -0.62204752 64.00000000 0.22797267 + 760 0.20601131 -0.62204752 65.00000000 0.23906171 + 696 0.20352019 -0.62204752 66.00000000 0.25548907 + 698 0.20667732 -0.62204752 67.00000000 0.25216138 + 672 0.20375868 -0.62204752 68.00000000 0.24505030 + 694 0.20706589 -0.62204752 69.00000000 0.23996296 + 636 0.20641077 -0.62204752 70.00000000 0.23522133 + 602 0.20392825 -0.62204752 71.00000000 0.26367535 + 714 0.20411348 -0.62204752 72.00000000 0.23998103 + 676 0.20459026 -0.62204752 73.00000000 0.24405271 + 654 0.20224724 -0.62204752 74.00000000 0.25292935 + 622 0.20782761 -0.62204752 75.00000000 0.23532813 + 708 0.20301666 -0.62204752 76.00000000 0.24745721 + 692 0.20429972 -0.62204752 77.00000000 0.24994518 + 656 0.20231641 -0.62204752 78.00000000 0.25077435 + 696 0.20543848 -0.62204752 79.00000000 0.25208199 + 682 0.20392791 -0.62204752 80.00000000 0.26097556 + 1520 0.29251995 -0.46820059 1.00000000 0.24927692 + 1492 0.29164542 -0.46820059 2.00000000 0.26464897 + 1502 0.29454381 -0.46820059 3.00000000 0.25746757 + 1480 0.29297039 -0.46820059 4.00000000 0.24818772 + 1580 0.29448442 -0.46820059 5.00000000 0.24327129 + 1440 0.29194496 -0.46820059 6.00000000 0.24505125 + 1498 0.29294793 -0.46820059 7.00000000 0.25892860 + 1464 0.29197860 -0.46820059 8.00000000 0.25354609 + 1544 0.29499358 -0.46820059 9.00000000 0.26484383 + 1500 0.29047494 -0.46820059 10.00000000 0.26265305 + 1466 0.28963632 -0.46820059 11.00000000 0.24966897 + 1562 0.29363952 -0.46820059 12.00000000 0.25709667 + 1574 0.29246401 -0.46820059 13.00000000 0.22544208 + 1462 0.29191480 -0.46820059 14.00000000 0.25143345 + 1452 0.29308136 -0.46820059 15.00000000 0.25984149 + 1524 0.29451086 -0.46820059 16.00000000 0.24724871 + 1468 0.29066122 -0.46820059 17.00000000 0.26928406 + 1496 0.29428276 -0.46820059 18.00000000 0.25583530 + 1524 0.29278339 -0.46820059 19.00000000 0.26089944 + 1518 0.29395586 -0.46820059 20.00000000 0.23749952 + 1592 0.29258423 -0.46820059 21.00000000 0.24658498 + 1430 0.29017131 -0.46820059 22.00000000 0.25877783 + 1512 0.29366571 -0.46820059 23.00000000 0.24519723 + 1474 0.29390386 -0.46820059 24.00000000 0.24727479 + 1422 0.29145167 -0.46820059 25.00000000 0.25407771 + 1368 0.29316650 -0.46820059 26.00000000 0.26287745 + 1436 0.29170382 -0.46820059 27.00000000 0.24760901 + 1468 0.29221824 -0.46820059 28.00000000 0.24628194 + 1386 0.28994053 -0.46820059 29.00000000 0.26290391 + 1386 0.29190066 -0.46820059 30.00000000 0.24423294 + 1488 0.29158903 -0.46820059 31.00000000 0.24999807 + 1404 0.29274306 -0.46820059 32.00000000 0.25077399 + 1602 0.29300057 -0.46820059 33.00000000 0.24521052 + 1372 0.29431034 -0.46820059 34.00000000 0.25433241 + 1436 0.29202533 -0.46820059 35.00000000 0.24415630 + 1520 0.29090955 -0.46820059 36.00000000 0.25130775 + 1442 0.29276563 -0.46820059 37.00000000 0.23620400 + 1480 0.29095138 -0.46820059 38.00000000 0.24639131 + 1406 0.29227940 -0.46820059 39.00000000 0.25430245 + 1412 0.29127908 -0.46820059 40.00000000 0.25233172 + 1490 0.29215706 -0.46820059 41.00000000 0.24519385 + 1470 0.29377731 -0.46820059 42.00000000 0.24161192 + 1428 0.29256079 -0.46820059 43.00000000 0.25492084 + 1430 0.29169561 -0.46820059 44.00000000 0.24182048 + 1388 0.29326837 -0.46820059 45.00000000 0.24049128 + 1482 0.29267250 -0.46820059 46.00000000 0.26093196 + 1352 0.29404533 -0.46820059 47.00000000 0.23101309 + 1458 0.29315125 -0.46820059 48.00000000 0.24699177 + 1510 0.29158081 -0.46820059 49.00000000 0.25627570 + 1484 0.29332058 -0.46820059 50.00000000 0.24227538 + 1514 0.29239380 -0.46820059 51.00000000 0.24515377 + 1504 0.29450732 -0.46820059 52.00000000 0.24541377 + 1370 0.29260783 -0.46820059 53.00000000 0.24241856 + 1412 0.29139404 -0.46820059 54.00000000 0.25285419 + 1458 0.29212530 -0.46820059 55.00000000 0.25929775 + 1432 0.29253926 -0.46820059 56.00000000 0.25406318 + 1416 0.29166900 -0.46820059 57.00000000 0.23900101 + 1362 0.29341004 -0.46820059 58.00000000 0.25865881 + 1354 0.29236609 -0.46820059 59.00000000 0.25401189 + 1406 0.29120656 -0.46820059 60.00000000 0.25668709 + 1474 0.29270751 -0.46820059 61.00000000 0.24564828 + 1324 0.29054568 -0.46820059 62.00000000 0.23824680 + 1426 0.29303766 -0.46820059 63.00000000 0.25423639 + 1402 0.29090360 -0.46820059 64.00000000 0.25136052 + 1476 0.29028068 -0.46820059 65.00000000 0.25273681 + 1390 0.28927852 -0.46820059 66.00000000 0.25834656 + 1336 0.29188752 -0.46820059 67.00000000 0.25671397 + 1374 0.29083877 -0.46820059 68.00000000 0.25861150 + 1460 0.29221823 -0.46820059 69.00000000 0.25265185 + 1424 0.29465580 -0.46820059 70.00000000 0.25489850 + 1318 0.29091388 -0.46820059 71.00000000 0.25933486 + 1364 0.29251664 -0.46820059 72.00000000 0.26597673 + 1382 0.29186246 -0.46820059 73.00000000 0.23806405 + 1408 0.29152881 -0.46820059 74.00000000 0.25030138 + 1382 0.29121558 -0.46820059 75.00000000 0.24032994 + 1376 0.29108962 -0.46820059 76.00000000 0.24529484 + 1420 0.29208920 -0.46820059 77.00000000 0.24793476 + 1408 0.28970024 -0.46820059 78.00000000 0.24160524 + 1438 0.29340820 -0.46820059 79.00000000 0.24995725 + 1380 0.29233837 -0.46820059 80.00000000 0.24421959 + 3140 0.41383399 -0.31435498 1.00000000 0.24016647 + 3016 0.41603926 -0.31435498 2.00000000 0.24680446 + 2892 0.41835901 -0.31435498 3.00000000 0.24945477 + 3052 0.41645299 -0.31435498 4.00000000 0.25046884 + 3056 0.41728789 -0.31435498 5.00000000 0.25132998 + 2972 0.41471426 -0.31435498 6.00000000 0.25157138 + 3134 0.41811201 -0.31435498 7.00000000 0.24095854 + 2996 0.41671155 -0.31435498 8.00000000 0.25810454 + 3084 0.41630188 -0.31435498 9.00000000 0.24710275 + 3092 0.41681271 -0.31435498 10.00000000 0.24435261 + 2976 0.41430829 -0.31435498 11.00000000 0.24157513 + 2986 0.41595334 -0.31435498 12.00000000 0.25109435 + 3018 0.41781553 -0.31435498 13.00000000 0.23475364 + 3070 0.41719168 -0.31435498 14.00000000 0.24960889 + 3008 0.41753936 -0.31435498 15.00000000 0.24627683 + 3084 0.41747949 -0.31435498 16.00000000 0.24982614 + 2974 0.41655293 -0.31435498 17.00000000 0.25830281 + 3024 0.41838946 -0.31435498 18.00000000 0.25261774 + 3022 0.41875009 -0.31435498 19.00000000 0.25696166 + 3008 0.41662863 -0.31435498 20.00000000 0.25041559 + 3006 0.41618021 -0.31435498 21.00000000 0.24853463 + 2982 0.41703565 -0.31435498 22.00000000 0.25276289 + 2920 0.41756750 -0.31435498 23.00000000 0.24844374 + 2948 0.41716347 -0.31435498 24.00000000 0.24274450 + 2916 0.41875006 -0.31435498 25.00000000 0.25369462 + 3092 0.41728700 -0.31435498 26.00000000 0.23836057 + 2910 0.41847198 -0.31435498 27.00000000 0.24691897 + 3106 0.41722978 -0.31435498 28.00000000 0.24767431 + 2936 0.41691084 -0.31435498 29.00000000 0.24919795 + 3006 0.41627510 -0.31435498 30.00000000 0.24971874 + 2968 0.41453918 -0.31435498 31.00000000 0.23901850 + 2894 0.41754297 -0.31435498 32.00000000 0.24470237 + 2822 0.41606902 -0.31435498 33.00000000 0.25368302 + 2888 0.41779600 -0.31435498 34.00000000 0.24638213 + 2978 0.41483722 -0.31435498 35.00000000 0.25882594 + 2842 0.41918707 -0.31435498 36.00000000 0.24881595 + 2934 0.41381994 -0.31435498 37.00000000 0.24728182 + 2918 0.41662910 -0.31435498 38.00000000 0.26130396 + 2982 0.41908299 -0.31435498 39.00000000 0.24232067 + 2910 0.41409795 -0.31435498 40.00000000 0.24949872 + 3042 0.41662994 -0.31435498 41.00000000 0.25147873 + 2952 0.41480267 -0.31435498 42.00000000 0.24940943 + 2958 0.41614650 -0.31435498 43.00000000 0.24712815 + 2782 0.41702007 -0.31435498 44.00000000 0.26062117 + 2766 0.41617978 -0.31435498 45.00000000 0.24552046 + 2984 0.41767736 -0.31435498 46.00000000 0.24776060 + 2946 0.41755460 -0.31435498 47.00000000 0.25653493 + 2874 0.41703332 -0.31435498 48.00000000 0.24859756 + 2880 0.41550966 -0.31435498 49.00000000 0.25287913 + 2890 0.41606932 -0.31435498 50.00000000 0.24457979 + 2878 0.41759202 -0.31435498 51.00000000 0.25677410 + 2902 0.41622885 -0.31435498 52.00000000 0.25695976 + 2942 0.41789773 -0.31435498 53.00000000 0.25012165 + 2928 0.41448588 -0.31435498 54.00000000 0.24843349 + 2946 0.41786274 -0.31435498 55.00000000 0.24601197 + 2932 0.41656966 -0.31435498 56.00000000 0.25510469 + 2990 0.41568247 -0.31435498 57.00000000 0.24275860 + 2850 0.41736451 -0.31435498 58.00000000 0.25193657 + 2870 0.41637529 -0.31435498 59.00000000 0.26160924 + 2800 0.41554212 -0.31435498 60.00000000 0.24745179 + 2862 0.41566374 -0.31435498 61.00000000 0.25364825 + 2808 0.41696066 -0.31435498 62.00000000 0.24465027 + 2964 0.41619404 -0.31435498 63.00000000 0.25538864 + 2738 0.41714296 -0.31435498 64.00000000 0.25435475 + 2876 0.41733035 -0.31435498 65.00000000 0.25076064 + 2834 0.41922315 -0.31435498 66.00000000 0.25431047 + 2876 0.41722471 -0.31435498 67.00000000 0.25739367 + 2848 0.41577636 -0.31435498 68.00000000 0.25193855 + 2768 0.41798697 -0.31435498 69.00000000 0.24792444 + 2814 0.41885701 -0.31435498 70.00000000 0.25049986 + 2750 0.41759201 -0.31435498 71.00000000 0.26010763 + 2878 0.41574265 -0.31435498 72.00000000 0.24547708 + 2952 0.41533282 -0.31435498 73.00000000 0.24356037 + 2786 0.41729353 -0.31435498 74.00000000 0.24641241 + 2782 0.41586817 -0.31435498 75.00000000 0.25518374 + 2752 0.41707254 -0.31435498 76.00000000 0.25405475 + 2840 0.41905854 -0.31435498 77.00000000 0.25974641 + 2808 0.41745120 -0.31435498 78.00000000 0.24707044 + 2728 0.41751702 -0.31435498 79.00000000 0.24115313 + 2536 0.41939181 -0.31435498 80.00000000 0.25404793 + 6280 0.59333072 -0.16050875 1.00000000 0.24409196 + 6136 0.59421850 -0.16050875 2.00000000 0.24934879 + 6182 0.59277425 -0.16050875 3.00000000 0.24882228 + 6300 0.59426905 -0.16050875 4.00000000 0.24874619 + 5998 0.59575414 -0.16050875 5.00000000 0.25978897 + 6164 0.59386354 -0.16050875 6.00000000 0.25378496 + 6172 0.59208647 -0.16050875 7.00000000 0.24839616 + 6122 0.59410000 -0.16050875 8.00000000 0.24993611 + 6288 0.59428006 -0.16050875 9.00000000 0.25422510 + 5906 0.59559009 -0.16050875 10.00000000 0.25209728 + 6170 0.59464491 -0.16050875 11.00000000 0.24484990 + 6002 0.59444868 -0.16050875 12.00000000 0.25214220 + 6138 0.59306708 -0.16050875 13.00000000 0.24601730 + 6118 0.59537466 -0.16050875 14.00000000 0.24822279 + 6262 0.59390347 -0.16050875 15.00000000 0.25052117 + 5988 0.59421545 -0.16050875 16.00000000 0.24702400 + 6134 0.59218271 -0.16050875 17.00000000 0.24845918 + 6280 0.59354152 -0.16050875 18.00000000 0.25283305 + 6086 0.59552117 -0.16050875 19.00000000 0.25193078 + 5954 0.59321754 -0.16050875 20.00000000 0.24894693 + 5954 0.59376167 -0.16050875 21.00000000 0.24193010 + 5958 0.59398799 -0.16050875 22.00000000 0.24699521 + 5950 0.59398619 -0.16050875 23.00000000 0.25354509 + 5942 0.59353103 -0.16050875 24.00000000 0.25271373 + 6210 0.59506955 -0.16050875 25.00000000 0.25151377 + 6114 0.59424713 -0.16050875 26.00000000 0.25109730 + 5748 0.59365257 -0.16050875 27.00000000 0.25314666 + 5824 0.59544433 -0.16050875 28.00000000 0.24603881 + 5974 0.59494483 -0.16050875 29.00000000 0.25690111 + 5896 0.59317559 -0.16050875 30.00000000 0.25311526 + 5754 0.59482232 -0.16050875 31.00000000 0.25643528 + 6088 0.59275745 -0.16050875 32.00000000 0.24277157 + 5940 0.59497929 -0.16050875 33.00000000 0.25351313 + 6052 0.59613588 -0.16050875 34.00000000 0.25039160 + 5998 0.59335198 -0.16050875 35.00000000 0.25494187 + 6020 0.59283875 -0.16050875 36.00000000 0.24889683 + 6060 0.59082907 -0.16050875 37.00000000 0.24873102 + 5988 0.59193300 -0.16050875 38.00000000 0.25375127 + 5766 0.59519440 -0.16050875 39.00000000 0.25288031 + 5786 0.59400715 -0.16050875 40.00000000 0.25169623 + 6168 0.59362468 -0.16050875 41.00000000 0.24686784 + 5916 0.59348180 -0.16050875 42.00000000 0.24717503 + 6024 0.59257807 -0.16050875 43.00000000 0.24524612 + 5852 0.59424938 -0.16050875 44.00000000 0.25009629 + 6006 0.59450831 -0.16050875 45.00000000 0.24688860 + 5802 0.59574703 -0.16050875 46.00000000 0.24769053 + 5650 0.59316988 -0.16050875 47.00000000 0.25335086 + 5986 0.59535906 -0.16050875 48.00000000 0.24004102 + 5784 0.59406394 -0.16050875 49.00000000 0.25227021 + 5970 0.59480971 -0.16050875 50.00000000 0.24215962 + 6012 0.59492163 -0.16050875 51.00000000 0.25427113 + 5910 0.59213329 -0.16050875 52.00000000 0.24726810 + 5946 0.59488001 -0.16050875 53.00000000 0.25294575 + 6056 0.59574551 -0.16050875 54.00000000 0.25839909 + 5936 0.59712436 -0.16050875 55.00000000 0.25332043 + 5934 0.59460891 -0.16050875 56.00000000 0.24671959 + 5760 0.59238474 -0.16050875 57.00000000 0.25519801 + 5942 0.59162361 -0.16050875 58.00000000 0.25166856 + 5822 0.59754572 -0.16050875 59.00000000 0.24909440 + 5908 0.59253566 -0.16050875 60.00000000 0.24975001 + 5716 0.59534912 -0.16050875 61.00000000 0.25089095 + 5862 0.59525951 -0.16050875 62.00000000 0.24943134 + 5928 0.59572116 -0.16050875 63.00000000 0.24853365 + 5742 0.59254388 -0.16050875 64.00000000 0.24802153 + 5726 0.59726908 -0.16050875 65.00000000 0.25299753 + 5768 0.59368947 -0.16050875 66.00000000 0.25358789 + 5756 0.59659402 -0.16050875 67.00000000 0.25196857 + 5814 0.59440134 -0.16050875 68.00000000 0.24611113 + 5860 0.59216417 -0.16050875 69.00000000 0.25611549 + 5808 0.59131630 -0.16050875 70.00000000 0.25262874 + 5760 0.59228762 -0.16050875 71.00000000 0.24043543 + 5884 0.59530455 -0.16050875 72.00000000 0.25093993 + 5782 0.59264671 -0.16050875 73.00000000 0.25510294 + 5646 0.59613570 -0.16050875 74.00000000 0.24807365 + 5738 0.59490796 -0.16050875 75.00000000 0.25327431 + 5832 0.59271825 -0.16050875 76.00000000 0.24671930 + 5710 0.59324515 -0.16050875 77.00000000 0.24939843 + 5570 0.59688571 -0.16050875 78.00000000 0.25115730 + 5684 0.59264691 -0.16050875 79.00000000 0.25380128 + 5462 0.59354878 -0.16050875 80.00000000 0.25423647 + 12368 0.84498711 -0.00666210 1.00000000 0.25212428 + 12764 0.84288481 -0.00666210 2.00000000 0.25057635 + 12476 0.84734517 -0.00666210 3.00000000 0.25271150 + 12408 0.84623671 -0.00666210 4.00000000 0.24982280 + 12514 0.84614185 -0.00666210 5.00000000 0.24786811 + 12344 0.84710512 -0.00666210 6.00000000 0.25308001 + 12332 0.84668647 -0.00666210 7.00000000 0.25281156 + 12364 0.84461106 -0.00666210 8.00000000 0.25219531 + 12290 0.84685978 -0.00666210 9.00000000 0.24886792 + 12332 0.84588103 -0.00666210 10.00000000 0.25474227 + 12516 0.84588569 -0.00666210 11.00000000 0.24717716 + 12326 0.84650152 -0.00666210 12.00000000 0.24979747 + 12216 0.84576073 -0.00666210 13.00000000 0.24763656 + 12422 0.84771807 -0.00666210 14.00000000 0.25115386 + 12556 0.84457233 -0.00666210 15.00000000 0.24698497 + 12612 0.84580554 -0.00666210 16.00000000 0.24481892 + 12424 0.84750304 -0.00666210 17.00000000 0.25215772 + 12424 0.84460883 -0.00666210 18.00000000 0.24759229 + 12680 0.84578580 -0.00666210 19.00000000 0.25389968 + 12674 0.84465603 -0.00666210 20.00000000 0.25207924 + 12402 0.84704541 -0.00666210 21.00000000 0.25315652 + 12420 0.84549712 -0.00666210 22.00000000 0.24718062 + 12548 0.84707971 -0.00666210 23.00000000 0.25578020 + 12198 0.84779892 -0.00666210 24.00000000 0.24548130 + 12072 0.84634517 -0.00666210 25.00000000 0.25145436 + 12034 0.84736064 -0.00666210 26.00000000 0.25367212 + 12042 0.84938542 -0.00666210 27.00000000 0.24641882 + 12484 0.84564430 -0.00666210 28.00000000 0.25007461 + 12252 0.84745547 -0.00666210 29.00000000 0.25147427 + 12220 0.84442600 -0.00666210 30.00000000 0.25208460 + 12116 0.84807424 -0.00666210 31.00000000 0.24748779 + 12256 0.84531152 -0.00666210 32.00000000 0.25393056 + 12182 0.84644838 -0.00666210 33.00000000 0.25040819 + 12132 0.84623998 -0.00666210 34.00000000 0.25186550 + 12100 0.84654879 -0.00666210 35.00000000 0.25683867 + 11950 0.84507301 -0.00666210 36.00000000 0.25203750 + 12408 0.84455610 -0.00666210 37.00000000 0.25188368 + 12078 0.84529775 -0.00666210 38.00000000 0.24980350 + 11808 0.84642364 -0.00666210 39.00000000 0.24712952 + 11878 0.84805799 -0.00666210 40.00000000 0.25023030 + 12058 0.84587064 -0.00666210 41.00000000 0.25227504 + 11926 0.84625907 -0.00666210 42.00000000 0.24522228 + 11832 0.84590820 -0.00666210 43.00000000 0.24746591 + 12224 0.84589439 -0.00666210 44.00000000 0.25044072 + 11810 0.84696643 -0.00666210 45.00000000 0.24825261 + 11984 0.84485197 -0.00666210 46.00000000 0.24639565 + 11902 0.84789392 -0.00666210 47.00000000 0.25104921 + 12014 0.84859400 -0.00666210 48.00000000 0.24994882 + 12180 0.84799195 -0.00666210 49.00000000 0.24593114 + 12072 0.84631080 -0.00666210 50.00000000 0.25703528 + 12050 0.84425230 -0.00666210 51.00000000 0.25139750 + 11972 0.84808370 -0.00666210 52.00000000 0.24963202 + 12052 0.84764379 -0.00666210 53.00000000 0.24797916 + 11782 0.84410437 -0.00666210 54.00000000 0.25437747 + 11632 0.84716157 -0.00666210 55.00000000 0.25198048 + 11892 0.84515613 -0.00666210 56.00000000 0.25003231 + 11946 0.84639116 -0.00666210 57.00000000 0.24438588 + 11910 0.84559113 -0.00666210 58.00000000 0.24752416 + 11966 0.84794240 -0.00666210 59.00000000 0.24946348 + 11656 0.84653259 -0.00666210 60.00000000 0.25396597 + 11506 0.84587835 -0.00666210 61.00000000 0.25074577 + 11524 0.84680609 -0.00666210 62.00000000 0.24529583 + 11614 0.84450148 -0.00666210 63.00000000 0.25089251 + 12060 0.84959675 -0.00666210 64.00000000 0.25256322 + 11458 0.84815827 -0.00666210 65.00000000 0.24633638 + 11588 0.84646837 -0.00666210 66.00000000 0.25569470 + 11862 0.84790939 -0.00666210 67.00000000 0.24973809 + 11882 0.84347668 -0.00666210 68.00000000 0.25435358 + 11604 0.84645300 -0.00666210 69.00000000 0.24500933 + 11794 0.84787990 -0.00666210 70.00000000 0.25070279 + 11474 0.84633461 -0.00666210 71.00000000 0.25347157 + 11798 0.84610518 -0.00666210 72.00000000 0.25070838 + 11482 0.84618103 -0.00666210 73.00000000 0.25058424 + 11644 0.84758478 -0.00666210 74.00000000 0.25079883 + 11520 0.84738765 -0.00666210 75.00000000 0.25453709 + 11800 0.84605310 -0.00666210 76.00000000 0.24939885 + 11500 0.84615369 -0.00666210 77.00000000 0.24742880 + 11552 0.84470809 -0.00666210 78.00000000 0.24562293 + 11532 0.84482807 -0.00666210 79.00000000 0.25148333 + 11636 0.84589159 -0.00666210 80.00000000 0.25230290 + 25474 1.20585617 0.14718457 1.00000000 0.25041849 + 25372 1.20483054 0.14718457 2.00000000 0.25205180 + 25360 1.20772170 0.14718457 3.00000000 0.24705617 + 25108 1.20914881 0.14718457 4.00000000 0.24710015 + 25340 1.20628259 0.14718457 5.00000000 0.25006702 + 25344 1.20754477 0.14718457 6.00000000 0.24880367 + 25570 1.20408170 0.14718457 7.00000000 0.24983865 + 25486 1.20784139 0.14718457 8.00000000 0.25019861 + 25544 1.20646856 0.14718457 9.00000000 0.24994469 + 24606 1.20824228 0.14718457 10.00000000 0.24988393 + 25208 1.20641461 0.14718457 11.00000000 0.24831642 + 25176 1.20674699 0.14718457 12.00000000 0.24988470 + 25152 1.20583985 0.14718457 13.00000000 0.25200698 + 25114 1.20640916 0.14718457 14.00000000 0.24995442 + 25334 1.20690653 0.14718457 15.00000000 0.24914535 + 25336 1.20406265 0.14718457 16.00000000 0.24830978 + 24918 1.20618342 0.14718457 17.00000000 0.25224340 + 25514 1.20690392 0.14718457 18.00000000 0.25280247 + 24944 1.20733271 0.14718457 19.00000000 0.25253591 + 24730 1.20653703 0.14718457 20.00000000 0.25458454 + 24984 1.20646454 0.14718457 21.00000000 0.24989965 + 25014 1.20671402 0.14718457 22.00000000 0.24971493 + 25072 1.20709018 0.14718457 23.00000000 0.25146926 + 24862 1.20626156 0.14718457 24.00000000 0.24887361 + 24580 1.20947046 0.14718457 25.00000000 0.25090990 + 25168 1.20677213 0.14718457 26.00000000 0.24984492 + 24964 1.20557924 0.14718457 27.00000000 0.25085851 + 24780 1.20512007 0.14718457 28.00000000 0.25100360 + 24608 1.20772014 0.14718457 29.00000000 0.24791131 + 24522 1.20574939 0.14718457 30.00000000 0.25166840 + 24846 1.20714753 0.14718457 31.00000000 0.24819636 + 25288 1.20878476 0.14718457 32.00000000 0.25174572 + 24430 1.20639207 0.14718457 33.00000000 0.25132278 + 24656 1.20601358 0.14718457 34.00000000 0.24850800 + 24640 1.20679164 0.14718457 35.00000000 0.24692737 + 24272 1.20751951 0.14718457 36.00000000 0.25028298 + 24696 1.20478750 0.14718457 37.00000000 0.25070848 + 24820 1.20659320 0.14718457 38.00000000 0.24853113 + 24302 1.20562809 0.14718457 39.00000000 0.25061248 + 24460 1.20523276 0.14718457 40.00000000 0.24742922 + 24438 1.20626194 0.14718457 41.00000000 0.24980427 + 24542 1.20511433 0.14718457 42.00000000 0.25075420 + 24930 1.20639905 0.14718457 43.00000000 0.25134327 + 24926 1.20447251 0.14718457 44.00000000 0.25009506 + 24294 1.20562769 0.14718457 45.00000000 0.24978691 + 24414 1.20781444 0.14718457 46.00000000 0.24806146 + 24540 1.20812973 0.14718457 47.00000000 0.25215184 + 24342 1.20721744 0.14718457 48.00000000 0.25293881 + 24358 1.20749813 0.14718457 49.00000000 0.25058649 + 23960 1.20754989 0.14718457 50.00000000 0.25305303 + 23968 1.20852207 0.14718457 51.00000000 0.25161246 + 23748 1.20652036 0.14718457 52.00000000 0.25220377 + 23890 1.20664951 0.14718457 53.00000000 0.24718691 + 24150 1.20692040 0.14718457 54.00000000 0.24878403 + 24024 1.20653492 0.14718457 55.00000000 0.25090984 + 24274 1.20417099 0.14718457 56.00000000 0.24769312 + 24284 1.20482413 0.14718457 57.00000000 0.25274357 + 24040 1.20693393 0.14718457 58.00000000 0.24998965 + 23914 1.20610191 0.14718457 59.00000000 0.24855047 + 23752 1.20766630 0.14718457 60.00000000 0.24963601 + 24160 1.20614936 0.14718457 61.00000000 0.25121635 + 23806 1.20566500 0.14718457 62.00000000 0.24617217 + 23816 1.20730254 0.14718457 63.00000000 0.24998195 + 23914 1.20338796 0.14718457 64.00000000 0.24826628 + 23682 1.20759199 0.14718457 65.00000000 0.25293112 + 23700 1.20762236 0.14718457 66.00000000 0.25462701 + 23588 1.20576043 0.14718457 67.00000000 0.24976093 + 23818 1.20524833 0.14718457 68.00000000 0.24944133 + 23848 1.20573576 0.14718457 69.00000000 0.24981252 + 23772 1.20462005 0.14718457 70.00000000 0.25127784 + 23372 1.20752776 0.14718457 71.00000000 0.25220545 + 23946 1.20833086 0.14718457 72.00000000 0.24578450 + 23156 1.20981244 0.14718457 73.00000000 0.25024503 + 23348 1.20376372 0.14718457 74.00000000 0.24694495 + 23782 1.20748663 0.14718457 75.00000000 0.25179164 + 23228 1.20671740 0.14718457 76.00000000 0.25390143 + 23572 1.21039771 0.14718457 77.00000000 0.24648884 + 23562 1.20869820 0.14718457 78.00000000 0.25102172 + 23540 1.20552553 0.14718457 79.00000000 0.25011880 + 23258 1.20538501 0.14718457 80.00000000 0.25335324 + 51062 1.72004464 0.30103000 1.00000000 0.24770563 + 51962 1.71695506 0.30103000 2.00000000 0.24733526 + 51524 1.71781545 0.30103000 3.00000000 0.24906768 + 51466 1.71912550 0.30103000 4.00000000 0.24828655 + 51898 1.71760990 0.30103000 5.00000000 0.25145835 + 51714 1.71946471 0.30103000 6.00000000 0.25143487 + 51770 1.71957807 0.30103000 7.00000000 0.24787296 + 52168 1.71893834 0.30103000 8.00000000 0.24914619 + 52044 1.71883552 0.30103000 9.00000000 0.25214925 + 51464 1.71852501 0.30103000 10.00000000 0.24986251 + 51208 1.71804158 0.30103000 11.00000000 0.25198069 + 51098 1.71946816 0.30103000 12.00000000 0.25053056 + 51590 1.71843376 0.30103000 13.00000000 0.25077740 + 50978 1.72008006 0.30103000 14.00000000 0.24948304 + 51144 1.71782281 0.30103000 15.00000000 0.24968470 + 50828 1.71637660 0.30103000 16.00000000 0.25017777 + 51236 1.71720049 0.30103000 17.00000000 0.25281088 + 50788 1.71849831 0.30103000 18.00000000 0.24768560 + 50352 1.71831939 0.30103000 19.00000000 0.25103290 + 50696 1.71855059 0.30103000 20.00000000 0.25261118 + 50362 1.72049198 0.30103000 21.00000000 0.24794111 + 50806 1.71969566 0.30103000 22.00000000 0.24890935 + 50812 1.71823790 0.30103000 23.00000000 0.25111686 + 50496 1.71723559 0.30103000 24.00000000 0.24925431 + 50538 1.71894054 0.30103000 25.00000000 0.24975189 + 50168 1.71944803 0.30103000 26.00000000 0.25073960 + 50296 1.72124324 0.30103000 27.00000000 0.24969410 + 50840 1.72023612 0.30103000 28.00000000 0.24898100 + 50332 1.71870076 0.30103000 29.00000000 0.24946365 + 50330 1.71740209 0.30103000 30.00000000 0.25159452 + 50396 1.71853614 0.30103000 31.00000000 0.25093071 + 50000 1.71724938 0.30103000 32.00000000 0.25134825 + 49954 1.72147898 0.30103000 33.00000000 0.25138652 + 50168 1.72006471 0.30103000 34.00000000 0.25167730 + 50088 1.71892387 0.30103000 35.00000000 0.24952284 + 49952 1.72009974 0.30103000 36.00000000 0.24924050 + 49450 1.71852399 0.30103000 37.00000000 0.24787035 + 49920 1.72040603 0.30103000 38.00000000 0.25150070 + 50062 1.71808167 0.30103000 39.00000000 0.25376058 + 49692 1.71819866 0.30103000 40.00000000 0.25185940 + 50172 1.72089130 0.30103000 41.00000000 0.25080869 + 49840 1.71961464 0.30103000 42.00000000 0.25229677 + 49690 1.72028615 0.30103000 43.00000000 0.24898409 + 49472 1.72241506 0.30103000 44.00000000 0.24935151 + 49340 1.71764081 0.30103000 45.00000000 0.25218806 + 49254 1.71727342 0.30103000 46.00000000 0.24918341 + 50154 1.72019950 0.30103000 47.00000000 0.25041333 + 49756 1.71777672 0.30103000 48.00000000 0.25036104 + 49214 1.72052292 0.30103000 49.00000000 0.25023048 + 49136 1.71937776 0.30103000 50.00000000 0.25301235 + 49478 1.72051952 0.30103000 51.00000000 0.24922569 + 49390 1.71998257 0.30103000 52.00000000 0.25057768 + 49048 1.72080822 0.30103000 53.00000000 0.25022027 + 48700 1.71964173 0.30103000 54.00000000 0.24965582 + 48724 1.72105632 0.30103000 55.00000000 0.24827617 + 49354 1.71932910 0.30103000 56.00000000 0.24947969 + 48672 1.72007486 0.30103000 57.00000000 0.24969940 + 49030 1.72030937 0.30103000 58.00000000 0.24852439 + 48982 1.72036101 0.30103000 59.00000000 0.24925114 + 48030 1.71871771 0.30103000 60.00000000 0.24901178 + 49128 1.72147150 0.30103000 61.00000000 0.25260111 + 48500 1.71846572 0.30103000 62.00000000 0.24996596 + 47924 1.71770465 0.30103000 63.00000000 0.24922548 + 48568 1.72014811 0.30103000 64.00000000 0.25077181 + 48758 1.71889072 0.30103000 65.00000000 0.24804419 + 48364 1.71731736 0.30103000 66.00000000 0.24925315 + 47848 1.72033665 0.30103000 67.00000000 0.24805165 + 48362 1.72096024 0.30103000 68.00000000 0.24926250 + 47536 1.71657956 0.30103000 69.00000000 0.24989401 + 47988 1.71812908 0.30103000 70.00000000 0.24862019 + 47730 1.71707412 0.30103000 71.00000000 0.25185737 + 48150 1.71966454 0.30103000 72.00000000 0.24875347 + 47832 1.71810441 0.30103000 73.00000000 0.24777640 + 47918 1.71860249 0.30103000 74.00000000 0.24845121 + 47942 1.72037411 0.30103000 75.00000000 0.24963293 + 48212 1.71902244 0.30103000 76.00000000 0.24932594 + 47718 1.71813305 0.30103000 77.00000000 0.25020236 + 47424 1.72217905 0.30103000 78.00000000 0.25130913 + 47718 1.71919164 0.30103000 79.00000000 0.24995475 + 47578 1.71949501 0.30103000 80.00000000 0.24742140 + 105382 2.45027913 0.45487534 1.00000000 0.24985720 + 104996 2.44947016 0.45487534 2.00000000 0.25041436 + 105322 2.45073327 0.45487534 3.00000000 0.25034708 + 105486 2.44982169 0.45487534 4.00000000 0.24845202 + 104482 2.45419869 0.45487534 5.00000000 0.24885416 + 105488 2.44987439 0.45487534 6.00000000 0.25244325 + 105028 2.45168627 0.45487534 7.00000000 0.25067568 + 104172 2.45222727 0.45487534 8.00000000 0.25047536 + 104420 2.44920332 0.45487534 9.00000000 0.24854802 + 104134 2.44683513 0.45487534 10.00000000 0.25029489 + 105010 2.44969473 0.45487534 11.00000000 0.24859224 + 104050 2.45059511 0.45487534 12.00000000 0.24980155 + 103768 2.45284071 0.45487534 13.00000000 0.25016145 + 103818 2.45037791 0.45487534 14.00000000 0.25012251 + 104026 2.45081073 0.45487534 15.00000000 0.24987869 + 103668 2.45274710 0.45487534 16.00000000 0.25186499 + 103450 2.44945122 0.45487534 17.00000000 0.24973742 + 104108 2.44885038 0.45487534 18.00000000 0.24776684 + 103838 2.45225757 0.45487534 19.00000000 0.25039991 + 103074 2.45017071 0.45487534 20.00000000 0.25012897 + 103778 2.44799812 0.45487534 21.00000000 0.24898203 + 102980 2.44677803 0.45487534 22.00000000 0.25006235 + 102234 2.44965726 0.45487534 23.00000000 0.25014793 + 102994 2.44987629 0.45487534 24.00000000 0.24970560 + 102272 2.45076302 0.45487534 25.00000000 0.24921523 + 102738 2.44772408 0.45487534 26.00000000 0.25053955 + 101964 2.44794541 0.45487534 27.00000000 0.24955374 + 102198 2.45076147 0.45487534 28.00000000 0.24844228 + 101646 2.45081964 0.45487534 29.00000000 0.24978249 + 102276 2.44845793 0.45487534 30.00000000 0.24818427 + 103260 2.44989228 0.45487534 31.00000000 0.25132628 + 102234 2.45061838 0.45487534 32.00000000 0.25006738 + 101178 2.44918481 0.45487534 33.00000000 0.25047829 + 102082 2.44851159 0.45487534 34.00000000 0.25098879 + 101720 2.45169314 0.45487534 35.00000000 0.25106272 + 101516 2.44841210 0.45487534 36.00000000 0.25106017 + 102422 2.44820340 0.45487534 37.00000000 0.25043462 + 100756 2.45117704 0.45487534 38.00000000 0.24979486 + 101034 2.44825655 0.45487534 39.00000000 0.25108538 + 100890 2.44863637 0.45487534 40.00000000 0.24808374 + 100414 2.45200816 0.45487534 41.00000000 0.24777427 + 101008 2.45023778 0.45487534 42.00000000 0.24941169 + 100512 2.44806579 0.45487534 43.00000000 0.25272133 + 100466 2.45032827 0.45487534 44.00000000 0.24984360 + 100136 2.45064545 0.45487534 45.00000000 0.24950589 + 100782 2.44817251 0.45487534 46.00000000 0.25119914 + 101028 2.44778780 0.45487534 47.00000000 0.25197916 + 100008 2.44951405 0.45487534 48.00000000 0.25146694 + 99616 2.44830338 0.45487534 49.00000000 0.25141539 + 99326 2.45097088 0.45487534 50.00000000 0.25172247 + 99458 2.45050071 0.45487534 51.00000000 0.25102900 + 100818 2.44863320 0.45487534 52.00000000 0.24961618 + 98852 2.44909702 0.45487534 53.00000000 0.25104177 + 99528 2.45030247 0.45487534 54.00000000 0.24969411 + 100136 2.44727235 0.45487534 55.00000000 0.24810849 + 98772 2.44856093 0.45487534 56.00000000 0.24999642 + 98976 2.45092994 0.45487534 57.00000000 0.24824501 + 98652 2.45276026 0.45487534 58.00000000 0.25116967 + 99252 2.45087657 0.45487534 59.00000000 0.24964343 + 98256 2.45143829 0.45487534 60.00000000 0.24958137 + 98506 2.44982505 0.45487534 61.00000000 0.24944612 + 98462 2.45127180 0.45487534 62.00000000 0.24924332 + 98978 2.44702022 0.45487534 63.00000000 0.25209840 + 98712 2.44886476 0.45487534 64.00000000 0.24958000 + 98112 2.45137529 0.45487534 65.00000000 0.25161078 + 98320 2.45085374 0.45487534 66.00000000 0.24962966 + 97690 2.44946803 0.45487534 67.00000000 0.25062709 + 98592 2.45087630 0.45487534 68.00000000 0.24931235 + 97712 2.45092315 0.45487534 69.00000000 0.24993082 + 97136 2.44768228 0.45487534 70.00000000 0.25014587 + 97598 2.45042536 0.45487534 71.00000000 0.24835041 + 96816 2.45154444 0.45487534 72.00000000 0.24919213 + 98084 2.45084560 0.45487534 73.00000000 0.25081729 + 96814 2.44955464 0.45487534 74.00000000 0.25055178 + 97102 2.45344776 0.45487534 75.00000000 0.24974357 + 97856 2.44787154 0.45487534 76.00000000 0.25088372 + 97056 2.45171350 0.45487534 77.00000000 0.25128532 + 97200 2.44931322 0.45487534 78.00000000 0.25011754 + 96890 2.44911634 0.45487534 79.00000000 0.24910747 + 95932 2.44772245 0.45487534 80.00000000 0.24929075 + 213872 3.49027552 0.60872281 1.00000000 0.24995164 + 214410 3.49113133 0.60872281 2.00000000 0.24983900 + 213522 3.48875740 0.60872281 3.00000000 0.25085679 + 213790 3.49152578 0.60872281 4.00000000 0.25050831 + 212724 3.49211557 0.60872281 5.00000000 0.24997773 + 212662 3.49074129 0.60872281 6.00000000 0.25042533 + 213212 3.48880350 0.60872281 7.00000000 0.25122084 + 212418 3.49144348 0.60872281 8.00000000 0.24902221 + 212718 3.49122069 0.60872281 9.00000000 0.24954447 + 212234 3.49298823 0.60872281 10.00000000 0.25039678 + 212122 3.49065758 0.60872281 11.00000000 0.25007076 + 210648 3.49078721 0.60872281 12.00000000 0.24902289 + 211330 3.49252833 0.60872281 13.00000000 0.25089207 + 210984 3.49287319 0.60872281 14.00000000 0.25012257 + 211360 3.49042799 0.60872281 15.00000000 0.25095010 + 211230 3.48938238 0.60872281 16.00000000 0.24893769 + 210308 3.49100441 0.60872281 17.00000000 0.25062626 + 210936 3.49195211 0.60872281 18.00000000 0.24948320 + 210956 3.49209383 0.60872281 19.00000000 0.25096370 + 209734 3.49231297 0.60872281 20.00000000 0.24974784 + 208664 3.49198999 0.60872281 21.00000000 0.25190335 + 210248 3.49030743 0.60872281 22.00000000 0.25095544 + 209372 3.49037975 0.60872281 23.00000000 0.25042849 + 207810 3.49344491 0.60872281 24.00000000 0.24898018 + 209302 3.49375836 0.60872281 25.00000000 0.24863619 + 208084 3.49010261 0.60872281 26.00000000 0.25021399 + 207380 3.49251355 0.60872281 27.00000000 0.24980123 + 207310 3.48913885 0.60872281 28.00000000 0.25058690 + 207650 3.49363712 0.60872281 29.00000000 0.24992598 + 207566 3.49385568 0.60872281 30.00000000 0.25087131 + 207072 3.48923050 0.60872281 31.00000000 0.24975828 + 206680 3.48915145 0.60872281 32.00000000 0.24954660 + 206500 3.49147656 0.60872281 33.00000000 0.25011544 + 206790 3.49347393 0.60872281 34.00000000 0.25013395 + 206474 3.48843047 0.60872281 35.00000000 0.25038087 + 206622 3.49174948 0.60872281 36.00000000 0.24881440 + 205072 3.48969428 0.60872281 37.00000000 0.25127167 + 205746 3.49189870 0.60872281 38.00000000 0.24994917 + 205186 3.49218291 0.60872281 39.00000000 0.25024072 + 205726 3.48885360 0.60872281 40.00000000 0.25022802 + 204556 3.49109416 0.60872281 41.00000000 0.24986608 + 204922 3.49162262 0.60872281 42.00000000 0.24888558 + 204336 3.49249191 0.60872281 43.00000000 0.25045035 + 205434 3.49092911 0.60872281 44.00000000 0.25056494 + 204240 3.49486754 0.60872281 45.00000000 0.24954009 + 204304 3.48877697 0.60872281 46.00000000 0.25022252 + 204644 3.49085534 0.60872281 47.00000000 0.24921754 + 202538 3.49112788 0.60872281 48.00000000 0.24906459 + 203500 3.49206218 0.60872281 49.00000000 0.25013119 + 201964 3.49000972 0.60872281 50.00000000 0.25072614 + 202784 3.49104846 0.60872281 51.00000000 0.25009555 + 202402 3.49136874 0.60872281 52.00000000 0.25024438 + 202082 3.49148498 0.60872281 53.00000000 0.25131575 + 201272 3.49319548 0.60872281 54.00000000 0.24894556 + 202054 3.49178419 0.60872281 55.00000000 0.24868890 + 201696 3.49181244 0.60872281 56.00000000 0.25027555 + 199962 3.49044785 0.60872281 57.00000000 0.24930896 + 201334 3.49218787 0.60872281 58.00000000 0.24989396 + 201068 3.49077256 0.60872281 59.00000000 0.24985154 + 200566 3.49160609 0.60872281 60.00000000 0.24924255 + 200446 3.48886027 0.60872281 61.00000000 0.25051242 + 200150 3.49087328 0.60872281 62.00000000 0.25142144 + 199814 3.49045798 0.60872281 63.00000000 0.24914754 + 198142 3.49300530 0.60872281 64.00000000 0.24937243 + 200188 3.49090898 0.60872281 65.00000000 0.25162961 + 198520 3.49074294 0.60872281 66.00000000 0.24906183 + 198910 3.49254384 0.60872281 67.00000000 0.25060903 + 198232 3.49536451 0.60872281 68.00000000 0.24966831 + 198730 3.49249190 0.60872281 69.00000000 0.24901096 + 198094 3.49047978 0.60872281 70.00000000 0.24998896 + 198134 3.49007988 0.60872281 71.00000000 0.24954398 + 198166 3.49186584 0.60872281 72.00000000 0.25014304 + 198386 3.48976046 0.60872281 73.00000000 0.25055928 + 197756 3.49302601 0.60872281 74.00000000 0.24984293 + 196380 3.49174889 0.60872281 75.00000000 0.25098733 + 197096 3.49095934 0.60872281 76.00000000 0.25046211 + 196204 3.49118332 0.60872281 77.00000000 0.24829091 + 196518 3.49149569 0.60872281 78.00000000 0.25137894 + 196646 3.49436438 0.60872281 79.00000000 0.24868403 + 196196 3.49154546 0.60872281 80.00000000 0.24934936 + 434190 4.97744193 0.76256829 1.00000000 0.25039901 + 434242 4.97526307 0.76256829 2.00000000 0.24973697 + 432708 4.97821774 0.76256829 3.00000000 0.25073341 + 432198 4.97653325 0.76256829 4.00000000 0.24997795 + 429922 4.97634583 0.76256829 5.00000000 0.25048567 + 432008 4.97495836 0.76256829 6.00000000 0.24977425 + 431792 4.97569839 0.76256829 7.00000000 0.24996249 + 432340 4.97397946 0.76256829 8.00000000 0.25039358 + 431854 4.97598736 0.76256829 9.00000000 0.24950448 + 430406 4.97377470 0.76256829 10.00000000 0.24978200 + 429316 4.97708525 0.76256829 11.00000000 0.25025092 + 428920 4.97612766 0.76256829 12.00000000 0.25056464 + 427432 4.97466427 0.76256829 13.00000000 0.24974816 + 427694 4.97291946 0.76256829 14.00000000 0.24997016 + 429794 4.97662880 0.76256829 15.00000000 0.25109097 + 427438 4.97356808 0.76256829 16.00000000 0.24918003 + 426476 4.97436950 0.76256829 17.00000000 0.24989773 + 426792 4.97700870 0.76256829 18.00000000 0.25061498 + 426302 4.97523001 0.76256829 19.00000000 0.25068311 + 424948 4.97711006 0.76256829 20.00000000 0.24952122 + 425842 4.97726925 0.76256829 21.00000000 0.25004654 + 426702 4.97651569 0.76256829 22.00000000 0.24849851 + 424768 4.97612657 0.76256829 23.00000000 0.24973070 + 424508 4.97412338 0.76256829 24.00000000 0.24998220 + 424156 4.97628122 0.76256829 25.00000000 0.25019744 + 423038 4.97827228 0.76256829 26.00000000 0.25007910 + 422588 4.97434830 0.76256829 27.00000000 0.24953688 + 423162 4.97655098 0.76256829 28.00000000 0.25050779 + 422112 4.97460786 0.76256829 29.00000000 0.25016720 + 421268 4.97837291 0.76256829 30.00000000 0.25038411 + 421244 4.97466588 0.76256829 31.00000000 0.25086680 + 421352 4.97638086 0.76256829 32.00000000 0.25027333 + 421178 4.97410544 0.76256829 33.00000000 0.25014407 + 419094 4.97416623 0.76256829 34.00000000 0.24991771 + 417982 4.97587451 0.76256829 35.00000000 0.24983348 + 419572 4.97509040 0.76256829 36.00000000 0.25039641 + 420638 4.97245293 0.76256829 37.00000000 0.25006238 + 416730 4.97527214 0.76256829 38.00000000 0.25009938 + 415746 4.97736831 0.76256829 39.00000000 0.24924812 + 416684 4.97550795 0.76256829 40.00000000 0.24955362 + 416506 4.97471325 0.76256829 41.00000000 0.24998399 + 417018 4.97390145 0.76256829 42.00000000 0.25032264 + 415408 4.97906632 0.76256829 43.00000000 0.25037142 + 413902 4.97689750 0.76256829 44.00000000 0.25043762 + 414748 4.97526086 0.76256829 45.00000000 0.25032963 + 412960 4.97455325 0.76256829 46.00000000 0.25030157 + 413278 4.97670563 0.76256829 47.00000000 0.24940300 + 411798 4.97720305 0.76256829 48.00000000 0.24952963 + 411692 4.97543619 0.76256829 49.00000000 0.25068637 + 411384 4.97778360 0.76256829 50.00000000 0.25022291 + 410148 4.97580957 0.76256829 51.00000000 0.25008859 + 410598 4.97493191 0.76256829 52.00000000 0.24995804 + 410162 4.97671818 0.76256829 53.00000000 0.24937095 + 409946 4.97694754 0.76256829 54.00000000 0.25060569 + 410468 4.97569302 0.76256829 55.00000000 0.25014318 + 407480 4.97789775 0.76256829 56.00000000 0.25056952 + 407350 4.97454127 0.76256829 57.00000000 0.24973775 + 409034 4.97494992 0.76256829 58.00000000 0.25041164 + 407960 4.97613899 0.76256829 59.00000000 0.24953282 + 408044 4.97614870 0.76256829 60.00000000 0.25012525 + 406026 4.97906483 0.76256829 61.00000000 0.25027609 + 405192 4.97590901 0.76256829 62.00000000 0.25020095 + 406102 4.97652872 0.76256829 63.00000000 0.25106258 + 405256 4.97339387 0.76256829 64.00000000 0.24912572 + 404296 4.97508999 0.76256829 65.00000000 0.24984525 + 405152 4.97776920 0.76256829 66.00000000 0.25018872 + 403202 4.97290788 0.76256829 67.00000000 0.24916602 + 402280 4.97456961 0.76256829 68.00000000 0.24949748 + 403268 4.97781948 0.76256829 69.00000000 0.25006221 + 403710 4.97474984 0.76256829 70.00000000 0.25068450 + 403638 4.97315190 0.76256829 71.00000000 0.25003802 + 401118 4.97649228 0.76256829 72.00000000 0.24982484 + 400604 4.97399054 0.76256829 73.00000000 0.24866608 + 399796 4.97485672 0.76256829 74.00000000 0.24957315 + 399580 4.97570592 0.76256829 75.00000000 0.24912799 + 400974 4.97360617 0.76256829 76.00000000 0.25100339 + 398380 4.97864306 0.76256829 77.00000000 0.25011324 + 398622 4.97545420 0.76256829 78.00000000 0.25046093 + 398898 4.97594659 0.76256829 79.00000000 0.24926484 + 398170 4.97897060 0.76256829 80.00000000 0.24979170 + 883192 7.09121583 0.91641447 1.00000000 0.24997188 + 882946 7.09190467 0.91641447 2.00000000 0.25029262 + 879426 7.08882854 0.91641447 3.00000000 0.24997931 + 879652 7.08837317 0.91641447 4.00000000 0.24952314 + 878552 7.09047934 0.91641447 5.00000000 0.25007708 + 878154 7.09034794 0.91641447 6.00000000 0.25017873 + 875230 7.08845364 0.91641447 7.00000000 0.24997010 + 876990 7.09109313 0.91641447 8.00000000 0.24966899 + 874404 7.08874373 0.91641447 9.00000000 0.25040874 + 873526 7.09075055 0.91641447 10.00000000 0.24991328 + 874560 7.09169466 0.91641447 11.00000000 0.25008988 + 872148 7.08942564 0.91641447 12.00000000 0.24989974 + 873966 7.09214690 0.91641447 13.00000000 0.25023944 + 870212 7.09167492 0.91641447 14.00000000 0.24997688 + 870166 7.08923458 0.91641447 15.00000000 0.24983738 + 870142 7.08857860 0.91641447 16.00000000 0.25078798 + 868860 7.08890255 0.91641447 17.00000000 0.25017610 + 867642 7.09336397 0.91641447 18.00000000 0.25024648 + 864854 7.08981902 0.91641447 19.00000000 0.25079575 + 864562 7.08903358 0.91641447 20.00000000 0.24995827 + 861962 7.09221739 0.91641447 21.00000000 0.24965221 + 862802 7.09093785 0.91641447 22.00000000 0.24984492 + 860744 7.09239259 0.91641447 23.00000000 0.25035384 + 864848 7.08837019 0.91641447 24.00000000 0.24952291 + 860516 7.09113703 0.91641447 25.00000000 0.24992037 + 861128 7.08848340 0.91641447 26.00000000 0.25031955 + 858804 7.09046810 0.91641447 27.00000000 0.25021735 + 857578 7.09309444 0.91641447 28.00000000 0.25011006 + 856840 7.09070330 0.91641447 29.00000000 0.24951473 + 856194 7.09034260 0.91641447 30.00000000 0.25026683 + 853982 7.09069299 0.91641447 31.00000000 0.25043473 + 853964 7.09040679 0.91641447 32.00000000 0.24968278 + 850440 7.09389083 0.91641447 33.00000000 0.25051742 + 851632 7.09346803 0.91641447 34.00000000 0.25005427 + 849806 7.09339732 0.91641447 35.00000000 0.24962344 + 848924 7.09068696 0.91641447 36.00000000 0.24999951 + 847700 7.09097590 0.91641447 37.00000000 0.25044077 + 847012 7.09008347 0.91641447 38.00000000 0.25024750 + 846596 7.08715725 0.91641447 39.00000000 0.24983804 + 844044 7.09008071 0.91641447 40.00000000 0.25001553 + 844082 7.09049856 0.91641447 41.00000000 0.25018375 + 845840 7.09253105 0.91641447 42.00000000 0.25014347 + 844470 7.09073390 0.91641447 43.00000000 0.25017935 + 842100 7.09006927 0.91641447 44.00000000 0.25039699 + 838860 7.08974080 0.91641447 45.00000000 0.25043168 + 841000 7.08906644 0.91641447 46.00000000 0.24967172 + 840518 7.08843210 0.91641447 47.00000000 0.24977531 + 840954 7.09013312 0.91641447 48.00000000 0.25028762 + 837676 7.09033688 0.91641447 49.00000000 0.25027003 + 835896 7.09131883 0.91641447 50.00000000 0.25019703 + 836756 7.09146267 0.91641447 51.00000000 0.24993262 + 835730 7.09033961 0.91641447 52.00000000 0.24973170 + 832744 7.09046401 0.91641447 53.00000000 0.24925400 + 832420 7.08954531 0.91641447 54.00000000 0.24948493 + 832890 7.09119433 0.91641447 55.00000000 0.24977143 + 831768 7.09254796 0.91641447 56.00000000 0.25001032 + 832250 7.09176454 0.91641447 57.00000000 0.25020065 + 830620 7.08968632 0.91641447 58.00000000 0.25020521 + 828310 7.09172107 0.91641447 59.00000000 0.25024765 + 826672 7.09277273 0.91641447 60.00000000 0.24991689 + 826270 7.08900449 0.91641447 61.00000000 0.24986872 + 823832 7.09040366 0.91641447 62.00000000 0.24981465 + 823282 7.08909159 0.91641447 63.00000000 0.25001752 + 823818 7.08775296 0.91641447 64.00000000 0.25008507 + 819262 7.09049184 0.91641447 65.00000000 0.25015555 + 820206 7.09228896 0.91641447 66.00000000 0.25088039 + 821720 7.09208394 0.91641447 67.00000000 0.25047490 + 820232 7.09056926 0.91641447 68.00000000 0.25000110 + 817752 7.09164737 0.91641447 69.00000000 0.25014541 + 817532 7.09027954 0.91641447 70.00000000 0.24987313 + 817082 7.09098051 0.91641447 71.00000000 0.24961869 + 815650 7.08948047 0.91641447 72.00000000 0.24981343 + 815950 7.09332870 0.91641447 73.00000000 0.24958837 + 816354 7.08898948 0.91641447 74.00000000 0.24984320 + 812312 7.09073852 0.91641447 75.00000000 0.24997385 + 811698 7.09201663 0.91641447 76.00000000 0.24893088 + 812948 7.09256051 0.91641447 77.00000000 0.25011903 + 807728 7.09139731 0.91641447 78.00000000 0.25024370 + 809680 7.09390554 0.91641447 79.00000000 0.24986372 + 807096 7.08926550 0.91641447 80.00000000 0.24987958 + 1792714 10.10478475 1.07025958 1.00000000 0.25001392 + 1790536 10.10558437 1.07025958 2.00000000 0.25023278 + 1790502 10.10755888 1.07025958 3.00000000 0.25057072 + 1787934 10.10441594 1.07025958 4.00000000 0.25025982 + 1782364 10.10361894 1.07025958 5.00000000 0.24926193 + 1784516 10.10639890 1.07025958 6.00000000 0.25009450 + 1782522 10.10428844 1.07025958 7.00000000 0.24992409 + 1778716 10.10613561 1.07025958 8.00000000 0.24972602 + 1779934 10.10687521 1.07025958 9.00000000 0.25029768 + 1776620 10.10483764 1.07025958 10.00000000 0.24937575 + 1775626 10.10435341 1.07025958 11.00000000 0.25009154 + 1773000 10.10335239 1.07025958 12.00000000 0.25025695 + 1770966 10.10513065 1.07025958 13.00000000 0.24996405 + 1768666 10.10543908 1.07025958 14.00000000 0.24995602 + 1767344 10.10634453 1.07025958 15.00000000 0.25006105 + 1763976 10.10583646 1.07025958 16.00000000 0.25059874 + 1760618 10.10372707 1.07025958 17.00000000 0.25042696 + 1761356 10.10361757 1.07025958 18.00000000 0.24969082 + 1759590 10.10141367 1.07025958 19.00000000 0.25041442 + 1756156 10.10496776 1.07025958 20.00000000 0.25009652 + 1755346 10.10570724 1.07025958 21.00000000 0.25024572 + 1754488 10.10616677 1.07025958 22.00000000 0.24991241 + 1752320 10.10542648 1.07025958 23.00000000 0.24982312 + 1750898 10.10437221 1.07025958 24.00000000 0.25024931 + 1747280 10.10521465 1.07025958 25.00000000 0.24984089 + 1743146 10.10577968 1.07025958 26.00000000 0.25023318 + 1739566 10.10635358 1.07025958 27.00000000 0.25000670 + 1741410 10.10407644 1.07025958 28.00000000 0.24979271 + 1740558 10.10382010 1.07025958 29.00000000 0.25062984 + 1737832 10.10290274 1.07025958 30.00000000 0.25048917 + 1734544 10.10401903 1.07025958 31.00000000 0.24997952 + 1732784 10.10412047 1.07025958 32.00000000 0.25028317 + 1733968 10.10451824 1.07025958 33.00000000 0.24986229 + 1731532 10.10554707 1.07025958 34.00000000 0.25018537 + 1728372 10.10393469 1.07025958 35.00000000 0.25016173 + 1725690 10.10351430 1.07025958 36.00000000 0.25026325 + 1721638 10.10526005 1.07025958 37.00000000 0.24988848 + 1723280 10.10369382 1.07025958 38.00000000 0.24989459 + 1715882 10.10505024 1.07025958 39.00000000 0.24959306 + 1717190 10.10601008 1.07025958 40.00000000 0.25004903 + 1718892 10.10288549 1.07025958 41.00000000 0.25030005 + 1716170 10.10644783 1.07025958 42.00000000 0.25019211 + 1711030 10.10495709 1.07025958 43.00000000 0.25046758 + 1708914 10.10449057 1.07025958 44.00000000 0.25022768 + 1709684 10.10564231 1.07025958 45.00000000 0.24979562 + 1706152 10.10463611 1.07025958 46.00000000 0.24983741 + 1704114 10.10310280 1.07025958 47.00000000 0.25030787 + 1704618 10.10250938 1.07025958 48.00000000 0.25012544 + 1705904 10.10314139 1.07025958 49.00000000 0.24993421 + 1699596 10.10337473 1.07025958 50.00000000 0.25009415 + 1701884 10.10477106 1.07025958 51.00000000 0.24997979 + 1695016 10.10369137 1.07025958 52.00000000 0.24965752 + 1692980 10.10610337 1.07025958 53.00000000 0.25037765 + 1689310 10.10563520 1.07025958 54.00000000 0.25025990 + 1689174 10.10309117 1.07025958 55.00000000 0.25071919 + 1687206 10.10575862 1.07025958 56.00000000 0.25004086 + 1683454 10.10494858 1.07025958 57.00000000 0.24992238 + 1686410 10.10562116 1.07025958 58.00000000 0.24978794 + 1679798 10.10433677 1.07025958 59.00000000 0.24998234 + 1679426 10.10506895 1.07025958 60.00000000 0.25042388 + 1677840 10.10338774 1.07025958 61.00000000 0.25005268 + 1677896 10.10417917 1.07025958 62.00000000 0.24980871 + 1672132 10.10321303 1.07025958 63.00000000 0.24985628 + 1673476 10.10582002 1.07025958 64.00000000 0.24980252 + 1670408 10.10742036 1.07025958 65.00000000 0.24967401 + 1666544 10.10514003 1.07025958 66.00000000 0.25008306 + 1665158 10.10365104 1.07025958 67.00000000 0.25021845 + 1665348 10.10641869 1.07025958 68.00000000 0.24984232 + 1661050 10.10408827 1.07025958 69.00000000 0.25009678 + 1659508 10.10607965 1.07025958 70.00000000 0.25001312 + 1658314 10.10222531 1.07025958 71.00000000 0.24977793 + 1658934 10.10502269 1.07025958 72.00000000 0.25028240 + 1654086 10.10445456 1.07025958 73.00000000 0.25022208 + 1657630 10.10617219 1.07025958 74.00000000 0.25029506 + 1651280 10.10451774 1.07025958 75.00000000 0.24997297 + 1653580 10.10525326 1.07025958 76.00000000 0.25000961 + 1647648 10.10492085 1.07025958 77.00000000 0.25031552 + 1644946 10.10330532 1.07025958 78.00000000 0.24990617 + 1641742 10.10362722 1.07025958 79.00000000 0.25009781 + 1638376 10.10539032 1.07025958 80.00000000 0.25028533 + 3644310 14.40345192 1.22410814 1.00000000 0.25007499 + 3636606 14.40316052 1.22410814 2.00000000 0.24989749 + 3632302 14.40000721 1.22410814 3.00000000 0.24988967 + 3629542 14.40069791 1.22410814 4.00000000 0.25012171 + 3626622 14.39949897 1.22410814 5.00000000 0.25016682 + 3625338 14.39937511 1.22410814 6.00000000 0.25014134 + 3616750 14.39927139 1.22410814 7.00000000 0.24981575 + 3610280 14.40128463 1.22410814 8.00000000 0.25018767 + 3609488 14.40045012 1.22410814 9.00000000 0.25008251 + 3608290 14.40313879 1.22410814 10.00000000 0.24983183 + 3599722 14.40271984 1.22410814 11.00000000 0.25031490 + 3602670 14.40209084 1.22410814 12.00000000 0.25036369 + 3594194 14.40186912 1.22410814 13.00000000 0.25018746 + 3589644 14.40224039 1.22410814 14.00000000 0.25007582 + 3585868 14.40291051 1.22410814 15.00000000 0.25008741 + 3583064 14.39962564 1.22410814 16.00000000 0.25002676 + 3578352 14.39731982 1.22410814 17.00000000 0.25005262 + 3576962 14.40160761 1.22410814 18.00000000 0.25033697 + 3572842 14.40019512 1.22410814 19.00000000 0.25016160 + 3564060 14.40229609 1.22410814 20.00000000 0.25010014 + 3560700 14.40121139 1.22410814 21.00000000 0.25034338 + 3563370 14.40066391 1.22410814 22.00000000 0.24988018 + 3558230 14.39930426 1.22410814 23.00000000 0.24980725 + 3550496 14.40110566 1.22410814 24.00000000 0.25025424 + 3545410 14.40059165 1.22410814 25.00000000 0.25032113 + 3543902 14.39957596 1.22410814 26.00000000 0.25006583 + 3536266 14.40181299 1.22410814 27.00000000 0.25019341 + 3537096 14.39996851 1.22410814 28.00000000 0.25000128 + 3531722 14.40094027 1.22410814 29.00000000 0.24989114 + 3529596 14.40263091 1.22410814 30.00000000 0.24998716 + 3520662 14.40100874 1.22410814 31.00000000 0.25016391 + 3523038 14.39982449 1.22410814 32.00000000 0.25032085 + 3519438 14.39702966 1.22410814 33.00000000 0.24976478 + 3510020 14.40099344 1.22410814 34.00000000 0.25013029 + 3509938 14.40073206 1.22410814 35.00000000 0.25000547 + 3506704 14.40087420 1.22410814 36.00000000 0.25000621 + 3501870 14.39900766 1.22410814 37.00000000 0.25011305 + 3499122 14.39901406 1.22410814 38.00000000 0.25005473 + 3492334 14.40210990 1.22410814 39.00000000 0.25001308 + 3487352 14.40185052 1.22410814 40.00000000 0.25002245 + 3485356 14.40020124 1.22410814 41.00000000 0.25000997 + 3478870 14.40047335 1.22410814 42.00000000 0.24995298 + 3478630 14.40036663 1.22410814 43.00000000 0.25016703 + 3477498 14.40398815 1.22410814 44.00000000 0.25007552 + 3473854 14.40040425 1.22410814 45.00000000 0.25001437 + 3466876 14.40167561 1.22410814 46.00000000 0.24985345 + 3457648 14.40131752 1.22410814 47.00000000 0.24998727 + 3458812 14.39968416 1.22410814 48.00000000 0.24989989 + 3450862 14.40082025 1.22410814 49.00000000 0.24999876 + 3452612 14.40087104 1.22410814 50.00000000 0.25039610 + 3449634 14.40065196 1.22410814 51.00000000 0.24987567 + 3441332 14.40085955 1.22410814 52.00000000 0.25000774 + 3439184 14.40301856 1.22410814 53.00000000 0.24983323 + 3434590 14.39912616 1.22410814 54.00000000 0.25018916 + 3429930 14.39966712 1.22410814 55.00000000 0.25025235 + 3425808 14.40199561 1.22410814 56.00000000 0.25015169 + 3424032 14.40194526 1.22410814 57.00000000 0.24985642 + 3419370 14.40170025 1.22410814 58.00000000 0.25007880 + 3416686 14.40399456 1.22410814 59.00000000 0.24990849 + 3414792 14.40032509 1.22410814 60.00000000 0.25008052 + 3410890 14.40008271 1.22410814 61.00000000 0.24992947 + 3407146 14.39855646 1.22410814 62.00000000 0.25025932 + 3395186 14.39951275 1.22410814 63.00000000 0.24995574 + 3399360 14.40003788 1.22410814 64.00000000 0.25035245 + 3395326 14.40187201 1.22410814 65.00000000 0.25026720 + 3388312 14.40020095 1.22410814 66.00000000 0.24992944 + 3385860 14.39915469 1.22410814 67.00000000 0.24996276 + 3378120 14.40170973 1.22410814 68.00000000 0.25000217 + 3375540 14.40308859 1.22410814 69.00000000 0.24969795 + 3373968 14.40102036 1.22410814 70.00000000 0.24980779 + 3373924 14.39958380 1.22410814 71.00000000 0.25026823 + 3363692 14.39823904 1.22410814 72.00000000 0.25019318 + 3360040 14.40241574 1.22410814 73.00000000 0.25009232 + 3357078 14.40229536 1.22410814 74.00000000 0.24994628 + 3356036 14.39901428 1.22410814 75.00000000 0.25007774 + 3344980 14.40154068 1.22410814 76.00000000 0.24991399 + 3346688 14.40168610 1.22410814 77.00000000 0.25002237 + 3344182 14.40039076 1.22410814 78.00000000 0.25018513 + 3338292 14.39816826 1.22410814 79.00000000 0.25014209 + 3334962 14.40163784 1.22410814 80.00000000 0.25003356 + 7391084 20.52155255 1.37795248 1.00000000 0.25005527 + 7386700 20.52316729 1.37795248 2.00000000 0.24993905 + 7382048 20.52291326 1.37795248 3.00000000 0.25036230 + 7369504 20.52310381 1.37795248 4.00000000 0.25020263 + 7371002 20.52114293 1.37795248 5.00000000 0.24998634 + 7365980 20.52154411 1.37795248 6.00000000 0.25006039 + 7347210 20.52267081 1.37795248 7.00000000 0.25016938 + 7338012 20.52147606 1.37795248 8.00000000 0.24995625 + 7330268 20.51812848 1.37795248 9.00000000 0.25000730 + 7327156 20.52275450 1.37795248 10.00000000 0.25007290 + 7321138 20.52282706 1.37795248 11.00000000 0.25000555 + 7308896 20.52197000 1.37795248 12.00000000 0.25013532 + 7304346 20.51993868 1.37795248 13.00000000 0.24996633 + 7295668 20.52167019 1.37795248 14.00000000 0.25016202 + 7282662 20.51969291 1.37795248 15.00000000 0.25003543 + 7279744 20.52377133 1.37795248 16.00000000 0.25012080 + 7257144 20.52022835 1.37795248 17.00000000 0.25025322 + 7256862 20.52133976 1.37795248 18.00000000 0.25007566 + 7248146 20.52107392 1.37795248 19.00000000 0.25013529 + 7249148 20.51968118 1.37795248 20.00000000 0.25009766 + 7235310 20.52411396 1.37795248 21.00000000 0.24994008 + 7225184 20.52246680 1.37795248 22.00000000 0.24984904 + 7214620 20.52374129 1.37795248 23.00000000 0.25008755 + 7217770 20.52227636 1.37795248 24.00000000 0.25013928 + 7204580 20.52162715 1.37795248 25.00000000 0.25003075 + 7193404 20.52093208 1.37795248 26.00000000 0.25014628 + 7189514 20.52519394 1.37795248 27.00000000 0.24991394 + 7173994 20.52491677 1.37795248 28.00000000 0.25008499 + 7169730 20.52410275 1.37795248 29.00000000 0.25007808 + 7167510 20.52129079 1.37795248 30.00000000 0.24996660 + 7156096 20.52354125 1.37795248 31.00000000 0.25002961 + 7148230 20.52490504 1.37795248 32.00000000 0.24986105 + 7140728 20.52288923 1.37795248 33.00000000 0.24997179 + 7133902 20.52395526 1.37795248 34.00000000 0.25006499 + 7128400 20.52092452 1.37795248 35.00000000 0.25007274 + 7117920 20.52324289 1.37795248 36.00000000 0.24997325 + 7109440 20.52431641 1.37795248 37.00000000 0.24998616 + 7107204 20.52403831 1.37795248 38.00000000 0.25003544 + 7088188 20.52183934 1.37795248 39.00000000 0.25005799 + 7083466 20.52229505 1.37795248 40.00000000 0.25004816 + 7088398 20.52310897 1.37795248 41.00000000 0.25013894 + 7074536 20.52455778 1.37795248 42.00000000 0.25008258 + 7060988 20.52370951 1.37795248 43.00000000 0.25003521 + 7056312 20.52258109 1.37795248 44.00000000 0.24994730 + 7048008 20.52165208 1.37795248 45.00000000 0.25003152 + 7042316 20.52142528 1.37795248 46.00000000 0.24992349 + 7027962 20.52174338 1.37795248 47.00000000 0.25008519 + 7026384 20.52343563 1.37795248 48.00000000 0.25020938 + 7014170 20.52210514 1.37795248 49.00000000 0.25013574 + 7014478 20.52240336 1.37795248 50.00000000 0.25007075 + 6999598 20.52273549 1.37795248 51.00000000 0.25022378 + 6992630 20.52237360 1.37795248 52.00000000 0.24995059 + 6987422 20.52184938 1.37795248 53.00000000 0.25002566 + 6978376 20.52050117 1.37795248 54.00000000 0.24992610 + 6966796 20.52228085 1.37795248 55.00000000 0.25019028 + 6964286 20.52368481 1.37795248 56.00000000 0.25011751 + 6947628 20.52237743 1.37795248 57.00000000 0.25010465 + 6939812 20.52389492 1.37795248 58.00000000 0.25001742 + 6932770 20.52493659 1.37795248 59.00000000 0.25017372 + 6926526 20.52102599 1.37795248 60.00000000 0.25030709 + 6925866 20.52265308 1.37795248 61.00000000 0.25014050 + 6916818 20.52386058 1.37795248 62.00000000 0.25001670 + 6902760 20.52342401 1.37795248 63.00000000 0.25002204 + 6892484 20.52295843 1.37795248 64.00000000 0.24994444 + 6891970 20.52247083 1.37795248 65.00000000 0.25010772 + 6876574 20.52278342 1.37795248 66.00000000 0.25017980 + 6876910 20.51995707 1.37795248 67.00000000 0.24996941 + 6867414 20.52227196 1.37795248 68.00000000 0.25004101 + 6857596 20.52146265 1.37795248 69.00000000 0.24997905 + 6852704 20.52113350 1.37795248 70.00000000 0.25016791 + 6840968 20.52094475 1.37795248 71.00000000 0.25001879 + 6829562 20.52335211 1.37795248 72.00000000 0.25009055 + 6823294 20.52257086 1.37795248 73.00000000 0.25001436 + 6814068 20.52185370 1.37795248 74.00000000 0.25020450 + 6811550 20.52067006 1.37795248 75.00000000 0.25015788 + 6799628 20.52285711 1.37795248 76.00000000 0.25008529 + 6798006 20.52162393 1.37795248 77.00000000 0.25000650 + 6782450 20.52092299 1.37795248 78.00000000 0.25023012 + 6777592 20.52335659 1.37795248 79.00000000 0.24988382 + 6765088 20.52371331 1.37795248 80.00000000 0.25019217 diff --git a/theory/tests/test_nonperiodic.c b/theory/tests/test_nonperiodic.c index 1f92148e..f3ba9cfb 100644 --- a/theory/tests/test_nonperiodic.c +++ b/theory/tests/test_nonperiodic.c @@ -27,6 +27,8 @@ double *X1=NULL,*Y1=NULL,*Z1=NULL,*weights1=NULL; int64_t ND2; double *X2=NULL,*Y2=NULL,*Z2=NULL,*weights2=NULL; +binarray bins; + char current_file1[MAXLEN+1],current_file2[MAXLEN+1]; struct config_options options; //end of global variables @@ -50,7 +52,7 @@ int test_nonperiodic_DD(const char *correct_outputfile) ND2,X2,Y2,Z2, nthreads, autocorr, - binfile, + &bins, &results, &options, &extra); @@ -120,8 +122,9 @@ int test_nonperiodic_DDrppi(const char *correct_outputfile) ND2,X2,Y2,Z2, nthreads, autocorr, - binfile, + &bins, pimax, + (int) pimax, &results, &options, &extra); @@ -203,7 +206,7 @@ int test_nonperiodic_DDsmu(const char *correct_outputfile) ND2,X2,Y2,Z2, nthreads, autocorr, - binfile, + &bins, theory_mu_max, nmu_bins, &results, @@ -351,6 +354,8 @@ int main(int argc, char **argv) Z2 = Z1; weights2 = weights1; + read_binfile(binfile, &bins); + strncpy(current_file1,file,MAXLEN); strncpy(current_file2,file,MAXLEN); reset_bin_refine_factors(&options); @@ -477,5 +482,6 @@ int main(int argc, char **argv) free(X2);free(Y2);free(Z2);free(weights2); } free(X1);free(Y1);free(Z1);free(weights1); + free_binarray(&bins); return failed; } diff --git a/theory/tests/test_periodic.c b/theory/tests/test_periodic.c index 51d9df06..ceb19594 100644 --- a/theory/tests/test_periodic.c +++ b/theory/tests/test_periodic.c @@ -36,6 +36,8 @@ double *X1=NULL,*Y1=NULL,*Z1=NULL,*weights1=NULL; int64_t ND2; double *X2=NULL,*Y2=NULL,*Z2=NULL,*weights2=NULL; +binarray bins; + char current_file1[MAXLEN+1],current_file2[MAXLEN+1]; struct config_options options; @@ -60,7 +62,7 @@ int test_periodic_DD(const char *correct_outputfile) ND2,X2,Y2,Z2, nthreads, autocorr, - binfile, + &bins, &results, &options, &extra); @@ -133,8 +135,9 @@ int test_periodic_DDrppi(const char *correct_outputfile) ND2,X2,Y2,Z2, nthreads, autocorr, - binfile, + &bins, pimax, + (int) pimax, &results, &options, &extra); @@ -217,7 +220,7 @@ int test_periodic_DDsmu(const char *correct_outputfile) ND2,X2,Y2,Z2, nthreads, autocorr, - binfile, + &bins, theory_mu_max, nmu_bins, &results, @@ -300,7 +303,7 @@ int test_wp(const char *correct_outputfile) int status = countpairs_wp(ND1,X1,Y1,Z1, boxsize, nthreads, - binfile, + &bins, pimax, &results, &options, @@ -455,7 +458,7 @@ int test_xi(const char *correct_outputfile) int status = countpairs_xi(ND1,X1,Y1,Z1, boxsize, nthreads, - binfile, + &bins, &results, &options, &extra); @@ -596,6 +599,8 @@ int main(int argc, char **argv) Z2 = Z1; weights2 = weights1; + read_binfile(binfile, &bins); + strncpy(current_file1,file,MAXLEN); strncpy(current_file2,file,MAXLEN); reset_bin_refine_factors(&options); @@ -747,5 +752,6 @@ int main(int argc, char **argv) free(X2);free(Y2);free(Z2);free(weights2); } free(X1);free(Y1);free(Z1);free(weights1); + free_binarray(&bins); return failed; } diff --git a/theory/tests/test_periodic_lin.c b/theory/tests/test_periodic_lin.c index ba74c620..200540f0 100644 --- a/theory/tests/test_periodic_lin.c +++ b/theory/tests/test_periodic_lin.c @@ -25,6 +25,8 @@ int test_custom_and_linear_bins(void); int64_t ND1; double *X1=NULL,*Y1=NULL,*Z1=NULL,*weights1=NULL; +binarray bins_lin; + char current_file1[MAXLEN+1]; @@ -49,7 +51,7 @@ int test_periodic_DD(const char *correct_outputfile) ND1,X1,Y1,Z1, nthreads, autocorr, - binfile_lin, + &bins_lin, &results, &options, &extra); @@ -186,6 +188,8 @@ int test_custom_and_linear_bins(void) if (status != EXIT_SUCCESS) { return status; } + binarray bins; + read_binfile(linear_binfile, &bins); for(int iset=num_instructions-1;iset>=0;iset--) { fprintf(stderr,"[rmin, rmax, nbins] = [%0.2f, %0.2f, %0d], isa = %10s ",rmin, rmax, nbins, isa_name[iset]); results_countpairs results_reference, results_linear; @@ -201,7 +205,7 @@ int test_custom_and_linear_bins(void) ND1,X1,Y1,Z1, nthreads, autocorr, - linear_binfile, + &bins, &results_reference, &options, &extra); @@ -214,7 +218,7 @@ int test_custom_and_linear_bins(void) ND1,X1,Y1,Z1, nthreads, autocorr, - linear_binfile, + &bins, &results_linear, &options, &extra); @@ -230,6 +234,7 @@ int test_custom_and_linear_bins(void) fprintf(stderr,ANSI_COLOR_GREEN "PASSED" ANSI_COLOR_RESET"\n"); } } + free_binarray(&bins); } } fprintf(stderr,ANSI_COLOR_RESET"ntests run = %d nfailed = %d"ANSI_COLOR_RESET"\n", ntests, nfailed); @@ -263,6 +268,8 @@ int main(int argc, char **argv) ND1 = read_positions(file,fileformat, sizeof(double), 4, &X1, &Y1, &Z1, &weights1); nthreads = get_nthreads_from_affinity(); + read_binfile(binfile_lin, &bins_lin); + strncpy(current_file1,file,MAXLEN); reset_bin_refine_factors(&options); @@ -346,5 +353,6 @@ int main(int argc, char **argv) } free(X1);free(Y1);free(Z1);free(weights1); + free_binarray(&bins_lin); return failed; } diff --git a/theory/wp/countpairs_wp.c b/theory/wp/countpairs_wp.c index 0d61c6d1..1f91fd50 100644 --- a/theory/wp/countpairs_wp.c +++ b/theory/wp/countpairs_wp.c @@ -33,7 +33,7 @@ void free_results_wp(results_countpairs_wp *results) int countpairs_wp(const int64_t ND, void * restrict X, void * restrict Y, void * restrict Z, const double boxsize, const int numthreads, - const char *binfile, + binarray *bins, const double pimax, results_countpairs_wp *results, struct config_options *options, @@ -54,7 +54,7 @@ int countpairs_wp(const int64_t ND, void * restrict X, void * restrict Y, void * return countpairs_wp_float(ND, (float *) X, (float *) Y, (float *) Z, boxsize, numthreads, - binfile, + bins, pimax, results, options, @@ -63,7 +63,7 @@ int countpairs_wp(const int64_t ND, void * restrict X, void * restrict Y, void * return countpairs_wp_double(ND, (double *) X, (double *) Y, (double *) Z, boxsize, numthreads, - binfile, + bins, pimax, results, options, diff --git a/theory/wp/countpairs_wp.h b/theory/wp/countpairs_wp.h index e23fdc9e..11c82259 100644 --- a/theory/wp/countpairs_wp.h +++ b/theory/wp/countpairs_wp.h @@ -15,7 +15,7 @@ extern "C" { #include "defs.h" #include - + //define the results structure typedef struct{ uint64_t *npairs; @@ -26,11 +26,11 @@ extern "C" { double pimax; int nbin; } results_countpairs_wp; - + extern int countpairs_wp(const int64_t ND1, void * restrict X1, void * restrict Y1, void * restrict Z1, const double boxsize, const int numthreads, - const char *binfile, + binarray *bins, const double pimax, results_countpairs_wp *result, struct config_options *options, diff --git a/theory/wp/countpairs_wp_impl.c.src b/theory/wp/countpairs_wp_impl.c.src index c8d2856f..bb4e2e03 100644 --- a/theory/wp/countpairs_wp_impl.c.src +++ b/theory/wp/countpairs_wp_impl.c.src @@ -148,7 +148,7 @@ wp_func_ptr_DOUBLE wp_driver_DOUBLE(const struct config_options *options) int countpairs_wp_DOUBLE(const int64_t ND, DOUBLE * restrict X, DOUBLE * restrict Y, DOUBLE * restrict Z, const double boxsize, const int numthreads, - const char *binfile, + binarray *bins, const double pimax, results_countpairs_wp *results, struct config_options *options, @@ -215,16 +215,15 @@ int countpairs_wp_DOUBLE(const int64_t ND, DOUBLE * restrict X, DOUBLE * restric /*********************** *initializing the bins ************************/ - double *rupp; - double rpmin,rpmax; - int nrpbins; - setup_bins(binfile,&rpmin,&rpmax,&nrpbins,&rupp); + double *rupp = bins->edges; + int nrpbins = bins->nedges; + double rpmin=bins->edges[0], rpmax=bins->edges[bins->nedges-1]; if( ! (rpmin >=0 && rpmax > 0.0 && rpmin < rpmax && nrpbins > 0)) { - fprintf(stderr,"Error: Could not setup with R bins correctly. (rmin = %lf, rmax = %lf, with nbins = %d). Expected non-zero rmin/rmax with rmax > rmin and nbins >=1 \n", + fprintf(stderr,"Error: Could not setup with r bins correctly. (rmin = %lf, rmax = %lf, with nbins = %d). Expected non-zero rmin/rmax with rmax > rmin and nbins >=1 \n", rpmin, rpmax, nrpbins); return EXIT_FAILURE; } - detect_bin_type(rupp, nrpbins, &(options->bin_type), options->verbose); + detect_bin_type(bins, &(options->bin_type), options->verbose); const DOUBLE xmin = 0.0, xmax=boxsize; const DOUBLE ymin = 0.0, ymax=boxsize; @@ -308,7 +307,6 @@ int countpairs_wp_DOUBLE(const int64_t ND, DOUBLE * restrict X, DOUBLE * restric if(all_cell_pairs == NULL) { free_cellarray_DOUBLE(lattice, totncells); - free(rupp); return EXIT_FAILURE; } @@ -316,7 +314,6 @@ int countpairs_wp_DOUBLE(const int64_t ND, DOUBLE * restrict X, DOUBLE * restric wp_func_ptr_DOUBLE wp_function_DOUBLE = wp_driver_DOUBLE(options); if(wp_function_DOUBLE == NULL) { free_cellarray_DOUBLE(lattice, totncells); - free(rupp); return EXIT_FAILURE; } @@ -347,7 +344,6 @@ int countpairs_wp_DOUBLE(const int64_t ND, DOUBLE * restrict X, DOUBLE * restric if(need_weightavg) { matrix_free((void**) all_weightavg, numthreads); } - free(rupp); return EXIT_FAILURE; } @@ -440,7 +436,7 @@ int countpairs_wp_DOUBLE(const int64_t ND, DOUBLE * restrict X, DOUBLE * restric this_cell_pair->min_dx, this_cell_pair->min_dy, this_cell_pair->min_dz, this_cell_pair->closest_x1, this_cell_pair->closest_y1, this_cell_pair->closest_z1, this_rpavg, npairs, - this_weightavg, extra->weight_method, options->bin_type); + this_weightavg, extra->weight_method, extra->pair_weight, options->bin_type); /* This actually causes a race condition under OpenMP - but mostly I care that an error occurred - rather than the exact value of @@ -482,7 +478,6 @@ int countpairs_wp_DOUBLE(const int64_t ND, DOUBLE * restrict X, DOUBLE * restric free_cellarray_DOUBLE(lattice, totncells); if(abort_status != EXIT_SUCCESS || interrupt_status_wp_DOUBLE != EXIT_SUCCESS) { /* Cleanup memory here if aborting */ - free(rupp); #if defined(_OPENMP) matrix_free((void **) all_npairs,numthreads); if(options->need_avg_sep) { @@ -567,10 +562,9 @@ int countpairs_wp_DOUBLE(const int64_t ND, DOUBLE * restrict X, DOUBLE * restric // The self-pairs have non-zero weight, though. So, fix that here. if(need_weightavg){ // Keep in mind this is an autocorrelation (i.e. only one particle set to consider) + pair_struct_DOUBLE pair; + set_pair_struct_DOUBLE(&pair, (weight_struct_DOUBLE *) &(extra->weights0), (weight_struct_DOUBLE *) &(extra->weights0), &(extra->pair_weight)); weight_func_t_DOUBLE weight_func = get_weight_func_by_method_DOUBLE(extra->weight_method); - pair_struct_DOUBLE pair = {.num_weights = extra->weights0.num_weights, - .dx.d=0., .dy.d=0., .dz.d=0., // always 0 separation - .parx.d=0., .pary.d=0., .parz.d=0.}; for(int64_t j = 0; j < ND; j++){ for(int w = 0; w < pair.num_weights; w++){ pair.weights0[w].d = ((DOUBLE *) extra->weights0.weights[w])[j]; @@ -585,7 +579,7 @@ int countpairs_wp_DOUBLE(const int64_t ND, DOUBLE * restrict X, DOUBLE * restric for(int i=0;i 0) { if(options->need_avg_sep) { - rpavg[i] /= (DOUBLE) npairs[i] ; + rpavg[i] /= need_weightavg ? weightavg[i] : (DOUBLE) npairs[i]; } if(need_weightavg) { weightavg[i] /= (DOUBLE) npairs[i]; @@ -605,7 +599,6 @@ int countpairs_wp_DOUBLE(const int64_t ND, DOUBLE * restrict X, DOUBLE * restric if(results->npairs == NULL || results->rupp == NULL || results->rpavg == NULL || results->wp == NULL || results->weightavg == NULL){ free_results_wp(results); - free(rupp); return EXIT_FAILURE; } @@ -653,7 +646,6 @@ int countpairs_wp_DOUBLE(const int64_t ND, DOUBLE * restrict X, DOUBLE * restric } rlow=results->rupp[i]; } - free(rupp); /* reset interrupt handlers to default */ RESET_INTERRUPT_HANDLERS(); diff --git a/theory/wp/countpairs_wp_impl.h.src b/theory/wp/countpairs_wp_impl.h.src index dbdc77ee..5736a070 100644 --- a/theory/wp/countpairs_wp_impl.h.src +++ b/theory/wp/countpairs_wp_impl.h.src @@ -30,14 +30,15 @@ extern "C" { const DOUBLE min_xdiff, const DOUBLE min_ydiff, const DOUBLE min_zdiff, const DOUBLE closest_icell_xpos, const DOUBLE closest_icell_ypos, const DOUBLE closest_icell_zpos, DOUBLE *src_rpavg, uint64_t *src_npairs, - DOUBLE *src_weightavg, const weight_method_t weight_method, const bin_type_t bin_type); + DOUBLE *src_weightavg, const weight_method_t weight_method, const pair_weight_struct pair_weight, + const bin_type_t bin_type); extern wp_func_ptr_DOUBLE wp_driver_DOUBLE(const struct config_options *options) __attribute__((warn_unused_result)); extern int countpairs_wp_DOUBLE(const int64_t ND1, DOUBLE * restrict X1, DOUBLE * restrict Y1, DOUBLE * restrict Z1, const double boxsize, const int numthreads, - const char *binfile, + binarray *bins, const double pimax, results_countpairs_wp *result, struct config_options *options, diff --git a/theory/wp/wp.c b/theory/wp/wp.c index 59549f4a..e69ebea1 100644 --- a/theory/wp/wp.c +++ b/theory/wp/wp.c @@ -48,7 +48,7 @@ int main(int argc, char *argv[]) char *binfile=NULL; DOUBLE pimax; char *weight_method_str=NULL; - + weight_method_t weight_method = NONE; int num_weights = 0; @@ -92,7 +92,7 @@ int main(int argc, char *argv[]) fprintf(stderr,"\t\t %s = `?'\n",argnames[i-1]); return EXIT_FAILURE; } - + /* Validate optional arguments */ int noptargs_given = argc - (nargs + 1); if(noptargs_given != 0 && noptargs_given != 3){ @@ -129,7 +129,7 @@ int main(int argc, char *argv[]) return EXIT_FAILURE; } #endif - + if(noptargs_given >= 3){ weight_method_str = argv[nargs + 1]; int wstatus = get_weight_method_by_name(weight_method_str, &weight_method); @@ -138,7 +138,7 @@ int main(int argc, char *argv[]) return EXIT_FAILURE; } num_weights = get_num_weights_by_method(weight_method); - + weights_file = argv[nargs + 2]; weights_fileformat = argv[nargs + 3]; } @@ -157,6 +157,8 @@ int main(int argc, char *argv[]) } fprintf(stderr,"\t\t -------------------------------------\n"); + binarray bins; + read_binfile(binfile, &bins); gettimeofday(&t0,NULL); /*---Read-data1-file----------------------------------*/ @@ -177,7 +179,7 @@ int main(int argc, char *argv[]) int64_t wND1 = read_columns_into_array(weights_file, weights_fileformat, sizeof(DOUBLE), num_weights, (void **) weights1); gettimeofday(&t1,NULL); read_time += ADD_DIFF_TIME(t0,t1); - + if(wND1 != ND1){ fprintf(stderr, "Error: read %"PRId64" lines from %s, but read %"PRId64" from %s\n", wND1, weights_file, ND1, file); return EXIT_FAILURE; @@ -195,7 +197,7 @@ int main(int argc, char *argv[]) for(int w = 0; w < num_weights; w++){ extra.weights0.weights[w] = (void *) weights1[w]; } - + /* If you want to change the bin refine factors */ /* const int bf[] = {2, 2, 1}; */ /* set_bin_refine_factors(&options, bf); */ @@ -203,7 +205,7 @@ int main(int argc, char *argv[]) int status = countpairs_wp(ND1, x1, y1, z1, boxsize, nthreads, - binfile, + &bins, pimax, &results, &options, @@ -212,11 +214,12 @@ int main(int argc, char *argv[]) for(int w = 0; w < num_weights; w++){ free(weights1[w]); } + free_binarray(&bins); if(status != EXIT_SUCCESS) { return status; } - + gettimeofday(&t1,NULL); double pair_time = ADD_DIFF_TIME(t0,t1); @@ -235,7 +238,7 @@ int main(int argc, char *argv[]) print_cell_timings(&options); free_cell_timings(&options); } - + //free the memory in the results struct free_results_wp(&results); diff --git a/theory/wp/wp_kernels.c.src b/theory/wp/wp_kernels.c.src index 965d82b1..83453377 100644 --- a/theory/wp/wp_kernels.c.src +++ b/theory/wp/wp_kernels.c.src @@ -29,7 +29,8 @@ static inline int wp_avx512_intrinsics_DOUBLE(DOUBLE *x0, DOUBLE *y0, DOUBLE *z0 const DOUBLE min_xdiff, const DOUBLE min_ydiff, const DOUBLE min_zdiff, const DOUBLE closest_icell_xpos, const DOUBLE closest_icell_ypos, const DOUBLE closest_icell_zpos, DOUBLE *src_rpavg, uint64_t *src_npairs, - DOUBLE *src_weightavg, const weight_method_t weight_method, const bin_type_t bin_type) + DOUBLE *src_weightavg, const weight_method_t weight_method, const pair_weight_struct pair_weight, + const bin_type_t bin_type) { #ifdef COUNT_VECTORIZED @@ -76,8 +77,8 @@ static inline int wp_avx512_intrinsics_DOUBLE(DOUBLE *x0, DOUBLE *y0, DOUBLE *z0 local_w0 = *weights0; local_w1 = *weights1; - pair.num_weights = local_w0.num_weights; - avx512_weight_func = get_avx512_weight_func_by_method_DOUBLE(weight_method); + set_pair_struct_DOUBLE(&pair, &local_w0, &local_w1, &pair_weight); + avx512_weight_func = get_avx512_weight_func_by_method_DOUBLE(weight_method); } const DOUBLE *zstart = z1, *zend = z1 + N1; @@ -244,6 +245,7 @@ static inline int wp_avx512_intrinsics_DOUBLE(DOUBLE *x0, DOUBLE *y0, DOUBLE *z0 if(need_rpavg || bin_type == BIN_LIN) { union_mDperp.m_Dperp = AVX512_MASKZ_SQRT_FLOAT(m_mask_left, r2); } + if(need_weightavg){ union_mweight.m_weights = avx512_weight_func(&pair); } @@ -268,6 +270,7 @@ static inline int wp_avx512_intrinsics_DOUBLE(DOUBLE *x0, DOUBLE *y0, DOUBLE *z0 } }//backwards loop over the bins } + if(need_rpavg && need_weightavg) union_mDperp.m_Dperp = AVX512_MASKZ_MULTIPLY_FLOATS(m_mask_left, union_mDperp.m_Dperp, union_mweight.m_weights); if(need_rpavg || need_weightavg || bin_type == BIN_LIN) { //Do I need this step of going via the union? accessing int[] -> AVX* vector might //cause alignment problems but accessing the ints from an AVX* @@ -328,7 +331,8 @@ static inline int wp_avx2_intrinsics_DOUBLE(DOUBLE *x0, DOUBLE *y0, DOUBLE *z0, const DOUBLE min_xdiff, const DOUBLE min_ydiff, const DOUBLE min_zdiff, const DOUBLE closest_icell_xpos, const DOUBLE closest_icell_ypos, const DOUBLE closest_icell_zpos, DOUBLE *src_rpavg, uint64_t *src_npairs, - DOUBLE *src_weightavg, const weight_method_t weight_method, const bin_type_t bin_type) + DOUBLE *src_weightavg, const weight_method_t weight_method, const pair_weight_struct pair_weight, + const bin_type_t bin_type) { #ifdef COUNT_VECTORIZED struct timespec tcell_start; @@ -383,8 +387,7 @@ static inline int wp_avx2_intrinsics_DOUBLE(DOUBLE *x0, DOUBLE *y0, DOUBLE *z0, local_w0 = *weights0; local_w1 = *weights1; - pair.num_weights = local_w0.num_weights; - + set_pair_struct_DOUBLE(&pair, &local_w0, &local_w1, &pair_weight); avx_weight_func = get_avx_weight_func_by_method_DOUBLE(weight_method); fallback_weight_func = get_weight_func_by_method_DOUBLE(weight_method); } @@ -507,7 +510,7 @@ static inline int wp_avx2_intrinsics_DOUBLE(DOUBLE *x0, DOUBLE *y0, DOUBLE *z0, pair.dy.a = m_ydiff; pair.dz.a = m_zdiff; } - const AVX2_FLOATS m_neg_pimax_mask = AVX_COMPARE_FLOATS(m_zdiff,-m_pimax,_CMP_GT_OQ); + const AVX2_FLOATS m_neg_pimax_mask = AVX2_COMPARE_FLOATS(m_zdiff,-m_pimax,_CMP_GT_OQ); if(AVX2_TEST_COMPARISON(m_neg_pimax_mask)==0) { continue; } @@ -585,6 +588,7 @@ static inline int wp_avx2_intrinsics_DOUBLE(DOUBLE *x0, DOUBLE *y0, DOUBLE *z0, } } } + if(need_rpavg && need_weightavg) union_mDperp.m_Dperp = AVX2_MULTIPLY_FLOATS(union_mDperp.m_Dperp, union_mweight.m_weights); if(need_rpavg || need_weightavg || bin_type == BIN_LIN) { union_rpbin.m_ibin = AVX2_TRUNCATE_FLOAT_TO_INT(m_rpbin); //protect the unroll pragma in case compiler is not icc. @@ -614,6 +618,7 @@ static inline int wp_avx2_intrinsics_DOUBLE(DOUBLE *x0, DOUBLE *y0, DOUBLE *z0, #ifdef COUNT_VECTORIZED serial_npairs++; #endif + const DOUBLE dz = *localz1++ - zpos; const DOUBLE dx = *localx1++ - xpos; const DOUBLE dy = *localy1++ - ypos; @@ -635,7 +640,7 @@ static inline int wp_avx2_intrinsics_DOUBLE(DOUBLE *x0, DOUBLE *y0, DOUBLE *z0, pair.dz.d = dz; } - DOUBLE r = (need_rpavg || bin_type == BIN_LIN) ? SQRT(r2):ZERO; + DOUBLE r = (need_rpavg || bin_type == BIN_LIN) ? SQRT(r2) : ZERO; const DOUBLE pairweight = need_weightavg ? fallback_weight_func(&pair) : ZERO; int kbin = 0; @@ -651,6 +656,7 @@ static inline int wp_avx2_intrinsics_DOUBLE(DOUBLE *x0, DOUBLE *y0, DOUBLE *z0, } npairs[kbin]++; if(need_rpavg) { + if(need_weightavg) r *= pairweight; rpavg[kbin] += r; } if(need_weightavg){ @@ -694,7 +700,8 @@ static inline int wp_avx_intrinsics_DOUBLE(DOUBLE *x0, DOUBLE *y0, DOUBLE *z0, c const DOUBLE min_xdiff, const DOUBLE min_ydiff, const DOUBLE min_zdiff, const DOUBLE closest_icell_xpos, const DOUBLE closest_icell_ypos, const DOUBLE closest_icell_zpos, DOUBLE *src_rpavg, uint64_t *src_npairs, - DOUBLE *src_weightavg, const weight_method_t weight_method, const bin_type_t bin_type) + DOUBLE *src_weightavg, const weight_method_t weight_method, const pair_weight_struct pair_weight, + const bin_type_t bin_type) { #ifdef COUNT_VECTORIZED struct timespec tcell_start; @@ -748,8 +755,7 @@ static inline int wp_avx_intrinsics_DOUBLE(DOUBLE *x0, DOUBLE *y0, DOUBLE *z0, c local_w0 = *weights0; local_w1 = *weights1; - pair.num_weights = local_w0.num_weights; - + set_pair_struct_DOUBLE(&pair, &local_w0, &local_w1, &pair_weight); avx_weight_func = get_avx_weight_func_by_method_DOUBLE(weight_method); fallback_weight_func = get_weight_func_by_method_DOUBLE(weight_method); } @@ -962,6 +968,7 @@ static inline int wp_avx_intrinsics_DOUBLE(DOUBLE *x0, DOUBLE *y0, DOUBLE *z0, c } } } + if(need_rpavg && need_weightavg) union_mDperp.m_Dperp = AVX_MULTIPLY_FLOATS(union_mDperp.m_Dperp, union_mweight.m_weights); if(need_rpavg || need_weightavg || bin_type == BIN_LIN) { union_rpbin.m_ibin = AVX_TRUNCATE_FLOAT_TO_INT(m_rpbin); //protect the unroll pragma in case compiler is not icc. @@ -991,6 +998,7 @@ static inline int wp_avx_intrinsics_DOUBLE(DOUBLE *x0, DOUBLE *y0, DOUBLE *z0, c #ifdef COUNT_VECTORIZED serial_npairs++; #endif + const DOUBLE dz = *localz1++ - zpos; const DOUBLE dx = *localx1++ - xpos; const DOUBLE dy = *localy1++ - ypos; @@ -1012,7 +1020,7 @@ static inline int wp_avx_intrinsics_DOUBLE(DOUBLE *x0, DOUBLE *y0, DOUBLE *z0, c pair.dz.d = dz; } - DOUBLE r = (need_rpavg || bin_type == BIN_LIN) ? SQRT(r2):ZERO; + DOUBLE r = (need_rpavg || bin_type == BIN_LIN) ? SQRT(r2) : ZERO; const DOUBLE pairweight = need_weightavg ? fallback_weight_func(&pair) : ZERO; int kbin = 0; @@ -1028,6 +1036,7 @@ static inline int wp_avx_intrinsics_DOUBLE(DOUBLE *x0, DOUBLE *y0, DOUBLE *z0, c } npairs[kbin]++; if(need_rpavg) { + if(need_weightavg) r *= pairweight; rpavg[kbin] += r; } if(need_weightavg){ @@ -1071,7 +1080,8 @@ static inline int wp_sse_intrinsics_DOUBLE(DOUBLE *x0, DOUBLE *y0, DOUBLE *z0, c const DOUBLE min_xdiff, const DOUBLE min_ydiff, const DOUBLE min_zdiff, const DOUBLE closest_icell_xpos, const DOUBLE closest_icell_ypos, const DOUBLE closest_icell_zpos, DOUBLE *src_rpavg, uint64_t *src_npairs, - DOUBLE *src_weightavg, const weight_method_t weight_method, const bin_type_t bin_type) + DOUBLE *src_weightavg, const weight_method_t weight_method, const pair_weight_struct pair_weight, + const bin_type_t bin_type) { #ifdef COUNT_VECTORIZED struct timespec tcell_start; @@ -1126,8 +1136,7 @@ static inline int wp_sse_intrinsics_DOUBLE(DOUBLE *x0, DOUBLE *y0, DOUBLE *z0, c local_w0 = *weights0; local_w1 = *weights1; - pair.num_weights = local_w0.num_weights; - + set_pair_struct_DOUBLE(&pair, &local_w0, &local_w1, &pair_weight); sse_weight_func = get_sse_weight_func_by_method_DOUBLE(weight_method); fallback_weight_func = get_weight_func_by_method_DOUBLE(weight_method); } @@ -1226,6 +1235,7 @@ static inline int wp_sse_intrinsics_DOUBLE(DOUBLE *x0, DOUBLE *y0, DOUBLE *z0, c #ifdef COUNT_VECTORIZED vectorized_npairs += SSE_NVEC; #endif + localx1 += SSE_NVEC; localy1 += SSE_NVEC; localz1 += SSE_NVEC; @@ -1324,6 +1334,7 @@ static inline int wp_sse_intrinsics_DOUBLE(DOUBLE *x0, DOUBLE *y0, DOUBLE *z0, c if(SSE_TEST_COMPARISON(m_mask_left) == 0) break; } } + if(need_rpavg && need_weightavg) union_mDperp.m_Dperp = SSE_MULTIPLY_FLOATS(union_mDperp.m_Dperp, union_mweight.m_weights); if(need_rpavg || need_weightavg || bin_type == BIN_LIN) { union_rpbin.m_ibin = SSE_TRUNCATE_FLOAT_TO_INT(m_rpbin); //protect the unroll pragma in case compiler is not icc. @@ -1371,7 +1382,7 @@ static inline int wp_sse_intrinsics_DOUBLE(DOUBLE *x0, DOUBLE *y0, DOUBLE *z0, c pair.dz.d = dz; } - DOUBLE r = (need_rpavg || bin_type == BIN_LIN) ? SQRT(r2):ZERO; + DOUBLE r = (need_rpavg || bin_type == BIN_LIN) ? SQRT(r2) : ZERO; const DOUBLE pairweight = need_weightavg ? fallback_weight_func(&pair) : ZERO; int kbin = 0; @@ -1387,6 +1398,7 @@ static inline int wp_sse_intrinsics_DOUBLE(DOUBLE *x0, DOUBLE *y0, DOUBLE *z0, c } npairs[kbin]++; if(need_rpavg) { + if(need_weightavg) r *= pairweight; rpavg[kbin] += r; } if(need_weightavg){ @@ -1428,7 +1440,8 @@ static inline int wp_fallback_DOUBLE(DOUBLE *x0, DOUBLE *y0, DOUBLE *z0, const w const DOUBLE min_xdiff, const DOUBLE min_ydiff, const DOUBLE min_zdiff, const DOUBLE closest_icell_xpos, const DOUBLE closest_icell_ypos, const DOUBLE closest_icell_zpos, DOUBLE *src_rpavg, uint64_t *src_npairs, - DOUBLE *src_weightavg, const weight_method_t weight_method, const bin_type_t bin_type) + DOUBLE *src_weightavg, const weight_method_t weight_method, const pair_weight_struct pair_weight, + const bin_type_t bin_type) { #ifdef COUNT_VECTORIZED struct timespec tcell_start; @@ -1468,8 +1481,7 @@ static inline int wp_fallback_DOUBLE(DOUBLE *x0, DOUBLE *y0, DOUBLE *z0, const w local_w0 = *weights0; local_w1 = *weights1; - pair.num_weights = local_w0.num_weights; - + set_pair_struct_DOUBLE(&pair, &local_w0, &local_w1, &pair_weight); weight_func = get_weight_func_by_method_DOUBLE(weight_method); } @@ -1483,7 +1495,6 @@ static inline int wp_fallback_DOUBLE(DOUBLE *x0, DOUBLE *y0, DOUBLE *z0, const w pair.weights0[w].d = *local_w0.weights[w]++; } - #if 0 /* are there any pairs possible with this particle and ANY of the j'th particles? @@ -1558,6 +1569,7 @@ static inline int wp_fallback_DOUBLE(DOUBLE *x0, DOUBLE *y0, DOUBLE *z0, const w #ifdef COUNT_VECTORIZED serial_npairs++; #endif + const DOUBLE dx = *localx1++ - xpos; const DOUBLE dy = *localy1++ - ypos; const DOUBLE dz = *localz1++ - zpos; @@ -1577,7 +1589,7 @@ static inline int wp_fallback_DOUBLE(DOUBLE *x0, DOUBLE *y0, DOUBLE *z0, const w pair.dz.d = dz; } - DOUBLE r = (need_rpavg || bin_type == BIN_LIN) ? SQRT(r2):ZERO; + DOUBLE r = (need_rpavg || bin_type == BIN_LIN) ? SQRT(r2) : ZERO; const DOUBLE pairweight = need_weightavg ? weight_func(&pair) : ZERO; int kbin = 0; @@ -1593,6 +1605,7 @@ static inline int wp_fallback_DOUBLE(DOUBLE *x0, DOUBLE *y0, DOUBLE *z0, const w } npairs[kbin]++; if(need_rpavg) { + if(need_weightavg) r *= pairweight; rpavg[kbin] += r; } if(need_weightavg){ diff --git a/theory/xi/countpairs_xi.c b/theory/xi/countpairs_xi.c index 6d3e8772..7872ca82 100644 --- a/theory/xi/countpairs_xi.c +++ b/theory/xi/countpairs_xi.c @@ -33,7 +33,7 @@ void free_results_xi(results_countpairs_xi *results) int countpairs_xi(const int64_t ND, void * restrict X, void * restrict Y, void * restrict Z, const double boxsize, const int numthreads, - const char *binfile, + binarray *bins, results_countpairs_xi *results, struct config_options *options, struct extra_options *extra) @@ -52,7 +52,7 @@ int countpairs_xi(const int64_t ND, void * restrict X, void * restrict Y, void * return countpairs_xi_float(ND, (float *) X, (float *) Y, (float *) Z, boxsize, numthreads, - binfile, + bins, results, options, extra); @@ -60,7 +60,7 @@ int countpairs_xi(const int64_t ND, void * restrict X, void * restrict Y, void * return countpairs_xi_double(ND, (double *) X, (double *) Y, (double *) Z, boxsize, numthreads, - binfile, + bins, results, options, extra); diff --git a/theory/xi/countpairs_xi.h b/theory/xi/countpairs_xi.h index 14c2120c..5363e23b 100644 --- a/theory/xi/countpairs_xi.h +++ b/theory/xi/countpairs_xi.h @@ -30,11 +30,11 @@ extern "C" { extern int countpairs_xi(const int64_t ND1, void * restrict X1, void * restrict Y1, void * restrict Z1, const double boxsize, const int numthreads, - const char *binfile, + binarray *bins, results_countpairs_xi *results, struct config_options *options, struct extra_options *extra); - + #ifdef __cplusplus } #endif diff --git a/theory/xi/countpairs_xi_impl.c.src b/theory/xi/countpairs_xi_impl.c.src index e8ce8c92..f442fd66 100644 --- a/theory/xi/countpairs_xi_impl.c.src +++ b/theory/xi/countpairs_xi_impl.c.src @@ -135,7 +135,7 @@ xi_func_ptr_DOUBLE xi_driver_DOUBLE(const struct config_options *options) int countpairs_xi_DOUBLE(const int64_t ND, DOUBLE * restrict X, DOUBLE * restrict Y, DOUBLE * restrict Z, const double boxsize, const int numthreads, - const char *binfile, + binarray *bins, results_countpairs_xi *results, struct config_options *options, struct extra_options *extra) @@ -200,16 +200,15 @@ int countpairs_xi_DOUBLE(const int64_t ND, DOUBLE * restrict X, DOUBLE * restric /*********************** *initializing the bins ************************/ - double *rupp; - int nbins; - double rmin,rmax; - setup_bins(binfile,&rmin,&rmax,&nbins,&rupp); + double *rupp = bins->edges; + int nbins = bins->nedges; + double rmin=bins->edges[0], rmax=bins->edges[bins->nedges-1]; if( ! (rmin >= 0.0 && rmax > 0.0 && rmin < rmax && nbins > 0)) { - fprintf(stderr,"Error: Could not setup with R bins correctly. (rmin = %lf, rmax = %lf, with nbins = %d). Expected non-zero rmin/rmax with rmax > rmin and nbins >=1 \n", + fprintf(stderr,"Error: Could not setup with r bins correctly. (rmin = %lf, rmax = %lf, with nbins = %d). Expected non-zero rmin/rmax with rmax > rmin and nbins >=1 \n", rmin, rmax, nbins); return EXIT_FAILURE; } - detect_bin_type(rupp, nbins, &(options->bin_type), options->verbose); + detect_bin_type(bins, &(options->bin_type), options->verbose); if(get_bin_refine_scheme(options) == BINNING_DFL) { if(rmax < 0.05*boxsize) { @@ -285,7 +284,6 @@ int countpairs_xi_DOUBLE(const int64_t ND, DOUBLE * restrict X, DOUBLE * restric options->periodic); if(all_cell_pairs == NULL) { free_cellarray_DOUBLE(lattice, totncells); - free(rupp); return EXIT_FAILURE; } @@ -294,7 +292,6 @@ int countpairs_xi_DOUBLE(const int64_t ND, DOUBLE * restrict X, DOUBLE * restric xi_func_ptr_DOUBLE xi_function_DOUBLE = xi_driver_DOUBLE(options); if(xi_function_DOUBLE == NULL) { free_cellarray_DOUBLE(lattice, totncells); - free(rupp); return EXIT_FAILURE; } @@ -321,7 +318,6 @@ int countpairs_xi_DOUBLE(const int64_t ND, DOUBLE * restrict X, DOUBLE * restric if(need_weightavg) { matrix_free((void**) all_weightavg, numthreads); } - free(rupp); return EXIT_FAILURE; } #else @@ -408,7 +404,7 @@ int countpairs_xi_DOUBLE(const int64_t ND, DOUBLE * restrict X, DOUBLE * restric this_cell_pair->min_dx, this_cell_pair->min_dy, this_cell_pair->min_dz, this_cell_pair->closest_x1, this_cell_pair->closest_y1, this_cell_pair->closest_z1, this_rpavg, npairs, - this_weightavg, extra->weight_method, options->bin_type); + this_weightavg, extra->weight_method, extra->pair_weight, options->bin_type); /* This actually causes a race condition under OpenMP - but mostly I care that an error occurred - rather than the exact value of @@ -443,7 +439,6 @@ int countpairs_xi_DOUBLE(const int64_t ND, DOUBLE * restrict X, DOUBLE * restric free_cellarray_DOUBLE(lattice, totncells); if(abort_status != EXIT_SUCCESS || interrupt_status_xi_DOUBLE != EXIT_SUCCESS) { /* Cleanup memory here if aborting */ - free(rupp); #if defined(_OPENMP) matrix_free((void **) all_npairs,numthreads); if(options->need_avg_sep) { @@ -530,10 +525,9 @@ int countpairs_xi_DOUBLE(const int64_t ND, DOUBLE * restrict X, DOUBLE * restric // The self-pairs have non-zero weight, though. So, fix that here. if(need_weightavg){ // Keep in mind this is an autocorrelation (i.e. only one particle set to consider) + pair_struct_DOUBLE pair; + set_pair_struct_DOUBLE(&pair, (weight_struct_DOUBLE *) &(extra->weights0), (weight_struct_DOUBLE *) &(extra->weights0), &(extra->pair_weight)); weight_func_t_DOUBLE weight_func = get_weight_func_by_method_DOUBLE(extra->weight_method); - pair_struct_DOUBLE pair = {.num_weights = extra->weights0.num_weights, - .dx.d=0., .dy.d=0., .dz.d=0., // always 0 separation - .parx.d=0., .pary.d=0., .parz.d=0.}; for(int64_t j = 0; j < ND; j++){ for(int w = 0; w < pair.num_weights; w++){ pair.weights0[w].d = ((DOUBLE *) extra->weights0.weights[w])[j]; @@ -552,7 +546,7 @@ int countpairs_xi_DOUBLE(const int64_t ND, DOUBLE * restrict X, DOUBLE * restric for(int i=0;i 0) { if(options->need_avg_sep) { - ravg[i] /= (DOUBLE) npairs[i] ; + ravg[i] /= need_weightavg ? weightavg[i] : (DOUBLE) npairs[i]; } if(need_weightavg) { weightavg[i] /= (DOUBLE) npairs[i]; @@ -570,7 +564,6 @@ int countpairs_xi_DOUBLE(const int64_t ND, DOUBLE * restrict X, DOUBLE * restric if(results->npairs == NULL || results->rupp == NULL || results->ravg == NULL || results->xi == NULL || results->weightavg == NULL) { free_results_xi(results); - free(rupp); return EXIT_FAILURE; } @@ -623,8 +616,6 @@ int countpairs_xi_DOUBLE(const int64_t ND, DOUBLE * restrict X, DOUBLE * restric rlow=results->rupp[i]; } - free(rupp); - /* reset interrupt handlers to default */ RESET_INTERRUPT_HANDLERS(); reset_bin_refine_factors(options); diff --git a/theory/xi/countpairs_xi_impl.h.src b/theory/xi/countpairs_xi_impl.h.src index 2de4ab64..1262de2c 100644 --- a/theory/xi/countpairs_xi_impl.h.src +++ b/theory/xi/countpairs_xi_impl.h.src @@ -28,14 +28,15 @@ extern "C" { const DOUBLE min_xdiff, const DOUBLE min_ydiff, const DOUBLE min_zdiff, const DOUBLE closest_icell_xpos, const DOUBLE closest_icell_ypos, const DOUBLE closest_icell_zpos, DOUBLE *src_rpavg, uint64_t *src_npairs, - DOUBLE *src_weightavg, const weight_method_t weight_method, const bin_type_t bin_type); + DOUBLE *src_weightavg, const weight_method_t weight_method, const pair_weight_struct pair_weight, + const bin_type_t bin_type); extern xi_func_ptr_DOUBLE xi_driver_DOUBLE(const struct config_options *options) __attribute__((warn_unused_result)); extern int countpairs_xi_DOUBLE(const int64_t ND1, DOUBLE * restrict X1, DOUBLE * restrict Y1, DOUBLE * restrict Z1, const double boxsize, const int numthreads, - const char *binfile, + binarray *bins, results_countpairs_xi *results, struct config_options *options, struct extra_options *extra); diff --git a/theory/xi/xi.c b/theory/xi/xi.c index 5329af60..a96ffab1 100644 --- a/theory/xi/xi.c +++ b/theory/xi/xi.c @@ -47,7 +47,7 @@ int main(int argc, char *argv[]) char *file=NULL,*fileformat=NULL,*weights_file=NULL,*weights_fileformat=NULL;; char *binfile=NULL; char *weight_method_str=NULL; - + weight_method_t weight_method = NONE; int num_weights = 0; @@ -92,7 +92,7 @@ int main(int argc, char *argv[]) } return EXIT_FAILURE; } - + /* Validate optional arguments */ int noptargs_given = argc - (nargs + 1); if(noptargs_given != 0 && noptargs_given != 3){ @@ -126,7 +126,7 @@ int main(int argc, char *argv[]) return EXIT_FAILURE; } num_weights = get_num_weights_by_method(weight_method); - + weights_file = argv[nargs + 2]; weights_fileformat = argv[nargs + 3]; } @@ -144,6 +144,8 @@ int main(int argc, char *argv[]) } fprintf(stderr,"\t\t -------------------------------------\n"); + binarray bins; + read_binfile(binfile, &bins); gettimeofday(&t0,NULL); /*---Read-data1-file----------------------------------*/ @@ -157,14 +159,14 @@ int main(int argc, char *argv[]) assert(y1[i] >= 0.0 && y1[i] <= boxsize && "ypos is within limits [0, boxsize]"); assert(z1[i] >= 0.0 && z1[i] <= boxsize && "zpos is within limits [0, boxsize]"); } - + /* Read weights file */ if(weights_file != NULL){ gettimeofday(&t0,NULL); int64_t wND1 = read_columns_into_array(weights_file, weights_fileformat, sizeof(DOUBLE), num_weights, (void **) weights1); gettimeofday(&t1,NULL); read_time += ADD_DIFF_TIME(t0,t1); - + if(wND1 != ND1){ fprintf(stderr, "Error: read %"PRId64" lines from %s, but read %"PRId64" from %s\n", wND1, weights_file, ND1, file); return EXIT_FAILURE; @@ -176,7 +178,7 @@ int main(int argc, char *argv[]) gettimeofday(&t0,NULL); results_countpairs_xi results; struct config_options options = get_config_options(); - + /* Pack weights into extra options */ struct extra_options extra = get_extra_options(weight_method); for(int w = 0; w < num_weights; w++){ @@ -189,7 +191,7 @@ int main(int argc, char *argv[]) int status = countpairs_xi(ND1, x1, y1, z1, boxsize, nthreads, - binfile, + &bins, &results, &options, &extra); @@ -197,6 +199,8 @@ int main(int argc, char *argv[]) for(int w = 0; w < num_weights; w++){ free(weights1[w]); } + free_binarray(&bins); + if(status != EXIT_SUCCESS) { return status; } diff --git a/theory/xi/xi_kernels.c.src b/theory/xi/xi_kernels.c.src index df899d64..c5da7f61 100644 --- a/theory/xi/xi_kernels.c.src +++ b/theory/xi/xi_kernels.c.src @@ -31,7 +31,8 @@ static inline int xi_avx512_intrinsics_DOUBLE(DOUBLE *x1, DOUBLE *y1, DOUBLE *z1 const DOUBLE closest_icell_xpos, const DOUBLE closest_icell_ypos, const DOUBLE closest_icell_zpos, DOUBLE *src_rpavg, uint64_t *src_npairs, - DOUBLE *src_weightavg, const weight_method_t weight_method, const bin_type_t bin_type) + DOUBLE *src_weightavg, const weight_method_t weight_method, const pair_weight_struct pair_weight, + const bin_type_t bin_type) { #ifdef COUNT_VECTORIZED @@ -78,8 +79,8 @@ static inline int xi_avx512_intrinsics_DOUBLE(DOUBLE *x1, DOUBLE *y1, DOUBLE *z1 local_w1 = *weights1; local_w2 = *weights2; - pair.num_weights = local_w1.num_weights; - avx512_weight_func = get_avx512_weight_func_by_method_DOUBLE(weight_method); + set_pair_struct_DOUBLE(&pair, &local_w0, &local_w1, &pair_weight); + avx512_weight_func = get_avx512_weight_func_by_method_DOUBLE(weight_method); } const DOUBLE *zstart = z2, *zend = z2 + N2; @@ -242,6 +243,7 @@ static inline int xi_avx512_intrinsics_DOUBLE(DOUBLE *x1, DOUBLE *y1, DOUBLE *z1 } }//backwards loop over the bins } + if(need_rpavg && need_weightavg) union_mDperp.m_Dperp = AVX512_MASKZ_MULTIPLY_FLOATS(m_mask_left, union_mDperp.m_Dperp, union_mweight.m_weights); if(need_rpavg || need_weightavg || bin_type == BIN_LIN) { //Do I need this step of going via the union? accessing int[] -> AVX* vector might //cause alignment problems but accessing the ints from an AVX* @@ -274,7 +276,7 @@ static inline int xi_avx512_intrinsics_DOUBLE(DOUBLE *x1, DOUBLE *y1, DOUBLE *z1 npairs_found += npairs[i]; src_npairs[i] += npairs[i]; if(need_rpavg) { - src_rpavg[i] += rpavg[i]; + src_rpavg[i] += rpavg[i]; } if(need_weightavg) { src_weightavg[i] += weightavg[i]; @@ -305,7 +307,8 @@ static inline int xi_avx_intrinsics_DOUBLE(DOUBLE *x1, DOUBLE *y1, DOUBLE *z1, c const DOUBLE min_xdiff, const DOUBLE min_ydiff, const DOUBLE min_zdiff, const DOUBLE closest_icell_xpos, const DOUBLE closest_icell_ypos, const DOUBLE closest_icell_zpos, DOUBLE *src_ravg, uint64_t *src_npairs, - DOUBLE *src_weightavg, const weight_method_t weight_method, const bin_type_t bin_type) + DOUBLE *src_weightavg, const weight_method_t weight_method, const pair_weight_struct pair_weight, + const bin_type_t bin_type) { uint64_t npair[nbin]; AVX_FLOATS m_rupp_sqr[nbin]; @@ -349,13 +352,12 @@ static inline int xi_avx_intrinsics_DOUBLE(DOUBLE *x1, DOUBLE *y1, DOUBLE *z1, c weight_func_t_DOUBLE fallback_weight_func = NULL; if(need_weightavg){ // Same particle list, new copy of num_weights pointers into that list - local_w1 = *weights1; - local_w2 = *weights2; - - pair.num_weights = local_w1.num_weights; + local_w1 = *weights1; + local_w2 = *weights2; - avx_weight_func = get_avx_weight_func_by_method_DOUBLE(weight_method); - fallback_weight_func = get_weight_func_by_method_DOUBLE(weight_method); + set_pair_struct_DOUBLE(&pair, &local_w1, &local_w2, &pair_weight); + avx_weight_func = get_avx_weight_func_by_method_DOUBLE(weight_method); + fallback_weight_func = get_weight_func_by_method_DOUBLE(weight_method); } const DOUBLE *zstart = z2, *zend = z2 + N2; @@ -525,6 +527,7 @@ static inline int xi_avx_intrinsics_DOUBLE(DOUBLE *x1, DOUBLE *y1, DOUBLE *z1, c } } } + if(need_ravg && need_weightavg) union_mDperp.m_Dperp = AVX_MULTIPLY_FLOATS(union_mDperp.m_Dperp, union_mweight.m_weights); if(need_ravg || need_weightavg || bin_type == BIN_LIN) { union_rbin.m_ibin = AVX_TRUNCATE_FLOAT_TO_INT(m_rbin); //protect the unroll pragma in case compiler is not icc. @@ -550,6 +553,7 @@ static inline int xi_avx_intrinsics_DOUBLE(DOUBLE *x1, DOUBLE *y1, DOUBLE *z1, c //remainder loop for(;jnum_weights = weight_st1->num_weights; + weight_st0->num_integer_weights = weight_st1->num_integer_weights; +} + + +static inline int get_num_weights_by_method(const weight_method_t method) { + switch (method) { case PAIR_PRODUCT: return 1; + case INVERSE_BITWISE: + return 0; // we can e.g. have only angular upweighting default: - case NONE: return 0; } + return 0; +} + + +static inline int set_weight_struct(weight_struct* weight_st, const weight_method_t method, const weight_type_t* type, const int8_t num_weights) { + // index is 0 (first weights) or 1 (second weights) + weight_st->num_weights = num_weights; + if (num_weights > MAX_NUM_WEIGHTS) { + fprintf(stderr,"Error: %d weight arrays are provided, but only %d are supported\n", num_weights, MAX_NUM_WEIGHTS); + return EXIT_FAILURE; + } + if (num_weights < 0) { + weight_st->num_weights = get_num_weights_by_method(method); + } + char itemtype[MAX_NUM_WEIGHTS]; + for (int w=0; wnum_weights; w++) { + if (type == NULL) { + switch (method) { + case INVERSE_BITWISE: + itemtype[w] = INT_TYPE; + break; + default: + itemtype[w] = FLOAT_TYPE; + } + } + else { + itemtype[w] = type[w]; + } + switch (method) { + case PAIR_PRODUCT: + if (itemtype[w] == INT_TYPE) { + fprintf(stderr,"Error: pair_product weights only supports floating weights\n"); + return EXIT_FAILURE; + } + break; + default: + break; + } + } + // check weights are first ints, then (optionally) float + weight_st->num_integer_weights = 0; + if (method == INVERSE_BITWISE) { + int first_float = 0; + for (int w=0; wnum_weights; w++) { + if (itemtype[w] == INT_TYPE) { + if (first_float) { + fprintf(stderr,"Error: inverse_bitwise weights should first include integer weights, then float weights\n"); + return EXIT_FAILURE; + } + weight_st->num_integer_weights++; + } else { + first_float = w; + } + } + } + //printf("Found %d integer weights among %d weights.\n",weight_st->num_integer_weights,weight_st->num_weights); + return EXIT_SUCCESS; +} + + +static inline int set_pair_weight_struct(pair_weight_struct* pair_weight_st, void* sep, void* weight, const uint8_t num, + const int8_t noffset, const double default_value) { + pair_weight_st->weight = weight; + pair_weight_st->sep = sep; + pair_weight_st->num = num; + pair_weight_st->noffset = noffset; + pair_weight_st->default_value = default_value; + //printf("Found %d pair weights.\n",num); + return EXIT_SUCCESS; } + /* Maps a name to weighting method `method` will be set on return. */ @@ -386,17 +486,75 @@ static inline int get_weight_method_by_name(const char *name, weight_method_t *m *method = PAIR_PRODUCT; return EXIT_SUCCESS; } + if(strcmp(name, "inverse_bitwise") == 0){ + *method = INVERSE_BITWISE; + return EXIT_SUCCESS; + } return EXIT_FAILURE; } + +typedef struct { + double *edges; + int nedges; +} binarray; + + +static inline int set_binarray(binarray *bins, double* edges, int nedges) +{ + bins->nedges = nedges; + bins->edges = (double *) malloc(sizeof(double) * bins->nedges); + if (bins->edges == NULL){ + fprintf(stderr,"malloc for %d bins failed...\n",bins->nedges); + return EXIT_FAILURE; + } + //bins->edges = (double *) my_malloc(sizeof(double), (int64_t) bins->nedges); + for (int ii=0; iinedges; ii++) bins->edges[ii] = edges[ii]; + return EXIT_SUCCESS; +} + + +static inline int detect_bin_type(binarray *bins, bin_type_t *bin_type, uint8_t verbose) +{ + if (*bin_type == BIN_AUTO) { + // if linear spacing, return BIN_LIN, else BIN_CUSTOM + const double atol = 1e-8; // same tol as numpy.allclose + const double rtol = 1e-5; + double rmin = bins->edges[0]; + double rstep = (bins->edges[bins->nedges-1] - bins->edges[0])/(bins->nedges - 1); + *bin_type = BIN_LIN; + for (int ii=1; iinedges; ii++) { + double pred = rmin + rstep*ii; + if ((fabs(bins->edges[ii] - pred) > atol)||(fabs(bins->edges[ii] - pred) > rtol * fabs(pred))) { + *bin_type = BIN_CUSTOM; + break; + } + } + } + if (verbose) { + if (*bin_type == BIN_LIN) fprintf(stderr,"Linear binning\n"); + else fprintf(stderr,"Custom binning\n"); + } + return EXIT_SUCCESS; +} + + +static inline int free_binarray(binarray *bins) +{ + free(bins->edges); + return EXIT_SUCCESS; +} + + struct extra_options { // Two possible weight_structs (at most we will have two loaded sets of particles) weight_struct weights0; weight_struct weights1; + pair_weight_struct pair_weight; weight_method_t weight_method; // the function that will get called to give the weight of a particle pair - uint8_t reserved[EXTRA_OPTIONS_HEADER_SIZE - 2*sizeof(weight_struct) - sizeof(weight_method_t)]; + uint8_t reserved[EXTRA_OPTIONS_HEADER_SIZE - 2*sizeof(weight_struct) - sizeof(weight_method_t) - sizeof(pair_weight_struct)]; }; // weight_method determines the number of various weighting arrays that we allocate @@ -408,10 +566,9 @@ static inline struct extra_options get_extra_options(const weight_method_t weigh extra.weight_method = weight_method; - weight_struct *w0 = &(extra.weights0); - weight_struct *w1 = &(extra.weights1); - w0->num_weights = get_num_weights_by_method(extra.weight_method); - w1->num_weights = w0->num_weights; + set_weight_struct(&(extra.weights0), weight_method, NULL, -1); + set_weight_struct(&(extra.weights1), weight_method, NULL, -1); + set_pair_weight_struct(&(extra.pair_weight), NULL, NULL, 0, 1, 0.); return extra; } diff --git a/utils/function_precision.h b/utils/function_precision.h index 63c57cc1..e3537bed 100644 --- a/utils/function_precision.h +++ b/utils/function_precision.h @@ -92,6 +92,24 @@ extern "C" { #define MAX_POSITIVE_FLOAT FLT_MAX #endif +#include + +#ifdef DOUBLE_PREC +#define LONG uint64_t +#if defined(__GNUC__) || defined(__GNUG__) +#define POPCOUNT(X) __builtin_popcountll(X) +#else +#define POPCOUNT(X) _popcnt32(X) +#endif +#else +#define LONG uint32_t +#if defined(__GNUC__) || defined(__GNUG__) +#define POPCOUNT(X) __builtin_popcount(X) +#else +#define POPCOUNT(X) _popcnt64(X) +#endif +#endif + #ifdef __cplusplus } #endif diff --git a/utils/gridlink_impl.c.src b/utils/gridlink_impl.c.src index ad2304a7..72aa52ac 100644 --- a/utils/gridlink_impl.c.src +++ b/utils/gridlink_impl.c.src @@ -34,7 +34,7 @@ void free_cellarray_DOUBLE(cellarray_DOUBLE *lattice, const int64_t totncells) { // `totncells` is currently unused, but no need to break the C API. (void) totncells; - + // If we have not copied the particles, the lattice does not own the memory // and the only thing to free is the original index if(lattice[0].owns_memory == 0) { @@ -97,7 +97,7 @@ cellarray_DOUBLE * gridlink_DOUBLE(const int64_t NPART, DOUBLE *realW[MAX_NUM_WEIGHTS] = {NULL}; // This initializes the whole array to NULL int w_alloc_status = 0; int num_weights = (WEIGHTS == NULL) ? 0 : WEIGHTS->num_weights; - + int64_t *cellstarts = (int64_t *) my_malloc(sizeof(*cellstarts), totncells); int64_t *all_cell_indices = (int64_t *) my_malloc(sizeof(*all_cell_indices), NPART); int64_t *original_indices = NULL; @@ -105,7 +105,7 @@ cellarray_DOUBLE * gridlink_DOUBLE(const int64_t NPART, realX = (DOUBLE *) my_malloc(sizeof(*realX), NPART); realY = (DOUBLE *) my_malloc(sizeof(*realY), NPART); realZ = (DOUBLE *) my_malloc(sizeof(*realZ), NPART); - + for(int w = 0; w < num_weights; w++){ realW[w] = (DOUBLE *) my_malloc(sizeof(*(realW[w])), NPART); w_alloc_status |= realW[w] == NULL; @@ -142,7 +142,7 @@ cellarray_DOUBLE * gridlink_DOUBLE(const int64_t NPART, if (ix>nmesh_x-1) ix--; /* this shouldn't happen, but . . . */ if (iy>nmesh_y-1) iy--; if (iz>nmesh_z-1) iz--; - + out_of_bounds += ix < 0 || ix >= nmesh_x || iy < 0 || iy >= nmesh_y || iz < 0 || iz >= nmesh_z; const int64_t icell = CONVERT_3D_INDEX_TO_LINEAR(ix, iy, iz, nmesh_x, nmesh_y, nmesh_z); @@ -151,9 +151,9 @@ cellarray_DOUBLE * gridlink_DOUBLE(const int64_t NPART, original_indices[i] = i; } } - + XRETURN(out_of_bounds == 0, NULL, "%"PRId64" particles are out of bounds. Check periodic wrapping?\n", out_of_bounds); - + // Now determine the number of particles per cell so each cell knows its global starting index // This information is used for both the copy and in-place versions #if defined(_OPENMP) @@ -176,7 +176,7 @@ cellarray_DOUBLE * gridlink_DOUBLE(const int64_t NPART, int tid = 0; #endif cell_occupation[tid] = my_calloc(sizeof(*(cell_occupation[0])), totncells); - + #if defined(_OPENMP) #pragma omp for schedule(static) #endif @@ -184,7 +184,7 @@ cellarray_DOUBLE * gridlink_DOUBLE(const int64_t NPART, cell_occupation[tid][all_cell_indices[i]]++; } } - + #if defined(_OPENMP) #pragma omp parallel for schedule(static) #endif @@ -205,6 +205,7 @@ cellarray_DOUBLE * gridlink_DOUBLE(const int64_t NPART, lattice[icell].nelements = 0; lattice[icell].owns_memory = 0; lattice[icell].weights.num_weights = num_weights; + lattice[icell].weights.num_integer_weights = WEIGHTS->num_integer_weights; lattice[icell].xbounds[0] = MAX_POSITIVE_FLOAT; lattice[icell].xbounds[1] = -MAX_POSITIVE_FLOAT; lattice[icell].ybounds[0] = MAX_POSITIVE_FLOAT; @@ -218,7 +219,7 @@ cellarray_DOUBLE * gridlink_DOUBLE(const int64_t NPART, // The first cell will "own" the memory for the whole lattice // This is safe because, by construction, the first cell has the original realX/Y/Z pointers lattice[icell].owns_memory = icell == 0; - + // The lattice will point into the "real" arrays lattice[icell].x = realX + cellstarts[icell]; lattice[icell].y = realY + cellstarts[icell]; @@ -231,7 +232,7 @@ cellarray_DOUBLE * gridlink_DOUBLE(const int64_t NPART, } else { // in-place also needs the original index lattice[icell].original_index = original_indices + cellstarts[icell]; - + // The lattice will point into the original arrays lattice[icell].x = X + cellstarts[icell]; lattice[icell].y = Y + cellstarts[icell]; @@ -243,7 +244,7 @@ cellarray_DOUBLE * gridlink_DOUBLE(const int64_t NPART, } } }//end of loop over totncells - + free(cellstarts); // Now we come to the final writes of the particles into their cells @@ -288,14 +289,14 @@ cellarray_DOUBLE * gridlink_DOUBLE(const int64_t NPART, lattice[icell].nelements++; } } // end parallel region - + for(int64_t c = 0; c < totncells; c++){ XRETURN(lattice[c].nelements == cell_occupation[0][c], NULL, "Error in %s> Expected to assign all particles = %"PRId64" into cells but only seem " "to have assigned %"PRId64".\n", __FUNCTION__, cell_occupation[0][c], lattice[c].nelements); } - + for(int t = 0; t < nthreads; t++) free(cell_occupation[t]); @@ -344,10 +345,10 @@ cellarray_DOUBLE * gridlink_DOUBLE(const int64_t NPART, SGLIB_ARRAY_QUICK_SORT(int64_t, all_cell_indices, NPART, SGLIB_NUMERIC_COMPARATOR, MULTIPLE_ARRAY_EXCHANGER); } } - + #undef MULTIPLE_ARRAY_EXCHANGER }//end of options->copy_particles == 0 - + free(all_cell_indices); //Done with re-ordering the particles /* Do we need to sort the particles in Z ? */ diff --git a/utils/gridlink_mocks_impl.c.src b/utils/gridlink_mocks_impl.c.src index 56047608..7446bba6 100644 --- a/utils/gridlink_mocks_impl.c.src +++ b/utils/gridlink_mocks_impl.c.src @@ -124,6 +124,7 @@ cellarray_mocks_DOUBLE * gridlink_mocks_DOUBLE(const int64_t NPART, lattice[icell].nelements=0; lattice[icell].owns_memory = 0; lattice[icell].weights.num_weights = (WEIGHTS == NULL) ? 0 : WEIGHTS->num_weights; + lattice[icell].weights.num_integer_weights = (WEIGHTS == NULL) ? 0 : WEIGHTS->num_integer_weights; lattice[icell].xbounds[0] = MAX_POSITIVE_FLOAT; lattice[icell].xbounds[1] = -MAX_POSITIVE_FLOAT; lattice[icell].ybounds[0] = MAX_POSITIVE_FLOAT; @@ -626,6 +627,7 @@ cellarray_mocks_DOUBLE * gridlink_mocks_theta_dec_DOUBLE(const int64_t NPART, lattice[icell].nelements = 0; lattice[icell].owns_memory = 0; lattice[icell].weights.num_weights = (WEIGHTS == NULL) ? 0 : WEIGHTS->num_weights; + lattice[icell].weights.num_integer_weights = (WEIGHTS == NULL) ? 0 : WEIGHTS->num_integer_weights; lattice[icell].xbounds[0] = MAX_POSITIVE_FLOAT; lattice[icell].xbounds[1] = -MAX_POSITIVE_FLOAT; lattice[icell].ybounds[0] = MAX_POSITIVE_FLOAT; @@ -1192,6 +1194,7 @@ cellarray_mocks_DOUBLE * gridlink_mocks_theta_ra_dec_DOUBLE(const int64_t NPART, // Now do the same for the weights lattice[icell].weights.num_weights = (WEIGHTS == NULL) ? 0 : WEIGHTS->num_weights; + lattice[icell].weights.num_integer_weights = (WEIGHTS == NULL) ? 0 : WEIGHTS->num_integer_weights; lattice[icell].dec_bounds[0]=MAX_POSITIVE_FLOAT; lattice[icell].dec_bounds[1]=-MAX_POSITIVE_FLOAT; diff --git a/utils/utils.c b/utils/utils.c index 7376647a..32fc5466 100644 --- a/utils/utils.c +++ b/utils/utils.c @@ -31,7 +31,7 @@ #include "macros.h" #include "utils.h" -#include "defs.h" +//#include "defs.h" #ifdef __MACH__ // OS X does not have clock_gettime, use clock_get_time #include /* mach_absolute_time -> really fast */ @@ -41,6 +41,7 @@ #include #endif + void get_max_float(const int64_t ND1, const float *cz1, float *czmax) { float max=*czmax; @@ -50,6 +51,7 @@ void get_max_float(const int64_t ND1, const float *cz1, float *czmax) *czmax = max; } + void get_max_double(const int64_t ND1, const double *cz1, double *czmax) { double max=*czmax; @@ -59,213 +61,6 @@ void get_max_double(const int64_t ND1, const double *cz1, double *czmax) *czmax = max; } -int detect_bin_type(const double *rupp, int nbin, bin_type_t *bin_type, uint8_t verbose) -{ - if (*bin_type == BIN_AUTO) { - // if linear spacing, return BIN_LIN, else BIN_CUSTOM - const double atol = 1e-8; // same tol as numpy.allclose - const double rtol = 1e-5; - double rmin = rupp[0]; - double rstep = (rupp[nbin-1] - rupp[0])/(nbin - 1); - *bin_type = BIN_LIN; - for (int ii=1; ii atol)||(fabs((rupp[ii] - pred)/pred) > rtol)) { - *bin_type = BIN_CUSTOM; - break; - } - } - } - if (verbose) { - if (*bin_type == BIN_LIN) fprintf(stderr,"Linear binning\n"); - else fprintf(stderr,"Custom binning\n"); - } - return EXIT_SUCCESS; -} - -int detect_bin_type_double(const double *rupp, int nbin, bin_type_t *bin_type, uint8_t verbose) -{ - if (*bin_type == BIN_AUTO) { - // if linear spacing, return BIN_LIN, else BIN_CUSTOM - const double atol = 1e-8; // same tol as numpy.allclose - const double rtol = 1e-5; - double rmin = rupp[0]; - double rstep = (rupp[nbin-1] - rupp[0])/(nbin - 1); - *bin_type = BIN_LIN; - for (int ii=1; ii atol)||(fabs((rupp[ii] - pred)/pred) > rtol)) { - *bin_type = BIN_CUSTOM; - break; - } - } - } - if (verbose) { - if (*bin_type == BIN_LIN) fprintf(stderr,"Linear binning\n"); - else fprintf(stderr,"Custom binning\n"); - } - return EXIT_SUCCESS; -} - -int detect_bin_type_float(const float *rupp, int nbin, bin_type_t *bin_type, uint8_t verbose) -{ - if (*bin_type == BIN_AUTO) { - // if linear spacing, return BIN_LIN, else BIN_CUSTOM - const float atol = 1e-8; // same tol as numpy.allclose - const float rtol = 1e-5; - float rmin = rupp[0]; - float rstep = (rupp[nbin-1] - rupp[0])/(nbin - 1); - *bin_type = BIN_LIN; - for (int ii=1; ii atol)||(fabs((rupp[ii] - pred)/pred) > rtol)) { - *bin_type = BIN_CUSTOM; - break; - } - } - } - if (verbose) { - if (*bin_type == BIN_LIN) fprintf(stderr,"Linear binning\n"); - else fprintf(stderr,"Custom binning\n"); - } - return EXIT_SUCCESS; -} - -int setup_bins(const char *fname, double *rmin, double *rmax, int *nbin, double **rupp) -{ - //set up the bins according to the binned data file - //the form of the data file should be - const int MAXBUFSIZE=1000; - char buf[MAXBUFSIZE]; - FILE *fp=NULL; - double low,hi; - const char comment='#'; - const int nitems=2; - int nread=0; - *nbin = ((int) getnumlines(fname,comment))+1; - *rupp = my_calloc(sizeof(double),*nbin+1); - - fp = my_fopen(fname,"r"); - if(fp == NULL) { - free(*rupp); - return EXIT_FAILURE; - } - int index=1; - while(1) { - if(fgets(buf,MAXBUFSIZE,fp)!=NULL) { - nread=sscanf(buf,"%lf %lf",&low,&hi); - if(nread==nitems) { - - if(index==1) { - *rmin=low; - (*rupp)[0]=low; - } - - (*rupp)[index] = hi; - index++; - } - } else { - break; - } - } - *rmax = (*rupp)[index-1]; - fclose(fp); - - (*rupp)[*nbin] = *rmax; - (*rupp)[*nbin-1] = *rmax; - - return EXIT_SUCCESS; -} - -int setup_bins_double(const char *fname, double *rmin, double *rmax, int *nbin, double **rupp) -{ - //set up the bins according to the binned data file - //the form of the data file should be - const int MAXBUFSIZE=1000; - char buf[MAXBUFSIZE]; - double low,hi; - const char comment='#'; - const int nitems=2; - int nread=0; - *nbin = ((int) getnumlines(fname,comment))+1; - *rupp = my_calloc(sizeof(double),*nbin+1); - - FILE *fp = my_fopen(fname,"r"); - if(fp == NULL) { - free(*rupp); - return EXIT_FAILURE; - } - int index=1; - while(1) { - if(fgets(buf,MAXBUFSIZE,fp)!=NULL) { - nread=sscanf(buf,"%lf %lf",&low,&hi); - if(nread==nitems) { - if(index==1) { - *rmin=low; - (*rupp)[0]=low; - } - - (*rupp)[index] = hi; - index++; - } - } else { - break; - } - } - *rmax = (*rupp)[index-1]; - fclose(fp); - - (*rupp)[*nbin] = *rmax; - (*rupp)[*nbin-1] = *rmax; - - return EXIT_SUCCESS; -} - -int setup_bins_float(const char *fname, float *rmin, float *rmax, int *nbin, float **rupp) -{ - //set up the bins according to the binned data file - //the form of the data file should be - const int MAXBUFSIZE=1000; - char buf[MAXBUFSIZE]; - float low,hi; - const char comment='#'; - const int nitems=2; - int nread=0; - *nbin = ((int) getnumlines(fname,comment))+1; - *rupp = my_calloc(sizeof(float),*nbin+1); - - FILE *fp = my_fopen(fname,"r"); - if(fp == NULL) { - free(*rupp); - return EXIT_FAILURE; - } - int index=1; - while(1) { - if(fgets(buf,MAXBUFSIZE,fp)!=NULL) { - nread=sscanf(buf,"%f %f",&low,&hi); - if(nread==nitems) { - - if(index==1) { - *rmin=low; - (*rupp)[0]=low; - } - - (*rupp)[index] = hi; - index++; - } - } else { - break; - } - } - *rmax = (*rupp)[index-1]; - fclose(fp); - - (*rupp)[*nbin] =* rmax; - (*rupp)[*nbin-1] =* rmax; - - return EXIT_SUCCESS; -} - int run_system_call(const char *execstring) { @@ -334,6 +129,7 @@ size_t my_fwrite(void *ptr, size_t size, size_t nmemb, FILE *stream) return nwritten; } + size_t my_fread(void *ptr, size_t size, size_t nmemb, FILE *stream) { size_t nread; @@ -347,6 +143,7 @@ size_t my_fread(void *ptr, size_t size, size_t nmemb, FILE *stream) return nread; } + int my_fseek(FILE *stream, long offset, int whence) { int err=fseek(stream,offset,whence); @@ -377,6 +174,7 @@ int my_snprintf(char *buffer,int len,const char *format, ...) return nwritten; } + int is_big_endian(void) { union { @@ -387,6 +185,7 @@ int is_big_endian(void) return e.c[0]; } + void byte_swap(char * const in, const size_t size, char *out) { if(size > 16) { @@ -410,7 +209,6 @@ void byte_swap(char * const in, const size_t size, char *out) } - //Taken from the inter-webs: http://stackoverflow.com/questions/1024389/print-an-int-in-binary-representation-using-c char * int2bin(int a, char *buffer, int buf_size) { @@ -571,7 +369,7 @@ void* my_malloc(size_t size,int64_t N) -void* my_calloc(size_t size,int64_t N) +void* my_calloc(size_t size, int64_t N) { void *x = calloc((size_t) N, size); if (x==NULL) { @@ -677,8 +475,6 @@ void matrix_free(void **m,int64_t nrow) } - - void *** volume_malloc(size_t size,int64_t nrow,int64_t ncol,int64_t nframe) { void ***v = (void ***) my_malloc(sizeof(void **),nrow); @@ -782,7 +578,7 @@ void volume_free(void ***v,int64_t nrow,int64_t ncol) -int64_t getnumlines(const char *fname,const char comment) +int64_t getnumlines(const char *fname, const char comment) { const int MAXLINESIZE = 10000; int64_t nlines=0; @@ -815,33 +611,6 @@ int64_t getnumlines(const char *fname,const char comment) } -int test_all_files_present(const int nfiles, ...) -{ - /* sets i'th bit for i'th missing file - return value is 0 *iff* all files are present - and readable. - */ - - int absent=0; - va_list filenames; - va_start(filenames, nfiles); - XASSERT(nfiles <= 31, "Can only test for 31 files simultaneously. nfiles = %d \n",nfiles); - for(int i=0;inum_weights = weights0->num_weights; + pair->num_integer_weights = weights1->num_integer_weights; + pair->pair_weight.weight = pair_w->weight; + pair->pair_weight.sep = pair_w->sep; + pair->pair_weight.num = pair_w->num; + pair->noffset = pair_w->noffset; + pair->default_value = (DOUBLE) pair_w->default_value; + pair->dx.d = 0.; pair->dy.d = 0.; pair->dz.d = 0.; + pair->parx.d = 0.; pair->pary.d = 0.; pair->parz.d = 0.; + pair->costheta.d = 1.; + return EXIT_SUCCESS; +} + + +typedef DOUBLE (*weight_func_t_DOUBLE)(pair_struct_DOUBLE*); #ifdef __AVX512F__ -typedef AVX512_FLOATS (*avx512_weight_func_t_DOUBLE)(const pair_struct_DOUBLE*); +typedef AVX512_FLOATS (*avx512_weight_func_t_DOUBLE)(pair_struct_DOUBLE*); #endif #ifdef __AVX__ -typedef AVX_FLOATS (*avx_weight_func_t_DOUBLE)(const pair_struct_DOUBLE*); +typedef AVX_FLOATS (*avx_weight_func_t_DOUBLE)(pair_struct_DOUBLE*); #endif #ifdef __SSE4_2__ -typedef SSE_FLOATS (*sse_weight_func_t_DOUBLE)(const pair_struct_DOUBLE*); +typedef SSE_FLOATS (*sse_weight_func_t_DOUBLE)(pair_struct_DOUBLE*); #endif ////////////////////////////////// @@ -68,28 +97,192 @@ typedef SSE_FLOATS (*sse_weight_func_t_DOUBLE)(const pair_struct_DOUBLE*); /* * The pair weight is the product of the particle weights */ -static inline DOUBLE pair_product_DOUBLE(const pair_struct_DOUBLE *pair){ +static inline DOUBLE pair_product_DOUBLE(pair_struct_DOUBLE *pair){ return pair->weights0[0].d*pair->weights1[0].d; } #ifdef __AVX512F__ -static inline AVX512_FLOATS avx512_pair_product_DOUBLE(const pair_struct_DOUBLE *pair){ +static inline AVX512_FLOATS avx512_pair_product_DOUBLE(pair_struct_DOUBLE *pair){ return AVX512_MULTIPLY_FLOATS(pair->weights0[0].a512, pair->weights1[0].a512); } #endif #ifdef __AVX__ -static inline AVX_FLOATS avx_pair_product_DOUBLE(const pair_struct_DOUBLE *pair){ +static inline AVX_FLOATS avx_pair_product_DOUBLE(pair_struct_DOUBLE *pair){ return AVX_MULTIPLY_FLOATS(pair->weights0[0].a, pair->weights1[0].a); } #endif #ifdef __SSE4_2__ -static inline SSE_FLOATS sse_pair_product_DOUBLE(const pair_struct_DOUBLE *pair){ +static inline SSE_FLOATS sse_pair_product_DOUBLE(pair_struct_DOUBLE *pair){ return SSE_MULTIPLY_FLOATS(pair->weights0[0].s, pair->weights1[0].s); } #endif +/* + * The bitwise weight is a bit product of the particle weights + */ +static inline DOUBLE inverse_bitwise_DOUBLE(pair_struct_DOUBLE *pair){ + int nbits = pair->noffset; + //printf("%d ", nbits); + for (int w=0;wnum_integer_weights;w++) { + //printf("w%d %ld %ld\n", w, *((LONG *) &(pair->weights0[w].d)), *((LONG *) &(pair->weights1[w].d))); + nbits += POPCOUNT(*((LONG *) &(pair->weights0[w].d)) & *((LONG *) &(pair->weights1[w].d))); + } + DOUBLE weight = (nbits == 0) ? pair->default_value : 1./nbits; + for (int w=pair->num_integer_weights; wnum_weights; w++) { + weight *= pair->weights0[w].d*pair->weights1[w].d; + } + int num = pair->pair_weight.num; + if (num) { + DOUBLE costheta = pair->costheta.d; + DOUBLE *pair_sep = pair->pair_weight.sep; + if (costheta > pair_sep[num-1] || (costheta <= pair_sep[0])) { + return weight; + } + else { + DOUBLE *pair_weight = pair->pair_weight.weight; + for (int kbin=0;kbinnoffset; + //printf("%d ", nbits); + for (int w=0;wnum_integer_weights;w++) { + //printf("w%d %ld %ld\n", w, *((LONG *) &(pair->weights0[w].d)), *((LONG *) &(pair->weights1[w].d))); + nbits += POPCOUNT(*((LONG *) &(pair->weights0[w].da512[jj])) & *((LONG *) &(pair->weights1[w].da512[jj]))); + } + DOUBLE weight = (nbits == 0) ? pair->default_value : 1./nbits; + for (int w=pair->num_integer_weights; wnum_weights; w++) { + weight *= pair->weights0[w].da512[jj]*pair->weights1[w].da512[jj]; + } + int num = pair->pair_weight.num; + if (num) { + DOUBLE costheta = pair->costheta.da512[jj]; + DOUBLE *pair_sep = pair->pair_weight.sep; + if (costheta > pair_sep[num-1] || (costheta <= pair_sep[0])) { + ; + } + else { + for (int kbin=0;kbinnoffset; + for (int w=0;wnum_integer_weights;w++) { + nbits += POPCOUNT(*((LONG *) &(pair->weights0[w].da[jj])) & *((LONG *) &(pair->weights1[w].da[jj]))); + } + DOUBLE weight = (nbits == 0) ? pair->default_value : 1./nbits; + for (int w=pair->num_integer_weights; wnum_weights; w++) { + weight *= pair->weights0[w].da[jj]*pair->weights1[w].da[jj]; + } + int num = pair->pair_weight.num; + if (num) { + DOUBLE costheta = pair->costheta.da[jj]; + DOUBLE *pair_sep = pair->pair_weight.sep; + if (costheta > pair_sep[num-1] || (costheta <= pair_sep[0])) { + ; + } + else { + DOUBLE *pair_weight = pair->pair_weight.weight; + for (int kbin=0;kbinnoffset; + //printf("%d ", nbits); + for (int w=0;wnum_integer_weights;w++) { + //printf("w%d %ld %ld\n", w, *((LONG *) &(pair->weights0[w].d)), *((LONG *) &(pair->weights1[w].d))); + nbits += POPCOUNT(*((LONG *) &(pair->weights0[w].ds[jj])) & *((LONG *) &(pair->weights1[w].ds[jj]))); + } + DOUBLE weight = (nbits == 0) ? pair->default_value : 1./nbits; + for (int w=pair->num_integer_weights; wnum_weights; w++) { + weight *= pair->weights0[w].ds[jj]*pair->weights1[w].ds[jj]; + } + int num = pair->pair_weight.num; + if (num) { + DOUBLE costheta = pair->costheta.ds[jj]; + DOUBLE *pair_sep = pair->pair_weight.sep; + if (costheta > pair_sep[num-1] || (costheta <= pair_sep[0])) { + ; + } + else { + DOUBLE *pair_weight = pair->pair_weight.weight; + for (int kbin=0;kbin