diff --git a/bgcArgoDMQC.egg-info/PKG-INFO b/bgcArgoDMQC.egg-info/PKG-INFO index 1cc91ec..232dd4e 100644 --- a/bgcArgoDMQC.egg-info/PKG-INFO +++ b/bgcArgoDMQC.egg-info/PKG-INFO @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: bgcArgoDMQC -Version: 0.2.10 +Version: 0.2.11 Summary: A python library for quality control of BGC-Argo data Home-page: https://github.com/ArgoCanada/bgcArgoDMQC Author-email: chris.gordon@dfo-mpo.gc.ca @@ -45,10 +45,10 @@ Description: # Argo Canada BGC Quality Control ## bgcArgo dependencies - Must run on `python3.4` or higher, not supported on `python2.x` (uses [pathlib](https://docs.python.org/3/library/pathlib.html), introduced in python version 3.4) - - TEOS-10 package [gsw](https://teos-10.github.io/GSW-Python/), but will also work with the [seawater](https://pypi.org/project/seawater/) package, though it is deprecated in favor of gsw + - TEOS-10 package [gsw](https://teos-10.github.io/GSW-Python/) - [netCDF4](https://pypi.org/project/netCDF4/) module for `.nc` files - - [pandas](https://pandas.pydata.org/) is required (and highly recommended for all your data science needs!) - - [seaborn](https://seaborn.pydata.org/) is recommended but not required, through there will be some reduced (non-essential) functionality + - [pandas](https://pandas.pydata.org/) is required + - [seaborn](https://seaborn.pydata.org/) - [cmocean](https://matplotlib.org/cmocean/) is also recommended for nicer plots, but not required ## basic functionality diff --git a/bgcArgoDMQC.egg-info/SOURCES.txt b/bgcArgoDMQC.egg-info/SOURCES.txt index e529563..54e41e9 100644 --- a/bgcArgoDMQC.egg-info/SOURCES.txt +++ b/bgcArgoDMQC.egg-info/SOURCES.txt @@ -4,11 +4,13 @@ README.md requirements.txt setup.py bgcArgoDMQC/__init__.py +bgcArgoDMQC/configure.py bgcArgoDMQC/core.py bgcArgoDMQC/diagnostic.py bgcArgoDMQC/fplt.py bgcArgoDMQC/interp.py bgcArgoDMQC/io.py +bgcArgoDMQC/lut.py bgcArgoDMQC/unit.py bgcArgoDMQC/util.py bgcArgoDMQC.egg-info/PKG-INFO diff --git a/bgcArgoDMQC/meta.yaml b/bgcArgoDMQC/meta.yaml index 89fef53..9340f1f 100644 --- a/bgcArgoDMQC/meta.yaml +++ b/bgcArgoDMQC/meta.yaml @@ -1,5 +1,5 @@ {% set name = "bgcArgoDMQC" %} -{% set version = "0.2.10" %} +{% set version = "0.2.11" %} package: @@ -8,7 +8,7 @@ package: source: url: https://pypi.io/packages/source/{{ name[0] }}/{{ name }}/bgcArgoDMQC-{{ version }}.tar.gz - sha256: ba2047e3291b180a6b0749e83575c88eacaafe8e05d6281e4340138805857364 + sha256: 9e69abd3e75c3e673c7a31ace9b3e72401ea5b478475dba211705936562fab53 build: number: 0 diff --git a/build/lib/bgcArgoDMQC/__init__.py b/build/lib/bgcArgoDMQC/__init__.py index 336a6ff..db27280 100644 --- a/build/lib/bgcArgoDMQC/__init__.py +++ b/build/lib/bgcArgoDMQC/__init__.py @@ -28,6 +28,10 @@ ''' from __future__ import absolute_import + +from . import configure +configure.check_config() + from .core import * from . import fplt from . import unit @@ -36,7 +40,7 @@ from . import interp from . import diagnostic -__all__ = ['fplt', 'unit', 'util', 'io', 'interp', 'diagnostic'] +__all__ = ['fplt', 'unit', 'util', 'io', 'interp', 'diagnostic', 'configure'] __author__ = ['Christopher Gordon '] @@ -45,3 +49,11 @@ # check age of index file, or if it exists if not io.index_exists(): io.update_index() + +# get a dict with with config info +config = configure.read_config() +# set the directories within the config file +dir_config = {k:v for k,v in config.items() if k in ['argo_path', 'woa_path', 'ncep_path']} +set_dirs(**dir_config) + +from .core import * \ No newline at end of file diff --git a/build/lib/bgcArgoDMQC/configure.py b/build/lib/bgcArgoDMQC/configure.py new file mode 100644 index 0000000..1b7b328 --- /dev/null +++ b/build/lib/bgcArgoDMQC/configure.py @@ -0,0 +1,86 @@ +from pathlib import Path + +global config_file +pkg_path = Path(__file__).parent.absolute() +config_file = pkg_path / '.config' + +def check_config(): + ''' + Check that configuration file exists, and if not, create a blank one. + Having a blank file exist eases throwing any FileNotFoundError's, but + if the config is blank then still no configuration is performed. + ''' + # make sure its there, even as an empty file, eases handling of FileNotFoundError's + if not config_file.exists(): + config_file.touch() + +def read_config(): + ''' + Read in permanently stored configuration information for locations of + Argo, NCEP, or WOA data. + ''' + # dict object to load values into + config_dict = dict() + # loop through the config file - if there are no lines, will return an + # empty dict, which is fine/right + with open(config_file) as f: + for line in f: + llist = line.split('=') + key = llist[0] + val = llist[1].strip() + config_dict[key] = val + + return config_dict + +def reset_config(): + ''' + Permanently erase .config data, replace with empty file. + ''' + config_file.unlink() + config_file.touch() + +def configure(argo_path=None, ncep_path=None, woa_path=None, operator_name=None, operator_orcid=None, default_url=None): + ''' + Set up locations for Argo, NCEP, and/or WOA data on local machine. + ''' + # if they aren't already paths, make them paths, then make posix + if argo_path is not None: + argo_path = Path(argo_path).as_posix() + if ncep_path is not None: + ncep_path = Path(ncep_path).as_posix() + if woa_path is not None: + woa_path = Path(woa_path).as_posix() + + # existing and new configuration info + existing_config = read_config() + new_config = dict( + argo_path=argo_path, ncep_path=ncep_path, woa_path=woa_path, + operator_name=operator_name, operator_orcid=operator_orcid, + default_url=default_url + ) + + # get rid of None values + clean_new_config = {k: v for k, v in new_config.items() if v is not None} + + # config info already in .config file that should be kept + keep_config = set(existing_config.keys()) - set(clean_new_config.keys()) + + # config info that either exists in .config and should be overwritten, or is new to .config + overwritten_config = set(existing_config.keys()).intersection(set(clean_new_config.keys())) + add_config = set(clean_new_config.keys()) - set(existing_config.keys()) + write_config = overwritten_config | add_config + + final_config = dict() + for k in keep_config: + final_config[k] = existing_config[k] + for k in write_config: + final_config[k] = clean_new_config[k] + + # write the .config file anew + with open(config_file, 'w') as f: + i = 0 + for k, v in final_config.items(): + if i > 0: + f.write('\n') + f.write('{}={}'.format(k, v)) + i += 1 \ No newline at end of file diff --git a/build/lib/bgcArgoDMQC/core.py b/build/lib/bgcArgoDMQC/core.py index 7b8d2a6..6041b0c 100644 --- a/build/lib/bgcArgoDMQC/core.py +++ b/build/lib/bgcArgoDMQC/core.py @@ -12,12 +12,7 @@ from matplotlib.offsetbox import AnchoredText import datetime -# try to import seaborn -try: - sns_flag = True - import seaborn as sns -except: - sns_flag = False +import seaborn as sns # try to import cartopy try: @@ -27,19 +22,7 @@ except: map_flag = False -# soft attempt to load gsw, but allow for seawater as well -try: - import gsw - flagSA = True -except: - try: - # if this also fails, just load gsw to throw the error - from seawater import pden - flagSA = False - warnings.warn('gsw package for thermodynamic equations of seawater not installed, attempting to load seawater package, however seawater is deprecated in favour of gsw-python, see https://teos-10.github.io/GSW-Python/\n') - except: - import gsw - +import gsw from netCDF4 import Dataset from . import io @@ -47,27 +30,39 @@ from . import unit from . import util from . import fplt +from . import configure # ---------------------------------------------------------------------------- # LOCAL MACHINE SETUP # ---------------------------------------------------------------------------- -ARGO_PATH = './' -WOA_PATH = None -NCEP_PATH = None - -__bgcindex__ = io.read_index() global REF_PATH REF_PATH = Path(__file__).parent.absolute() / 'ref' -def set_dirs(argo_path=ARGO_PATH, woa_path=WOA_PATH, ncep_path=NCEP_PATH): +def get_config_dirs(): + ''' + Get previously set local directories to look for Argo, WOA, and NCEP data. + ''' + + config = configure.read_config() + if 'argo_path' in config.keys(): + global ARGO_PATH + ARGO_PATH = config['argo_path'] + if 'ncep_path' in config.keys(): + global NCEP_PATH + NCEP_PATH = config['ncep_path'] + if 'woa_path' in config.keys(): + global WOA_PATH + WOA_PATH = config['woa_path'] + +def set_dirs(argo_path='./', woa_path=None, ncep_path=None): ''' Set local directories to look for Argo, WOA, and NCEP data. Args: argo_path (str or path-like): location of local Argo data - woa_path (str or path-like): location of local World Ocean Atlas data ncep_data (str or path-like): location of local NCEP data + woa_path (str or path-like): location of local World Ocean Atlas data ''' global ARGO_PATH @@ -77,7 +72,7 @@ def set_dirs(argo_path=ARGO_PATH, woa_path=WOA_PATH, ncep_path=NCEP_PATH): global NCEP_PATH NCEP_PATH = ncep_path -def get_index(index='bgc'): +def get_index(index='bgc', **kwargs): ''' Get the global, biogeochemical, synthetic, or metadata Argo index. @@ -85,29 +80,62 @@ def get_index(index='bgc'): index (str): *bgc* for the biogeochemical Argo index, *global* for the core index, *synthetic* for the synthetic index, or *meta* for the metadata index ''' if index == 'bgc': - return __bgcindex__ + if '__bgcindex__' not in globals(): + global __bgcindex__ + __bgcindex__ = io.read_index() + return_index = __bgcindex__ elif index == 'global': if '__globalindex__' not in globals(): global __globalindex__ __globalindex__ = io.read_index(mission='C') - return __globalindex__ + return_index = __globalindex__ elif index == 'synthetic': if '__synthindex__' not in globals(): global __synthindex__ __synthindex__ = io.read_index(mission='S') - return __synthindex__ - elif index == 'synthetic': - if '__synthindex__' not in globals(): + return_index = __synthindex__ + elif index == 'meta': + if '__metaindex__' not in globals(): global __metaindex__ __metaindex__ = io.read_index(mission='M') - return __metaindex__ + return_index = __metaindex__ + elif index == 'traj': + if '__trajindex__' not in globals(): + global __trajindex__ + __trajindex__ = io.read_index(mission='T') + return_index = __trajindex__ else: raise ValueError('Input "{}" is unrecognized'.format(index)) + for arg, val in kwargs.items(): + return_index = return_index[return_index[arg] == val] + + return return_index.reset_index() + + # ---------------------------------------------------------------------------- # FLOAT CLASS # ---------------------------------------------------------------------------- +class traj: + ''' + Class that loads Argo trajectory file data for a given float ID number + (wmo). + ''' + + def __init__(self, wmo, keep_fillvalue=False, verbose=False): + + self.__trajdict__, self.__trajfile__ = load_traj(ARGO_PATH, wmo, verbose=verbose) + + # local path info + self.argo_path = ARGO_PATH + self.woa_path = WOA_PATH + self.ncep_path = NCEP_PATH + + if not keep_fillvalue: + self.rm_fillvalue() + + class sprof: ''' Class that loads Argo synthetic profile data for a given float ID number @@ -132,9 +160,9 @@ class sprof: set_dirs = set_dirs - def __init__(self, wmo, keep_fillvalue=False, rcheck=True): + def __init__(self, wmo, keep_fillvalue=False, rcheck=True, verbose=False): - self.__floatdict__, self.__Sprof__, self.__BRtraj__, self.__meta__ = load_argo(ARGO_PATH, wmo, grid=True) + self.__floatdict__, self.__Sprof__, self.__BRtraj__, self.__meta__ = load_argo(ARGO_PATH, wmo, grid=True, verbose=verbose) self.__rawfloatdict__ = self.__floatdict__ # local path info @@ -156,9 +184,8 @@ def assign(self, floatdict): ''' # metadata and dimension variables - self.floatName = floatdict['floatName'] self.floatType = floatdict['floatType'] - self.N_CYCLES = floatdict['N_CYCLES'] + self.N_PROF = floatdict['N_PROF'] self.N_LEVELS = floatdict['N_LEVELS'] self.CYCLE = floatdict['CYCLES'] self.CYCLE_GRID = floatdict['CYCLE_GRID'] @@ -181,10 +208,7 @@ def assign(self, floatdict): self.PSAL = floatdict['PSAL'] self.PSAL_QC = floatdict['PSAL_QC'] # potential density - if flagSA: - self.PDEN = gsw.pot_rho_t_exact(gsw.SA_from_SP(self.PSAL, self.PRES, self.LONGITUDE_GRID, self.LATITUDE_GRID), self.TEMP, self.PRES, 0) - 1000 - else: - self.PDEN = pden(self.PSAL, self.TEMP, self.PRES, 0) - 1000 + self.PDEN = gsw.pot_rho_t_exact(gsw.SA_from_SP(self.PSAL, self.PRES, self.LONGITUDE_GRID, self.LATITUDE_GRID), self.TEMP, self.PRES, 0) - 1000 # bgc variables - not necessarily all there so check if the fields exist if 'DOXY' in floatdict.keys(): @@ -218,6 +242,17 @@ def assign(self, floatdict): self.O2Sat = floatdict['O2Sat'] self.O2Sat_QC = floatdict['O2Sat_QC'] + def get_gridded_var(self, *args): + + if not hasattr(self, '__griddict__'): + self.__griddict__ = read_sprof_gridded_variables(Dataset()) + + varlist = list() + for v in args: + varlist.append(self.__griddict__[v]) + + return varlist + def rm_fillvalue(self): ''' Remove FillValue from all variables. @@ -225,6 +260,7 @@ def rm_fillvalue(self): self.__nofillvaluefloatdict__ = dict_fillvalue_clean(self.__rawfloatdict__) self.__floatdict__ = copy.deepcopy(self.__nofillvaluefloatdict__) self.assign(self.__nofillvaluefloatdict__) + self.to_dataframe() def clean(self, bad_flags=None): ''' @@ -235,6 +271,7 @@ def clean(self, bad_flags=None): self.__cleanfloatdict__ = dict_clean(self.__floatdict__, bad_flags=bad_flags) self.__floatdict__ = copy.deepcopy(self.__cleanfloatdict__) self.assign(self.__cleanfloatdict__) + self.to_dataframe() def reset(self): ''' @@ -243,8 +280,9 @@ def reset(self): ''' self.__floatdict__ = copy.deepcopy(self.__rawfloatdict__) self.assign(self.__rawfloatdict__) + self.to_dataframe() - def check_range(self, key): + def check_range(self, key, verbose=False): ''' Performs a range check for variables that have a RTQC range available. Replaces values outside the range with NaN values. Takes string input @@ -259,14 +297,17 @@ def check_range(self, key): key = [key] for k in key: - self.__rangecheckdict__ = range_check(k, self.__floatdict__) - self.__floatdict__ = self.__rangecheckdict__ + if k in self.__floatdict__.keys(): + self.__rangecheckdict__ = range_check(k, self.__floatdict__, verbose=verbose) + self.__floatdict__ = self.__rangecheckdict__ - # recalculate O2sat if its DOXY - if k == 'DOXY': - self.__rangecheckdict__['O2Sat'] = 100*self.__rangecheckdict__['DOXY']/unit.oxy_sol(self.__rangecheckdict__['PSAL'], self.__rangecheckdict__['TEMP'], unit='micromole/kg') + # recalculate O2sat if its DOXY + if k == 'DOXY': + optode_flag = get_optode_type(int(self.__rangecheckdict__['WMO'])) == 'AANDERAA_OPTODE_4330' + self.__rangecheckdict__['O2Sat'] = 100*self.__rangecheckdict__['DOXY']/unit.oxy_sol(self.__rangecheckdict__['PSAL'], self.__rangecheckdict__['TEMP'], self.__rangecheckdict__['PDEN'], a4330=optode_flag) self.assign(self.__rangecheckdict__) + self.to_dataframe() def to_dict(self): ''' @@ -285,30 +326,47 @@ def to_dataframe(self): df = pd.DataFrame() df['CYCLE'] = self.CYCLE_GRID df['SDN'] = self.SDN_GRID + df['WMO'] = self.WMO df['LATITUDE'] = self.LATITUDE_GRID df['LONGITUDE'] = self.LONGITUDE_GRID df['PRES'] = self.PRES df['TEMP'] = self.TEMP + df['TEMP_QC'] = self.TEMP_QC df['PSAL'] = self.PSAL + df['PSAL_QC'] = self.PSAL_QC df['PDEN'] = self.PDEN if 'DOXY' in self.__floatdict__.keys(): df['DOXY'] = self.DOXY + df['DOXY_QC'] = self.DOXY_QC if 'CHLA' in self.__floatdict__.keys(): df['CHLA'] = self.CHLA + df['CHLA_QC'] = self.CHLA_QC if 'BBP700' in self.__floatdict__.keys(): df['BBP700'] = self.BBP700 + df['BBP700_QC'] = self.BBP700_QC if 'CDOM' in self.__floatdict__.keys(): df['CDOM'] = self.CDOM + df['CDOM_QC'] = self.CDOM_QC if 'DOXY_ADJUSTED' in self.__floatdict__.keys(): df['DOXY_ADJUSTED'] = self.DOXY_ADJUSTED + df['DOXY_ADJUSTED_QC'] = self.DOXY_ADJUSTED_QC if 'CHLA_ADJUSTED' in self.__floatdict__.keys(): df['CHLA_ADJUSTED'] = self.CHLA_ADJUSTED + df['CHLA_ADJUSTED_QC'] = self.CHLA_ADJUSTED_QC if 'BBP700_ADJUSTED' in self.__floatdict__.keys(): df['BBP700_ADJUSTED'] = self.BBP700_ADJUSTED + df['BBP700_ADJUSTED_QC'] = self.BBP700_ADJUSTED_QC if 'CDOM_ADJUSTED' in self.__floatdict__.keys(): df['CDOM_ADJUSTED'] = self.CDOM_ADJUSTED + df['CDOM_ADJUSTED_QC'] = self.CDOM_ADJUSTED_QC if 'O2Sat' in self.__floatdict__.keys(): df['O2Sat'] = self.O2Sat + df['O2Sat_QC'] = self.O2Sat_QC + + exvals = [k for k,v in self.__floatdict__.items() if type(v) is not np.ndarray] + for key in list(set(self.__floatdict__.keys()) - set(df.columns) - set(exvals)): + if self.__floatdict__[key].shape[0] == df.shape[0]: + df[key] = self.__floatdict__[key] self.df = df @@ -327,7 +385,7 @@ def get_track(self): return copy.deepcopy(self.track) - def get_ncep(self): + def get_ncep(self, verbose=True): ''' Loads NCEP data along the float track ''' @@ -339,7 +397,7 @@ def get_ncep(self): return copy.deepcopy(self.NCEP) - def get_woa(self): + def get_woa(self, verbose=True): ''' Loads WOA data along the float track ''' @@ -347,11 +405,11 @@ def get_woa(self): if not hasattr(self, 'track'): self.get_track() - self.z_WOA, self.WOA, self.__WOAweights__ = woa_to_float_track(self.track, 'O2sat', local_path=self.woa_path) + self.z_WOA, self.WOA, self.__WOAweights__ = woa_to_float_track(self.track, 'O2sat', local_path=self.woa_path, verbose=verbose) return copy.deepcopy(self.WOA) - def calc_gains(self, ref='NCEP', zlim=25.): + def calc_gains(self, ref='NCEP', zlim=25., verbose=True): ''' Calculate gain values using NCEP or WOA reference data. Uses function calc_gain(). @@ -363,22 +421,22 @@ def calc_gains(self, ref='NCEP', zlim=25.): if ref == 'NCEP': # check if reference data is already calculated if not hasattr(self, 'NCEP'): - self.get_ncep() + self.get_ncep(verbose=verbose) pH2O = unit.pH2O(util.get_var_by('TEMP_DOXY', 'TRAJ_CYCLE', self.__floatdict__)) common_cycles, c1, c2 = np.intersect1d(self.CYCLE, np.unique(self.__floatdict__['TRAJ_CYCLE']), assume_unique=True, return_indices=True) self.NCEP_PPOX = unit.atmos_pO2(self.NCEP[c1], pH2O[c2])/100 - self.__NCEPgains__, self.__NCEPfloatref__ = calc_gain(self.__floatdict__, self.NCEP_PPOX) + self.__NCEPgains__, self.__NCEPfloatref__ = calc_gain(self.__floatdict__, self.NCEP_PPOX, verbose=verbose) self.gains = self.__NCEPgains__ if ref == 'WOA': # check if reference data is already calculated if not hasattr(self, 'WOA'): - self.get_woa() + self.get_woa(verbose=verbose) - self.__WOAgains__, self.__WOAfloatref__, self.__WOAref__ = calc_gain(self.__floatdict__, dict(z=self.z_WOA, WOA=self.WOA), inair=False, zlim=zlim) + self.__WOAgains__, self.__WOAfloatref__, self.__WOAref__ = calc_gain(self.__floatdict__, dict(z=self.z_WOA, WOA=self.WOA), inair=False, zlim=zlim, verbose=verbose) self.gains = self.__WOAgains__ return copy.deepcopy(self.gains) @@ -398,6 +456,8 @@ def plot(self, kind, **kwargs): g = fplt.gainplot(self.SDN, self.__NCEPfloatref__[:,2], self.NCEP_PPOX, self.__NCEPgains__, ref) elif ref == 'WOA': g = fplt.gainplot(self.SDN, self.__WOAfloatref__[:,2], self.__WOAref__, self.__WOAgains__, ref) + else: + raise ValueError('Invalid input for keyword argument "ref"') elif kind == 'cscatter': var = kwargs.pop('varname') @@ -415,6 +475,14 @@ def plot(self, kind, **kwargs): g = fplt.profiles(self.df, varlist=varlist, **kwargs) + elif kind == 'qcprofiles': + varlist = kwargs.pop('varlist') + + if not hasattr(self, 'df'): + self.to_dataframe() + + g = fplt.qc_profiles(self.df, varlist=varlist, **kwargs) + else: raise ValueError('Invalid input for keyword argument "kind"') @@ -528,6 +596,7 @@ def compare_independent_data(self, fmt='*', **kwargs): meta_keys = set(meta_keys) meta_data_string = '' + cyc = 1 for label in meta_dict.keys(): if label == ' ': label = 'Observation' @@ -550,18 +619,12 @@ def compare_independent_data(self, fmt='*', **kwargs): fig = plt.figure() ax_list = [fig.add_subplot(1, nvar+map_num, n+1) for n in range(nvar)] axes_dict = {v:ax for v, ax in zip(var_keys, ax_list)} - print(var_keys) - print(ax_list) if map_num > 0: ax_list.append(fig.add_subplot(1, nvar+map_num, nvar+1, projection=ccrs.PlateCarree())) ccount = 0 - if sns_flag: - fcol = sns.color_palette('colorblind')[0] - clist = sns.color_palette('colorblind')[1:] - else: - fcol = 'blue' - clist = ['orange', 'green', 'cyan', 'red'] + fcol = sns.color_palette('colorblind')[0] + clist = sns.color_palette('colorblind')[1:] for label in plot_dict.keys(): pres = plot_dict[label].pop('PRES') @@ -602,7 +665,6 @@ def compare_independent_data(self, fmt='*', **kwargs): mx.plot(np.nan, np.nan, 'o', color=fcol, label='Float {}'.format(self.WMO)) c = np.array(c) - print(c) minlon, maxlon = np.nanmin(c[:,1]), np.nanmax(c[:,1]) minlat, maxlat = np.nanmin(c[:,0]), np.nanmax(c[:,0]) @@ -621,7 +683,6 @@ def compare_independent_data(self, fmt='*', **kwargs): extent[2] = extent[2] - 6 extent[3] = extent[3] + 6 - print(extent) mx.set_extent(extent, crs=ccrs.PlateCarree()) mx.legend(loc=4, bbox_to_anchor=(1.05, 1.0), fontsize=8) mx.add_feature(cfeature.COASTLINE) @@ -647,24 +708,24 @@ def compare_independent_data(self, fmt='*', **kwargs): ax_list[0].legend(loc=2, fontsize=10) - print(meta_data_string) - anc = AnchoredText(meta_data_string, loc=4, frameon=True, prop=dict(size=8)) ax_list[0].add_artist(anc) + fig.set_size_inches(10,6) + return fig, ax_list class profiles: set_dirs = set_dirs - def __init__(self, floats, cycles=None, mission='B', mode='RD', keep_fillvalue=False, rcheck=True): + def __init__(self, floats, cycles=None, mission='B', mode='RD', keep_fillvalue=False, rcheck=True, verbose=False): if type(floats) is int: floats = [floats] self.__argofiles__ = organize_files(get_files(ARGO_PATH, floats, cycles=cycles, mission=mission, mode=mode)) - self.__floatdict__ = load_profiles(self.__argofiles__) + self.__floatdict__ = load_profiles(self.__argofiles__, verbose=verbose) self.__rawfloatdict__ = self.__floatdict__ # local path info @@ -677,12 +738,11 @@ def __init__(self, floats, cycles=None, mission='B', mode='RD', keep_fillvalue=F self.rm_fillvalue() if rcheck: - self.check_range('DOXY') + self.check_range('all', verbose=verbose) def assign(self, floatdict): # metadata and dimension variables - self.floatName = floatdict['floatName'] self.floatType = floatdict['floatType'] self.N_LEVELS = floatdict['N_LEVELS'] self.CYCLE = floatdict['CYCLES'] @@ -707,10 +767,7 @@ def assign(self, floatdict): self.PSAL = floatdict['PSAL'] self.PSAL_QC = floatdict['PSAL_QC'] # potential density - if flagSA: - self.PDEN = gsw.pot_rho_t_exact(gsw.SA_from_SP(self.PSAL, self.PRES, self.LONGITUDE_GRID, self.LATITUDE_GRID), self.TEMP, self.LONGITUDE_GRID, self.LATITUDE_GRID) - 1000 - else: - self.PDEN = pden(self.PSAL, self.TEMP, self.PRES, 0) - 1000 + self.PDEN = gsw.pot_rho_t_exact(gsw.SA_from_SP(self.PSAL, self.PRES, self.LONGITUDE_GRID, self.LATITUDE_GRID), self.TEMP, self.LONGITUDE_GRID, self.LATITUDE_GRID) - 1000 # bgc variables - not necessarily all there so check if the fields exist if 'DOXY' in floatdict.keys(): @@ -748,17 +805,20 @@ def rm_fillvalue(self): self.__nofillvaluefloatdict__ = dict_fillvalue_clean(self.__rawfloatdict__) self.__floatdict__ = self.__nofillvaluefloatdict__ self.assign(self.__nofillvaluefloatdict__) + self.to_dataframe() def clean(self, bad_flags=None): self.__cleanfloatdict__ = dict_clean(self.__floatdict__, bad_flags=bad_flags) self.__floatdict__ = self.__cleanfloatdict__ self.assign(self.__cleanfloatdict__) + self.to_dataframe() def reset(self): self.__floatdict__ = self.__rawfloatdict__ self.assign(self.__rawfloatdict__) + self.to_dataframe() - def check_range(self, key): + def check_range(self, key, verbose=False): ''' Performs a range check for variables that have a RTQC range available. Replaces values outside the range with NaN values. Takes string input @@ -773,12 +833,14 @@ def check_range(self, key): key = [key] for k in key: - self.__rangecheckdict__ = range_check(k, self.__floatdict__) - self.__floatdict__ = self.__rangecheckdict__ + if k in self.__floatdict__.keys(): + self.__rangecheckdict__ = range_check(k, self.__floatdict__, verbose=verbose) + self.__floatdict__ = self.__rangecheckdict__ - # recalculate O2sat if its DOXY - if k == 'DOXY': - self.__rangecheckdict__['O2Sat'] = 100*self.__rangecheckdict__['DOXY']/unit.oxy_sol(self.__rangecheckdict__['PSAL'], self.__rangecheckdict__['TEMP'], unit='micromole/kg') + # recalculate O2sat if its DOXY + if k == 'DOXY': + optode_flag = get_optode_type(int(self.__rangecheckdict__['WMO'])) == 'AANDERAA_OPTODE_4330' + self.__rangecheckdict__['O2Sat'] = 100*self.__rangecheckdict__['DOXY']/unit.oxy_sol(self.__rangecheckdict__['PSAL'], self.__rangecheckdict__['TEMP'], a4330=optode_flag) self.assign(self.__rangecheckdict__) @@ -921,10 +983,17 @@ def get_files(local_path, wmo_numbers, cycles=None, mission='B', mode='RD', verb local_path = Path(local_path) if mission == 'B': + if '__bgcindex__' not in globals(): + global __bgcindex__ + __bgcindex__ = get_index() subset_index = __bgcindex__[__bgcindex__.wmo.isin(wmo_numbers)] - if mission == 'C': - __coreindex__ = io.read_index(mission='C') - subset_index = __coreindex__[__coreindex__.wmo.isin(wmo_numbers)] + elif mission == 'C': + if '__globalindex__' not in globals(): + global __globalindex__ + __globalindex__ = get_index(index='global') + subset_index = __globalindex__[__globalindex__.wmo.isin(wmo_numbers)] + else: + raise ValueError('Invalid input for parameter "mission"') if cycles is not None: subset_index = subset_index[subset_index.cycle.isin(cycles)] wcs = ['*' + a + b + '*.nc' for a in mission for b in mode] @@ -932,7 +1001,7 @@ def get_files(local_path, wmo_numbers, cycles=None, mission='B', mode='RD', verb matches = [fn for sub in [fnmatch.filter(subset_index.file, w) for w in wcs] for fn in sub] subset_index = subset_index[subset_index.file.isin(matches)] - local_files = [(local_path / dac / str(wmo) / 'profiles' / fn.split('/')[-1]).as_posix() for dac, wmo, fn in zip(subset_index.dac, subset_index.wmo, subset_index.file)] + local_files = [(local_path / dac / str(wmo) / 'profiles' / fn.split('/')[-1]) for dac, wmo, fn in zip(subset_index.dac, subset_index.wmo, subset_index.file)] remove_ix = [] for i,fn in enumerate(local_files): @@ -951,61 +1020,23 @@ def organize_files(files): ''' Sort files according to time they were recorded. ''' - lead_letter = files[0].split('/')[-1][0] + lead_letter = files[0].name[0] if lead_letter == 'R' or lead_letter == 'D': index = get_index('global') else: + if '__bgcindex__' not in globals(): + global __bgcindex__ + __bgcindex__ = get_index() index = __bgcindex__ - dates = np.array([index[index.file.str.find(fn.split('/')[-1]) != -1].date.iloc[0] for fn in files]) + dates = np.array([index[index.file.str.find(fn.name) != -1].date.iloc[0] for fn in files]) sorted_files = list(np.array(files)[np.argsort(dates)]) return sorted_files -def get_vars(files): - - nc = Dataset(Path(files[0]), 'r') - varnames = set(nc.variables.keys()) - nc.close() - - for fn in files: - nc = Dataset(Path(fn), 'r') - varnames = varnames.intersection(nc.variables.keys()) - nc.close() - - varnames = list(varnames) +def load_traj(local_path, wmo): - return varnames - -def read_qc(flags): - - decode_flags = np.array([f.decode('utf-8') for f in flags]) - decode_flags[decode_flags == ' '] = '4' - - out_flags = np.array([int(f) for f in decode_flags]) - - return out_flags - -def get_worst_flag(*args): - out_flags = np.ones(args[0].shape) - - if len(args) == 1: - out_flags = args[0] - else: - # make an array where all data marked as good - out_flags = np.ones(args[0].shape) - # loop through input flags - for flags in args: - # loop through each datapoint flag - for i,f in enumerate(flags): - if f > out_flags[i] and f <= 4: - out_flags[i] = f - elif f in [5,8] and out_flags[i] <= 2: - out_flags[i] = f - elif f == 9: - out_flags[i] = 9 - - return out_flags + return trajData, trajFile def load_argo(local_path, wmo, grid=False, verbose=True): ''' @@ -1021,8 +1052,7 @@ def load_argo(local_path, wmo, grid=False, verbose=True): - floatName: WMO number, from input - floatType: Kind of float (APEX, ARVOR, etc.) - N_LEVELS: Number of depth levels, Argo dimension N_LEVELS - - N_CYCLES: Number of profiles, Argo dimension N_PROF - - CYCLES: Array from 1 to N_CYCLES + - N_PROF: Number of profiles, Argo dimension N_PROF - LATITUDE: Latitude (-90, 90) for each profile - LONGITUDE: Longitude (-180, 180) for each profile - SDN: Serial Date Number for each profile @@ -1102,49 +1132,15 @@ def load_argo(local_path, wmo, grid=False, verbose=True): # number of profile cycles M = Sprof_nc.dimensions['N_LEVELS'].size N = Sprof_nc.dimensions['N_PROF'].size - # beginning of output dict with basic info, following variables in SAGEO2 - floatData = dict(floatName=wmo, N_CYCLES=N, N_LEVELS=M, WMO=int(wmo)) - mask = Sprof_nc.variables['PRES'][:].mask - mask_vars = ['TEMP','PSAL'] - if 'DOXY' in Sprof_nc.variables.keys(): - mask_vars = mask_vars + ['DOXY'] - if 'DOXY_ADJUSTED' in Sprof_nc.variables.keys(): - mask_vars = mask_vars + ['DOXY_ADJUSTED'] - - for v in mask_vars: - mask = np.logical_or(mask, Sprof_nc.variables[v][:].mask) - - if not 'CYCLE_NUMBER' in Sprof_nc.variables.keys(): - floatData['CYCLES'] = np.arange(1,N+1) - else: - floatData['CYCLES'] = Sprof_nc.variables['CYCLE_NUMBER'][:].data.flatten() - - # load in variables that will be in every file - floatData['PRES'] = Sprof_nc.variables['PRES'][:].data.flatten() - floatData['TEMP'] = Sprof_nc.variables['TEMP'][:].data.flatten() - floatData['PSAL'] = Sprof_nc.variables['PSAL'][:].data.flatten() - floatData['SDN'] = Sprof_nc.variables['JULD'][:].data.flatten() + mdates.datestr2num('1950-01-01') - floatData['LATITUDE'] = Sprof_nc.variables['LATITUDE'][:].data.flatten() - floatData['LONGITUDE'] = Sprof_nc.variables['LONGITUDE'][:].data.flatten() - - # loop through other possible BGC variables - bgc_vars = ['DOXY', 'CHLA', 'BBP700', 'CDOM', 'NITRATE', 'DOWNWELLING_IRRADIANCE'] - core_vars = ['PRES', 'TEMP', 'PSAL', 'POSITION'] - for v in bgc_vars: - if v in Sprof_nc.variables.keys(): - floatData[v] = Sprof_nc.variables[v][:].data.flatten() - - for v in bgc_vars + core_vars: - v_qc = v + '_QC' - if v_qc in Sprof_nc.variables.keys(): - floatData[v_qc] = read_qc(Sprof_nc.variables[v_qc][:].data.flatten()) - v_adj = v + '_ADJUSTED' - if v_adj in Sprof_nc.variables.keys(): - floatData[v_adj] = Sprof_nc.variables[v_adj][:].data.flatten() - v_adj_qc = v_adj + '_QC' - if v_adj_qc in Sprof_nc.variables.keys(): - floatData[v_adj_qc] = read_qc(Sprof_nc.variables[v_adj_qc][:].data.flatten()) + floatData = read_all_variables(Sprof_nc) + floatData['SDN'] = floatData['JULD'] + mdates.datestr2num('1950-01-01') + floatData['CYCLES'] = floatData['CYCLE_NUMBER'] + floatData['WMO'] = wmo + + qc_keys = [s for s in floatData.keys() if '_QC' in s and 'PROFILE' not in s] + for qc in qc_keys: + floatData[qc] = util.read_qc(floatData[qc]) if grid: ftype = '' @@ -1157,112 +1153,57 @@ def load_argo(local_path, wmo, grid=False, verbose=True): floatData['CYCLE_GRID'] = np.tile(floatData['CYCLES'],(M,1)).T.flatten() floatData['LATITUDE_GRID'] = np.tile(floatData['LATITUDE'],(M,1)).T.flatten() floatData['LONGITUDE_GRID'] = np.tile(floatData['LONGITUDE'],(M,1)).T.flatten() + floatData['PDEN'] = gsw.pot_rho_t_exact(gsw.SA_from_SP(floatData['PSAL'], floatData['PRES'], floatData['LONGITUDE_GRID'], floatData['LATITUDE_GRID']), floatData['TEMP'], floatData['PRES'], 0) - floatData['O2Sat'] = 100*floatData['DOXY']/unit.oxy_sol(floatData['PSAL'], floatData['TEMP'], unit='micromole/kg') - # match the fill values - ix = np.logical_or(np.logical_or(floatData['PSAL'] >= 99999., floatData['TEMP'] >= 99999.), floatData['DOXY'] >= 99999.) - floatData['O2Sat'][ix] = 99999. - # get the worst QC flag from each quantity that goes into the calculation - floatData['O2Sat_QC'] = get_worst_flag(floatData['TEMP_QC'], floatData['PSAL_QC'], floatData['DOXY_QC']) + if 'DOXY' in floatData.keys(): + optode_flag = get_optode_type(int(wmo)) == 'AANDERAA_OPTODE_4330' + floatData['O2Sat'] = 100*floatData['DOXY']/unit.oxy_sol(floatData['PSAL'], floatData['TEMP'], floatData['PDEN'], a4330=optode_flag) + # match the fill values + ix = np.logical_or(np.logical_or(floatData['PSAL'] >= 99999., floatData['TEMP'] >= 99999.), floatData['DOXY'] >= 99999.) + floatData['O2Sat'][ix] = 99999. + # get the worst QC flag from each quantity that goes into the calculation + floatData['O2Sat_QC'] = util.get_worst_flag(floatData['TEMP_QC'], floatData['PSAL_QC'], floatData['DOXY_QC']) if BRtraj_flag: - if 'PPOX_DOXY' in BRtraj_nc.variables.keys(): + if 'PPOX_DOXY' in BRtraj_nc.variables.keys() and 'TEMP_DOXY' in BRtraj_nc.variables.keys(): floatData['PPOX_DOXY'] = BRtraj_nc.variables['PPOX_DOXY'][:].data.flatten() - elif 'DOXY' in BRtraj_nc.variables.keys(): - # unit conversion from umol kg-1 to pO2, some shaky S and P assumptions? + floatData['TEMP_DOXY'] = BRtraj_nc.variables['TEMP_DOXY'][:].data.flatten() + floatData['TRAJ_CYCLE'] = BRtraj_nc.variables['CYCLE_NUMBER'][:].data.flatten() + floatData['inair'] = True + elif 'DOXY' in BRtraj_nc.variables.keys() and 'TEMP_DOXY' in BRtraj_nc.variables.keys(): + # unit conversion from umol kg-1 to pO2, some shaky S and P assumptions? floatData['PPOX_DOXY'] = unit.doxy_to_pO2(unit.umol_per_sw_to_mmol_per_L( BRtraj_nc.variables['DOXY'][:].data.flatten(), 0, # salinity is 0 in air??? BRtraj_nc.variables['TEMP_DOXY'][:].data.flatten(), 0 # pressure is 0 in air??? ), 0, BRtraj_nc.variables['TEMP_DOXY'][:].data.flatten()) - floatData['TEMP_DOXY'] = BRtraj_nc.variables['TEMP_DOXY'][:].data.flatten() - floatData['TRAJ_CYCLE'] = BRtraj_nc.variables['CYCLE_NUMBER'][:].data.flatten() - floatData['inair'] = True + floatData['TEMP_DOXY'] = BRtraj_nc.variables['TEMP_DOXY'][:].data.flatten() + floatData['TRAJ_CYCLE'] = BRtraj_nc.variables['CYCLE_NUMBER'][:].data.flatten() + floatData['inair'] = True + else: + floatData['inair'] = False else: - floatData['inair'] = False + floatData['inair'] = False return floatData, Sprof, BRtraj, meta -# def load_profile(fn): -# ''' -# Function to load a singe Argo profile file into a dict() object -# NOTE: Deprecated, use load_profiles instead, which can handle multiple -# profile files at once, but produces the same result for just one. +def load_profiles(files, verbose=False): + + common_variables = util.get_vars(files) + core_files = len(files)*[' '] + for i,f in enumerate(files): + data_mode = f.name[1] + if data_mode == 'D': + core_files[i] = f.parent / f.name.replace('B','') + else: + test_file = f.parent / f.name.replace('B','') + if not test_file.exists(): + test_file = f.parent / f.name.replace('BR', 'D') + if not test_file.exists(): + raise FileNotFoundError('Corresponding core file not found') + core_files[i] = test_file -# Author: -# Christopher Gordon - -# Fisheries and Oceans Canada - -# chris.gordon@dfo-mpo.gc.ca - -# Last update: 29-04-2020 - -# Change log: - -# - 22-04-2020: updated so that pressure mask determines all variables - need to add all quality flags to output - -# - 29-04-2020: switched file/path handling from os module to pathlib - -# - 24-06-2020: deprecated, re-wrote as load_profiles() -# ''' - - # # try to load the profile as absolute path or relative path - # try: - # nc = Dataset(fn, 'r') - # except: - # try: - # nc = Dataset(Path(ARGO_PATH) / fn, 'r') - # except: - # raise FileNotFoundError('No such file {} or {}'.format(fn, str(Path(ARGO_PATH) / fn))) - - # wmo = '' - # for let in nc.variables['PLATFORM_NUMBER'][:].compressed(): - # wmo = wmo + let.decode('UTF-8') - - # cycle = nc.variables['CYCLE_NUMBER'][:].compressed()[0] - - # # number of profile cycles - # M = nc.dimensions['N_LEVELS'].size - # # beginning of output dict with basic info, following variables in SAGEO2 - # floatData = dict(floatName=wmo, N_LEVELS=M, CYCLE=cycle) - - # ftype = '' - # for let in nc.variables['PLATFORM_TYPE'][:].compressed(): - # ftype = ftype + let.decode('UTF-8') - - # floatData['floatType'] = ftype - - # # load in variables that will be in every file - # floatData['PRES'] = nc.variables['PRES'][:].data - # floatData['TEMP'] = nc.variables['TEMP'][:].data - # floatData['PSAL'] = nc.variables['PSAL'][:].data - # floatData['SDN'] = nc.variables['JULD'][:].data + mdates.datestr2num('1950-01-01') - # floatData['LATITUDE'] = nc.variables['LATITUDE'][:].data - # floatData['LONGITUDE'] = nc.variables['LONGITUDE'][:].data - - # # loop through other possible BGC variables - # bgc_vars = ['DOXY', 'CHLA', 'BBP700', 'CDOM', 'NITRATE', 'DOWNWELLING_IRRADIANCE'] - # for v in bgc_vars: - # if v in nc.variables.keys(): - # floatData[v] = nc.variables[v][:].data - - # for v in floatData.keys(): - # v_qc = v + '_QC' - # if v_qc in nc.variables.keys(): - # floatData[v_qc] = nc.variables[v_qc][:].data - # v_adj = v + '_ADJUSTED' - # if v_adj in nc.variables.keys(): - # floatData[v_adj] = nc.variables[v_adj][:].data - # floatData[v_adj + '_QC'] = nc.variabes[v_adj + '_QC'][:].data - - # return floatData - -def load_profiles(files): - - common_variables = get_vars(files) - core_files = [fn.replace('B','') for fn in files] floatData = dict( floatName=[], N_LEVELS=[], N_PROF=[], CYCLES=np.array([], dtype=int), floatType=[] @@ -1275,16 +1216,16 @@ def load_profiles(files): for v in ['WMO', 'LATITUDE', 'LONGITUDE', 'POSITION_QC', 'SDN_GRID', 'LATITUDE_GRID', 'LONGITUDE_GRID', 'CYCLE_GRID']: floatData[v] = np.array([]) - for v in ['DOXY', 'CHLA', 'BBP700', 'CDOM', 'NITRATE', 'DOWNWELLING_IRRADIANCE']: - if v in common_variables: - floatData[v] = np.array([]) - floatData[v + '_QC'] = np.array([]) - if v + '_ADJUSTED' in common_variables: - floatData[v + '_ADJUSTED'] = np.array([]) - floatData[v + '_ADJUSTED' + '_QC'] = np.array([]) + for v in common_variables: + floatData[v] = np.array([]) + floatData[v + '_QC'] = np.array([]) + if v + '_ADJUSTED' in common_variables: + floatData[v + '_ADJUSTED'] = np.array([]) + floatData[v + '_ADJUSTED' + '_QC'] = np.array([]) - for fn,cn in zip(files,core_files): - print(fn, cn) + for fn, cn in zip(files, core_files): + if verbose: + print(fn, cn) # try to load the profile as absolute path or relative path try: nc = Dataset(fn, 'r') @@ -1330,40 +1271,79 @@ def load_profiles(files): floatData['WMO'] = np.append(floatData['WMO'], np.array(M*N*[wmo])) # load in variables that will be in every file - floatData['PRES'] = np.append(floatData['PRES'], cc.variables['PRES'][:].data.flatten()) - floatData['PRES_QC'] = np.append(floatData['PRES_QC'], read_qc(cc.variables['PRES_QC'][:].data.flatten())) - floatData['TEMP'] = np.append(floatData['TEMP'], cc.variables['TEMP'][:].data.flatten()) - floatData['TEMP_QC'] = np.append(floatData['TEMP_QC'], read_qc(cc.variables['TEMP_QC'][:].data.flatten())) - floatData['PSAL'] = np.append(floatData['PSAL'], cc.variables['PSAL'][:].data.flatten()) - floatData['PSAL_QC'] = np.append(floatData['PSAL_QC'], read_qc(cc.variables['PSAL_QC'][:].data.flatten())) - floatData['SDN'] = np.append(floatData['SDN'], cc.variables['JULD'][:].data.flatten() + mdates.datestr2num('1950-01-01')) - floatData['SDN_QC'] = np.append(floatData['SDN_QC'], read_qc(cc.variables['JULD_QC'][:].data.flatten())) - floatData['SDN_GRID'] = np.append(floatData['SDN_GRID'], np.array(N*M*[np.nanmean(cc.variables['JULD'][:].data.flatten() + mdates.datestr2num('1950-01-01'))])) - floatData['LATITUDE'] = np.append(floatData['LATITUDE'], cc.variables['LATITUDE'][:].data.flatten()) - floatData['LATITUDE_GRID'] = np.append(floatData['LATITUDE_GRID'], np.array(N*M*[np.nanmean(cc.variables['LATITUDE'][:].data.flatten())])) - floatData['LONGITUDE'] = np.append(floatData['LONGITUDE'], cc.variables['LONGITUDE'][:].data.flatten()) + floatData['PRES'] = np.append(floatData['PRES'], cc.variables['PRES'][:].data.flatten()) + floatData['PRES_QC'] = np.append(floatData['PRES_QC'], util.read_qc(cc.variables['PRES_QC'][:].data.flatten())) + floatData['TEMP'] = np.append(floatData['TEMP'], cc.variables['TEMP'][:].data.flatten()) + floatData['TEMP_QC'] = np.append(floatData['TEMP_QC'], util.read_qc(cc.variables['TEMP_QC'][:].data.flatten())) + floatData['PSAL'] = np.append(floatData['PSAL'], cc.variables['PSAL'][:].data.flatten()) + floatData['PSAL_QC'] = np.append(floatData['PSAL_QC'], util.read_qc(cc.variables['PSAL_QC'][:].data.flatten())) + floatData['SDN'] = np.append(floatData['SDN'], cc.variables['JULD'][:].data.flatten() + mdates.datestr2num('1950-01-01')) + floatData['SDN_QC'] = np.append(floatData['SDN_QC'], util.read_qc(cc.variables['JULD_QC'][:].data.flatten())) + floatData['SDN_GRID'] = np.append(floatData['SDN_GRID'], np.array(N*M*[np.nanmean(cc.variables['JULD'][:].data.flatten() + mdates.datestr2num('1950-01-01'))])) + floatData['LATITUDE'] = np.append(floatData['LATITUDE'], cc.variables['LATITUDE'][:].data.flatten()) + floatData['LATITUDE_GRID'] = np.append(floatData['LATITUDE_GRID'], np.array(N*M*[np.nanmean(cc.variables['LATITUDE'][:].data.flatten())])) + floatData['LONGITUDE'] = np.append(floatData['LONGITUDE'], cc.variables['LONGITUDE'][:].data.flatten()) floatData['LONGITUDE_GRID'] = np.append(floatData['LONGITUDE_GRID'], np.array(N*M*[np.nanmean(cc.variables['LONGITUDE'][:].data.flatten())])) - floatData['POSITION_QC'] = np.append(floatData['POSITION_QC'], read_qc(cc.variables['POSITION_QC'][:].data.flatten())) + floatData['POSITION_QC'] = np.append(floatData['POSITION_QC'], util.read_qc(cc.variables['POSITION_QC'][:].data.flatten())) + print(common_variables) # loop through other possible BGC variables - bgc_vars = ['DOXY', 'CHLA', 'BBP700', 'CDOM', 'NITRATE', 'DOWNWELLING_IRRADIANCE'] - for v in bgc_vars: - if v in common_variables: + for v in common_variables: + var_check = v in nc.variables.keys() and 'N_LEVELS' in nc.variables[v].dimensions + dtype_check = nc.variables[v].dtype == 'float32' or nc.variables[v].dtype == 'float64' + check = var_check and dtype_check + if check: floatData[v] = np.append(floatData[v], vertically_align(cc.variables['PRES'][:].data.flatten(), nc.variables['PRES'][:].data.flatten(), nc.variables[v][:].data.flatten())) - v_adj = v + '_ADJUSTED' - if v_adj in common_variables: - floatData[v_adj] = np.append(floatData[v_adj], vertically_align(cc.variables['PRES'][:].data.flatten(), nc.variables['PRES'][:].data.flatten(), nc.variables[v_adj][:].data.flatten())) floatData['dPRES'] = delta_pres(cc.variables['PRES'][:].data.flatten(), nc.variables['PRES'][:].data.flatten()) for v in floatData.keys(): v_qc = v + '_QC' if v_qc in common_variables: - floatData[v_qc] = np.append(floatData[v_qc], read_qc(nc.variables[v_qc][:].data.flatten())) + floatData[v_qc] = np.append(floatData[v_qc], util.read_qc(nc.variables[v_qc][:].data.flatten())) if 'DOXY' in floatData.keys(): - floatData['O2Sat'] = 100*floatData['DOXY']/unit.oxy_sol(floatData['PSAL'], floatData['TEMP'], unit='micromole/kg') - floatData['O2Sat_QC'] = get_worst_flag(floatData['TEMP_QC'], floatData['PSAL_QC'], floatData['DOXY_QC']) + floatData['O2Sat'] = 100*floatData['DOXY']/unit.oxy_sol(floatData['PSAL'], floatData['TEMP']) + floatData['O2Sat_QC'] = util.get_worst_flag(floatData['TEMP_QC'], floatData['PSAL_QC'], floatData['DOXY_QC']) + + return floatData + +def read_all_variables(nc): + ''' + Read all variables and dimensions from an Argo netCDF file. + + Args: + nc: a netCDF file object + + Returns: + floatData: python dict with all variable and dimension names + ''' + + floatData = dict() + for name, dim in nc.dimensions.items(): + floatData[name] = dim.size + for name, var in nc.variables.items(): + floatData[name] = var[:].data.flatten() + + return floatData + +def read_sprof_gridded_variables(nc): + ''' + Read all variables and dimensions from an Argo Sprof file, do not flatten + arrays, keep as 2D arrays. + + Args: + nc: a netCDF file object + + Returns: + floatData: python dict with all variable and dimension names + ''' + + floatData = dict() + for name, dim in nc.dimensions.items(): + floatData[name] = dim.size + for name, var in nc.variables.items(): + floatData[name] = var[:].data return floatData @@ -1396,7 +1376,7 @@ def read_history_qctest(nc): def dict_clean(float_data, bad_flags=None): clean_float_data = copy.deepcopy(float_data) - qc_flags = [k for k in clean_float_data.keys() if '_QC' in k] + qc_flags = [k for k in clean_float_data.keys() if '_QC' in k and 'PROFILE' not in k] if bad_flags is None: for qc_key in qc_flags: @@ -1429,7 +1409,7 @@ def dict_clean(float_data, bad_flags=None): def dict_fillvalue_clean(float_data): clean_float_data = copy.deepcopy(float_data) - qc_keys = [k for k in clean_float_data.keys() if '_QC' in k and 'SDN' not in k] + qc_keys = [k for k in clean_float_data.keys() if '_QC' in k and 'SDN' not in k and 'PROFILE' not in k] for k in qc_keys: data_key = k.replace('_QC','') @@ -1460,7 +1440,7 @@ def track(float_data): return track -def woa_to_float_track(track, param, zlim=(0,1000), local_path='./'): +def woa_to_float_track(track, param, zlim=(0,1000), local_path='./', verbose=True): ''' Function to load WOA18 climatological data for comparison with autonomous floats. Data to be interpolated along the provided track (t, lat, lon). @@ -1495,8 +1475,8 @@ def woa_to_float_track(track, param, zlim=(0,1000), local_path='./'): Change log: ''' - xtrack, woa_track, woa_data = io.load_woa_data(track, param, zlim=zlim, local_path=local_path) - woa_interp, wt, yrday = interp.interp_woa_data(xtrack, woa_track, woa_data) + xtrack, woa_track, woa_data = io.load_woa_data(track, param, zlim=zlim, local_path=local_path, verbose=verbose) + woa_interp, wt, yrday = interp.interp_woa_data(xtrack, woa_track, woa_data, verbose=verbose) z = woa_track[0] return z, woa_interp, wt @@ -1541,7 +1521,7 @@ def calc_gain(data, ref, inair=True, zlim=25., verbose=True): comparison is not available. Args: - data: float data dict object, output from load_argo_data() + data: float data dict object, output from load_argo() ref: reference data set, either NCEP pO2 or WOA O2sat inair: boolean flag to indicate if comparison to NCEP in-air data or WOA surface data should be done, default to @@ -1686,10 +1666,6 @@ def calc_gain_with_carryover(pO2_opt_air, pO2_ref_air, pO2_opt_water): return gains, carry_over -def grid_var(gridded_cycle, Nprof, Nlevel, argo_var): - - return gV - def vertically_align(P1, P2, V2): out = np.nan*np.ones(P1.shape) @@ -1733,7 +1709,7 @@ def range_check(key, floatdict, verbose=True): return cleandict -def calc_fixed_doxy_adjusted_error(floatdict, fix_err=10, zlim=25): +def calc_fixed_doxy_adjusted_error(floatdict, fix_err=10): ''' Calculate DOXY_ADJUSTED_ERROR for fixed partial pressure of 10 mbar PPOX_DOXY. @@ -1743,7 +1719,7 @@ def calc_fixed_doxy_adjusted_error(floatdict, fix_err=10, zlim=25): T = floatdict['TEMP'] P = floatdict['PRES'] - error = unit.pO2_to_doxy(np.array(S.shape[0]*[10]), S, T, P=P) + error = unit.pO2_to_doxy(np.array(S.shape[0]*[fix_err]), S, T, P=P) return error @@ -1754,6 +1730,11 @@ def oxy_b(dt, tau): def oxy_a(dt, tau): return 1 - 2*oxy_b(dt, tau) +# hard code the LUT table value so I don't have to +# ship the text file with the package +### is this the right/ok way to do this??? feels wrong ### +from .lut import lut as lut_data + def correct_response_time(t, DO, T, thickness): # convert time to seconds @@ -1767,7 +1748,6 @@ def correct_response_time(t, DO, T, thickness): # load temperature, boundary layer thickness, and tau matrix from # look-up table provided in the supplement to Bittig and Kortzinger (2017) - lut_data = np.loadtxt(REF_PATH / 'T_lL_tau_3830_4330.dat') lut_lL = lut_data[0,1:] lut_T = lut_data[1:,0] tau100 = lut_data[1:,1:] @@ -1776,7 +1756,6 @@ def correct_response_time(t, DO, T, thickness): # translate boundary layer thickness to temperature dependent tau f_thickness = interp2d(lut_T, lut_lL, tau100.T, bounds_error=False) tau_T = np.squeeze(f_thickness(mean_temp, thickness))[0,:] - print(tau_T) # loop through oxygen data for i in range(N-1): dt = t_sec[i+1] - t_sec[i] @@ -1811,3 +1790,21 @@ def correct_response_time_Tconst(t, DO, tau): DO_out = f(t_sec) return DO_out + +def get_optode_type(wmo): + if '__metaindex__' not in globals(): + global __metaindex__ + __metaindex__ = get_index(index='meta') + + ix = __metaindex__[__metaindex__.wmo == wmo] + + local_file = Path(ARGO_PATH) / ix.dac.iloc[0] / str(wmo) / ix.file.iloc[0].split('/')[-1] + nc = Dataset(local_file) + + doxy_index = util.get_parameter_index(nc['SENSOR'][:].data, 'OPTODE_DOXY') + if doxy_index.shape[0] == 0: + return 'NO_OPTODE_FOUND' + else: + optode_type = util.read_ncstr(nc['SENSOR_MODEL'][:].data[doxy_index[0], :]) + return optode_type + diff --git a/build/lib/bgcArgoDMQC/fplt.py b/build/lib/bgcArgoDMQC/fplt.py index 4f137ab..44b3434 100644 --- a/build/lib/bgcArgoDMQC/fplt.py +++ b/build/lib/bgcArgoDMQC/fplt.py @@ -1,21 +1,15 @@ -import sys - import numpy as np import matplotlib.pyplot as plt import matplotlib.dates as mdates -try: - import seaborn as sns - sns.set(style='ticks', context='paper', palette='colorblind') -except: - sys.stdout.write('Although the seaborn package is not required, it is recommended for plotting - see https://seaborn.pydata.org/\n') +import seaborn as sns +sns.set(style='ticks', context='paper', palette='colorblind') try: import cmocean.cm as cmo cmocean_flag = True except: - sys.stdout.write('Although the cmocean package is not required, it is recommended for plotting - see https://matplotlib.org/cmocean/\n') cmocean_flag = False class pltClass: @@ -232,7 +226,7 @@ def var_cscatter(df, varname='DOXY', cmap=None, ax=None, ylim=(0,2000), clabel=N return g -def profiles(df, varlist=['DOXY'], Ncycle=1, Nprof=1, zvar='PRES', xlabels=None, ylabel=None, axes=None, ylim=None, **kwargs): +def profiles(df, varlist=['DOXY'], Ncycle=1, Nprof=np.inf, zvar='PRES', xlabels=None, ylabel=None, axes=None, ylim=None, **kwargs): if xlabels is None: var_units = dict( @@ -251,7 +245,9 @@ def profiles(df, varlist=['DOXY'], Ncycle=1, Nprof=1, zvar='PRES', xlabels=None, DOXY_ADJUSTED='Diss. Oxygen ($\mathregular{\mu}$mol kg$^{-1}$)', DOWNWELLING_IRRADIANCE='Downwelling Irradiance (W m$^{-2}$)', ) - xlabels = [var_units[v] for v in varlist] + xlabels = [var_units[v] if v in var_units.keys() else '' for v in varlist] + + cm = plt.cm.gray_r if axes is None: fig, axes = plt.subplots(1, len(varlist), sharey=True) @@ -276,12 +272,22 @@ def profiles(df, varlist=['DOXY'], Ncycle=1, Nprof=1, zvar='PRES', xlabels=None, df.loc[df[zvar] > ylim[1]*1.1] = np.nan CYCNUM = df.CYCLE.unique() + greyflag = False + if not 'color' in kwargs.keys(): + greyflag = True + else: + c = kwargs.pop('color') + + if Nprof > CYCNUM.shape[0]: + Nprof = CYCNUM.shape[0] for i,v in enumerate(varlist): for n in range(Nprof): subset_df = df.loc[df.CYCLE == CYCNUM[Ncycle-1 + n-1]] - axes[i].plot(subset_df[v], subset_df[zvar], **kwargs) + if greyflag: + c = cm(0.75*(CYCNUM[Ncycle-1 + n-1]/CYCNUM[-1])+0.25) + axes[i].plot(subset_df[v], subset_df[zvar], color=c, **kwargs) axes[i].set_ylim(ylim[::-1]) axes[i].set_xlabel(xlabels[i]) @@ -303,3 +309,83 @@ def profiles(df, varlist=['DOXY'], Ncycle=1, Nprof=1, zvar='PRES', xlabels=None, g.axes = axes return g + +def qc_profiles(df, varlist=['DOXY'], Ncycle=1, Nprof=np.inf, zvar='PRES', xlabels=None, ylabel=None, axes=None, ylim=None, **kwargs): + + if xlabels is None: + var_units = dict( + TEMP='Temperature ({}C)'.format(chr(176)), + TEMP_ADJUSTED='Temperature ({}C)'.format(chr(176)), + PSAL='Practical Salinity', + PSAL_ADJUSTED='Practical Salinity', + PDEN='Potential Density (kg m$^{-3}$)', + CHLA='Chlorophyll (mg m$^{-3}$', + CHLA_ADJUSTED='Chlorophyll (mg m$^{-3}$', + BBP700='$\mathsf{b_{bp}}$ (m$^{-1}$)', + BBP700_ADJUSTED='$\mathsf{b_{bp}}$ (m$^{-1}$)', + CDOM='CDOM (mg m$^{-3}$)', + CDOM_ADJUSTED='CDOM (mg m$^{-3}$)', + DOXY='Diss. Oxygen ($\mathregular{\mu}$mol kg$^{-1}$)', + DOXY_ADJUSTED='Diss. Oxygen ($\mathregular{\mu}$mol kg$^{-1}$)', + DOWNWELLING_IRRADIANCE='Downwelling Irradiance (W m$^{-2}$)', + ) + xlabels = [var_units[v] for v in varlist] + + if axes is None: + fig, axes = plt.subplots(1, len(varlist), sharey=True) + if len(varlist) == 1: + axes = [axes] + elif len(varlist) > 1: + fig = axes[0].get_figure() + else: + fig = axes.get_figure() + axes = [axes] + + if ylim is None: + if zvar == 'PRES': + ylim=(0,2000) + if ylabel is None: + ylabel = 'Pressure (dbar)' + elif zvar == 'PDEN': + ylim = (df.PDEN.min(), df.PDEN.max()) + if ylabel is None: + ylabel = 'Density (kg m$^{-3}$)' + + df.loc[df[zvar] > ylim[1]*1.1] = np.nan + + CYCNUM = df.CYCLE.unique() + + if Nprof > CYCNUM.shape[0]: + Nprof = CYCNUM.shape[0] + + groups = {'Good':[1,2,5], 'Probably Bad':[3], 'Bad':[4], 'Interpolated':[8]} + colors = {'Good':'green', 'Probably Bad':'yellow', 'Bad':'red', 'Interpolated':'blue'} + + for i,v in enumerate(varlist): + vqc = v + '_QC' + for n in range(Nprof): + subset_df = df.loc[df.CYCLE == CYCNUM[Ncycle-1 + n-1]] + for k,f in groups.items(): + flag_subset_df = subset_df[subset_df[vqc].isin(f)] + axes[i].plot(flag_subset_df[v], flag_subset_df[zvar], 'o', markeredgewidth=0.1, markeredgecolor='k', markerfacecolor=colors[k], **kwargs) + + axes[i].set_ylim(ylim[::-1]) + axes[i].set_xlabel(xlabels[i]) + + subset_df = df.loc[df.CYCLE == CYCNUM[Ncycle-1]] + date = mdates.num2date(subset_df.SDN.iloc[0]).strftime('%d %b, %Y') + + axes[0].set_ylabel(ylabel) + if Nprof != 1: + axes[0].set_title('Cyc. {:d}-{:d}, {}'.format(int(CYCNUM[Ncycle-1]), int(CYCNUM[Ncycle-1+Nprof-1]), date)) + else: + axes[0].set_title('Cyc. {:d}, {}'.format(int(CYCNUM[Ncycle-1]), date)) + + w, h = fig.get_figwidth(), fig.get_figheight() + fig.set_size_inches(w*len(varlist)/3, h) + + g = pltClass() + g.fig = fig + g.axes = axes + + return g diff --git a/build/lib/bgcArgoDMQC/io.py b/build/lib/bgcArgoDMQC/io.py index 0486b5c..0d6efa2 100644 --- a/build/lib/bgcArgoDMQC/io.py +++ b/build/lib/bgcArgoDMQC/io.py @@ -11,6 +11,7 @@ from netCDF4 import Dataset +from . import configure from . import util global index_path @@ -18,6 +19,29 @@ if not index_path.exists(): index_path.mkdir() +global URL_DICT +URL_DICT = { + 'ftp.ifremer.fr':'ftp.ifremer.fr', + 'ifremer':'ftp.ifremer.fr', + 'coriolis':'ftp.ifremer.fr', + 'usgodae.org':'usgodae.org', + 'godae':'usgodae.org', + 'us':'usgodae.org' +} + +global URL_DIR_DICT +URL_DIR_DICT = { + 'ftp.ifremer.fr':'/ifremer/argo/', + 'usgodae.org':'/pub/outgoing/argo/', +} + +config = configure.read_config() +if 'default_url' in config.keys(): + url_name = config.pop('default_url') + url = URL_DICT[url_name] +else: + url = 'ftp.ifremer.fr' + def index_exists(): meta = 'ar_index_global_meta.txt.gz' @@ -31,7 +55,7 @@ def index_exists(): return all([local_meta.exists(), local_index.exists(), local_bgc.exists(), local_synth.exists()]) -def read_index(mission='B', remote=False): +def read_index(mission='B', remote=False, url=url): ''' Function to read and extract information from Argo global index, then save it to a dataframe for faster access. @@ -40,18 +64,22 @@ def read_index(mission='B', remote=False): mission (str): *B*, *C*, *S*, or *M* for biogeochemical, global/core, synthetic, and metadata indices respectfully. ''' + url_dir = URL_DIR_DICT[url] if mission == 'B': local_filename = index_path / 'argo_bio-profile_index.txt.gz' - remote_filename = 'ftp://ftp.ifremer.fr/ifremer/argo/argo_bio-profile_index.txt.gz' + remote_filename = 'ftp://' + url + (Path(url_dir) / 'argo_bio-profile_index.txt.gz').as_posix() elif mission == 'C': local_filename = index_path / 'ar_index_global_prof.txt.gz' - remote_filename = 'ftp://ftp.ifremer.fr/ifremer/argo/ar_index_global_prof.txt.gz' + remote_filename = 'ftp://' + url + (Path(url_dir) / 'ar_index_global_prof.txt.gz').as_posix() elif mission == 'S': local_filename = index_path / 'argo_synthetic-profile_index.txt.gz' - remote_filename = 'ftp://ftp.ifremer.fr/ifremer/argo/argo_synthetic-profile_index.txt.gz' + remote_filename = 'ftp://' + url + (Path(url_dir) / 'argo_synthetic-profile_index.txt.gz').as_posix() elif mission == 'M': local_filename = index_path / 'ar_index_global_meta.txt.gz' - remote_filename = 'ftp://ftp.ifremer.fr/ifremer/argo/ar_index_global_meta.txt.gz' + remote_filename = 'ftp://' + url + (Path(url_dir) / 'ar_index_global_meta.txt.gz').as_posix() + elif mission == 'T': + local_filename = index_path / 'ar_index_global_traj.txt.gz' + remote_filename = 'ftp://' + url + (Path(url_dir) / 'ar_index_global_traj.txt.gz').as_posix() else: raise ValueError('Input {} not recognized'.format(mission)) @@ -65,33 +93,43 @@ def read_index(mission='B', remote=False): df = pd.read_csv(local_filename, compression='gzip', header=8) - df['dac'] = np.array([f.split('/')[0] for f in df.file]) df['wmo'] = np.array([int(f.split('/')[1]) for f in df.file]) - df['cycle'] = np.array([int(f.split('/')[-1].split('.')[-2].split('_')[-1].replace('D','')) for f in df.file]) + df['dac'] = np.array([f.split('/')[0] for f in df.file]) + if mission != 'M' and mission != 'T': + df['cycle'] = np.array([int(f.split('/')[-1].split('.')[-2].split('_')[-1].replace('D','')) for f in df.file]) return df -def update_index(ftype=None): +def update_index(ftype=None, url=url): ''' Function to access FTP server to download Argo metadata and profile global index files ''' - ftp = ftplib.FTP('ftp.ifremer.fr') + ftp = ftplib.FTP(url) + url_dir = URL_DIR_DICT[url] ftp.login() - ftp.cwd('/ifremer/argo/') + ftp.cwd(url_dir) meta = 'ar_index_global_meta.txt.gz' + traj = 'ar_index_global_traj.txt.gz' index = 'ar_index_global_prof.txt.gz' bgc = 'argo_bio-profile_index.txt.gz' synth = 'argo_synthetic-profile_index.txt.gz' + local_meta = index_path / meta if ftype is None or ftype == 'meta': lf = open(local_meta, 'wb') ftp.retrbinary('RETR ' + meta, lf.write) lf.close() + local_traj = index_path / traj + if ftype is None or ftype == 'traj': + lf = open(local_traj, 'wb') + ftp.retrbinary('RETR ' + traj, lf.write) + lf.close() + local_index = index_path / index if ftype is None or ftype =='profile' or ftype == 'C': lf = open(local_index, 'wb') @@ -315,7 +353,7 @@ def get_ncep(varname, local_path='./', overwrite=False, years=[2010, 2020]): yearlist = years elif len(years) == 2: yearlist = range(years[0], years[1]+1) - elif len(years > 2): + else: yearlist = years if varname == 'pres': @@ -383,7 +421,7 @@ def get_ncep(varname, local_path='./', overwrite=False, years=[2010, 2020]): return ftp -def get_argo(*args, local_path='./', url='ftp.ifremer.fr', overwrite=False, summary_overwrite=True, ftype=None, mission='CB', mode='RD', __nfiles__=None): +def get_argo(*args, local_path='./', url=url, overwrite=False, summary_overwrite=True, ftype=None, mission='CB', mode='RD', __nfiles__=None): ''' Function to download all data from a single float, or individual profiles @@ -391,7 +429,7 @@ def get_argo(*args, local_path='./', url='ftp.ifremer.fr', overwrite=False, summ Args: *args: list of files, floats, or directories local_path (optional, str or Path): local directory to save float data, defaults to current directory - url (optional, str): url of the GDAC to connect to, defaults to ifremer + url (optional, str): url of the GDAC to connect to, defaults to ifremer or the value in the configuration file overwrite (optional, bool): whether to overwrite existing local files, default *False* ftype (optional, str): can be 'summary' if the user wishes to only download Sprof, traj, meta files, default is *None* mission (optional, str): Argo mission, can be 'B' for biogeochemical or 'C' for core, or 'CB' for both, default is 'CB' @@ -426,12 +464,8 @@ def get_argo(*args, local_path='./', url='ftp.ifremer.fr', overwrite=False, summ for init_a in arglist: # if its a float number, build ftp paths to floats if type(init_a) in [int, float, np.int32, np.int64, np.float32, np.float64]: - if url == 'ftp.ifremer.fr': - base_path = '/ifremer/argo/dac' - elif url == 'usgodae.org': - base_path = '/pub/outgoing/argo/dac' - - a = '{}/{}/{:d}'.format(base_path, get_dac(init_a), init_a) + base_path = URL_DIR_DICT[url] + a = (Path(base_path) / 'dac' / get_dac(init_a) / str(init_a)).as_posix() else: a = init_a @@ -448,7 +482,7 @@ def get_argo(*args, local_path='./', url='ftp.ifremer.fr', overwrite=False, summ # define local location to save file dac_path = local_path / dac - wmo_path = local_path / dac / wmo + wmo_path = dac_path / wmo profile_path = wmo_path / 'profiles' # make the directory if it doesn't exist @@ -489,7 +523,7 @@ def get_argo(*args, local_path='./', url='ftp.ifremer.fr', overwrite=False, summ # define local location to save file dac_path = local_path / dac - wmo_path = local_path / dac / wmo + wmo_path = dac_path / wmo # make the directory if it doesn't exist if not dac_path.is_dir(): @@ -559,7 +593,7 @@ def get_argo(*args, local_path='./', url='ftp.ifremer.fr', overwrite=False, summ ftp.retrbinary('RETR ' + fn, lf.write) lf.close() - elif len(args) > 1: + else: local_path = Path(local_path) dacdir = args[0] @@ -633,40 +667,33 @@ def load_woa_data(track, param, zlim=(0,1000), local_path='./', verbose=True): Function to load WOA18 climatological data for comparison with autonomous floats. Data to be interpolated along the provided track (t, lat, lon). - INPUT: - track: array with the columns (SDN, lat, lon) - param: requested variable, valid inputs are - T: temperature - S: salinity - O2: dissolved oxygen - O2sat: oxygen percent saturation - NO3: nitrate - Si: silicate - PO4: phosphate - zlim: depth bounds (upper, lower), default to (0, 1000) - local_path: local directory where WOA files are stored, assumes - current directory if no input - - OUTPUT: - xtrack: same as track input, but adjusted lon if the track - crosses the 180/-180 meridian - woa_track: list with z, lat, and lon arrays of WOA data - data: gridded array of the input variable (month, z, lat, lon) - - AUTHOR: Christopher Gordon - Fisheries and Oceans Canada - chris.gordon@dfo-mpo.gc.ca + Args: + track: array with the columns (SDN, lat, lon) + param: requested variable, valid inputs are + - T: temperature + - S: salinity + - O2: dissolved oxygen + - O2sat: oxygen percent saturation + - NO3: nitrate + - Si: silicate + - PO4: phosphate + zlim: depth bounds (upper, lower), default to (0, 1000) + local_path: local directory where WOA files are stored, assumes + current directory if no input - ACKNOWLEDGEMENT: this code is adapted from the SOCCOM SAGE_O2Argo matlab - code, available via https://github.com/SOCCOM-BGCArgo/ARGO_PROCESSING, - written by Tanya Maurer & Josh Plant + Returns: + xtrack: same as track input, but adjusted lon if the track crosses the 180/-180 meridian + woa_track: list with z, lat, and lon arrays of WOA data + data: gridded array of the input variable (month, z, lat, lon) - LAST UPDATE: 29-04-2020 + Acknowledgement: + This code is adapted from the SOCCOM SAGE_O2Argo matlab + code, available via https://github.com/SOCCOM-BGCArgo/ARGO_PROCESSING, + written by Tanya Maurer & Josh Plant - CHANGE LOG: - - 23-04-2020: changed zlim to optional input argument - 29-04-2020: switched file/path handling from os module to pathlib + Change log: + 23-04-2020: changed zlim to optional input argument + 29-04-2020: switched file/path handling from os module to pathlib ''' # make local_path a Path() object from a string, account for windows path @@ -680,6 +707,7 @@ def load_woa_data(track, param, zlim=(0,1000), local_path='./', verbose=True): lon_bounds = (np.nanmax(track[lix,2]), np.nanmin(track[~lix,2])) else: lon_bounds = (np.nanmin(track[:,2]), np.nanmax(track[:,2])) + lix = None lat_bounds = (np.nanmin(track[:,1]), np.nanmax(track[:,1])) # set up extraction files, variables @@ -687,6 +715,11 @@ def load_woa_data(track, param, zlim=(0,1000), local_path='./', verbose=True): var_name = woa_param + '_an' base_woa_file = 'woa18_{}_{}'.format(woa_ftype, woa_param) + + # assign var names to avoid unbound warnings + data, xlon, z_sub, lat_sub, lon_sub = None, None, None, None, None + z_ix, lat_ix, lon_ix = None, None, None + # loop through months for i in range(12): mo = i+1 @@ -741,20 +774,12 @@ def load_ncep_data(track, varname, local_path='./'): float in-air data. Data to be interpolated along the provided track (t, lat, lon). - INPUT: - track: array with the columns (SDN, lat, lon) - local_path: local directory where NCEP files are stored, assumes - current directory if no input - - OUTPUT: - - AUTHOR: Christopher Gordon - Fisheries and Oceans Canada - chris.gordon@dfo-mpo.gc.ca + Args: + track: array with the columns (SDN, lat, lon) + local_path: local directory where NCEP files are stored, assumes current directory if no input - LAST UPDATE: 04-05-2020 + Returns: - CHANGE LOG: ''' # make local_path a Path() object from a string, account for windows path @@ -779,6 +804,7 @@ def load_ncep_data(track, varname, local_path='./'): lon_bounds = (np.nanmax(track[lix,2]), np.nanmin(track[~lix,2])) else: lon_bounds = (np.nanmin(track[:,2]), np.nanmax(track[:,2])) + lix = None lat_bounds = (np.nanmin(track[:,1]), np.nanmax(track[:,1])) sdn = track[:,0] @@ -788,6 +814,10 @@ def load_ncep_data(track, varname, local_path='./'): if Nyear == 0 and yrs[0] != mdates.datetime.date.today().year: Nyear = 1 + # assign var names to avoid unbound warnings + data, xlon, ncep_time, landmask, xtrack, ncep_track = None, None, None, None, None, None + lat_sub, lon_sub, lat_ix, lon_ix = None, None, None, None + # counter index for going across years j = 0 for n in range(Nyear+1): @@ -829,7 +859,7 @@ def load_ncep_data(track, varname, local_path='./'): vdata = nc.variables[varname][:] for i in range(len(time)): - data_2d = vdata[i,:,:][:,lon_ix][lat_ix,:] + data_2d = vdata[i,:,:][:,lon_ix][lat_ix,:] data_2d[landmask] = np.nan data[j,:,:] = data_2d ncep_time[j] = time[i] @@ -841,6 +871,28 @@ def load_ncep_data(track, varname, local_path='./'): return xtrack, ncep_track, data +def copy_netcdf_except(infile, outfile, exclude_vars=[], exclude_dims=[]): + ''' + Copy data from a netCDF file with the exception of dimension and variable + names listed in exclude_vars and exclude_dims. + ''' + with Dataset(infile) as src, Dataset(outfile, 'w') as dst: + # copy global attributes all at once via dictionary + dst.setncatts(src.__dict__) + # copy dimensions except for the excluded + for name, dimension in src.dimensions.items(): + if name not in exclude_dims: + dst.createDimension(name, (len(dimension) if not dimension.isunlimited() else None)) + # copy file data except for the excluded + for name, variable in src.variables.items(): + if name not in exclude_vars: + x = dst.createVariable(name, variable.datatype, variable.dimensions) + # copy variable attributes all at once via dictionary + dst[name].setncatts(src[name].__dict__) + dst[name][:] = src[name][:] + + return Dataset(outfile, 'a') + def append_variable_to_file(fn, *args): ''' Add an arbitrary number of variables (*args) to the existing netcdf file @@ -848,27 +900,45 @@ def append_variable_to_file(fn, *args): fields that can be passed directly to the netCDF file. If the variable name already exists, it will overwrite it with the new information. - Inputs: + Args: + fn: string pointing to netcdf (.nc) file to be appended + *args: arbitrary number of python dicts with all required fields to create + or overwrite a new netcdf variable. Example: + + new_var = dict( + name='MY_NEW_VARIABLE', # variable name, can be new or existing + datatype=np.float64, # variable datatype, can be np datatype or string + dimensions=('N', 'M'), # will be created with warning if they do not exist + data=data_arr, # the data + long_name='The new variable', + standard_name='my_new_var', + units='degree_celsius', + valid_min=0, + valid_max=1e9, + resolution=0.001, + comment='Added by John Doe on Sept 20, 2019' + ) + ''' - fn: string pointing to netcdf (.nc) file to be appended + nc = Dataset(fn, 'a') + + for new_var in args: + name = new_var.pop('name') + data = new_var.pop('data') + nc.createVariable(name, new_var.pop('datatype'), new_var.pop('dimensions')) + nc[name].setncatts(new_var) + nc[name][:] = data - *args: arbitrary number of python dicts with all required fields to create - or overwrite a new netcdf variable. Example: + return nc - new_var = dict( - name='MY_NEW_VARIABLE', # variable name, can be new or existing - dimensions=('N', 'M'), # note these dims must already exist in the nc file - long_name='The new variable', - standard_name='my_new_var', - units='degree_celsius', - valid_min=0, - valid_max=1e9, - resolution=0.001, - comment='Added by John Doe on Sept 20, 2019' - ) - ''' +def generate_standard_comments(): + return - nc = Dataset(fn, 'a') +def append_scienfitic_calib_information(nc_var, str_to_append): + + return + +def str_to_nc(s): - return nc \ No newline at end of file + return \ No newline at end of file diff --git a/build/lib/bgcArgoDMQC/lut.py b/build/lib/bgcArgoDMQC/lut.py new file mode 100644 index 0000000..36d8775 --- /dev/null +++ b/build/lib/bgcArgoDMQC/lut.py @@ -0,0 +1,3119 @@ +import numpy as np + +global lut +lut = np.array([[1.0000000e+02, 0.0000000e+00, 2.0000000e+00, 4.0000000e+00, + 6.0000000e+00, 8.0000000e+00, 1.0000000e+01, 1.2000000e+01, + 1.4000000e+01, 1.6000000e+01, 1.8000000e+01, 2.0000000e+01, + 2.2000000e+01, 2.4000000e+01, 2.6000000e+01, 2.8000000e+01, + 3.0000000e+01, 3.2000000e+01, 3.4000000e+01, 3.6000000e+01, + 3.8000000e+01, 4.0000000e+01, 4.2000000e+01, 4.4000000e+01, + 4.6000000e+01, 4.8000000e+01, 5.0000000e+01, 5.2000000e+01, + 5.4000000e+01, 5.6000000e+01, 5.8000000e+01, 6.0000000e+01, + 6.2000000e+01, 6.4000000e+01, 6.6000000e+01, 6.8000000e+01, + 7.0000000e+01, 7.2000000e+01, 7.4000000e+01, 7.6000000e+01, + 7.8000000e+01, 8.0000000e+01, 8.2000000e+01, 8.4000000e+01, + 8.6000000e+01, 8.8000000e+01, 9.0000000e+01, 9.2000000e+01, + 9.4000000e+01, 9.6000000e+01, 9.8000000e+01, 1.0000000e+02, + 1.0200000e+02, 1.0400000e+02, 1.0600000e+02, 1.0800000e+02, + 1.1000000e+02, 1.1200000e+02, 1.1400000e+02, 1.1600000e+02, + 1.1800000e+02, 1.2000000e+02, 1.2200000e+02, 1.2400000e+02, + 1.2600000e+02, 1.2800000e+02, 1.3000000e+02, 1.3200000e+02, + 1.3400000e+02, 1.3600000e+02, 1.3800000e+02, 1.4000000e+02, + 1.4200000e+02, 1.4400000e+02, 1.4600000e+02, 1.4800000e+02, + 1.5000000e+02, 1.5200000e+02, 1.5400000e+02, 1.5600000e+02, + 1.5800000e+02, 1.6000000e+02, 1.6200000e+02, 1.6400000e+02, + 1.6600000e+02, 1.6800000e+02, 1.7000000e+02, 1.7200000e+02, + 1.7400000e+02, 1.7600000e+02, 1.7800000e+02, 1.8000000e+02, + 1.8200000e+02, 1.8400000e+02, 1.8600000e+02, 1.8800000e+02, + 1.9000000e+02, 1.9200000e+02, 1.9400000e+02, 1.9600000e+02, + 1.9800000e+02, 2.0000000e+02, 2.0200000e+02, 2.0400000e+02, + 2.0600000e+02, 2.0800000e+02, 2.1000000e+02, 2.1200000e+02, + 2.1400000e+02, 2.1600000e+02, 2.1800000e+02, 2.2000000e+02, + 2.2200000e+02, 2.2400000e+02, 2.2600000e+02, 2.2800000e+02, + 2.3000000e+02, 2.3200000e+02, 2.3400000e+02, 2.3600000e+02, + 2.3800000e+02, 2.4000000e+02, 2.4200000e+02, 2.4400000e+02, + 2.4600000e+02, 2.4800000e+02, 2.5000000e+02, 2.5500000e+02, + 2.6000000e+02, 2.6500000e+02, 2.7000000e+02, 2.7500000e+02, + 2.8000000e+02, 2.8500000e+02, 2.9000000e+02, 2.9500000e+02, + 3.0000000e+02, 3.0500000e+02, 3.1000000e+02, 3.1500000e+02, + 3.2000000e+02, 3.2500000e+02, 3.3000000e+02, 3.3500000e+02, + 3.4000000e+02, 3.4500000e+02, 3.5000000e+02, 3.5500000e+02, + 3.6000000e+02, 3.6500000e+02, 3.7000000e+02, 3.7500000e+02, + 3.8000000e+02, 3.8500000e+02, 3.9000000e+02, 3.9500000e+02, + 4.0000000e+02, 4.0500000e+02, 4.1000000e+02, 4.1500000e+02, + 4.2000000e+02, 4.2500000e+02, 4.3000000e+02, 4.3500000e+02, + 4.4000000e+02, 4.4500000e+02, 4.5000000e+02, 4.5500000e+02, + 4.6000000e+02, 4.6500000e+02, 4.7000000e+02, 4.7500000e+02, + 4.8000000e+02, 4.8500000e+02, 4.9000000e+02, 4.9500000e+02, + 5.0000000e+02, 5.0500000e+02, 5.1000000e+02, 5.1500000e+02, + 5.2000000e+02, 5.2500000e+02, 5.3000000e+02, 5.3500000e+02, + 5.4000000e+02, 5.4500000e+02, 5.5000000e+02, 5.5500000e+02, + 5.6000000e+02, 5.6500000e+02, 5.7000000e+02, 5.7500000e+02, + 5.8000000e+02, 5.8500000e+02, 5.9000000e+02, 5.9500000e+02, + 6.0000000e+02, 6.0500000e+02, 6.1000000e+02, 6.1500000e+02, + 6.2000000e+02, 6.2500000e+02, 6.3000000e+02, 6.3500000e+02, + 6.4000000e+02, 6.4500000e+02, 6.5000000e+02, 6.5500000e+02, + 6.6000000e+02, 6.6500000e+02, 6.7000000e+02, 6.7500000e+02, + 6.8000000e+02, 6.8500000e+02, 6.9000000e+02, 6.9500000e+02, + 7.0000000e+02, 7.0500000e+02, 7.1000000e+02, 7.1500000e+02, + 7.2000000e+02, 7.2500000e+02, 7.3000000e+02, 7.3500000e+02, + 7.4000000e+02, 7.4500000e+02, 7.5000000e+02, 7.6000000e+02, + 7.7000000e+02, 7.8000000e+02, 7.9000000e+02, 8.0000000e+02, + 8.1000000e+02, 8.2000000e+02, 8.3000000e+02, 8.4000000e+02, + 8.5000000e+02, 8.6000000e+02, 8.7000000e+02, 8.8000000e+02, + 8.9000000e+02, 9.0000000e+02, 9.1000000e+02, 9.2000000e+02, + 9.3000000e+02, 9.4000000e+02, 9.5000000e+02, 9.6000000e+02, + 9.7000000e+02, 9.8000000e+02, 9.9000000e+02, 1.0000000e+03, + 1.0100000e+03, 1.0200000e+03, 1.0300000e+03, 1.0400000e+03, + 1.0500000e+03, 1.0600000e+03, 1.0700000e+03, 1.0800000e+03, + 1.0900000e+03, 1.1000000e+03, 1.1100000e+03, 1.1200000e+03, + 1.1300000e+03, 1.1400000e+03, 1.1500000e+03, 1.1600000e+03, + 1.1700000e+03, 1.1800000e+03, 1.1900000e+03, 1.2000000e+03, + 1.2100000e+03, 1.2200000e+03, 1.2300000e+03, 1.2400000e+03, + 1.2500000e+03, 1.2600000e+03, 1.2700000e+03, 1.2800000e+03, + 1.2900000e+03, 1.3000000e+03, 1.3100000e+03, 1.3200000e+03, + 1.3300000e+03, 1.3400000e+03, 1.3500000e+03, 1.3600000e+03, + 1.3700000e+03, 1.3800000e+03, 1.3900000e+03, 1.4000000e+03, + 1.4100000e+03, 1.4200000e+03, 1.4300000e+03, 1.4400000e+03, + 1.4500000e+03, 1.4600000e+03, 1.4700000e+03, 1.4800000e+03, + 1.4900000e+03, 1.5000000e+03,], + [-2.0000000e+00, 5.7302937e+00, 7.0901023e+00, 8.5693947e+00, + 1.0088733e+01, 1.1627610e+01, 1.3177927e+01, 1.4736394e+01, + 1.6301206e+01, 1.7871778e+01, 1.9446238e+01, 2.1024465e+01, + 2.2606277e+01, 2.4191465e+01, 2.5779856e+01, 2.7371318e+01, + 2.8965717e+01, 3.0562918e+01, 3.2162691e+01, 3.3765223e+01, + 3.5370624e+01, 3.6978728e+01, 3.8589466e+01, 4.0202795e+01, + 4.1818692e+01, 4.3437133e+01, 4.5058104e+01, 4.6681594e+01, + 4.8307601e+01, 4.9936150e+01, 5.1567278e+01, 5.3200889e+01, + 5.4836876e+01, 5.6475269e+01, 5.8116102e+01, 5.9759375e+01, + 6.1405094e+01, 6.3053257e+01, 6.4703865e+01, 6.6356911e+01, + 6.8012402e+01, 6.9670329e+01, 7.1330694e+01, 7.2993492e+01, + 7.4658713e+01, 7.6326334e+01, 7.7996355e+01, 7.9668803e+01, + 8.1343736e+01, 8.3021156e+01, 8.4701049e+01, 8.6383398e+01, + 8.8068214e+01, 8.9755480e+01, 9.1445205e+01, 9.3137391e+01, + 9.4832039e+01, 9.6529142e+01, 9.8228721e+01, 9.9930759e+01, + 1.0163527e+02, 1.0334225e+02, 1.0505171e+02, 1.0676364e+02, + 1.0847807e+02, 1.1019498e+02, 1.1191438e+02, 1.1363630e+02, + 1.1536073e+02, 1.1708766e+02, 1.1881710e+02, 1.2054900e+02, + 1.2228338e+02, 1.2402024e+02, 1.2575960e+02, 1.2750144e+02, + 1.2924579e+02, 1.3099266e+02, 1.3274203e+02, 1.3449392e+02, + 1.3624831e+02, 1.3800524e+02, 1.3976468e+02, 1.4152666e+02, + 1.4329116e+02, 1.4505817e+02, 1.4682773e+02, 1.4859984e+02, + 1.5037446e+02, 1.5215162e+02, 1.5393133e+02, 1.5571359e+02, + 1.5749839e+02, 1.5928575e+02, 1.6107564e+02, 1.6286808e+02, + 1.6466308e+02, 1.6646064e+02, 1.6826075e+02, 1.7006339e+02, + 1.7186862e+02, 1.7367637e+02, 1.7548669e+02, 1.7729958e+02, + 1.7911505e+02, 1.8093308e+02, 1.8275371e+02, 1.8457697e+02, + 1.8640279e+02, 1.8823122e+02, 1.9006222e+02, 1.9189585e+02, + 1.9373205e+02, 1.9557085e+02, 1.9741225e+02, 1.9925626e+02, + 2.0110288e+02, 2.0295208e+02, 2.0480392e+02, 2.0665834e+02, + 2.0851538e+02, 2.1037504e+02, 2.1223728e+02, 2.1410218e+02, + 2.1596967e+02, 2.1783978e+02, 2.1971253e+02, 2.2440588e+02, + 2.2911567e+02, 2.3384189e+02, 2.3858464e+02, 2.4334392e+02, + 2.4811971e+02, 2.5291210e+02, 2.5772115e+02, 2.6254681e+02, + 2.6738916e+02, 2.7224824e+02, 2.7712415e+02, 2.8201681e+02, + 2.8692626e+02, 2.9185249e+02, 2.9679543e+02, 3.0175524e+02, + 3.0673188e+02, 3.1172541e+02, 3.1673578e+02, 3.2176315e+02, + 3.2680742e+02, 3.3186866e+02, 3.3694698e+02, 3.4204226e+02, + 3.4715458e+02, 3.5228398e+02, 3.5743047e+02, 3.6259407e+02, + 3.6777480e+02, 3.7297269e+02, 3.7818774e+02, 3.8341991e+02, + 3.8866936e+02, 3.9393596e+02, 3.9921988e+02, 4.0452099e+02, + 4.0983946e+02, 4.1517514e+02, 4.2052814e+02, 4.2589847e+02, + 4.3128614e+02, 4.3669118e+02, 4.4211360e+02, 4.4755332e+02, + 4.5301055e+02, 4.5848519e+02, 4.6397716e+02, 4.6948658e+02, + 4.7501356e+02, 4.8055791e+02, 4.8611975e+02, 4.9169907e+02, + 4.9729589e+02, 5.0291021e+02, 5.0854205e+02, 5.1419142e+02, + 5.1985824e+02, 5.2554275e+02, 5.3124476e+02, 5.3696451e+02, + 5.4270181e+02, 5.4845678e+02, 5.5422943e+02, 5.6001977e+02, + 5.6582781e+02, 5.7165356e+02, 5.7749703e+02, 5.8335809e+02, + 5.8923700e+02, 5.9513354e+02, 6.0104795e+02, 6.0697999e+02, + 6.1292980e+02, 6.1889739e+02, 6.2488276e+02, 6.3088596e+02, + 6.3690692e+02, 6.4294572e+02, 6.4900220e+02, 6.5507666e+02, + 6.6116882e+02, 6.6727884e+02, 6.7340686e+02, 6.7955260e+02, + 6.8571623e+02, 6.9189774e+02, 6.9809700e+02, 7.0431431e+02, + 7.1054953e+02, 7.1680253e+02, 7.2307360e+02, 7.2936246e+02, + 7.3566925e+02, 7.4199400e+02, 7.4833671e+02, 7.5469739e+02, + 7.6107604e+02, 7.6747267e+02, 7.7388712e+02, 7.8677018e+02, + 7.9972511e+02, 8.1275213e+02, 8.2585128e+02, 8.3902245e+02, + 8.5226566e+02, 8.6558135e+02, 8.7896899e+02, 8.9242933e+02, + 9.0596184e+02, 9.1956664e+02, 9.3324396e+02, 9.4699363e+02, + 9.6081591e+02, 9.7471084e+02, 9.8867824e+02, 1.0027184e+03, + 1.0168310e+03, 1.0310165e+03, 1.0452746e+03, 1.0596055e+03, + 1.0740091e+03, 1.0884857e+03, 1.1030349e+03, 1.1176572e+03, + 1.1323523e+03, 1.1471204e+03, 1.1619614e+03, 1.1768755e+03, + 1.1918625e+03, 1.2069226e+03, 1.2220558e+03, 1.2372621e+03, + 1.2525415e+03, 1.2678941e+03, 1.2833199e+03, 1.2988189e+03, + 1.3143915e+03, 1.3300373e+03, 1.3457562e+03, 1.3615486e+03, + 1.3774143e+03, 1.3933533e+03, 1.4093658e+03, 1.4254519e+03, + 1.4416113e+03, 1.4578439e+03, 1.4741501e+03, 1.4906548e+03, + 1.5074357e+03, 1.5243081e+03, 1.5412728e+03, 1.5583302e+03, + 1.5754810e+03, 1.5927258e+03, 1.6100653e+03, 1.6275001e+03, + 1.6450309e+03, 1.6626582e+03, 1.6803831e+03, 1.6982061e+03, + 1.7161280e+03, 1.7341495e+03, 1.7522713e+03, 1.7704942e+03, + 1.7888190e+03, 1.8072464e+03, 1.8257774e+03, 1.8444126e+03, + 1.8631530e+03, 1.8819994e+03, 1.9009526e+03, 1.9200136e+03, + 1.9391831e+03, 1.9584622e+03,], + [-1.0000000e+00, 5.5454078e+00, 6.8839307e+00, 8.3390607e+00, + 9.8334854e+00, 1.1346617e+01, 1.2870884e+01, 1.4402892e+01, + 1.5941175e+01, 1.7484998e+01, 1.9032565e+01, 2.0583795e+01, + 2.2138508e+01, 2.3696514e+01, 2.5257616e+01, 2.6821703e+01, + 2.8388644e+01, 2.9958302e+01, 3.1530457e+01, 3.3105311e+01, + 3.4682958e+01, 3.6263233e+01, 3.7846065e+01, 3.9431420e+01, + 4.1019272e+01, 4.2609600e+01, 4.4202389e+01, 4.5797630e+01, + 4.7395323e+01, 4.8995496e+01, 5.0598181e+01, 5.2203267e+01, + 5.3810663e+01, 5.5420404e+01, 5.7032521e+01, 5.8647015e+01, + 6.0263889e+01, 6.1883142e+01, 6.3504774e+01, 6.5128780e+01, + 6.6755166e+01, 6.8383923e+01, 7.0015052e+01, 7.1648548e+01, + 7.3284402e+01, 7.4922593e+01, 7.6563110e+01, 7.8206003e+01, + 7.9851320e+01, 8.1499057e+01, 8.3149199e+01, 8.4801737e+01, + 8.6456662e+01, 8.8113988e+01, 8.9773699e+01, 9.1435806e+01, + 9.3100309e+01, 9.4767203e+01, 9.6436506e+01, 9.8108203e+01, + 9.9782306e+01, 1.0145882e+02, 1.0313774e+02, 1.0481908e+02, + 1.0650283e+02, 1.0818901e+02, 1.0987762e+02, 1.1156868e+02, + 1.1326218e+02, 1.1495811e+02, 1.1665648e+02, 1.1835724e+02, + 1.2006043e+02, 1.2176602e+02, 1.2347405e+02, 1.2518449e+02, + 1.2689739e+02, 1.2861272e+02, 1.3033049e+02, 1.3205073e+02, + 1.3377339e+02, 1.3549852e+02, 1.3722611e+02, 1.3895615e+02, + 1.4068866e+02, 1.4242362e+02, 1.4416105e+02, 1.4590094e+02, + 1.4764331e+02, 1.4938814e+02, 1.5113546e+02, 1.5288525e+02, + 1.5463752e+02, 1.5639227e+02, 1.5814948e+02, 1.5990920e+02, + 1.6167139e+02, 1.6343607e+02, 1.6520323e+02, 1.6697288e+02, + 1.6874499e+02, 1.7051962e+02, 1.7229672e+02, 1.7407632e+02, + 1.7585843e+02, 1.7764307e+02, 1.7943024e+02, 1.8121991e+02, + 1.8301214e+02, 1.8480687e+02, 1.8660413e+02, 1.8840392e+02, + 1.9020625e+02, 1.9201107e+02, 1.9381844e+02, 1.9562836e+02, + 1.9744080e+02, 1.9925575e+02, 2.0107327e+02, 2.0289333e+02, + 2.0471591e+02, 2.0654103e+02, 2.0836871e+02, 2.1019894e+02, + 2.1203172e+02, 2.1386703e+02, 2.1570493e+02, 2.2031082e+02, + 2.2493266e+02, 2.2957058e+02, 2.3422455e+02, 2.3889457e+02, + 2.4358075e+02, 2.4828304e+02, 2.5300155e+02, 2.5773623e+02, + 2.6248720e+02, 2.6725442e+02, 2.7203803e+02, 2.7683793e+02, + 2.8165417e+02, 2.8648677e+02, 2.9133566e+02, 2.9620091e+02, + 3.0108255e+02, 3.0598063e+02, 3.1089522e+02, 3.1582624e+02, + 3.2077377e+02, 3.2573783e+02, 3.3071844e+02, 3.3571557e+02, + 3.4072935e+02, 3.4575976e+02, 3.5080680e+02, 3.5587050e+02, + 3.6095080e+02, 3.6604788e+02, 3.7116168e+02, 3.7629212e+02, + 3.8143940e+02, 3.8660337e+02, 3.9178412e+02, 3.9698176e+02, + 4.0219614e+02, 4.0742736e+02, 4.1267543e+02, 4.1794047e+02, + 4.2322230e+02, 4.2852104e+02, 4.3383669e+02, 4.3916927e+02, + 4.4451881e+02, 4.4988521e+02, 4.5526868e+02, 4.6066914e+02, + 4.6608656e+02, 4.7152092e+02, 4.7697238e+02, 4.8244077e+02, + 4.8792630e+02, 4.9342876e+02, 4.9894827e+02, 5.0448497e+02, + 5.1003864e+02, 5.1560944e+02, 5.2119739e+02, 5.2680251e+02, + 5.3242483e+02, 5.3806434e+02, 5.4372108e+02, 5.4939503e+02, + 5.5508609e+02, 5.6079452e+02, 5.6652018e+02, 5.7226298e+02, + 5.7802317e+02, 5.8380050e+02, 5.8959511e+02, 5.9540714e+02, + 6.0123634e+02, 6.0708285e+02, 6.1294668e+02, 6.1882783e+02, + 6.2472632e+02, 6.3064219e+02, 6.3657535e+02, 6.4252591e+02, + 6.4849370e+02, 6.5447901e+02, 6.6048157e+02, 6.6650167e+02, + 6.7253903e+02, 6.7859381e+02, 6.8466617e+02, 6.9075580e+02, + 6.9686287e+02, 7.0298740e+02, 7.0912937e+02, 7.1528881e+02, + 7.2146573e+02, 7.2765996e+02, 7.3387184e+02, 7.4010104e+02, + 7.4634792e+02, 7.5261213e+02, 7.5889403e+02, 7.7151005e+02, + 7.8419622e+02, 7.9695257e+02, 8.0977917e+02, 8.2267588e+02, + 8.3564292e+02, 8.4868017e+02, 8.6178788e+02, 8.7496598e+02, + 8.8821464e+02, 9.0153384e+02, 9.1492355e+02, 9.2838371e+02, + 9.4191477e+02, 9.5551615e+02, 9.6918851e+02, 9.8293147e+02, + 9.9674528e+02, 1.0106297e+03, 1.0245851e+03, 1.0386115e+03, + 1.0527086e+03, 1.0668767e+03, 1.0811158e+03, 1.0954258e+03, + 1.1098070e+03, 1.1242590e+03, 1.1387822e+03, 1.1533766e+03, + 1.1680419e+03, 1.1827786e+03, 1.1975865e+03, 1.2124655e+03, + 1.2274158e+03, 1.2424372e+03, 1.2575301e+03, 1.2726944e+03, + 1.2879298e+03, 1.3032371e+03, 1.3186154e+03, 1.3340653e+03, + 1.3495866e+03, 1.3651797e+03, 1.3808439e+03, 1.3965800e+03, + 1.4123875e+03, 1.4282663e+03, 1.4442167e+03, 1.4602387e+03, + 1.4763321e+03, 1.4926557e+03, 1.5092190e+03, 1.5258718e+03, + 1.5426144e+03, 1.5594475e+03, 1.5763716e+03, 1.5933875e+03, + 1.6104958e+03, 1.6276970e+03, 1.6449919e+03, 1.6623807e+03, + 1.6798648e+03, 1.6974445e+03, 1.7151206e+03, 1.7328938e+03, + 1.7507647e+03, 1.7687342e+03, 1.7868029e+03, 1.8049717e+03, + 1.8232413e+03, 1.8416124e+03, 1.8600860e+03, 1.8786627e+03, + 1.8973435e+03, 1.9161292e+03,], + [ 0.0000000e+00, 5.3679254e+00, 6.6845564e+00, 8.1163243e+00, + 9.5856744e+00, 1.1073140e+01, 1.2571383e+01, 1.4077177e+01, + 1.5588961e+01, 1.7106178e+01, 1.8627025e+01, 2.0151404e+01, + 2.1679168e+01, 2.3210131e+01, 2.4744115e+01, 2.6280988e+01, + 2.7820634e+01, 2.9362917e+01, 3.0907614e+01, 3.2454972e+01, + 3.4005041e+01, 3.5557659e+01, 3.7112766e+01, 3.8670330e+01, + 4.0230322e+01, 4.1792725e+01, 4.3357523e+01, 4.4924708e+01, + 4.6494282e+01, 4.8066275e+01, 4.9640715e+01, 5.1217476e+01, + 5.2796486e+01, 5.4377783e+01, 5.5961393e+01, 5.7547317e+01, + 5.9135559e+01, 6.0726118e+01, 6.2318993e+01, 6.3914179e+01, + 6.5511682e+01, 6.7111493e+01, 6.8713613e+01, 7.0318037e+01, + 7.1924753e+01, 7.3533743e+01, 7.5144997e+01, 7.6758575e+01, + 7.8374523e+01, 7.9992819e+01, 8.1613447e+01, 8.3236415e+01, + 8.4861714e+01, 8.6489335e+01, 8.8119286e+01, 8.9751570e+01, + 9.1386187e+01, 9.3023140e+01, 9.4662422e+01, 9.6304054e+01, + 9.7948018e+01, 9.9594328e+01, 1.0124299e+02, 1.0289400e+02, + 1.0454736e+02, 1.0620309e+02, 1.0786118e+02, 1.0952166e+02, + 1.1118452e+02, 1.1284975e+02, 1.1451734e+02, 1.1618725e+02, + 1.1785953e+02, 1.1953416e+02, 1.2121115e+02, 1.2289051e+02, + 1.2457225e+02, 1.2625635e+02, 1.2794285e+02, 1.2963173e+02, + 1.3132299e+02, 1.3301664e+02, 1.3471268e+02, 1.3641110e+02, + 1.3811194e+02, 1.3981516e+02, 1.4152079e+02, 1.4322882e+02, + 1.4493926e+02, 1.4665208e+02, 1.4836734e+02, 1.5008500e+02, + 1.5180507e+02, 1.5352756e+02, 1.5525246e+02, 1.5697979e+02, + 1.5870954e+02, 1.6044169e+02, 1.6217626e+02, 1.6391325e+02, + 1.6565267e+02, 1.6739450e+02, 1.6913874e+02, 1.7088545e+02, + 1.7263459e+02, 1.7438618e+02, 1.7614024e+02, 1.7789676e+02, + 1.7965574e+02, 1.8141716e+02, 1.8318104e+02, 1.8494741e+02, + 1.8671619e+02, 1.8848746e+02, 1.9026120e+02, 1.9203738e+02, + 1.9381607e+02, 1.9559720e+02, 1.9738080e+02, 1.9916688e+02, + 2.0095544e+02, 2.0274645e+02, 2.0453997e+02, 2.0633595e+02, + 2.0813441e+02, 2.0993536e+02, 2.1173878e+02, 2.1625827e+02, + 2.2079333e+02, 2.2534397e+02, 2.2991028e+02, 2.3449225e+02, + 2.3908988e+02, 2.4370328e+02, 2.4833242e+02, 2.5297732e+02, + 2.5763808e+02, 2.6231471e+02, 2.6700720e+02, 2.7171565e+02, + 2.7643994e+02, 2.8118017e+02, 2.8593630e+02, 2.9070831e+02, + 2.9549634e+02, 3.0030032e+02, 3.0512038e+02, 3.0995643e+02, + 3.1480862e+02, 3.1967684e+02, 3.2456124e+02, 3.2946172e+02, + 3.3437843e+02, 3.3931125e+02, 3.4426026e+02, 3.4922557e+02, + 3.5420704e+02, 3.5920477e+02, 3.6421885e+02, 3.6924916e+02, + 3.7429577e+02, 3.7935879e+02, 3.8443807e+02, 3.8953371e+02, + 3.9464574e+02, 3.9977424e+02, 4.0491907e+02, 4.1008034e+02, + 4.1525804e+02, 4.2045220e+02, 4.2566284e+02, 4.3088996e+02, + 4.3613358e+02, 4.4139372e+02, 4.4667038e+02, 4.5196359e+02, + 4.5727335e+02, 4.6259965e+02, 4.6794251e+02, 4.7330196e+02, + 4.7867789e+02, 4.8407052e+02, 4.8947975e+02, 4.9490550e+02, + 5.0034801e+02, 5.0580720e+02, 5.1128298e+02, 5.1677560e+02, + 5.2228496e+02, 5.2781096e+02, 5.3335372e+02, 5.3891336e+02, + 5.4448967e+02, 5.5008288e+02, 5.5569276e+02, 5.6131944e+02, + 5.6696305e+02, 5.7262336e+02, 5.7830049e+02, 5.8399446e+02, + 5.8970528e+02, 5.9543295e+02, 6.0117749e+02, 6.0693890e+02, + 6.1271719e+02, 6.1851237e+02, 6.2432446e+02, 6.3015349e+02, + 6.3599936e+02, 6.4186206e+02, 6.4774183e+02, 6.5363855e+02, + 6.5955208e+02, 6.6548271e+02, 6.7143016e+02, 6.7739473e+02, + 6.8337614e+02, 6.8937469e+02, 6.9539009e+02, 7.0142249e+02, + 7.0747191e+02, 7.1353851e+02, 7.1962198e+02, 7.2572248e+02, + 7.3184002e+02, 7.3797462e+02, 7.4412627e+02, 7.5648077e+02, + 7.6890341e+02, 7.8139457e+02, 7.9395397e+02, 8.0658182e+02, + 8.1927800e+02, 8.3204290e+02, 8.4487620e+02, 8.5777814e+02, + 8.7074875e+02, 8.8378808e+02, 8.9689612e+02, 9.1007288e+02, + 9.2331849e+02, 9.3663299e+02, 9.5001621e+02, 9.6346860e+02, + 9.7698978e+02, 9.9057977e+02, 1.0042390e+03, 1.0179672e+03, + 1.0317645e+03, 1.0456309e+03, 1.0595663e+03, 1.0735712e+03, + 1.0876449e+03, 1.1017881e+03, 1.1160005e+03, 1.1302822e+03, + 1.1446331e+03, 1.1590533e+03, 1.1735431e+03, 1.1881021e+03, + 1.2027304e+03, 1.2174284e+03, 1.2321957e+03, 1.2470326e+03, + 1.2619391e+03, 1.2769150e+03, 1.2919605e+03, 1.3070760e+03, + 1.3222608e+03, 1.3375156e+03, 1.3528396e+03, 1.3682336e+03, + 1.3836972e+03, 1.3992304e+03, 1.4148334e+03, 1.4305059e+03, + 1.4462481e+03, 1.4620601e+03, 1.4779418e+03, 1.4940742e+03, + 1.5104206e+03, 1.5268542e+03, 1.5433755e+03, 1.5599851e+03, + 1.5766835e+03, 1.5934714e+03, 1.6103494e+03, 1.6273180e+03, + 1.6443780e+03, 1.6615296e+03, 1.6787740e+03, 1.6961117e+03, + 1.7135434e+03, 1.7310696e+03, 1.7486911e+03, 1.7664086e+03, + 1.7842229e+03, 1.8021346e+03, 1.8201445e+03, 1.8382533e+03, + 1.8564619e+03, 1.8747709e+03,], + [ 1.0000000e+00, 5.1967159e+00, 6.4925789e+00, 7.9002989e+00, + 9.3449058e+00, 1.0806849e+01, 1.2279219e+01, 1.3758900e+01, + 1.5244440e+01, 1.6735237e+01, 1.8229470e+01, 1.9727190e+01, + 2.1228176e+01, 2.2732272e+01, 2.4239305e+01, 2.5749147e+01, + 2.7261685e+01, 2.8776780e+01, 3.0294221e+01, 3.1814271e+01, + 3.3336951e+01, 3.4862115e+01, 3.6389698e+01, 3.7919672e+01, + 3.9452010e+01, 4.0986694e+01, 4.2523710e+01, 4.4063051e+01, + 4.5604720e+01, 4.7148750e+01, 4.8695162e+01, 5.0243820e+01, + 5.1794667e+01, 5.3347747e+01, 5.4903076e+01, 5.6460661e+01, + 5.8020503e+01, 5.9582601e+01, 6.1146955e+01, 6.2713559e+01, + 6.4282420e+01, 6.5853527e+01, 6.7426884e+01, 6.9002482e+01, + 7.0580310e+01, 7.2160349e+01, 7.3742596e+01, 7.5327115e+01, + 7.6913944e+01, 7.8503058e+01, 8.0094449e+01, 8.1688104e+01, + 8.3284036e+01, 8.4882228e+01, 8.6482691e+01, 8.8085433e+01, + 8.9690431e+01, 9.1297712e+01, 9.2907271e+01, 9.4519099e+01, + 9.6133219e+01, 9.7749613e+01, 9.9368295e+01, 1.0098927e+02, + 1.0261253e+02, 1.0423810e+02, 1.0586598e+02, 1.0749619e+02, + 1.0912871e+02, 1.1076353e+02, 1.1240063e+02, 1.1404002e+02, + 1.1568169e+02, 1.1732567e+02, 1.1897195e+02, 1.2062053e+02, + 1.2227143e+02, 1.2392463e+02, 1.2558017e+02, 1.2723801e+02, + 1.2889820e+02, 1.3056070e+02, 1.3222553e+02, 1.3389268e+02, + 1.3556218e+02, 1.3723400e+02, 1.3890818e+02, 1.4058468e+02, + 1.4226353e+02, 1.4394473e+02, 1.4562825e+02, 1.4731415e+02, + 1.4900238e+02, 1.5069296e+02, 1.5238590e+02, 1.5408119e+02, + 1.5577885e+02, 1.5747886e+02, 1.5918121e+02, 1.6088591e+02, + 1.6259300e+02, 1.6430242e+02, 1.6601419e+02, 1.6772836e+02, + 1.6944490e+02, 1.7116386e+02, 1.7288519e+02, 1.7460892e+02, + 1.7633505e+02, 1.7806357e+02, 1.7979446e+02, 1.8152779e+02, + 1.8326348e+02, 1.8500158e+02, 1.8674207e+02, 1.8848498e+02, + 1.9023026e+02, 1.9197798e+02, 1.9372808e+02, 1.9548059e+02, + 1.9723552e+02, 1.9899287e+02, 2.0075263e+02, 2.0251481e+02, + 2.0427939e+02, 2.0604639e+02, 2.0781581e+02, 2.1225000e+02, + 2.1669932e+02, 2.2116388e+02, 2.2564363e+02, 2.3013867e+02, + 2.3464899e+02, 2.3917459e+02, 2.4371558e+02, 2.4827194e+02, + 2.5284367e+02, 2.5743091e+02, 2.6203363e+02, 2.6665185e+02, + 2.7128549e+02, 2.7593464e+02, 2.8059928e+02, 2.8527943e+02, + 2.8997515e+02, 2.9468639e+02, 2.9941329e+02, 3.0415583e+02, + 3.0891402e+02, 3.1368789e+02, 3.1847745e+02, 3.2328274e+02, + 3.2810376e+02, 3.3294055e+02, 3.3779311e+02, 3.4266139e+02, + 3.4754556e+02, 3.5244557e+02, 3.5736142e+02, 3.6229314e+02, + 3.6724075e+02, 3.7220427e+02, 3.7718370e+02, 3.8217907e+02, + 3.8719038e+02, 3.9221767e+02, 3.9726094e+02, 4.0232021e+02, + 4.0739549e+02, 4.1248690e+02, 4.1759426e+02, 4.2271767e+02, + 4.2785716e+02, 4.3301273e+02, 4.3818439e+02, 4.4337216e+02, + 4.4857605e+02, 4.5379607e+02, 4.5903222e+02, 4.6428450e+02, + 4.6955293e+02, 4.7483753e+02, 4.8013830e+02, 4.8545526e+02, + 4.9078845e+02, 4.9613789e+02, 5.0150361e+02, 5.0688561e+02, + 5.1228392e+02, 5.1769855e+02, 5.2312950e+02, 5.2857679e+02, + 5.3404041e+02, 5.3952026e+02, 5.4501658e+02, 5.5052927e+02, + 5.5605833e+02, 5.6160377e+02, 5.6716560e+02, 5.7274383e+02, + 5.7833846e+02, 5.8394951e+02, 5.8957686e+02, 5.9522078e+02, + 6.0088113e+02, 6.0655794e+02, 6.1225122e+02, 6.1796082e+02, + 6.2368704e+02, 6.2942975e+02, 6.3518895e+02, 6.4096452e+02, + 6.4675673e+02, 6.5256547e+02, 6.5839059e+02, 6.6423239e+02, + 6.7009059e+02, 6.7596548e+02, 6.8185694e+02, 6.8776480e+02, + 6.9368940e+02, 6.9963041e+02, 7.0558817e+02, 7.1156237e+02, + 7.1755332e+02, 7.2356073e+02, 7.2958474e+02, 7.4168280e+02, + 7.5384740e+02, 7.6607841e+02, 7.7837623e+02, 7.9074055e+02, + 8.0317160e+02, 8.1566960e+02, 8.2823424e+02, 8.4086573e+02, + 8.5356392e+02, 8.6632924e+02, 8.7916154e+02, 8.9206077e+02, + 9.0502701e+02, 9.1806055e+02, 9.3116103e+02, 9.4432869e+02, + 9.5756334e+02, 9.7086544e+02, 9.8423483e+02, 9.9767131e+02, + 1.0111751e+03, 1.0247463e+03, 1.0383849e+03, 1.0520909e+03, + 1.0658644e+03, 1.0797052e+03, 1.0936137e+03, 1.1075895e+03, + 1.1216329e+03, 1.1357439e+03, 1.1499223e+03, 1.1641686e+03, + 1.1784824e+03, 1.1928638e+03, 1.2073131e+03, 1.2218301e+03, + 1.2364149e+03, 1.2510673e+03, 1.2657878e+03, 1.2805760e+03, + 1.2954320e+03, 1.3103560e+03, 1.3253481e+03, 1.3404078e+03, + 1.3555357e+03, 1.3707313e+03, 1.3859945e+03, 1.4013259e+03, + 1.4167250e+03, 1.4321923e+03, 1.4477270e+03, 1.4633299e+03, + 1.4790008e+03, 1.4949325e+03, 1.5110628e+03, 1.5272781e+03, + 1.5435790e+03, 1.5599661e+03, 1.5764398e+03, 1.5930008e+03, + 1.6096496e+03, 1.6263868e+03, 1.6432131e+03, 1.6601288e+03, + 1.6771350e+03, 1.6942320e+03, 1.7114207e+03, 1.7287015e+03, + 1.7460752e+03, 1.7635425e+03, 1.7811040e+03, 1.7987604e+03, + 1.8165125e+03, 1.8343609e+03,], + [ 2.0000000e+00, 5.0327028e+00, 6.3068187e+00, 7.6913255e+00, + 9.1109414e+00, 1.0547620e+01, 1.1994262e+01, 1.3448041e+01, + 1.4907453e+01, 1.6371944e+01, 1.7839809e+01, 1.9311036e+01, + 2.0785439e+01, 2.2262866e+01, 2.3743149e+01, 2.5226171e+01, + 2.6711804e+01, 2.8199917e+01, 2.9690309e+01, 3.1183262e+01, + 3.2678773e+01, 3.4176694e+01, 3.5676975e+01, 3.7179579e+01, + 3.8684486e+01, 4.0191678e+01, 4.1701140e+01, 4.3212867e+01, + 4.4726864e+01, 4.6243166e+01, 4.7761787e+01, 4.9282579e+01, + 5.0805503e+01, 5.2330607e+01, 5.3857902e+01, 5.5387395e+01, + 5.6919086e+01, 5.8452975e+01, 5.9989061e+01, 6.1527339e+01, + 6.3067815e+01, 6.4610479e+01, 6.6155333e+01, 6.7702369e+01, + 6.9251575e+01, 7.0802931e+01, 7.2356442e+01, 7.3912176e+01, + 7.5470160e+01, 7.7030368e+01, 7.8592786e+01, 8.0157422e+01, + 8.1724268e+01, 8.3293318e+01, 8.4864578e+01, 8.6438058e+01, + 8.8013737e+01, 8.9591639e+01, 9.1171760e+01, 9.2754093e+01, + 9.4338657e+01, 9.5925438e+01, 9.7514447e+01, 9.9105689e+01, + 1.0069917e+02, 1.0229488e+02, 1.0389286e+02, 1.0549310e+02, + 1.0709559e+02, 1.0870032e+02, 1.1030728e+02, 1.1191646e+02, + 1.1352786e+02, 1.1514151e+02, 1.1675739e+02, 1.1837553e+02, + 1.1999592e+02, 1.2161857e+02, 1.2324348e+02, 1.2487064e+02, + 1.2650006e+02, 1.2813177e+02, 1.2976574e+02, 1.3140197e+02, + 1.3304047e+02, 1.3468126e+02, 1.3632431e+02, 1.3796966e+02, + 1.3961728e+02, 1.4126718e+02, 1.4291938e+02, 1.4457384e+02, + 1.4623062e+02, 1.4788966e+02, 1.4955101e+02, 1.5121465e+02, + 1.5288058e+02, 1.5454881e+02, 1.5621934e+02, 1.5789214e+02, + 1.5956726e+02, 1.6124466e+02, 1.6292436e+02, 1.6460639e+02, + 1.6629073e+02, 1.6797742e+02, 1.6966643e+02, 1.7135779e+02, + 1.7305147e+02, 1.7474747e+02, 1.7644582e+02, 1.7814647e+02, + 1.7984949e+02, 1.8155482e+02, 1.8326249e+02, 1.8497251e+02, + 1.8668487e+02, 1.8839957e+02, 1.9011663e+02, 1.9183600e+02, + 1.9355773e+02, 1.9528181e+02, 1.9700825e+02, 1.9873704e+02, + 2.0046819e+02, 2.0220171e+02, 2.0393756e+02, 2.0828753e+02, + 2.1265227e+02, 2.1703185e+02, 2.2142624e+02, 2.2583552e+02, + 2.3025965e+02, 2.3469874e+02, 2.3915273e+02, 2.4362175e+02, + 2.4810579e+02, 2.5260488e+02, 2.5711902e+02, 2.6164829e+02, + 2.6619262e+02, 2.7075201e+02, 2.7532648e+02, 2.7991608e+02, + 2.8452083e+02, 2.8914076e+02, 2.9377590e+02, 2.9842626e+02, + 3.0309187e+02, 3.0777282e+02, 3.1246900e+02, 3.1718048e+02, + 3.2190730e+02, 3.2664953e+02, 3.3140707e+02, 3.3618006e+02, + 3.4096839e+02, 3.4577221e+02, 3.5059140e+02, 3.5542612e+02, + 3.6027625e+02, 3.6514193e+02, 3.7002314e+02, 3.7491978e+02, + 3.7983205e+02, 3.8475986e+02, 3.8970316e+02, 3.9466213e+02, + 3.9963671e+02, 4.0462690e+02, 4.0963271e+02, 4.1465417e+02, + 4.1969129e+02, 4.2474407e+02, 4.2981253e+02, 4.3489668e+02, + 4.3999653e+02, 4.4511208e+02, 4.5024336e+02, 4.5539036e+02, + 4.6055309e+02, 4.6573155e+02, 4.7092576e+02, 4.7613577e+02, + 4.8136169e+02, 4.8660334e+02, 4.9186084e+02, 4.9713422e+02, + 5.0242360e+02, 5.0772876e+02, 5.1304981e+02, 5.1838690e+02, + 5.2373978e+02, 5.2910859e+02, 5.3449344e+02, 5.3989412e+02, + 5.4531087e+02, 5.5074345e+02, 5.5619200e+02, 5.6165665e+02, + 5.6713715e+02, 5.7263378e+02, 5.7814628e+02, 5.8367492e+02, + 5.8921945e+02, 5.9478014e+02, 6.0035687e+02, 6.0594951e+02, + 6.1155834e+02, 6.1718309e+02, 6.2282405e+02, 6.2848094e+02, + 6.3415409e+02, 6.3984329e+02, 6.4554847e+02, 6.5126990e+02, + 6.5700745e+02, 6.6276097e+02, 6.6853077e+02, 6.7431656e+02, + 6.8011865e+02, 6.8593689e+02, 6.9177114e+02, 6.9762171e+02, + 7.0348845e+02, 7.0937137e+02, 7.1527032e+02, 7.2711712e+02, + 7.3902859e+02, 7.5100492e+02, 7.6304634e+02, 7.7515255e+02, + 7.8732389e+02, 7.9956022e+02, 8.1186177e+02, 8.2422828e+02, + 8.3665996e+02, 8.4915705e+02, 8.6171920e+02, 8.7434684e+02, + 8.8703961e+02, 8.9979789e+02, 9.1262171e+02, 9.2551077e+02, + 9.3846530e+02, 9.5148535e+02, 9.6457116e+02, 9.7772234e+02, + 9.9093913e+02, 1.0042216e+03, 1.0175697e+03, 1.0309835e+03, + 1.0444630e+03, 1.0580083e+03, 1.0716191e+03, 1.0852960e+03, + 1.0990388e+03, 1.1128474e+03, 1.1267216e+03, 1.1406621e+03, + 1.1546682e+03, 1.1687406e+03, 1.1828788e+03, 1.1970830e+03, + 1.2113535e+03, 1.2256899e+03, 1.2400924e+03, 1.2545610e+03, + 1.2690958e+03, 1.2836968e+03, 1.2983637e+03, 1.3130974e+03, + 1.3278970e+03, 1.3427626e+03, 1.3576943e+03, 1.3726925e+03, + 1.3877566e+03, 1.4028868e+03, 1.4180833e+03, 1.4333460e+03, + 1.4486749e+03, 1.4640700e+03, 1.4795311e+03, 1.4952527e+03, + 1.5111678e+03, 1.5271659e+03, 1.5432475e+03, 1.5594132e+03, + 1.5756633e+03, 1.5919987e+03, 1.6084196e+03, 1.6249269e+03, + 1.6415209e+03, 1.6582021e+03, 1.6749715e+03, 1.6918296e+03, + 1.7087768e+03, 1.7258140e+03, 1.7429416e+03, 1.7601605e+03, + 1.7774711e+03, 1.7948742e+03,], + [ 3.0000000e+00, 4.8747840e+00, 6.1278996e+00, 7.4885561e+00, + 8.8836874e+00, 1.0295149e+01, 1.1716320e+01, 1.3144324e+01, + 1.4577810e+01, 1.6016258e+01, 1.7457925e+01, 1.8902849e+01, + 2.0350897e+01, 2.1801868e+01, 2.3255625e+01, 2.4712029e+01, + 2.6170988e+01, 2.7632343e+01, 2.9095913e+01, 3.0561998e+01, + 3.2030570e+01, 3.3501487e+01, 3.4974697e+01, 3.6450172e+01, + 3.7927889e+01, 3.9407831e+01, 4.0889984e+01, 4.2374345e+01, + 4.3860918e+01, 4.5349745e+01, 4.6840825e+01, 4.8334005e+01, + 4.9829269e+01, 5.1326654e+01, 5.2826179e+01, 5.4327844e+01, + 5.5831650e+01, 5.7337594e+01, 5.8845682e+01, 6.0355909e+01, + 6.1868270e+01, 6.3382766e+01, 6.4899395e+01, 6.6418149e+01, + 6.7939013e+01, 6.9461964e+01, 7.0987032e+01, 7.2514268e+01, + 7.4043690e+01, 7.5575282e+01, 7.7109033e+01, 7.8644939e+01, + 8.0182991e+01, 8.1723203e+01, 8.3265562e+01, 8.4810077e+01, + 8.6356749e+01, 8.7905581e+01, 8.9456574e+01, 9.1009722e+01, + 9.2565044e+01, 9.4122526e+01, 9.5682180e+01, 9.7244010e+01, + 9.8808021e+01, 1.0037421e+02, 1.0194261e+02, 1.0351321e+02, + 1.0508600e+02, 1.0666097e+02, 1.0823811e+02, 1.0981741e+02, + 1.1139889e+02, 1.1298254e+02, 1.1456838e+02, 1.1615642e+02, + 1.1774666e+02, 1.1933909e+02, 1.2093370e+02, 1.2253054e+02, + 1.2412957e+02, 1.2573083e+02, 1.2733429e+02, 1.2893996e+02, + 1.3054784e+02, 1.3215793e+02, 1.3377026e+02, 1.3538479e+02, + 1.3700157e+02, 1.3862055e+02, 1.4024177e+02, 1.4186522e+02, + 1.4349088e+02, 1.4511879e+02, 1.4674892e+02, 1.4838129e+02, + 1.5001589e+02, 1.5165273e+02, 1.5329181e+02, 1.5493312e+02, + 1.5657665e+02, 1.5822244e+02, 1.5987046e+02, 1.6152075e+02, + 1.6317331e+02, 1.6482815e+02, 1.6648523e+02, 1.6814462e+02, + 1.6980625e+02, 1.7147016e+02, 1.7313634e+02, 1.7480480e+02, + 1.7647554e+02, 1.7814853e+02, 1.7982382e+02, 1.8150138e+02, + 1.8318121e+02, 1.8486334e+02, 1.8654775e+02, 1.8823445e+02, + 1.8992341e+02, 1.9161470e+02, 1.9330825e+02, 1.9500410e+02, + 1.9670225e+02, 1.9840270e+02, 2.0010542e+02, 2.0437234e+02, + 2.0865365e+02, 2.1294943e+02, 2.1725962e+02, 2.2158430e+02, + 2.2592347e+02, 2.3027723e+02, 2.3464551e+02, 2.3902843e+02, + 2.4342594e+02, 2.4783817e+02, 2.5226510e+02, 2.5670671e+02, + 2.6116300e+02, 2.6563390e+02, 2.7011956e+02, 2.7462000e+02, + 2.7913516e+02, 2.8366511e+02, 2.8820987e+02, 2.9276947e+02, + 2.9734399e+02, 3.0193333e+02, 3.0653763e+02, 3.1115678e+02, + 3.1579094e+02, 3.2044005e+02, 3.2510407e+02, 3.2978315e+02, + 3.3447724e+02, 3.3918636e+02, 3.4391052e+02, 3.4864974e+02, + 3.5340404e+02, 3.5817344e+02, 3.6295794e+02, 3.6775765e+02, + 3.7257242e+02, 3.7740235e+02, 3.8224753e+02, 3.8710781e+02, + 3.9198337e+02, 3.9687407e+02, 4.0178007e+02, 4.0670132e+02, + 4.1163773e+02, 4.1658950e+02, 4.2155654e+02, 4.2653887e+02, + 4.3153650e+02, 4.3654943e+02, 4.4157767e+02, 4.4662122e+02, + 4.5168012e+02, 4.5675435e+02, 4.6184393e+02, 4.6694889e+02, + 4.7206935e+02, 4.7720516e+02, 4.8235641e+02, 4.8752325e+02, + 4.9270545e+02, 4.9790325e+02, 5.0311643e+02, 5.0834522e+02, + 5.1358952e+02, 5.1884923e+02, 5.2412457e+02, 5.2941544e+02, + 5.3472185e+02, 5.4004369e+02, 5.4538121e+02, 5.5073430e+02, + 5.5610296e+02, 5.6148720e+02, 5.6688704e+02, 5.7230248e+02, + 5.7773353e+02, 5.8318019e+02, 5.8864262e+02, 5.9412055e+02, + 5.9961411e+02, 6.0512333e+02, 6.1064835e+02, 6.1618890e+02, + 6.2174511e+02, 6.2731716e+02, 6.3290478e+02, 6.3850818e+02, + 6.4412717e+02, 6.4976202e+02, 6.5541243e+02, 6.6107873e+02, + 6.6676076e+02, 6.7245837e+02, 6.7817189e+02, 6.8390116e+02, + 6.8964619e+02, 6.9540682e+02, 7.0118339e+02, 7.1278387e+02, + 7.2444752e+02, 7.3617439e+02, 7.4796451e+02, 7.5981794e+02, + 7.7173472e+02, 7.8371502e+02, 7.9575862e+02, 8.0786595e+02, + 8.2003655e+02, 8.3227089e+02, 8.4456881e+02, 8.5693037e+02, + 8.6935559e+02, 8.8184450e+02, 8.9439726e+02, 9.0701374e+02, + 9.1969424e+02, 9.3243837e+02, 9.4524659e+02, 9.5811851e+02, + 9.7105457e+02, 9.8405438e+02, 9.9711841e+02, 1.0102465e+03, + 1.0234386e+03, 1.0366945e+03, 1.0500148e+03, 1.0633993e+03, + 1.0768479e+03, 1.0903607e+03, 1.1039377e+03, 1.1175792e+03, + 1.1312848e+03, 1.1450546e+03, 1.1588888e+03, 1.1727877e+03, + 1.1867506e+03, 1.2007780e+03, 1.2148700e+03, 1.2290263e+03, + 1.2432471e+03, 1.2575326e+03, 1.2718823e+03, 1.2862968e+03, + 1.3007754e+03, 1.3153193e+03, 1.3299270e+03, 1.3445995e+03, + 1.3593365e+03, 1.3741377e+03, 1.3890037e+03, 1.4039340e+03, + 1.4189290e+03, 1.4339884e+03, 1.4491126e+03, 1.4643014e+03, + 1.4795545e+03, 1.4950568e+03, 1.5107579e+03, 1.5265400e+03, + 1.5424035e+03, 1.5583490e+03, 1.5743770e+03, 1.5904881e+03, + 1.6066827e+03, 1.6229614e+03, 1.6393247e+03, 1.6557730e+03, + 1.6723073e+03, 1.6889281e+03, 1.7056358e+03, 1.7224311e+03, + 1.7393146e+03, 1.7562870e+03,], + [ 4.0000000e+00, 4.7226879e+00, 5.9546751e+00, 7.2921505e+00, + 8.6629224e+00, 1.0049329e+01, 1.1445145e+01, 1.2847587e+01, + 1.4255366e+01, 1.5667963e+01, 1.7083687e+01, 1.8502571e+01, + 1.9924472e+01, 2.1349217e+01, 2.2776665e+01, 2.4206705e+01, + 2.5639221e+01, 2.7074061e+01, 2.8511059e+01, 2.9950523e+01, + 3.1392401e+01, 3.2836563e+01, 3.4282958e+01, 3.5731558e+01, + 3.7182341e+01, 3.8635292e+01, 4.0090398e+01, 4.1547654e+01, + 4.3007070e+01, 4.4468688e+01, 4.5932495e+01, 4.7398336e+01, + 4.8866211e+01, 5.0336154e+01, 5.1808182e+01, 5.3282296e+01, + 5.4758498e+01, 5.6236787e+01, 5.7717157e+01, 5.9199616e+01, + 6.0684153e+01, 6.2170772e+01, 6.3659468e+01, 6.5150233e+01, + 6.6643046e+01, 6.8137901e+01, 6.9634816e+01, 7.1133861e+01, + 7.2635030e+01, 7.4138312e+01, 7.5643690e+01, 7.7151175e+01, + 7.8660757e+01, 8.0172431e+01, 8.1686204e+01, 8.3202078e+01, + 8.4720054e+01, 8.6240135e+01, 8.7762323e+01, 8.9286610e+01, + 9.0813017e+01, 9.2341529e+01, 9.3872158e+01, 9.5404908e+01, + 9.6939785e+01, 9.8476788e+01, 1.0001595e+02, 1.0155724e+02, + 1.0310069e+02, 1.0464624e+02, 1.0619391e+02, 1.0774367e+02, + 1.0929556e+02, 1.1084959e+02, 1.1240574e+02, 1.1396402e+02, + 1.1552445e+02, 1.1708702e+02, 1.1865174e+02, 1.2021860e+02, + 1.2178761e+02, 1.2335878e+02, 1.2493210e+02, 1.2650757e+02, + 1.2808520e+02, 1.2966500e+02, 1.3124694e+02, 1.3283107e+02, + 1.3441735e+02, 1.3600581e+02, 1.3759645e+02, 1.3918925e+02, + 1.4078420e+02, 1.4238135e+02, 1.4398066e+02, 1.4558218e+02, + 1.4718584e+02, 1.4879169e+02, 1.5039972e+02, 1.5200992e+02, + 1.5362228e+02, 1.5523685e+02, 1.5685360e+02, 1.5847259e+02, + 1.6009376e+02, 1.6171716e+02, 1.6334274e+02, 1.6497056e+02, + 1.6660058e+02, 1.6823283e+02, 1.6986728e+02, 1.7150394e+02, + 1.7314283e+02, 1.7478393e+02, 1.7642724e+02, 1.7807279e+02, + 1.7972054e+02, 1.8137052e+02, 1.8302273e+02, 1.8467717e+02, + 1.8633385e+02, 1.8799276e+02, 1.8965388e+02, 1.9131727e+02, + 1.9298286e+02, 1.9465070e+02, 1.9632079e+02, 2.0050578e+02, + 2.0470483e+02, 2.0891795e+02, 2.1314515e+02, 2.1738645e+02, + 2.2164190e+02, 2.2591151e+02, 2.3019532e+02, 2.3449335e+02, + 2.3880570e+02, 2.4313230e+02, 2.4747327e+02, 2.5182855e+02, + 2.5619811e+02, 2.6058192e+02, 2.6498011e+02, 2.6939271e+02, + 2.7381965e+02, 2.7826101e+02, 2.8271680e+02, 2.8718711e+02, + 2.9167185e+02, 2.9617114e+02, 3.0068490e+02, 3.0521325e+02, + 3.0975616e+02, 3.1431365e+02, 3.1888573e+02, 3.2347242e+02, + 3.2807374e+02, 3.3268971e+02, 3.3732040e+02, 3.4196570e+02, + 3.4662577e+02, 3.5130048e+02, 3.5598998e+02, 3.6069415e+02, + 3.6541315e+02, 3.7014693e+02, 3.7489550e+02, 3.7965885e+02, + 3.8443702e+02, 3.8923001e+02, 3.9403793e+02, 3.9886062e+02, + 4.0369818e+02, 4.0855069e+02, 4.1341801e+02, 4.1830031e+02, + 4.2319752e+02, 4.2810954e+02, 4.3303658e+02, 4.3797855e+02, + 4.4293546e+02, 4.4790731e+02, 4.5289414e+02, 4.5789597e+02, + 4.6291293e+02, 4.6794480e+02, 4.7299175e+02, 4.7805388e+02, + 4.8313099e+02, 4.8822330e+02, 4.9333071e+02, 4.9845311e+02, + 5.0359074e+02, 5.0874349e+02, 5.1391137e+02, 5.1909438e+02, + 5.2429254e+02, 5.2950585e+02, 5.3473432e+02, 5.3997797e+02, + 5.4523692e+02, 5.5051093e+02, 5.5580026e+02, 5.6110467e+02, + 5.6642443e+02, 5.7175927e+02, 5.7710948e+02, 5.8247492e+02, + 5.8785548e+02, 5.9325142e+02, 5.9866263e+02, 6.0408910e+02, + 6.0953086e+02, 6.1498789e+02, 6.2046022e+02, 6.2594799e+02, + 6.3145093e+02, 6.3696917e+02, 6.4250288e+02, 6.4805178e+02, + 6.5361600e+02, 6.5919572e+02, 6.6479078e+02, 6.7040105e+02, + 6.7602683e+02, 6.8166798e+02, 6.8732434e+02, 6.9868352e+02, + 7.1010427e+02, 7.2158663e+02, 7.3313082e+02, 7.4473654e+02, + 7.5640418e+02, 7.6813360e+02, 7.7992480e+02, 7.9177810e+02, + 8.0369313e+02, 8.1567036e+02, 8.2770950e+02, 8.3981066e+02, + 8.5197386e+02, 8.6419935e+02, 8.7648676e+02, 8.8883651e+02, + 9.0124861e+02, 9.1372285e+02, 9.2625955e+02, 9.3885832e+02, + 9.5151963e+02, 9.6424329e+02, 9.7702932e+02, 9.8987776e+02, + 1.0027886e+03, 1.0157622e+03, 1.0287980e+03, 1.0418966e+03, + 1.0550577e+03, 1.0682813e+03, 1.0815676e+03, 1.0949165e+03, + 1.1083283e+03, 1.1218025e+03, 1.1353397e+03, 1.1489397e+03, + 1.1626024e+03, 1.1763279e+03, 1.1901162e+03, 1.2039676e+03, + 1.2178816e+03, 1.2318587e+03, 1.2458984e+03, 1.2600011e+03, + 1.2741668e+03, 1.2883952e+03, 1.3026871e+03, 1.3170413e+03, + 1.3314584e+03, 1.3459386e+03, 1.3604817e+03, 1.3750875e+03, + 1.3897564e+03, 1.4044882e+03, 1.4192830e+03, 1.4341408e+03, + 1.4490618e+03, 1.4640456e+03, 1.4790922e+03, 1.4943666e+03, + 1.5098550e+03, 1.5254224e+03, 1.5410692e+03, 1.5567961e+03, + 1.5726034e+03, 1.5884917e+03, 1.6044615e+03, 1.6205133e+03, + 1.6366477e+03, 1.6528648e+03, 1.6691659e+03, 1.6855512e+03, + 1.7020213e+03, 1.7185767e+03,], + [ 5.0000000e+00, 4.5761543e+00, 5.7874935e+00, 7.1018799e+00, + 8.4483049e+00, 9.8098758e+00, 1.1180563e+01, 1.2557723e+01, + 1.3940055e+01, 1.5327019e+01, 1.6716986e+01, 1.8110056e+01, + 1.9506075e+01, 2.0904843e+01, 2.2306250e+01, 2.3710170e+01, + 2.5116497e+01, 2.6525078e+01, 2.7935761e+01, 2.9348865e+01, + 3.0764315e+01, 3.2181987e+01, 3.3601835e+01, 3.5023830e+01, + 3.6447952e+01, 3.7874186e+01, 3.9302520e+01, 4.0732950e+01, + 4.2165488e+01, 4.3600178e+01, 4.5036992e+01, 4.6475782e+01, + 4.7916553e+01, 4.9359344e+01, 5.0804166e+01, 5.2251024e+01, + 5.3699916e+01, 5.5150842e+01, 5.6603796e+01, 5.8058782e+01, + 5.9515802e+01, 6.0974847e+01, 6.2435910e+01, 6.3898994e+01, + 6.5364075e+01, 6.6831135e+01, 6.8300222e+01, 6.9771379e+01, + 7.1244611e+01, 7.2719901e+01, 7.4197233e+01, 7.5676618e+01, + 7.7158047e+01, 7.8641515e+01, 8.0127030e+01, 8.1614592e+01, + 8.3104204e+01, 8.4595868e+01, 8.6089585e+01, 8.7585349e+01, + 8.9083170e+01, 9.0583062e+01, 9.2085008e+01, 9.3589023e+01, + 9.5095102e+01, 9.6603274e+01, 9.8113540e+01, 9.9625891e+01, + 1.0114032e+02, 1.0265681e+02, 1.0417536e+02, 1.0569596e+02, + 1.0721864e+02, 1.0874337e+02, 1.1027021e+02, 1.1179911e+02, + 1.1333010e+02, 1.1486318e+02, 1.1639836e+02, 1.1793563e+02, + 1.1947498e+02, 1.2101645e+02, 1.2256000e+02, 1.2410566e+02, + 1.2565343e+02, 1.2720330e+02, 1.2875529e+02, 1.3030936e+02, + 1.3186558e+02, 1.3342388e+02, 1.3498431e+02, 1.3654686e+02, + 1.3811153e+02, 1.3967832e+02, 1.4124721e+02, 1.4281825e+02, + 1.4439139e+02, 1.4596665e+02, 1.4754403e+02, 1.4912354e+02, + 1.5070518e+02, 1.5228895e+02, 1.5387484e+02, 1.5546292e+02, + 1.5705313e+02, 1.5864550e+02, 1.6024003e+02, 1.6183672e+02, + 1.6343555e+02, 1.6503656e+02, 1.6663970e+02, 1.6824501e+02, + 1.6985248e+02, 1.7146211e+02, 1.7307391e+02, 1.7468788e+02, + 1.7630400e+02, 1.7792231e+02, 1.7954277e+02, 1.8116540e+02, + 1.8279021e+02, 1.8441720e+02, 1.8604634e+02, 1.8767770e+02, + 1.8931120e+02, 1.9094693e+02, 1.9258481e+02, 1.9668908e+02, + 2.0080702e+02, 2.0493866e+02, 2.0908408e+02, 2.1324324e+02, + 2.1741615e+02, 2.2160290e+02, 2.2580349e+02, 2.3001796e+02, + 2.3424633e+02, 2.3848870e+02, 2.4274497e+02, 2.4701522e+02, + 2.5129934e+02, 2.5559745e+02, 2.5990953e+02, 2.6423562e+02, + 2.6857573e+02, 2.7292989e+02, 2.7729813e+02, 2.8168051e+02, + 2.8607696e+02, 2.9048760e+02, 2.9491239e+02, 2.9935129e+02, + 3.0380445e+02, 3.0827181e+02, 3.1275346e+02, 3.1724929e+02, + 3.2175937e+02, 3.2628380e+02, 3.3082245e+02, 3.3537548e+02, + 3.3994283e+02, 3.4452445e+02, 3.4912050e+02, 3.5373098e+02, + 3.5835578e+02, 3.6299498e+02, 3.6764858e+02, 3.7231670e+02, + 3.7699917e+02, 3.8169618e+02, 3.8640764e+02, 3.9113359e+02, + 3.9587402e+02, 4.0062896e+02, 4.0539841e+02, 4.1018237e+02, + 4.1498087e+02, 4.1979399e+02, 4.2462156e+02, 4.2946377e+02, + 4.3432055e+02, 4.3919190e+02, 4.4407775e+02, 4.4897832e+02, + 4.5389364e+02, 4.5882354e+02, 4.6376812e+02, 4.6872736e+02, + 4.7370144e+02, 4.7869012e+02, 4.8369362e+02, 4.8871185e+02, + 4.9374481e+02, 4.9879239e+02, 5.0385484e+02, 5.0893215e+02, + 5.1402412e+02, 5.1913085e+02, 5.2425236e+02, 5.2938879e+02, + 5.3453988e+02, 5.3970591e+02, 5.4488675e+02, 5.5008229e+02, + 5.5529278e+02, 5.6051811e+02, 5.6575829e+02, 5.7101332e+02, + 5.7628321e+02, 5.8156811e+02, 5.8686775e+02, 5.9218227e+02, + 5.9751183e+02, 6.0285628e+02, 6.0821550e+02, 6.1358978e+02, + 6.1897897e+02, 6.2438310e+02, 6.2980216e+02, 6.3523619e+02, + 6.4068511e+02, 6.4614901e+02, 6.5162802e+02, 6.5712185e+02, + 6.6263066e+02, 6.6815460e+02, 6.7369352e+02, 6.8481620e+02, + 6.9599905e+02, 7.0724196e+02, 7.1854498e+02, 7.2990832e+02, + 7.4133186e+02, 7.5281562e+02, 7.6435984e+02, 7.7596432e+02, + 7.8762920e+02, 7.9935447e+02, 8.1114036e+02, 8.2298677e+02, + 8.3489361e+02, 8.4686117e+02, 8.5888908e+02, 8.7097778e+02, + 8.8312731e+02, 8.9533727e+02, 9.0760833e+02, 9.1993998e+02, + 9.3233260e+02, 9.4478578e+02, 9.5729999e+02, 9.6987503e+02, + 9.8251117e+02, 9.9520796e+02, 1.0079659e+03, 1.0207848e+03, + 1.0336649e+03, 1.0466057e+03, 1.0596079e+03, 1.0726710e+03, + 1.0857953e+03, 1.0989809e+03, 1.1122277e+03, 1.1255356e+03, + 1.1389047e+03, 1.1523350e+03, 1.1658268e+03, 1.1793799e+03, + 1.1929943e+03, 1.2066699e+03, 1.2204070e+03, 1.2342054e+03, + 1.2480651e+03, 1.2619860e+03, 1.2759681e+03, 1.2900118e+03, + 1.3041170e+03, 1.3182833e+03, 1.3325109e+03, 1.3467998e+03, + 1.3611503e+03, 1.3755622e+03, 1.3900354e+03, 1.4045701e+03, + 1.4191664e+03, 1.4338239e+03, 1.4485430e+03, 1.4633236e+03, + 1.4781656e+03, 1.4932037e+03, 1.5084808e+03, 1.5238350e+03, + 1.5392667e+03, 1.5547764e+03, 1.5703646e+03, 1.5860319e+03, + 1.6017786e+03, 1.6176053e+03, 1.6335125e+03, 1.6495004e+03, + 1.6655701e+03, 1.6817220e+03,], + [ 6.0000000e+00, 4.4353551e+00, 5.6261252e+00, 6.9173344e+00, + 8.2396382e+00, 9.5766985e+00, 1.0922473e+01, 1.2274532e+01, + 1.3631629e+01, 1.4993251e+01, 1.6357760e+01, 1.7725267e+01, + 1.9095630e+01, 2.0468696e+01, 2.1844317e+01, 2.3222384e+01, + 2.4602794e+01, 2.5985391e+01, 2.7370034e+01, 2.8757056e+01, + 3.0146354e+01, 3.1537816e+01, 3.2931396e+01, 3.4327070e+01, + 3.5724816e+01, 3.7124620e+01, 3.8526472e+01, 3.9930367e+01, + 4.1336320e+01, 4.2744378e+01, 4.4154498e+01, 4.5566531e+01, + 4.6980501e+01, 4.8396442e+01, 4.9814365e+01, 5.1234271e+01, + 5.2656157e+01, 5.4080029e+01, 5.5505879e+01, 5.6933709e+01, + 5.8363518e+01, 5.9795305e+01, 6.1229063e+01, 6.2664785e+01, + 6.4102445e+01, 6.5542039e+01, 6.6983618e+01, 6.8427220e+01, + 6.9872842e+01, 7.1320470e+01, 7.2770088e+01, 7.4221707e+01, + 7.5675312e+01, 7.7130912e+01, 7.8588514e+01, 8.0048106e+01, + 8.1509688e+01, 8.2973278e+01, 8.4438870e+01, 8.5906458e+01, + 8.7376053e+01, 8.8847666e+01, 9.0321283e+01, 9.1796917e+01, + 9.3274565e+01, 9.4754257e+01, 9.6235980e+01, 9.7719756e+01, + 9.9205544e+01, 1.0069334e+02, 1.0218313e+02, 1.0367494e+02, + 1.0516876e+02, 1.0666460e+02, 1.0816248e+02, 1.0966238e+02, + 1.1116431e+02, 1.1266828e+02, 1.1417430e+02, 1.1568234e+02, + 1.1719244e+02, 1.1870459e+02, 1.2021878e+02, 1.2173501e+02, + 1.2325330e+02, 1.2477365e+02, 1.2629605e+02, 1.2782049e+02, + 1.2934702e+02, 1.3087558e+02, 1.3240622e+02, 1.3393894e+02, + 1.3547369e+02, 1.3701052e+02, 1.3854943e+02, 1.4009039e+02, + 1.4163343e+02, 1.4317853e+02, 1.4472569e+02, 1.4627492e+02, + 1.4782623e+02, 1.4937963e+02, 1.5093509e+02, 1.5249269e+02, + 1.5405236e+02, 1.5561415e+02, 1.5717803e+02, 1.5874402e+02, + 1.6031212e+02, 1.6188232e+02, 1.6345460e+02, 1.6502899e+02, + 1.6660552e+02, 1.6818413e+02, 1.6976485e+02, 1.7134766e+02, + 1.7293262e+02, 1.7451969e+02, 1.7610885e+02, 1.7770013e+02, + 1.7929354e+02, 1.8088907e+02, 1.8248673e+02, 1.8408651e+02, + 1.8568839e+02, 1.8729244e+02, 1.8889859e+02, 1.9292331e+02, + 1.9696138e+02, 2.0101276e+02, 2.0507757e+02, 2.0915582e+02, + 2.1324748e+02, 2.1735260e+02, 2.2147124e+02, 2.2560342e+02, + 2.2974911e+02, 2.3390845e+02, 2.3808143e+02, 2.4226794e+02, + 2.4646801e+02, 2.5068173e+02, 2.5490902e+02, 2.5915001e+02, + 2.6340468e+02, 2.6767305e+02, 2.7195514e+02, 2.7625103e+02, + 2.8056062e+02, 2.8488406e+02, 2.8922123e+02, 2.9357228e+02, + 2.9793717e+02, 3.0231590e+02, 3.0670851e+02, 3.1111506e+02, + 3.1553545e+02, 3.1996983e+02, 3.2441806e+02, 3.2888032e+02, + 3.3335654e+02, 3.3784675e+02, 3.4235094e+02, 3.4686922e+02, + 3.5140145e+02, 3.5594779e+02, 3.6050811e+02, 3.6508256e+02, + 3.6967110e+02, 3.7427373e+02, 3.7889046e+02, 3.8352139e+02, + 3.8816636e+02, 3.9282554e+02, 3.9749879e+02, 4.0218629e+02, + 4.0688795e+02, 4.1160377e+02, 4.1633378e+02, 4.2107796e+02, + 4.2583644e+02, 4.3060904e+02, 4.3539597e+02, 4.4019707e+02, + 4.4501255e+02, 4.4984233e+02, 4.5468644e+02, 4.5954488e+02, + 4.6441775e+02, 4.6930484e+02, 4.7420640e+02, 4.7912220e+02, + 4.8405248e+02, 4.8899712e+02, 4.9395615e+02, 4.9892956e+02, + 5.0391736e+02, 5.0891957e+02, 5.1393618e+02, 5.1896734e+02, + 5.2401279e+02, 5.2907281e+02, 5.3414727e+02, 5.3923618e+02, + 5.4433956e+02, 5.4945739e+02, 5.5458971e+02, 5.5973664e+02, + 5.6489792e+02, 5.7007384e+02, 5.7526413e+02, 5.8046906e+02, + 5.8568852e+02, 5.9092251e+02, 5.9617102e+02, 6.0143408e+02, + 6.0671169e+02, 6.1200400e+02, 6.1731072e+02, 6.2263215e+02, + 6.2796817e+02, 6.3331861e+02, 6.3868379e+02, 6.4406357e+02, + 6.4945794e+02, 6.5486707e+02, 6.6029067e+02, 6.7118187e+02, + 6.8213158e+02, 6.9314003e+02, 7.0420707e+02, 7.1533277e+02, + 7.2651733e+02, 7.3776062e+02, 7.4906285e+02, 7.6042390e+02, + 7.7184373e+02, 7.8332268e+02, 7.9486055e+02, 8.0645737e+02, + 8.1811338e+02, 8.2982846e+02, 8.4160272e+02, 8.5343606e+02, + 8.6532850e+02, 8.7728029e+02, 8.8929124e+02, 9.0136154e+02, + 9.1349120e+02, 9.2568013e+02, 9.3792834e+02, 9.5023610e+02, + 9.6260319e+02, 9.7502989e+02, 9.8751576e+02, 1.0000613e+03, + 1.0126665e+03, 1.0253312e+03, 1.0380554e+03, 1.0508391e+03, + 1.0636826e+03, 1.0765857e+03, 1.0895484e+03, 1.1025710e+03, + 1.1156533e+03, 1.1287953e+03, 1.1419973e+03, 1.1552589e+03, + 1.1685803e+03, 1.1819618e+03, 1.1954029e+03, 1.2089037e+03, + 1.2224646e+03, 1.2360852e+03, 1.2497654e+03, 1.2635054e+03, + 1.2773054e+03, 1.2911651e+03, 1.3050849e+03, 1.3190645e+03, + 1.3331040e+03, 1.3472033e+03, 1.3613626e+03, 1.3755819e+03, + 1.3898610e+03, 1.4042000e+03, 1.4185992e+03, 1.4330583e+03, + 1.4475774e+03, 1.4621563e+03, 1.4767955e+03, 1.4915895e+03, + 1.5066568e+03, 1.5217994e+03, 1.5370176e+03, 1.5523119e+03, + 1.5676828e+03, 1.5831308e+03, 1.5986563e+03, 1.6142597e+03, + 1.6299418e+03, 1.6457024e+03,], + [ 7.0000000e+00, 4.3000619e+00, 5.4700537e+00, 6.7383109e+00, + 8.0368613e+00, 9.3495313e+00, 1.0670712e+01, 1.1997914e+01, + 1.3330031e+01, 1.4666540e+01, 1.6005841e+01, 1.7348078e+01, + 1.8693074e+01, 2.0040702e+01, 2.1390825e+01, 2.2743320e+01, + 2.4098093e+01, 2.5454988e+01, 2.6813880e+01, 2.8175105e+01, + 2.9538545e+01, 3.0904089e+01, 3.2271699e+01, 3.3641347e+01, + 3.5013016e+01, 3.6386690e+01, 3.7762361e+01, 3.9140025e+01, + 4.0519700e+01, 4.1901432e+01, 4.3285163e+01, 4.4670753e+01, + 4.6058235e+01, 4.7447641e+01, 4.8838976e+01, 5.0232248e+01, + 5.1627450e+01, 5.3024590e+01, 5.4423658e+01, 5.5824656e+01, + 5.7227585e+01, 5.8632440e+01, 6.0039214e+01, 6.1447904e+01, + 6.2858481e+01, 6.4270944e+01, 6.5685353e+01, 6.7101730e+01, + 6.8520083e+01, 6.9940389e+01, 7.1362641e+01, 7.2786832e+01, + 7.4212966e+01, 7.5641045e+01, 7.7071077e+01, 7.8503042e+01, + 7.9936963e+01, 8.1372834e+01, 8.2810650e+01, 8.4250429e+01, + 8.5692156e+01, 8.7135843e+01, 8.8581494e+01, 9.0029112e+01, + 9.1478706e+01, 9.2930275e+01, 9.4383847e+01, 9.5839397e+01, + 9.7296914e+01, 9.8756384e+01, 1.0021781e+02, 1.0168119e+02, + 1.0314653e+02, 1.0461386e+02, 1.0608316e+02, 1.0755445e+02, + 1.0902772e+02, 1.1050297e+02, 1.1198022e+02, 1.1345944e+02, + 1.1494067e+02, 1.1642388e+02, 1.1790911e+02, 1.1939632e+02, + 1.2088553e+02, 1.2237675e+02, 1.2386996e+02, 1.2536519e+02, + 1.2686244e+02, 1.2836168e+02, 1.2986293e+02, 1.3136620e+02, + 1.3287148e+02, 1.3437878e+02, 1.3588810e+02, 1.3739944e+02, + 1.3891277e+02, 1.4042812e+02, 1.4194549e+02, 1.4346490e+02, + 1.4498628e+02, 1.4650973e+02, 1.4803523e+02, 1.4956275e+02, + 1.5109235e+02, 1.5262398e+02, 1.5415766e+02, 1.5569340e+02, + 1.5723118e+02, 1.5877102e+02, 1.6031289e+02, 1.6185684e+02, + 1.6340282e+02, 1.6495086e+02, 1.6650096e+02, 1.6805312e+02, + 1.6960734e+02, 1.7116361e+02, 1.7272196e+02, 1.7428236e+02, + 1.7584485e+02, 1.7740939e+02, 1.7897600e+02, 1.8054469e+02, + 1.8211542e+02, 1.8368826e+02, 1.8526315e+02, 1.8920950e+02, + 1.9316886e+02, 1.9714128e+02, 2.0112671e+02, 2.0512526e+02, + 2.0913692e+02, 2.1316170e+02, 2.1719964e+02, 2.2125078e+02, + 2.2531514e+02, 2.2939281e+02, 2.3348372e+02, 2.3758783e+02, + 2.4170525e+02, 2.4583589e+02, 2.4997980e+02, 2.5413709e+02, + 2.5830766e+02, 2.6249164e+02, 2.6668901e+02, 2.7089977e+02, + 2.7512396e+02, 2.7936164e+02, 2.8361272e+02, 2.8787733e+02, + 2.9215543e+02, 2.9644704e+02, 3.0075218e+02, 3.0507085e+02, + 3.0940315e+02, 3.1374895e+02, 3.1810840e+02, 3.2248146e+02, + 3.2686814e+02, 3.3126845e+02, 3.3568247e+02, 3.4011009e+02, + 3.4455145e+02, 3.4900643e+02, 3.5347519e+02, 3.5795766e+02, + 3.6245394e+02, 3.6696388e+02, 3.7148757e+02, 3.7602512e+02, + 3.8057643e+02, 3.8514153e+02, 3.8972042e+02, 3.9431311e+02, + 3.9891961e+02, 4.0354002e+02, 4.0817417e+02, 4.1282224e+02, + 4.1748415e+02, 4.2215993e+02, 4.2684959e+02, 4.3155317e+02, + 4.3627078e+02, 4.4100224e+02, 4.4574777e+02, 4.5050727e+02, + 4.5528075e+02, 4.6006822e+02, 4.6486967e+02, 4.6968511e+02, + 4.7451466e+02, 4.7935812e+02, 4.8421572e+02, 4.8908734e+02, + 4.9397300e+02, 4.9887270e+02, 5.0378646e+02, 5.0871440e+02, + 5.1365628e+02, 5.1861237e+02, 5.2358254e+02, 5.2856680e+02, + 5.3356516e+02, 5.3857764e+02, 5.4360422e+02, 5.4864506e+02, + 5.5369991e+02, 5.5876902e+02, 5.6385228e+02, 5.6894969e+02, + 5.7406126e+02, 5.7918700e+02, 5.8432691e+02, 5.8948114e+02, + 5.9464942e+02, 5.9983203e+02, 6.0502885e+02, 6.1023987e+02, + 6.1546511e+02, 6.2070456e+02, 6.2595839e+02, 6.3122631e+02, + 6.3650865e+02, 6.4180500e+02, 6.4711580e+02, 6.5778016e+02, + 6.6850160e+02, 6.7928030e+02, 6.9011632e+02, 7.0100954e+02, + 7.1196000e+02, 7.2296791e+02, 7.3403313e+02, 7.4515587e+02, + 7.5633601e+02, 7.6757369e+02, 7.7886889e+02, 7.9022174e+02, + 8.0163215e+02, 8.1310014e+02, 8.2462595e+02, 8.3620951e+02, + 8.4785072e+02, 8.5954959e+02, 8.7130638e+02, 8.8312089e+02, + 8.9499336e+02, 9.0692381e+02, 9.1891197e+02, 9.3095819e+02, + 9.4306251e+02, 9.5522473e+02, 9.6744488e+02, 9.7972321e+02, + 9.9205952e+02, 1.0044538e+03, 1.0169064e+03, 1.0294173e+03, + 1.0419860e+03, 1.0546134e+03, 1.0672986e+03, 1.0800422e+03, + 1.0928443e+03, 1.1057044e+03, 1.1186232e+03, 1.1315999e+03, + 1.1446352e+03, 1.1577290e+03, 1.1708811e+03, 1.1840914e+03, + 1.1973601e+03, 1.2106871e+03, 1.2240724e+03, 1.2375161e+03, + 1.2510181e+03, 1.2645787e+03, 1.2781975e+03, 1.2918745e+03, + 1.3056105e+03, 1.3194047e+03, 1.3332574e+03, 1.3471686e+03, + 1.3611381e+03, 1.3751663e+03, 1.3892529e+03, 1.4033980e+03, + 1.4176018e+03, 1.4318640e+03, 1.4461851e+03, 1.4605646e+03, + 1.4750025e+03, 1.4895450e+03, 1.5044043e+03, 1.5193369e+03, + 1.5343433e+03, 1.5494241e+03, 1.5645795e+03, 1.5798101e+03, + 1.5951163e+03, 1.6104986e+03,], + [ 8.0000000e+00, 4.1696356e+00, 5.3190706e+00, 6.5648042e+00, + 7.8396643e+00, 9.1282081e+00, 1.0425063e+01, 1.1727682e+01, + 1.3035131e+01, 1.4346798e+01, 1.5661169e+01, 1.6978401e+01, + 1.8298331e+01, 1.9620808e+01, 2.0945715e+01, 2.2272930e+01, + 2.3602369e+01, 2.4933856e+01, 2.6267298e+01, 2.7603029e+01, + 2.8940908e+01, 3.0280841e+01, 3.1622785e+01, 3.2966717e+01, + 3.4312618e+01, 3.5660475e+01, 3.7010279e+01, 3.8362027e+01, + 3.9715741e+01, 4.1071466e+01, 4.2429125e+01, 4.3788595e+01, + 4.5149913e+01, 4.6513105e+01, 4.7878185e+01, 4.9245149e+01, + 5.0614002e+01, 5.1984736e+01, 5.3357355e+01, 5.4731858e+01, + 5.6108237e+01, 5.7486501e+01, 5.8866633e+01, 6.0248633e+01, + 6.1632469e+01, 6.3018147e+01, 6.4405727e+01, 6.5795240e+01, + 6.7186671e+01, 6.8580000e+01, 6.9975234e+01, 7.1372357e+01, + 7.2771376e+01, 7.4172292e+01, 7.5575106e+01, 7.6979819e+01, + 7.8386425e+01, 7.9794942e+01, 8.1205356e+01, 8.2617684e+01, + 8.4031913e+01, 8.5448054e+01, 8.6866110e+01, 8.8286078e+01, + 8.9707983e+01, 9.1131826e+01, 9.2557604e+01, 9.3985318e+01, + 9.5414947e+01, 9.6846478e+01, 9.8279915e+01, 9.9715266e+01, + 1.0115253e+02, 1.0259173e+02, 1.0403285e+02, 1.0547590e+02, + 1.0692089e+02, 1.0836782e+02, 1.0981669e+02, 1.1126751e+02, + 1.1272026e+02, 1.1417496e+02, 1.1563161e+02, 1.1709020e+02, + 1.1855075e+02, 1.2001325e+02, 1.2147771e+02, 1.2294413e+02, + 1.2441250e+02, 1.2588282e+02, 1.2735513e+02, 1.2882938e+02, + 1.3030560e+02, 1.3178379e+02, 1.3326393e+02, 1.3474605e+02, + 1.3623013e+02, 1.3771618e+02, 1.3920419e+02, 1.4069416e+02, + 1.4218611e+02, 1.4368005e+02, 1.4517597e+02, 1.4667391e+02, + 1.4817383e+02, 1.4967577e+02, 1.5117970e+02, 1.5268562e+02, + 1.5419355e+02, 1.5570347e+02, 1.5721538e+02, 1.5872932e+02, + 1.6024523e+02, 1.6176316e+02, 1.6328312e+02, 1.6480506e+02, + 1.6632899e+02, 1.6785497e+02, 1.6938295e+02, 1.7091293e+02, + 1.7244493e+02, 1.7397897e+02, 1.7551501e+02, 1.7705307e+02, + 1.7859316e+02, 1.8013525e+02, 1.8167939e+02, 1.8554858e+02, + 1.8943045e+02, 1.9332506e+02, 1.9723240e+02, 2.0115250e+02, + 2.0508538e+02, 2.0903111e+02, 2.1298963e+02, 2.1696106e+02, + 2.2094540e+02, 2.2494267e+02, 2.2895286e+02, 2.3297599e+02, + 2.3701197e+02, 2.4106094e+02, 2.4512286e+02, 2.4919777e+02, + 2.5328569e+02, 2.5738669e+02, 2.6150070e+02, 2.6562783e+02, + 2.6976805e+02, 2.7392137e+02, 2.7808788e+02, 2.8226747e+02, + 2.8646028e+02, 2.9066626e+02, 2.9488544e+02, 2.9911782e+02, + 3.0336342e+02, 3.0762233e+02, 3.1189442e+02, 3.1617985e+02, + 3.2047855e+02, 3.2479063e+02, 3.2911595e+02, 3.3345458e+02, + 3.3780664e+02, 3.4217204e+02, 3.4655080e+02, 3.5094295e+02, + 3.5534848e+02, 3.5976750e+02, 3.6419993e+02, 3.6864570e+02, + 3.7310499e+02, 3.7757773e+02, 3.8206400e+02, 3.8656364e+02, + 3.9107684e+02, 3.9560352e+02, 4.0014368e+02, 4.0469733e+02, + 4.0926449e+02, 4.1384517e+02, 4.1843950e+02, 4.2304741e+02, + 4.2766890e+02, 4.3230401e+02, 4.3695274e+02, 4.4161509e+02, + 4.4629118e+02, 4.5098080e+02, 4.5568417e+02, 4.6040121e+02, + 4.6513190e+02, 4.6987635e+02, 4.7463436e+02, 4.7940618e+02, + 4.8419158e+02, 4.8899079e+02, 4.9380370e+02, 4.9863045e+02, + 5.0347081e+02, 5.0832489e+02, 5.1319283e+02, 5.1807453e+02, + 5.2296997e+02, 5.2787918e+02, 5.3280215e+02, 5.3773903e+02, + 5.4268956e+02, 5.4765401e+02, 5.5263227e+02, 5.5762432e+02, + 5.6263019e+02, 5.6764988e+02, 5.7268353e+02, 5.7773087e+02, + 5.8279219e+02, 5.8786736e+02, 5.9295637e+02, 5.9805925e+02, + 6.0317598e+02, 6.0830674e+02, 6.1345122e+02, 6.1860973e+02, + 6.2378213e+02, 6.2896843e+02, 6.3416862e+02, 6.4461088e+02, + 6.5510881e+02, 6.6566260e+02, 6.7627230e+02, 6.8693780e+02, + 6.9765912e+02, 7.0843665e+02, 7.1926991e+02, 7.3015947e+02, + 7.4110483e+02, 7.5210656e+02, 7.6316428e+02, 7.7427813e+02, + 7.8544825e+02, 7.9667474e+02, 8.0795740e+02, 8.1929630e+02, + 8.3069166e+02, 8.4214341e+02, 8.5365145e+02, 8.6521600e+02, + 8.7683688e+02, 8.8851434e+02, 9.0024832e+02, 9.1203888e+02, + 9.2388611e+02, 9.3578982e+02, 9.4775004e+02, 9.5976701e+02, + 9.7184053e+02, 9.8397087e+02, 9.9615804e+02, 1.0084016e+03, + 1.0207023e+03, 1.0330597e+03, 1.0454738e+03, 1.0579449e+03, + 1.0704731e+03, 1.0830580e+03, 1.0956997e+03, 1.1083984e+03, + 1.1211540e+03, 1.1339666e+03, 1.1468364e+03, 1.1597626e+03, + 1.1727462e+03, 1.1857865e+03, 1.1988837e+03, 1.2120379e+03, + 1.2252490e+03, 1.2385172e+03, 1.2518421e+03, 1.2652243e+03, + 1.2786633e+03, 1.2921595e+03, 1.3057129e+03, 1.3193230e+03, + 1.3329904e+03, 1.3467150e+03, 1.3604966e+03, 1.3743352e+03, + 1.3882311e+03, 1.4021843e+03, 1.4161945e+03, 1.4302618e+03, + 1.4443864e+03, 1.4585680e+03, 1.4728070e+03, 1.4871031e+03, + 1.5017439e+03, 1.5164684e+03, 1.5312650e+03, 1.5461341e+03, + 1.5610760e+03, 1.5760913e+03,], + [ 9.0000000e+00, 4.0438659e+00, 5.1732691e+00, 6.3964377e+00, + 7.6478752e+00, 8.9126549e+00, 1.0185379e+01, 1.1463745e+01, + 1.2746770e+01, 1.4033887e+01, 1.5323643e+01, 1.6616162e+01, + 1.7911309e+01, 1.9208946e+01, 2.0508930e+01, 2.1811179e+01, + 2.3115588e+01, 2.4421976e+01, 2.5730279e+01, 2.7040824e+01, + 2.8353461e+01, 2.9668094e+01, 3.0984691e+01, 3.2303225e+01, + 3.3623679e+01, 3.4946041e+01, 3.6270301e+01, 3.7596460e+01, + 3.8924538e+01, 4.0254585e+01, 4.1586503e+01, 4.2920185e+01, + 4.4255670e+01, 4.5592989e+01, 4.6932146e+01, 4.8273142e+01, + 4.9615981e+01, 5.0960653e+01, 5.2307166e+01, 5.3655516e+01, + 5.5005702e+01, 5.6357716e+01, 5.7711557e+01, 5.9067211e+01, + 6.0424664e+01, 6.1783907e+01, 6.3145020e+01, 6.4508018e+01, + 6.5872880e+01, 6.7239604e+01, 6.8608173e+01, 6.9978592e+01, + 7.1350861e+01, 7.2724980e+01, 7.4100951e+01, 7.5478775e+01, + 7.6858445e+01, 7.8239980e+01, 7.9623365e+01, 8.1008610e+01, + 8.2395718e+01, 8.3784691e+01, 8.5175534e+01, 8.6568242e+01, + 8.7962843e+01, 8.9359326e+01, 9.0757706e+01, 9.2157982e+01, + 9.3560111e+01, 9.4964084e+01, 9.6369928e+01, 9.7777641e+01, + 9.9187218e+01, 1.0059869e+02, 1.0201203e+02, 1.0342726e+02, + 1.0484438e+02, 1.0626339e+02, 1.0768430e+02, 1.0910708e+02, + 1.1053178e+02, 1.1195837e+02, 1.1338685e+02, 1.1481724e+02, + 1.1624954e+02, 1.1768375e+02, 1.1911986e+02, 1.2055788e+02, + 1.2199781e+02, 1.2343964e+02, 1.2488341e+02, 1.2632908e+02, + 1.2777667e+02, 1.2922615e+02, 1.3067758e+02, 1.3213092e+02, + 1.3358617e+02, 1.3504335e+02, 1.3650242e+02, 1.3796342e+02, + 1.3942636e+02, 1.4089123e+02, 1.4235804e+02, 1.4382682e+02, + 1.4529753e+02, 1.4677022e+02, 1.4824483e+02, 1.4972140e+02, + 1.5119992e+02, 1.5268039e+02, 1.5416279e+02, 1.5564718e+02, + 1.5713349e+02, 1.5862176e+02, 1.6011202e+02, 1.6160422e+02, + 1.6309838e+02, 1.6459447e+02, 1.6609257e+02, 1.6759262e+02, + 1.6909463e+02, 1.7059860e+02, 1.7210454e+02, 1.7361246e+02, + 1.7512236e+02, 1.7663423e+02, 1.7814808e+02, 1.8194132e+02, + 1.8574697e+02, 1.8956501e+02, 1.9339548e+02, 1.9723838e+02, + 2.0109380e+02, 2.0496167e+02, 2.0884210e+02, 2.1273510e+02, + 2.1664072e+02, 2.2055892e+02, 2.2448975e+02, 2.2843316e+02, + 2.3238916e+02, 2.3635777e+02, 2.4033908e+02, 2.4433300e+02, + 2.4833967e+02, 2.5235906e+02, 2.5639118e+02, 2.6043610e+02, + 2.6449379e+02, 2.6856422e+02, 2.7264750e+02, 2.7674367e+02, + 2.8085261e+02, 2.8497446e+02, 2.8910912e+02, 2.9325673e+02, + 2.9741723e+02, 3.0159072e+02, 3.0577706e+02, 3.0997642e+02, + 3.1418874e+02, 3.1841402e+02, 3.2265229e+02, 3.2690363e+02, + 3.3116791e+02, 3.3544529e+02, 3.3973571e+02, 3.4403918e+02, + 3.4835578e+02, 3.5268539e+02, 3.5702815e+02, 3.6138402e+02, + 3.6575299e+02, 3.7013507e+02, 3.7453037e+02, 3.7893872e+02, + 3.8336028e+02, 3.8779498e+02, 3.9224284e+02, 3.9670395e+02, + 4.0117814e+02, 4.0566563e+02, 4.1016635e+02, 4.1468031e+02, + 4.1920753e+02, 4.2374814e+02, 4.2830192e+02, 4.3286910e+02, + 4.3744958e+02, 4.4204336e+02, 4.4665046e+02, 4.5127097e+02, + 4.5590471e+02, 4.6055190e+02, 4.6521242e+02, 4.6988628e+02, + 4.7457360e+02, 4.7927418e+02, 4.8398826e+02, 4.8871571e+02, + 4.9345655e+02, 4.9821078e+02, 5.0297854e+02, 5.0775959e+02, + 5.1255418e+02, 5.1736219e+02, 5.2218363e+02, 5.2701852e+02, + 5.3186685e+02, 5.3672877e+02, 5.4160414e+02, 5.4649299e+02, + 5.5139531e+02, 5.5631111e+02, 5.6124039e+02, 5.6618331e+02, + 5.7113973e+02, 5.7610966e+02, 5.8109310e+02, 5.8609006e+02, + 5.9110054e+02, 5.9612470e+02, 6.0116240e+02, 6.0621364e+02, + 6.1127843e+02, 6.1635677e+02, 6.2144867e+02, 6.3167349e+02, + 6.4195261e+02, 6.5228608e+02, 6.6267409e+02, 6.7311670e+02, + 6.8361394e+02, 6.9416568e+02, 7.0477214e+02, 7.1543318e+02, + 7.2614900e+02, 7.3691965e+02, 7.4774497e+02, 7.5862513e+02, + 7.6956028e+02, 7.8055017e+02, 7.9159508e+02, 8.0269483e+02, + 8.1384963e+02, 8.2505953e+02, 8.3632445e+02, 8.4764439e+02, + 8.5901951e+02, 8.7044962e+02, 8.8193495e+02, 8.9347531e+02, + 9.0507112e+02, 9.1672195e+02, 9.2842833e+02, 9.4018965e+02, + 9.5200659e+02, 9.6387874e+02, 9.7580611e+02, 9.8778897e+02, + 9.9982734e+02, 1.0119210e+03, 1.0240703e+03, 1.0362749e+03, + 1.0485351e+03, 1.0608510e+03, 1.0732223e+03, 1.0856493e+03, + 1.0981317e+03, 1.1106697e+03, 1.1232635e+03, 1.1359126e+03, + 1.1486172e+03, 1.1613776e+03, 1.1741933e+03, 1.1870648e+03, + 1.1999918e+03, 1.2129743e+03, 1.2260124e+03, 1.2391064e+03, + 1.2522558e+03, 1.2654610e+03, 1.2787217e+03, 1.2920382e+03, + 1.3054106e+03, 1.3188386e+03, 1.3323223e+03, 1.3458618e+03, + 1.3594572e+03, 1.3731083e+03, 1.3868152e+03, 1.4005779e+03, + 1.4143964e+03, 1.4282707e+03, 1.4422009e+03, 1.4561868e+03, + 1.4702286e+03, 1.4843261e+03, 1.4986963e+03, 1.5132147e+03, + 1.5278034e+03, 1.5424628e+03,], + [ 1.0000000e+01, 3.9225512e+00, 5.0321668e+00, 6.2330345e+00, + 7.4614520e+00, 8.7026302e+00, 9.9515766e+00, 1.1205927e+01, + 1.2464828e+01, 1.3727722e+01, 1.4993143e+01, 1.6261258e+01, + 1.7531944e+01, 1.8805040e+01, 2.0080431e+01, 2.1358018e+01, + 2.2637704e+01, 2.3919315e+01, 2.5202805e+01, 2.6488485e+01, + 2.7776200e+01, 2.9065863e+01, 3.0357438e+01, 3.1650903e+01, + 3.2946241e+01, 3.4243439e+01, 3.5542490e+01, 3.6843393e+01, + 3.8146175e+01, 3.9450880e+01, 4.0757395e+01, 4.2065630e+01, + 4.3375628e+01, 4.4687417e+01, 4.6000998e+01, 4.7316375e+01, + 4.8633543e+01, 4.9952509e+01, 5.1273268e+01, 5.2595815e+01, + 5.3920157e+01, 5.5246283e+01, 5.6574190e+01, 5.7903863e+01, + 5.9235283e+01, 6.0568466e+01, 6.1903469e+01, 6.3240318e+01, + 6.4578983e+01, 6.5919458e+01, 6.7261739e+01, 6.8605825e+01, + 6.9951716e+01, 7.1299412e+01, 7.2648908e+01, 7.4000220e+01, + 7.5353333e+01, 7.6708266e+01, 7.8065004e+01, 7.9423558e+01, + 8.0783920e+01, 8.2146112e+01, 8.3510129e+01, 8.4875967e+01, + 8.6243654e+01, 8.7613179e+01, 8.8984555e+01, 9.0357766e+01, + 9.1732792e+01, 9.3109627e+01, 9.4488267e+01, 9.5868743e+01, + 9.7251039e+01, 9.8635183e+01, 1.0002115e+02, 1.0140897e+02, + 1.0279862e+02, 1.0419011e+02, 1.0558346e+02, 1.0697865e+02, + 1.0837570e+02, 1.0977460e+02, 1.1117534e+02, 1.1257795e+02, + 1.1398242e+02, 1.1538875e+02, 1.1679694e+02, 1.1820698e+02, + 1.1961890e+02, 1.2103268e+02, 1.2244832e+02, 1.2386584e+02, + 1.2528522e+02, 1.2670648e+02, 1.2812959e+02, 1.2955460e+02, + 1.3098145e+02, 1.3241019e+02, 1.3384079e+02, 1.3527326e+02, + 1.3670762e+02, 1.3814389e+02, 1.3958203e+02, 1.4102210e+02, + 1.4246406e+02, 1.4390791e+02, 1.4535370e+02, 1.4680136e+02, + 1.4825094e+02, 1.4970239e+02, 1.5115577e+02, 1.5261106e+02, + 1.5406824e+02, 1.5552733e+02, 1.5698836e+02, 1.5845127e+02, + 1.5991608e+02, 1.6138283e+02, 1.6285150e+02, 1.6432209e+02, + 1.6579457e+02, 1.6726897e+02, 1.6874531e+02, 1.7022356e+02, + 1.7170375e+02, 1.7318587e+02, 1.7466992e+02, 1.7838847e+02, + 1.8211906e+02, 1.8586182e+02, 1.8961666e+02, 1.9338364e+02, + 1.9716283e+02, 2.0095421e+02, 2.0475781e+02, 2.0857371e+02, + 2.1240186e+02, 2.1624235e+02, 2.2009513e+02, 2.2396016e+02, + 2.2783753e+02, 2.3172716e+02, 2.3562918e+02, 2.3954356e+02, + 2.4347039e+02, 2.4740956e+02, 2.5136121e+02, 2.5532531e+02, + 2.5930186e+02, 2.6329095e+02, 2.6729248e+02, 2.7130657e+02, + 2.7533318e+02, 2.7937234e+02, 2.8342411e+02, 2.8748840e+02, + 2.9156533e+02, 2.9565486e+02, 2.9975701e+02, 3.0387185e+02, + 3.0799927e+02, 3.1213941e+02, 3.1629223e+02, 3.2045780e+02, + 3.2463599e+02, 3.2882697e+02, 3.3303066e+02, 3.3724710e+02, + 3.4147627e+02, 3.4571828e+02, 3.4997298e+02, 3.5424054e+02, + 3.5852088e+02, 3.6281411e+02, 3.6712005e+02, 3.7143890e+02, + 3.7577056e+02, 3.8011506e+02, 3.8447237e+02, 3.8884261e+02, + 3.9322563e+02, 3.9762162e+02, 4.0203052e+02, 4.0645245e+02, + 4.1088722e+02, 4.1533505e+02, 4.1979584e+02, 4.2426960e+02, + 4.2875634e+02, 4.3325616e+02, 4.3776886e+02, 4.4229466e+02, + 4.4683346e+02, 4.5138528e+02, 4.5595022e+02, 4.6052819e+02, + 4.6511908e+02, 4.6972311e+02, 4.7434030e+02, 4.7897044e+02, + 4.8361376e+02, 4.8827003e+02, 4.9293950e+02, 4.9762217e+02, + 5.0231782e+02, 5.0702656e+02, 5.1174854e+02, 5.1648363e+02, + 5.2123184e+02, 5.2599331e+02, 5.3076779e+02, 5.3555553e+02, + 5.4035643e+02, 5.4517048e+02, 5.4999769e+02, 5.5483806e+02, + 5.5969175e+02, 5.6455862e+02, 5.6943867e+02, 5.7433191e+02, + 5.7923835e+02, 5.8415814e+02, 5.8909114e+02, 5.9403735e+02, + 5.9899679e+02, 6.0396945e+02, 6.0895534e+02, 6.1896714e+02, + 6.2903193e+02, 6.3914992e+02, 6.4932111e+02, 6.5954543e+02, + 6.6982305e+02, 6.8015403e+02, 6.9053840e+02, 7.0097603e+02, + 7.1146712e+02, 7.2201171e+02, 7.3260966e+02, 7.4326117e+02, + 7.5396628e+02, 7.6472497e+02, 7.7553715e+02, 7.8640307e+02, + 7.9732251e+02, 8.0829592e+02, 8.1932291e+02, 8.3040373e+02, + 8.4153828e+02, 8.5272658e+02, 8.6396877e+02, 8.7526467e+02, + 8.8661472e+02, 8.9801831e+02, 9.0947631e+02, 9.2098802e+02, + 9.3255378e+02, 9.4417364e+02, 9.5584739e+02, 9.6757529e+02, + 9.7935713e+02, 9.9119341e+02, 1.0030834e+03, 1.0150280e+03, + 1.0270265e+03, 1.0390794e+03, 1.0511866e+03, 1.0633479e+03, + 1.0755635e+03, 1.0878331e+03, 1.1001574e+03, 1.1125354e+03, + 1.1249680e+03, 1.1374547e+03, 1.1499956e+03, 1.1625907e+03, + 1.1752401e+03, 1.1879439e+03, 1.2007018e+03, 1.2135141e+03, + 1.2263808e+03, 1.2393017e+03, 1.2522771e+03, 1.2653069e+03, + 1.2783909e+03, 1.2915294e+03, 1.3047224e+03, 1.3179701e+03, + 1.3312718e+03, 1.3446283e+03, 1.3580390e+03, 1.3715041e+03, + 1.3850238e+03, 1.3985981e+03, 1.4122270e+03, 1.4259102e+03, + 1.4396481e+03, 1.4534403e+03, 1.4672871e+03, 1.4811887e+03, + 1.4952815e+03, 1.5095958e+03,], + [ 1.1000000e+01, 3.8059263e+00, 4.8955834e+00, 6.0746108e+00, + 7.2801112e+00, 8.4980698e+00, 9.7234570e+00, 1.0954098e+01, + 1.2189220e+01, 1.3428170e+01, 1.4669572e+01, 1.5913614e+01, + 1.7160143e+01, 1.8409020e+01, 1.9660140e+01, 2.0913391e+01, + 2.2168689e+01, 2.3425846e+01, 2.4684849e+01, 2.5945996e+01, + 2.7209123e+01, 2.8474150e+01, 2.9741040e+01, 3.1009773e+01, + 3.2280334e+01, 3.3552709e+01, 3.4826892e+01, 3.6102883e+01, + 3.7380714e+01, 3.8660424e+01, 3.9941885e+01, 4.1225022e+01, + 4.2509884e+01, 4.3796492e+01, 4.5084852e+01, 4.6374964e+01, + 4.7666824e+01, 4.8960439e+01, 5.0255800e+01, 5.1552910e+01, + 5.2851771e+01, 5.4152372e+01, 5.5454705e+01, 5.6758763e+01, + 5.8064524e+01, 5.9372006e+01, 6.0681283e+01, 6.1992348e+01, + 6.3305190e+01, 6.4619798e+01, 6.5936168e+01, 6.7254299e+01, + 6.8574185e+01, 6.9895839e+01, 7.1219250e+01, 7.2544434e+01, + 7.3871376e+01, 7.5200085e+01, 7.6530565e+01, 7.7862817e+01, + 7.9196834e+01, 8.0532638e+01, 8.1870214e+01, 8.3209587e+01, + 8.4550747e+01, 8.5893713e+01, 8.7238484e+01, 8.8585042e+01, + 8.9933356e+01, 9.1283446e+01, 9.2635311e+01, 9.3988947e+01, + 9.5344370e+01, 9.6701586e+01, 9.8060596e+01, 9.9421404e+01, + 1.0078401e+02, 1.0214842e+02, 1.0351462e+02, 1.0488263e+02, + 1.0625246e+02, 1.0762408e+02, 1.0899752e+02, 1.1037276e+02, + 1.1174983e+02, 1.1312869e+02, 1.1450939e+02, 1.1589189e+02, + 1.1727623e+02, 1.1866238e+02, 1.2005035e+02, 1.2144015e+02, + 1.2283178e+02, 1.2422521e+02, 1.2562049e+02, 1.2701757e+02, + 1.2841650e+02, 1.2981723e+02, 1.3121979e+02, 1.3262419e+02, + 1.3403043e+02, 1.3543853e+02, 1.3684847e+02, 1.3826028e+02, + 1.3967393e+02, 1.4108944e+02, 1.4250681e+02, 1.4392604e+02, + 1.4534712e+02, 1.4677007e+02, 1.4819488e+02, 1.4962152e+02, + 1.5105006e+02, 1.5248043e+02, 1.5391267e+02, 1.5534678e+02, + 1.5678276e+02, 1.5822061e+02, 1.5966030e+02, 1.6110190e+02, + 1.6254535e+02, 1.6399070e+02, 1.6543790e+02, 1.6688699e+02, + 1.6833795e+02, 1.6979080e+02, 1.7124550e+02, 1.7489057e+02, + 1.7854741e+02, 1.8221606e+02, 1.8589658e+02, 1.8958891e+02, + 1.9329315e+02, 1.9700929e+02, 2.0073740e+02, 2.0447744e+02, + 2.0822951e+02, 2.1199359e+02, 2.1576968e+02, 2.1955770e+02, + 2.2335775e+02, 2.2716982e+02, 2.3099393e+02, 2.3483012e+02, + 2.3867843e+02, 2.4253886e+02, 2.4641141e+02, 2.5029616e+02, + 2.5419302e+02, 2.5810211e+02, 2.6202339e+02, 2.6595687e+02, + 2.6990264e+02, 2.7386065e+02, 2.7783092e+02, 2.8181345e+02, + 2.8580827e+02, 2.8981544e+02, 2.9383493e+02, 2.9786674e+02, + 3.0191089e+02, 3.0596747e+02, 3.1003641e+02, 3.1411772e+02, + 3.1821143e+02, 3.2231754e+02, 3.2643614e+02, 3.3056716e+02, + 3.3471063e+02, 3.3886654e+02, 3.4303499e+02, 3.4721592e+02, + 3.5140932e+02, 3.5561521e+02, 3.5983360e+02, 3.6406457e+02, + 3.6830805e+02, 3.7256405e+02, 3.7683257e+02, 3.8111372e+02, + 3.8540741e+02, 3.8971368e+02, 3.9403256e+02, 3.9836405e+02, + 4.0270828e+02, 4.0706515e+02, 4.1143467e+02, 4.1581685e+02, + 4.2021169e+02, 4.2461929e+02, 4.2903958e+02, 4.3347254e+02, + 4.3791819e+02, 4.4237665e+02, 4.4684781e+02, 4.5133168e+02, + 4.5582827e+02, 4.6033759e+02, 4.6485976e+02, 4.6939467e+02, + 4.7394230e+02, 4.7850271e+02, 4.8307588e+02, 4.8766194e+02, + 4.9226078e+02, 4.9687241e+02, 5.0149682e+02, 5.0613416e+02, + 5.1078418e+02, 5.1544714e+02, 5.2012305e+02, 5.2481165e+02, + 5.2951308e+02, 5.3422749e+02, 5.3895474e+02, 5.4369483e+02, + 5.4844793e+02, 5.5321374e+02, 5.5799257e+02, 5.6278427e+02, + 5.6758885e+02, 5.7240631e+02, 5.7723681e+02, 5.8208021e+02, + 5.8693651e+02, 5.9180572e+02, 5.9668784e+02, 6.0649114e+02, + 6.1634616e+02, 6.2625309e+02, 6.3621197e+02, 6.4622285e+02, + 6.5628559e+02, 6.6640041e+02, 6.7656733e+02, 6.8678640e+02, + 6.9705765e+02, 7.0738094e+02, 7.1775649e+02, 7.2818431e+02, + 7.3866445e+02, 7.4919695e+02, 7.5978156e+02, 7.7041861e+02, + 7.8110813e+02, 7.9185012e+02, 8.0264440e+02, 8.1349122e+02, + 8.2439058e+02, 8.3534253e+02, 8.4634719e+02, 8.5740415e+02, + 8.6851375e+02, 8.7967607e+02, 8.9089080e+02, 9.0215851e+02, + 9.1347899e+02, 9.2485189e+02, 9.3627784e+02, 9.4775641e+02, + 9.5928786e+02, 9.7087221e+02, 9.8250950e+02, 9.9419951e+02, + 1.0059425e+03, 1.0177385e+03, 1.0295875e+03, 1.0414893e+03, + 1.0534440e+03, 1.0654518e+03, 1.0775124e+03, 1.0896259e+03, + 1.1017925e+03, 1.1140121e+03, 1.1262844e+03, 1.1386100e+03, + 1.1509882e+03, 1.1634196e+03, 1.1759039e+03, 1.1884414e+03, + 1.2010319e+03, 1.2136755e+03, 1.2263721e+03, 1.2391218e+03, + 1.2519244e+03, 1.2647805e+03, 1.2776894e+03, 1.2906513e+03, + 1.3036671e+03, 1.3167356e+03, 1.3298574e+03, 1.3430324e+03, + 1.3562605e+03, 1.3695418e+03, 1.3828765e+03, 1.3962641e+03, + 1.4097052e+03, 1.4231995e+03, 1.4367469e+03, 1.4503479e+03, + 1.4640020e+03, 1.4777092e+03,], + [ 1.2000000e+01, 3.6933864e+00, 4.7636363e+00, 5.9208175e+00, + 7.1038215e+00, 8.2987462e+00, 9.5008875e+00, 1.0708179e+01, + 1.1919796e+01, 1.3135148e+01, 1.4352868e+01, 1.5573141e+01, + 1.6795838e+01, 1.8020832e+01, 1.9247994e+01, 2.0477248e+01, + 2.1708488e+01, 2.2941527e+01, 2.4176386e+01, 2.5413338e+01, + 2.6652218e+01, 2.7892949e+01, 2.9135498e+01, 3.0379845e+01, + 3.1625975e+01, 3.2873876e+01, 3.4123540e+01, 3.5374973e+01, + 3.6628205e+01, 3.7883271e+01, 3.9140032e+01, 4.0398431e+01, + 4.1658516e+01, 4.2920306e+01, 4.4183803e+01, 4.5449013e+01, + 4.6715930e+01, 4.7984555e+01, 4.9254888e+01, 5.0526928e+01, + 5.1800674e+01, 5.3076120e+01, 5.4353261e+01, 5.5632074e+01, + 5.6912546e+01, 5.8194715e+01, 5.9478632e+01, 6.0764298e+01, + 6.2051697e+01, 6.3340819e+01, 6.4631655e+01, 6.5924216e+01, + 6.7218489e+01, 6.8514483e+01, 6.9812205e+01, 7.1111643e+01, + 7.2412805e+01, 7.3715692e+01, 7.5020300e+01, 7.6326645e+01, + 7.7634715e+01, 7.8944528e+01, 8.0256073e+01, 8.1569363e+01, + 8.2884409e+01, 8.4201220e+01, 8.5519790e+01, 8.6840090e+01, + 8.8162122e+01, 8.9485868e+01, 9.0811358e+01, 9.2138577e+01, + 9.3467542e+01, 9.4798256e+01, 9.6130723e+01, 9.7464932e+01, + 9.8800911e+01, 1.0013865e+02, 1.0147814e+02, 1.0281939e+02, + 1.0416240e+02, 1.0550718e+02, 1.0685373e+02, 1.0820205e+02, + 1.0955214e+02, 1.1090399e+02, 1.1225763e+02, 1.1361303e+02, + 1.1497021e+02, 1.1632916e+02, 1.1768990e+02, 1.1905242e+02, + 1.2041673e+02, 1.2178280e+02, 1.2315067e+02, 1.2452030e+02, + 1.2589171e+02, 1.2726490e+02, 1.2863988e+02, 1.3001665e+02, + 1.3139523e+02, 1.3277562e+02, 1.3415780e+02, 1.3554182e+02, + 1.3692763e+02, 1.3831526e+02, 1.3970469e+02, 1.4109594e+02, + 1.4248901e+02, 1.4388389e+02, 1.4528056e+02, 1.4667908e+02, + 1.4807939e+02, 1.4948152e+02, 1.5088548e+02, 1.5229126e+02, + 1.5369886e+02, 1.5510829e+02, 1.5651955e+02, 1.5793261e+02, + 1.5934750e+02, 1.6076426e+02, 1.6218282e+02, 1.6360321e+02, + 1.6502545e+02, 1.6644952e+02, 1.6787540e+02, 1.7144821e+02, + 1.7503252e+02, 1.7862836e+02, 1.8223578e+02, 1.8585473e+02, + 1.8948531e+02, 1.9312750e+02, 1.9678139e+02, 2.0044695e+02, + 2.0412419e+02, 2.0781322e+02, 2.1151389e+02, 2.1522628e+02, + 2.1895038e+02, 2.2268621e+02, 2.2643384e+02, 2.3019320e+02, + 2.3396442e+02, 2.3774745e+02, 2.4154238e+02, 2.4534915e+02, + 2.4916780e+02, 2.5299833e+02, 2.5684077e+02, 2.6069518e+02, + 2.6456152e+02, 2.6843980e+02, 2.7233005e+02, 2.7623233e+02, + 2.8014661e+02, 2.8407288e+02, 2.8801125e+02, 2.9196157e+02, + 2.9592401e+02, 2.9989850e+02, 3.0388513e+02, 3.0788378e+02, + 3.1189459e+02, 3.1591751e+02, 3.1995262e+02, 3.2399978e+02, + 3.2805917e+02, 3.3213070e+02, 3.3621440e+02, 3.4031035e+02, + 3.4441848e+02, 3.4853880e+02, 3.5267131e+02, 3.5681611e+02, + 3.6097303e+02, 3.6514226e+02, 3.6932379e+02, 3.7351748e+02, + 3.7772352e+02, 3.8194184e+02, 3.8617246e+02, 3.9041540e+02, + 3.9467076e+02, 3.9893847e+02, 4.0321853e+02, 4.0751094e+02, + 4.1181581e+02, 4.1613294e+02, 4.2046255e+02, 4.2480463e+02, + 4.2915900e+02, 4.3352587e+02, 4.3790514e+02, 4.4229681e+02, + 4.4670090e+02, 4.5111752e+02, 4.5554658e+02, 4.5998807e+02, + 4.6444202e+02, 4.6890852e+02, 4.7338748e+02, 4.7787890e+02, + 4.8238280e+02, 4.8689917e+02, 4.9142816e+02, 4.9596964e+02, + 5.0052363e+02, 5.0509024e+02, 5.0966924e+02, 5.1426089e+02, + 5.1886506e+02, 5.2348177e+02, 5.2811114e+02, 5.3275306e+02, + 5.3740753e+02, 5.4207456e+02, 5.4675414e+02, 5.5144643e+02, + 5.5615130e+02, 5.6086874e+02, 5.6559877e+02, 5.7034153e+02, + 5.7509674e+02, 5.7986469e+02, 5.8464540e+02, 5.9424451e+02, + 6.0389409e+02, 6.1359450e+02, 6.2334563e+02, 6.3314751e+02, + 6.4300007e+02, 6.5290337e+02, 6.6285775e+02, 6.7286286e+02, + 6.8291892e+02, 6.9302576e+02, 7.0318380e+02, 7.1339287e+02, + 7.2365283e+02, 7.3396389e+02, 7.4432608e+02, 7.5473937e+02, + 7.6520388e+02, 7.7571963e+02, 7.8628643e+02, 7.9690471e+02, + 8.0757409e+02, 8.1829479e+02, 8.2906686e+02, 8.3989009e+02, + 8.5076505e+02, 8.6169109e+02, 8.7266880e+02, 8.8369776e+02, + 8.9477822e+02, 9.0591014e+02, 9.1709378e+02, 9.2832877e+02, + 9.3961562e+02, 9.5095389e+02, 9.6234383e+02, 9.7378523e+02, + 9.8527859e+02, 9.9682345e+02, 1.0084200e+03, 1.0200684e+03, + 1.0317685e+03, 1.0435203e+03, 1.0553236e+03, 1.0671787e+03, + 1.0790854e+03, 1.0910440e+03, 1.1030543e+03, 1.1151161e+03, + 1.1272297e+03, 1.1393951e+03, 1.1516123e+03, 1.1638814e+03, + 1.1762020e+03, 1.1885746e+03, 1.2009990e+03, 1.2134753e+03, + 1.2260035e+03, 1.2385834e+03, 1.2512152e+03, 1.2638990e+03, + 1.2766347e+03, 1.2894223e+03, 1.3022617e+03, 1.3151535e+03, + 1.3280970e+03, 1.3410926e+03, 1.3541399e+03, 1.3672395e+03, + 1.3803909e+03, 1.3935941e+03, 1.4068496e+03, 1.4201569e+03, + 1.4335164e+03, 1.4469279e+03,], + [ 1.3000000e+01, 3.5847578e+00, 4.6355812e+00, 5.7716825e+00, + 6.9323146e+00, 8.1046034e+00, 9.2837965e+00, 1.0468004e+01, + 1.1656476e+01, 1.2848526e+01, 1.4042879e+01, 1.5239735e+01, + 1.6438935e+01, 1.7640375e+01, 1.8843935e+01, 2.0049531e+01, + 2.1257053e+01, 2.2466321e+01, 2.3677376e+01, 2.4890481e+01, + 2.6105461e+01, 2.7322246e+01, 2.8540805e+01, 2.9761119e+01, + 3.0983172e+01, 3.2206953e+01, 3.3432457e+01, 3.4659688e+01, + 3.5888681e+01, 3.7119465e+01, 3.8351889e+01, 3.9585911e+01, + 4.0821584e+01, 4.2058920e+01, 4.3297927e+01, 4.4538602e+01, + 4.5780945e+01, 4.7024957e+01, 4.8270632e+01, 4.9517977e+01, + 5.0766986e+01, 5.2017651e+01, 5.3269973e+01, 5.4523924e+01, + 5.5779493e+01, 5.7036724e+01, 5.8295669e+01, 5.9556315e+01, + 6.0818657e+01, 6.2082681e+01, 6.3348377e+01, 6.4615751e+01, + 6.5884804e+01, 6.7155536e+01, 6.8427949e+01, 6.9702044e+01, + 7.0977823e+01, 7.2255286e+01, 7.3534429e+01, 7.4815261e+01, + 7.6097793e+01, 7.7382011e+01, 7.8667929e+01, 7.9955553e+01, + 8.1244894e+01, 8.2535947e+01, 8.3828727e+01, 8.5123189e+01, + 8.6419342e+01, 8.7717169e+01, 8.9016688e+01, 9.0317908e+01, + 9.1620833e+01, 9.2925454e+01, 9.4231798e+01, 9.5539857e+01, + 9.6849618e+01, 9.8161097e+01, 9.9474309e+01, 1.0078923e+02, + 1.0210587e+02, 1.0342422e+02, 1.0474432e+02, 1.0606614e+02, + 1.0738968e+02, 1.0871496e+02, 1.1004197e+02, 1.1137070e+02, + 1.1270118e+02, 1.1403339e+02, 1.1536734e+02, 1.1670301e+02, + 1.1804044e+02, 1.1937959e+02, 1.2072050e+02, 1.2206313e+02, + 1.2340749e+02, 1.2475360e+02, 1.2610145e+02, 1.2745105e+02, + 1.2880240e+02, 1.3015554e+02, 1.3151043e+02, 1.3286711e+02, + 1.3422554e+02, 1.3558574e+02, 1.3694772e+02, 1.3831146e+02, + 1.3967695e+02, 1.4104423e+02, 1.4241327e+02, 1.4378410e+02, + 1.4515669e+02, 1.4653106e+02, 1.4790720e+02, 1.4928513e+02, + 1.5066483e+02, 1.5204632e+02, 1.5342957e+02, 1.5481464e+02, + 1.5620146e+02, 1.5759007e+02, 1.5898048e+02, 1.6037268e+02, + 1.6176667e+02, 1.6316245e+02, 1.6456001e+02, 1.6806180e+02, + 1.7157483e+02, 1.7509911e+02, 1.7863467e+02, 1.8218155e+02, + 1.8573975e+02, 1.8930930e+02, 1.9289022e+02, 1.9648259e+02, + 2.0008639e+02, 2.0370161e+02, 2.0732828e+02, 2.1096635e+02, + 2.1461585e+02, 2.1827681e+02, 2.2194929e+02, 2.2563328e+02, + 2.2932878e+02, 2.3303583e+02, 2.3675448e+02, 2.4048471e+02, + 2.4422652e+02, 2.4798000e+02, 2.5174503e+02, 2.5552176e+02, + 2.5931020e+02, 2.6311024e+02, 2.6692202e+02, 2.7074549e+02, + 2.7458066e+02, 2.7842762e+02, 2.8228632e+02, 2.8615675e+02, + 2.9003895e+02, 2.9393299e+02, 2.9783881e+02, 3.0175642e+02, + 3.0568585e+02, 3.0962716e+02, 3.1358031e+02, 3.1754530e+02, + 3.2152214e+02, 3.2551093e+02, 3.2951159e+02, 3.3352413e+02, + 3.3754864e+02, 3.4158497e+02, 3.4563329e+02, 3.4969360e+02, + 3.5376575e+02, 3.5784990e+02, 3.6194599e+02, 3.6605403e+02, + 3.7017414e+02, 3.7430614e+02, 3.7845027e+02, 3.8260651e+02, + 3.8677470e+02, 3.9095502e+02, 3.9514740e+02, 3.9935184e+02, + 4.0356845e+02, 4.0779713e+02, 4.1203789e+02, 4.1629073e+02, + 4.2055566e+02, 4.2483279e+02, 4.2912203e+02, 4.3342339e+02, + 4.3773697e+02, 4.4206269e+02, 4.4640054e+02, 4.5075053e+02, + 4.5511267e+02, 4.5948708e+02, 4.6387367e+02, 4.6827242e+02, + 4.7268346e+02, 4.7710667e+02, 4.8154209e+02, 4.8598971e+02, + 4.9044953e+02, 4.9492168e+02, 4.9940605e+02, 5.0390264e+02, + 5.0841160e+02, 5.1293265e+02, 5.1746608e+02, 5.2201189e+02, + 5.2656981e+02, 5.3114013e+02, 5.3572272e+02, 5.4031757e+02, + 5.4492470e+02, 5.4954425e+02, 5.5417608e+02, 5.5882020e+02, + 5.6347662e+02, 5.6814549e+02, 5.7282667e+02, 5.8222595e+02, + 5.9167467e+02, 6.0117303e+02, 6.1072074e+02, 6.2031800e+02, + 6.2996486e+02, 6.3966134e+02, 6.4940766e+02, 6.5920351e+02, + 6.6904892e+02, 6.7894427e+02, 6.8888942e+02, 6.9888441e+02, + 7.0892926e+02, 7.1902381e+02, 7.2916848e+02, 7.3936291e+02, + 7.4960752e+02, 7.5990183e+02, 7.7024627e+02, 7.8064077e+02, + 7.9108556e+02, 8.0158027e+02, 8.1212512e+02, 8.2271992e+02, + 8.3336513e+02, 8.4406056e+02, 8.5480611e+02, 8.6560202e+02, + 8.7644799e+02, 8.8734450e+02, 8.9829111e+02, 9.0928826e+02, + 9.2033572e+02, 9.3143361e+02, 9.4258195e+02, 9.5378053e+02, + 9.6502985e+02, 9.7632943e+02, 9.8767978e+02, 9.9908039e+02, + 1.0105315e+03, 1.0220332e+03, 1.0335853e+03, 1.0451880e+03, + 1.0568411e+03, 1.0685445e+03, 1.0802988e+03, 1.0921033e+03, + 1.1039584e+03, 1.1158640e+03, 1.1278203e+03, 1.1398272e+03, + 1.1518847e+03, 1.1639926e+03, 1.1761514e+03, 1.1883606e+03, + 1.2006205e+03, 1.2129311e+03, 1.2252924e+03, 1.2377045e+03, + 1.2501673e+03, 1.2626805e+03, 1.2752448e+03, 1.2878595e+03, + 1.3005250e+03, 1.3132417e+03, 1.3260089e+03, 1.3388267e+03, + 1.3516956e+03, 1.3646150e+03, 1.3775852e+03, 1.3906063e+03, + 1.4036783e+03, 1.4168011e+03,], + [ 1.4000000e+01, 3.4803081e+00, 4.5121303e+00, 5.6266919e+00, + 6.7654507e+00, 7.9153462e+00, 9.0720005e+00, 1.0233498e+01, + 1.1399118e+01, 1.2568203e+01, 1.3739545e+01, 1.4913306e+01, + 1.6089364e+01, 1.7267592e+01, 1.8447894e+01, 1.9630172e+01, + 2.0814326e+01, 2.2000169e+01, 2.3187779e+01, 2.4377389e+01, + 2.5568823e+01, 2.6762019e+01, 2.7956945e+01, 2.9153583e+01, + 3.0351920e+01, 3.1551944e+01, 3.2753649e+01, 3.3957043e+01, + 3.5162163e+01, 3.6369031e+01, 3.7577483e+01, 3.8787504e+01, + 3.9999133e+01, 4.1212389e+01, 4.2427275e+01, 4.3643791e+01, + 4.4861934e+01, 4.6081708e+01, 4.7303107e+01, 4.8526137e+01, + 4.9750787e+01, 5.0977058e+01, 5.2204939e+01, 5.3434413e+01, + 5.4665466e+01, 5.5898151e+01, 5.7132508e+01, 5.8368535e+01, + 5.9606205e+01, 6.0845516e+01, 6.2086467e+01, 6.3329056e+01, + 6.4573285e+01, 6.5819153e+01, 6.7066663e+01, 6.8315808e+01, + 6.9566605e+01, 7.0819039e+01, 7.2073121e+01, 7.3328853e+01, + 7.4586237e+01, 7.5845277e+01, 7.7105977e+01, 7.8368345e+01, + 7.9632382e+01, 8.0898101e+01, 8.2165503e+01, 8.3434543e+01, + 8.4705223e+01, 8.5977548e+01, 8.7251529e+01, 8.8527170e+01, + 8.9804465e+01, 9.1083440e+01, 9.2364075e+01, 9.3646395e+01, + 9.4930379e+01, 9.6216040e+01, 9.7503380e+01, 9.8792402e+01, + 1.0008309e+02, 1.0137548e+02, 1.0266956e+02, 1.0396530e+02, + 1.0526274e+02, 1.0656187e+02, 1.0786271e+02, 1.0916520e+02, + 1.1046942e+02, 1.1177532e+02, 1.1308293e+02, 1.1439221e+02, + 1.1570322e+02, 1.1701590e+02, 1.1833028e+02, 1.1964636e+02, + 1.2096413e+02, 1.2228361e+02, 1.2360479e+02, 1.2492766e+02, + 1.2625228e+02, 1.2757861e+02, 1.2890667e+02, 1.3023645e+02, + 1.3156797e+02, 1.3290121e+02, 1.3423618e+02, 1.3557289e+02, + 1.3691129e+02, 1.3825145e+02, 1.3959332e+02, 1.4093695e+02, + 1.4228229e+02, 1.4362936e+02, 1.4497818e+02, 1.4632870e+02, + 1.4768099e+02, 1.4903503e+02, 1.5039078e+02, 1.5174827e+02, + 1.5310754e+02, 1.5446853e+02, 1.5583127e+02, 1.5719576e+02, + 1.5856197e+02, 1.5992996e+02, 1.6129971e+02, 1.6473171e+02, + 1.6817470e+02, 1.7162869e+02, 1.7509368e+02, 1.7856970e+02, + 1.8205681e+02, 1.8555500e+02, 1.8906434e+02, 1.9258478e+02, + 1.9611642e+02, 1.9965922e+02, 2.0321318e+02, 2.0677827e+02, + 2.1035453e+02, 2.1394198e+02, 2.1754069e+02, 2.2115062e+02, + 2.2477181e+02, 2.2840431e+02, 2.3204806e+02, 2.3570320e+02, + 2.3936961e+02, 2.4304740e+02, 2.4673655e+02, 2.5043705e+02, + 2.5414893e+02, 2.5787225e+02, 2.6160698e+02, 2.6535313e+02, + 2.6911077e+02, 2.7287985e+02, 2.7666039e+02, 2.8045240e+02, + 2.8425595e+02, 2.8807100e+02, 2.9189763e+02, 2.9573571e+02, + 2.9958539e+02, 3.0344661e+02, 3.0731938e+02, 3.1120379e+02, + 3.1509978e+02, 3.1900735e+02, 3.2292659e+02, 3.2685735e+02, + 3.3079981e+02, 3.3475397e+02, 3.3871966e+02, 3.4269708e+02, + 3.4668612e+02, 3.5068690e+02, 3.5469924e+02, 3.5872335e+02, + 3.6275924e+02, 3.6680676e+02, 3.7086610e+02, 3.7493719e+02, + 3.7902005e+02, 3.8311477e+02, 3.8722114e+02, 3.9133949e+02, + 3.9546952e+02, 3.9961144e+02, 4.0376505e+02, 4.0793067e+02, + 4.1210799e+02, 4.1629723e+02, 4.2049829e+02, 4.2471118e+02, + 4.2893590e+02, 4.3317258e+02, 4.3742110e+02, 4.4168160e+02, + 4.4595384e+02, 4.5023808e+02, 4.5453418e+02, 4.5884218e+02, + 4.6316218e+02, 4.6749410e+02, 4.7183791e+02, 4.7619360e+02, + 4.8056135e+02, 4.8494103e+02, 4.8933263e+02, 4.9373631e+02, + 4.9815178e+02, 5.0257934e+02, 5.0701899e+02, 5.1147045e+02, + 5.1593402e+02, 5.2040956e+02, 5.2489707e+02, 5.2939670e+02, + 5.3390831e+02, 5.3843192e+02, 5.4296752e+02, 5.4751527e+02, + 5.5207488e+02, 5.5664679e+02, 5.6123058e+02, 5.7043436e+02, + 5.7968656e+02, 5.8898693e+02, 5.9833581e+02, 6.0773308e+02, + 6.1717862e+02, 6.2667278e+02, 6.3621528e+02, 6.4580650e+02, + 6.5544624e+02, 6.6513443e+02, 6.7487143e+02, 6.8465709e+02, + 6.9449126e+02, 7.0437434e+02, 7.1430617e+02, 7.2428659e+02, + 7.3431601e+02, 7.4439427e+02, 7.5452131e+02, 7.6469707e+02, + 7.7492198e+02, 7.8519583e+02, 7.9551843e+02, 8.0589023e+02, + 8.1631084e+02, 8.2678069e+02, 8.3729962e+02, 8.4786741e+02, + 8.5848465e+02, 8.6915066e+02, 8.7986605e+02, 8.9063040e+02, + 9.0144418e+02, 9.1230716e+02, 9.2321930e+02, 9.3418097e+02, + 9.4519172e+02, 9.5625178e+02, 9.6736140e+02, 9.7852011e+02, + 9.8972814e+02, 1.0009855e+03, 1.0122921e+03, 1.0236481e+03, + 1.0350534e+03, 1.0465080e+03, 1.0580120e+03, 1.0695654e+03, + 1.0811681e+03, 1.0928199e+03, 1.1045215e+03, 1.1162724e+03, + 1.1280726e+03, 1.1399224e+03, 1.1518215e+03, 1.1637704e+03, + 1.1757684e+03, 1.1878160e+03, 1.1999133e+03, 1.2120600e+03, + 1.2242561e+03, 1.2365018e+03, 1.2487971e+03, 1.2611420e+03, + 1.2735364e+03, 1.2859801e+03, 1.2984737e+03, 1.3110173e+03, + 1.3236100e+03, 1.3362526e+03, 1.3489446e+03, 1.3616862e+03, + 1.3744778e+03, 1.3873187e+03,], + [ 1.5000000e+01, 3.3794510e+00, 4.3922646e+00, 5.4860676e+00, + 6.6032122e+00, 7.7310873e+00, 8.8654340e+00, 1.0004503e+01, + 1.1147642e+01, 1.2294098e+01, 1.3442752e+01, 1.4593779e+01, + 1.5747029e+01, 1.6902404e+01, 1.8059791e+01, 1.9219105e+01, + 2.0380250e+01, 2.1543028e+01, 2.2707546e+01, 2.3874017e+01, + 2.5042267e+01, 2.6212234e+01, 2.7383891e+01, 2.8557219e+01, + 2.9732205e+01, 3.0908838e+01, 3.2087113e+01, 3.3267040e+01, + 3.4448660e+01, 3.5631979e+01, 3.6816836e+01, 3.8003225e+01, + 3.9191190e+01, 4.0380740e+01, 4.1571885e+01, 4.2764620e+01, + 4.3958949e+01, 4.5154865e+01, 4.6352371e+01, 4.7551466e+01, + 4.8752147e+01, 4.9954410e+01, 5.1158244e+01, 5.2363624e+01, + 5.3570553e+01, 5.4779080e+01, 5.5989246e+01, 5.7201036e+01, + 5.8414435e+01, 5.9629437e+01, 6.0846040e+01, 6.2064243e+01, + 6.3284041e+01, 6.4505447e+01, 6.5728449e+01, 6.6953056e+01, + 6.8179276e+01, 6.9407096e+01, 7.0636525e+01, 7.1867558e+01, + 7.3100212e+01, 7.4334485e+01, 7.5570372e+01, 7.6807889e+01, + 7.8047056e+01, 7.9287857e+01, 8.0530288e+01, 8.1774324e+01, + 8.3019962e+01, 8.4267198e+01, 8.5516061e+01, 8.6766536e+01, + 8.8018650e+01, 8.9272382e+01, 9.0527747e+01, 9.1784746e+01, + 9.3043382e+01, 9.4303656e+01, 9.5565571e+01, 9.6829114e+01, + 9.8094315e+01, 9.9361147e+01, 1.0062964e+02, 1.0189977e+02, + 1.0317154e+02, 1.0444497e+02, 1.0572006e+02, 1.0699678e+02, + 1.0827517e+02, 1.0955522e+02, 1.1083691e+02, 1.1212026e+02, + 1.1340527e+02, 1.1469196e+02, 1.1598028e+02, 1.1727024e+02, + 1.1856188e+02, 1.1985518e+02, 1.2115013e+02, 1.2244677e+02, + 1.2374508e+02, 1.2504508e+02, 1.2634677e+02, 1.2765015e+02, + 1.2895522e+02, 1.3026197e+02, 1.3157039e+02, 1.3288052e+02, + 1.3419231e+02, 1.3550582e+02, 1.3682100e+02, 1.3813787e+02, + 1.3945644e+02, 1.4077670e+02, 1.4209866e+02, 1.4342229e+02, + 1.4474765e+02, 1.4607468e+02, 1.4740344e+02, 1.4873388e+02, + 1.5006603e+02, 1.5139988e+02, 1.5273544e+02, 1.5407268e+02, + 1.5541166e+02, 1.5675236e+02, 1.5809474e+02, 1.6145821e+02, + 1.6483242e+02, 1.6821733e+02, 1.7161302e+02, 1.7501953e+02, + 1.7843680e+02, 1.8186492e+02, 1.8530390e+02, 1.8875380e+02, + 1.9221461e+02, 1.9568629e+02, 1.9916884e+02, 2.0266231e+02, + 2.0616667e+02, 2.0968197e+02, 2.1320827e+02, 2.1674554e+02, + 2.2029379e+02, 2.2385310e+02, 2.2742338e+02, 2.3100480e+02, + 2.3459723e+02, 2.3820077e+02, 2.4181540e+02, 2.4544112e+02, + 2.4907801e+02, 2.5272602e+02, 2.5638517e+02, 2.6005547e+02, + 2.6373700e+02, 2.6742970e+02, 2.7113366e+02, 2.7484875e+02, + 2.7857512e+02, 2.8231279e+02, 2.8606163e+02, 2.8982179e+02, + 2.9359320e+02, 2.9737597e+02, 3.0116994e+02, 3.0497528e+02, + 3.0879200e+02, 3.1261996e+02, 3.1645932e+02, 3.2031001e+02, + 3.2417211e+02, 3.2804557e+02, 3.3193038e+02, 3.3582654e+02, + 3.3973415e+02, 3.4365314e+02, 3.4758350e+02, 3.5152527e+02, + 3.5547856e+02, 3.5944329e+02, 3.6341958e+02, 3.6740725e+02, + 3.7140649e+02, 3.7541732e+02, 3.7943956e+02, 3.8347339e+02, + 3.8751871e+02, 3.9157554e+02, 3.9564400e+02, 3.9972398e+02, + 4.0381549e+02, 4.0791864e+02, 4.1203335e+02, 4.1615960e+02, + 4.2029741e+02, 4.2444690e+02, 4.2860796e+02, 4.3278060e+02, + 4.3696483e+02, 4.4116076e+02, 4.4536830e+02, 4.4958756e+02, + 4.5381831e+02, 4.5806080e+02, 4.6231492e+02, 4.6658081e+02, + 4.7085821e+02, 4.7514735e+02, 4.7944827e+02, 4.8376074e+02, + 4.8808499e+02, 4.9242091e+02, 4.9676864e+02, 5.0112791e+02, + 5.0549900e+02, 5.0988191e+02, 5.1427639e+02, 5.1868270e+02, + 5.2310072e+02, 5.2753045e+02, 5.3197204e+02, 5.3642535e+02, + 5.4089038e+02, 5.4536729e+02, 5.4985579e+02, 5.5886846e+02, + 5.6792813e+02, 5.7703499e+02, 5.8618923e+02, 5.9539074e+02, + 6.0463938e+02, 6.1393552e+02, 6.2327902e+02, 6.3266993e+02, + 6.4210828e+02, 6.5159409e+02, 6.6112758e+02, 6.7070841e+02, + 6.8033681e+02, 6.9001297e+02, 6.9973657e+02, 7.0950799e+02, + 7.1932709e+02, 7.2919369e+02, 7.3910821e+02, 7.4907040e+02, + 7.5908040e+02, 7.6913823e+02, 7.7924388e+02, 7.8939737e+02, + 7.9959874e+02, 8.0984800e+02, 8.2014518e+02, 8.3049053e+02, + 8.4088363e+02, 8.5132473e+02, 8.6181418e+02, 8.7235130e+02, + 8.8293672e+02, 8.9356999e+02, 9.0425161e+02, 9.1498157e+02, + 9.2575932e+02, 9.3658548e+02, 9.4745981e+02, 9.5838231e+02, + 9.6935273e+02, 9.8037155e+02, 9.9143853e+02, 1.0025537e+03, + 1.0137170e+03, 1.0249285e+03, 1.0361882e+03, 1.0474961e+03, + 1.0588522e+03, 1.0702566e+03, 1.0817092e+03, 1.0932101e+03, + 1.1047594e+03, 1.1163569e+03, 1.1280027e+03, 1.1396969e+03, + 1.1514394e+03, 1.1632306e+03, 1.1750698e+03, 1.1869574e+03, + 1.1988934e+03, 1.2108779e+03, 1.2229107e+03, 1.2349919e+03, + 1.2471218e+03, 1.2592999e+03, 1.2715264e+03, 1.2838014e+03, + 1.2961248e+03, 1.3084971e+03, 1.3209179e+03, 1.3333869e+03, + 1.3459044e+03, 1.3584704e+03,], + [ 1.6000000e+01, 3.2820369e+00, 4.2764193e+00, 5.3496707e+00, + 6.4453506e+00, 7.5514631e+00, 8.6639225e+00, 9.7809477e+00, + 1.0901884e+01, 1.2026111e+01, 1.3152422e+01, 1.4281050e+01, + 1.5411857e+01, 1.6544724e+01, 1.7679560e+01, 1.8816267e+01, + 1.9954761e+01, 2.1094831e+01, 2.2236625e+01, 2.3380320e+01, + 2.4525749e+01, 2.5672854e+01, 2.6821610e+01, 2.7971996e+01, + 2.9124001e+01, 3.0277615e+01, 3.1432833e+01, 3.2589666e+01, + 3.3748160e+01, 3.4908308e+01, 3.6069948e+01, 3.7233085e+01, + 3.8397764e+01, 3.9563994e+01, 4.0731778e+01, 4.1901118e+01, + 4.3072012e+01, 4.4244459e+01, 4.5418460e+01, 4.6594008e+01, + 4.7771109e+01, 4.8949750e+01, 5.0129928e+01, 5.1311613e+01, + 5.2494808e+01, 5.3679578e+01, 5.4865950e+01, 5.6053906e+01, + 5.7243428e+01, 5.8434521e+01, 5.9627171e+01, 6.0821391e+01, + 6.2017168e+01, 6.3214510e+01, 6.4413418e+01, 6.5613893e+01, + 6.6815937e+01, 6.8019552e+01, 6.9224731e+01, 7.0431493e+01, + 7.1639823e+01, 7.2849735e+01, 7.4061232e+01, 7.5274334e+01, + 7.6489030e+01, 7.7705323e+01, 7.8923211e+01, 8.0142665e+01, + 8.1363674e+01, 8.2586265e+01, 8.3810426e+01, 8.5036173e+01, + 8.6263510e+01, 8.7492440e+01, 8.8722964e+01, 8.9955086e+01, + 9.1188807e+01, 9.2424116e+01, 9.3661040e+01, 9.4899555e+01, + 9.6139675e+01, 9.7381403e+01, 9.8624740e+01, 9.9869687e+01, + 1.0111625e+02, 1.0236442e+02, 1.0361419e+02, 1.0486560e+02, + 1.0611860e+02, 1.0737324e+02, 1.0862949e+02, 1.0988735e+02, + 1.1114684e+02, 1.1240794e+02, 1.1367065e+02, 1.1493499e+02, + 1.1620093e+02, 1.1746851e+02, 1.1873770e+02, 1.2000854e+02, + 1.2128102e+02, 1.2255516e+02, 1.2383094e+02, 1.2510838e+02, + 1.2638746e+02, 1.2766817e+02, 1.2895054e+02, 1.3023455e+02, + 1.3152021e+02, 1.3280751e+02, 1.3409647e+02, 1.3538709e+02, + 1.3667936e+02, 1.3797328e+02, 1.3926884e+02, 1.4056609e+02, + 1.4186497e+02, 1.4316551e+02, 1.4446771e+02, 1.4577158e+02, + 1.4707712e+02, 1.4838432e+02, 1.4969320e+02, 1.5100374e+02, + 1.5231593e+02, 1.5362979e+02, 1.5494535e+02, 1.5824150e+02, + 1.6154815e+02, 1.6486531e+02, 1.6819294e+02, 1.7153113e+02, + 1.7487991e+02, 1.7823922e+02, 1.8160918e+02, 1.8498981e+02, + 1.8838105e+02, 1.9178294e+02, 1.9519545e+02, 1.9861862e+02, + 2.0205245e+02, 2.0549695e+02, 2.0895220e+02, 2.1241812e+02, + 2.1589482e+02, 2.1938233e+02, 2.2288060e+02, 2.2638965e+02, + 2.2990949e+02, 2.3344021e+02, 2.3698174e+02, 2.4053412e+02, + 2.4409741e+02, 2.4767156e+02, 2.5125660e+02, 2.5485258e+02, + 2.5845947e+02, 2.6207728e+02, 2.6570602e+02, 2.6934577e+02, + 2.7299647e+02, 2.7665821e+02, 2.8033092e+02, 2.8401463e+02, + 2.8770933e+02, 2.9141512e+02, 2.9513193e+02, 2.9885977e+02, + 3.0259872e+02, 3.0634873e+02, 3.1010980e+02, 3.1388194e+02, + 3.1766523e+02, 3.2145961e+02, 3.2526515e+02, 3.2908179e+02, + 3.3290953e+02, 3.3674837e+02, 3.4059843e+02, 3.4445962e+02, + 3.4833198e+02, 3.5221562e+02, 3.5611036e+02, 3.6001650e+02, + 3.6393377e+02, 3.6786234e+02, 3.7180215e+02, 3.7575318e+02, + 3.7971556e+02, 3.8368918e+02, 3.8767414e+02, 3.9167026e+02, + 3.9567774e+02, 3.9969649e+02, 4.0372663e+02, 4.0776806e+02, + 4.1182078e+02, 4.1588479e+02, 4.1996022e+02, 4.2404696e+02, + 4.2814502e+02, 4.3225452e+02, 4.3637535e+02, 4.4050751e+02, + 4.4465102e+02, 4.4880600e+02, 4.5297234e+02, 4.5715016e+02, + 4.6133923e+02, 4.6553980e+02, 4.6975188e+02, 4.7397522e+02, + 4.7821005e+02, 4.8245629e+02, 4.8671407e+02, 4.9098313e+02, + 4.9526373e+02, 4.9955589e+02, 5.0385934e+02, 5.0817435e+02, + 5.1250079e+02, 5.1683882e+02, 5.2118829e+02, 5.2554921e+02, + 5.2992158e+02, 5.3430556e+02, 5.3870100e+02, 5.4752644e+02, + 5.5639794e+02, 5.6531554e+02, 5.7427926e+02, 5.8328932e+02, + 5.9234542e+02, 6.0144792e+02, 6.1059670e+02, 6.1979178e+02, + 6.2903320e+02, 6.3832098e+02, 6.4765538e+02, 6.5703613e+02, + 6.6646319e+02, 6.7593692e+02, 6.8545717e+02, 6.9502415e+02, + 7.0463750e+02, 7.1429745e+02, 7.2400420e+02, 7.3375761e+02, + 7.4355768e+02, 7.5340434e+02, 7.6329781e+02, 7.7323801e+02, + 7.8322499e+02, 7.9325896e+02, 8.0333953e+02, 8.1346715e+02, + 8.2364163e+02, 8.3386300e+02, 8.4413129e+02, 8.5444651e+02, + 8.6480881e+02, 8.7521817e+02, 8.8567430e+02, 8.9617767e+02, + 9.0672784e+02, 9.1732550e+02, 9.2797008e+02, 9.3866170e+02, + 9.4940036e+02, 9.6018606e+02, 9.7101904e+02, 9.8189882e+02, + 9.9282565e+02, 1.0037998e+03, 1.0148210e+03, 1.0258891e+03, + 1.0370045e+03, 1.0481671e+03, 1.0593768e+03, 1.0706337e+03, + 1.0819378e+03, 1.0932893e+03, 1.1046877e+03, 1.1161334e+03, + 1.1276265e+03, 1.1391667e+03, 1.1507543e+03, 1.1623892e+03, + 1.1740714e+03, 1.1858006e+03, 1.1975773e+03, 1.2094013e+03, + 1.2212730e+03, 1.2331916e+03, 1.2451576e+03, 1.2571709e+03, + 1.2692318e+03, 1.2813397e+03, 1.2934953e+03, 1.3056984e+03, + 1.3179488e+03, 1.3302464e+03,], + [ 1.7000000e+01, 3.1879223e+00, 4.1641684e+00, 5.2170110e+00, + 6.2917413e+00, 7.3765116e+00, 8.4673517e+00, 9.5626422e+00, + 1.0661825e+01, 1.1764117e+01, 1.2868458e+01, 1.3975042e+01, + 1.5083752e+01, 1.6194478e+01, 1.7307117e+01, 1.8421586e+01, + 1.9537788e+01, 2.0655516e+01, 2.1774952e+01, 2.2896240e+01, + 2.4019219e+01, 2.5143834e+01, 2.6270058e+01, 2.7397876e+01, + 2.8527275e+01, 2.9658245e+01, 3.0790783e+01, 3.1924901e+01, + 3.3060649e+01, 3.4198003e+01, 3.5336805e+01, 3.6477075e+01, + 3.7618851e+01, 3.8762144e+01, 3.9906957e+01, 4.1053289e+01, + 4.2201136e+01, 4.3350504e+01, 4.4501386e+01, 4.5653783e+01, + 4.6807697e+01, 4.7963115e+01, 4.9120028e+01, 5.0278408e+01, + 5.1438273e+01, 5.2599685e+01, 5.3762656e+01, 5.4927180e+01, + 5.6093231e+01, 5.7260812e+01, 5.8429920e+01, 5.9600555e+01, + 6.0772718e+01, 6.1946411e+01, 6.3121626e+01, 6.4298380e+01, + 6.5476667e+01, 6.6656481e+01, 6.7837831e+01, 6.9020720e+01, + 7.0205150e+01, 7.1391125e+01, 7.2578652e+01, 7.3767739e+01, + 7.4958386e+01, 7.6150608e+01, 7.7344367e+01, 7.8539662e+01, + 7.9736477e+01, 8.0934829e+01, 8.2134726e+01, 8.3336174e+01, + 8.4539175e+01, 8.5743721e+01, 8.6949837e+01, 8.8157502e+01, + 8.9366741e+01, 9.0577532e+01, 9.1789889e+01, 9.3003813e+01, + 9.4219306e+01, 9.5436369e+01, 9.6655005e+01, 9.7875200e+01, + 9.9096985e+01, 1.0032033e+02, 1.0154525e+02, 1.0277177e+02, + 1.0399986e+02, 1.0522952e+02, 1.0646077e+02, 1.0769358e+02, + 1.0892800e+02, 1.1016399e+02, 1.1140155e+02, 1.1264071e+02, + 1.1388142e+02, 1.1512373e+02, 1.1636763e+02, 1.1761314e+02, + 1.1886026e+02, 1.2010899e+02, 1.2135932e+02, 1.2261127e+02, + 1.2386482e+02, 1.2511997e+02, 1.2637675e+02, 1.2763513e+02, + 1.2889512e+02, 1.3015672e+02, 1.3141991e+02, 1.3268475e+02, + 1.3395120e+02, 1.3521924e+02, 1.3648891e+02, 1.3776022e+02, + 1.3903313e+02, 1.4030766e+02, 1.4158382e+02, 1.4286160e+02, + 1.4414099e+02, 1.4542203e+02, 1.4670468e+02, 1.4798898e+02, + 1.4927489e+02, 1.5056244e+02, 1.5185162e+02, 1.5508176e+02, + 1.5832209e+02, 1.6157269e+02, 1.6483359e+02, 1.6810474e+02, + 1.7138623e+02, 1.7467806e+02, 1.7798029e+02, 1.8129291e+02, + 1.8461592e+02, 1.8794935e+02, 1.9129314e+02, 1.9464731e+02, + 1.9801194e+02, 2.0138699e+02, 2.0477251e+02, 2.0816854e+02, + 2.1157501e+02, 2.1499208e+02, 2.1841963e+02, 2.2185776e+02, + 2.2530649e+02, 2.2876573e+02, 2.3223560e+02, 2.3571606e+02, + 2.3920718e+02, 2.4270892e+02, 2.4622129e+02, 2.4974436e+02, + 2.5327808e+02, 2.5682247e+02, 2.6037755e+02, 2.6394337e+02, + 2.6751990e+02, 2.7110721e+02, 2.7470525e+02, 2.7831402e+02, + 2.8193362e+02, 2.8556389e+02, 2.8920509e+02, 2.9285698e+02, + 2.9651974e+02, 3.0019330e+02, 3.0387766e+02, 3.0757291e+02, + 3.1127899e+02, 3.1499597e+02, 3.1872369e+02, 3.2246234e+02, + 3.2621192e+02, 3.2997235e+02, 3.3374365e+02, 3.3752584e+02, + 3.4131903e+02, 3.4512315e+02, 3.4893821e+02, 3.5276423e+02, + 3.5660129e+02, 3.6044941e+02, 3.6430841e+02, 3.6817847e+02, + 3.7205951e+02, 3.7595164e+02, 3.7985475e+02, 3.8376887e+02, + 3.8769399e+02, 3.9163022e+02, 3.9557747e+02, 3.9953585e+02, + 4.0350515e+02, 4.0748560e+02, 4.1147721e+02, 4.1547987e+02, + 4.1949359e+02, 4.2351837e+02, 4.2755422e+02, 4.3160126e+02, + 4.3565951e+02, 4.3972872e+02, 4.4380915e+02, 4.4790068e+02, + 4.5200345e+02, 4.5611732e+02, 4.6024231e+02, 4.6437843e+02, + 4.6852581e+02, 4.7268433e+02, 4.7685397e+02, 4.8103488e+02, + 4.8522696e+02, 4.8943019e+02, 4.9364472e+02, 4.9787042e+02, + 5.0210728e+02, 5.0635547e+02, 5.1061469e+02, 5.1488538e+02, + 5.1916712e+02, 5.2346020e+02, 5.2776448e+02, 5.3640680e+02, + 5.4509411e+02, 5.5382662e+02, 5.6260421e+02, 5.7142691e+02, + 5.8029475e+02, 5.8920776e+02, 5.9816615e+02, 6.0716978e+02, + 6.1621868e+02, 6.2531289e+02, 6.3445243e+02, 6.4363750e+02, + 6.5286797e+02, 6.6214385e+02, 6.7146518e+02, 6.8083217e+02, + 6.9024465e+02, 6.9970247e+02, 7.0920622e+02, 7.1875535e+02, + 7.2835007e+02, 7.3799061e+02, 7.4767673e+02, 7.5740854e+02, + 7.6718606e+02, 7.7700952e+02, 7.8687850e+02, 7.9679345e+02, + 8.0675419e+02, 8.1676074e+02, 8.2681312e+02, 8.3691159e+02, + 8.4705595e+02, 8.5724599e+02, 8.6748229e+02, 8.7776462e+02, + 8.8809266e+02, 8.9846664e+02, 9.0888681e+02, 9.1935316e+02, + 9.2986532e+02, 9.4042342e+02, 9.5102773e+02, 9.6167775e+02, + 9.7237398e+02, 9.8311620e+02, 9.9390442e+02, 1.0047387e+03, + 1.0156189e+03, 1.0265455e+03, 1.0375178e+03, 1.0485366e+03, + 1.0596014e+03, 1.0707123e+03, 1.0818693e+03, 1.0930724e+03, + 1.1043220e+03, 1.1156177e+03, 1.1269593e+03, 1.1383473e+03, + 1.1497816e+03, 1.1612623e+03, 1.1727889e+03, 1.1843617e+03, + 1.1959811e+03, 1.2076466e+03, 1.2193584e+03, 1.2311164e+03, + 1.2429207e+03, 1.2547712e+03, 1.2666680e+03, 1.2786113e+03, + 1.2906009e+03, 1.3026368e+03,], + [ 1.8000000e+01, 3.0974121e+00, 4.0553806e+00, 5.0883214e+00, + 6.1423779e+00, 7.2060383e+00, 8.2756642e+00, 9.3495979e+00, + 1.0427305e+01, 1.1508019e+01, 1.2590734e+01, 1.3675651e+01, + 1.4762635e+01, 1.5851576e+01, 1.6942389e+01, 1.8034980e+01, + 1.9129262e+01, 2.0225020e+01, 2.1322464e+01, 2.2421717e+01, + 2.3522620e+01, 2.4625117e+01, 2.5729186e+01, 2.6834813e+01, + 2.7941983e+01, 2.9050688e+01, 3.0160925e+01, 3.1272710e+01, + 3.2386093e+01, 3.3501037e+01, 3.4617388e+01, 3.5735177e+01, + 3.6854437e+01, 3.7975182e+01, 3.9097408e+01, 4.0221120e+01, + 4.1346315e+01, 4.2472996e+01, 4.3601152e+01, 4.4730793e+01, + 4.5861912e+01, 4.6994503e+01, 4.8128547e+01, 4.9264031e+01, + 5.0400963e+01, 5.1539412e+01, 5.2679391e+01, 5.3820878e+01, + 5.4963864e+01, 5.6108343e+01, 5.7254315e+01, 5.8401774e+01, + 5.9550732e+01, 6.0701177e+01, 6.1853118e+01, 6.3006555e+01, + 6.4161490e+01, 6.5317925e+01, 6.6475862e+01, 6.7635302e+01, + 6.8796250e+01, 6.9958699e+01, 7.1122675e+01, 7.2288168e+01, + 7.3455196e+01, 7.4623761e+01, 7.5793823e+01, 7.6965375e+01, + 7.8138412e+01, 7.9312963e+01, 8.0489025e+01, 8.1666591e+01, + 8.2845687e+01, 8.4026293e+01, 8.5208422e+01, 8.6392075e+01, + 8.7577256e+01, 8.8763966e+01, 8.9952205e+01, 9.1141977e+01, + 9.2333268e+01, 9.3526108e+01, 9.4720470e+01, 9.5916385e+01, + 9.7113824e+01, 9.8312804e+01, 9.9513327e+01, 1.0071539e+02, + 1.0191900e+02, 1.0312414e+02, 1.0433084e+02, 1.0553907e+02, + 1.0674887e+02, 1.0796019e+02, 1.0917306e+02, 1.1038746e+02, + 1.1160342e+02, 1.1282093e+02, 1.1404000e+02, 1.1526064e+02, + 1.1648284e+02, 1.1770663e+02, 1.1893198e+02, 1.2015890e+02, + 1.2138740e+02, 1.2261746e+02, 1.2384910e+02, 1.2508232e+02, + 1.2631711e+02, 1.2755348e+02, 1.2879140e+02, 1.3003090e+02, + 1.3127201e+02, 1.3251468e+02, 1.3375893e+02, 1.3500476e+02, + 1.3625218e+02, 1.3750118e+02, 1.3875178e+02, 1.4000394e+02, + 1.4125771e+02, 1.4251305e+02, 1.4376999e+02, 1.4502855e+02, + 1.4628867e+02, 1.4755040e+02, 1.4881369e+02, 1.5197899e+02, + 1.5515427e+02, 1.5833960e+02, 1.6153493e+02, 1.6474037e+02, + 1.6795585e+02, 1.7118147e+02, 1.7441723e+02, 1.7766317e+02, + 1.8091923e+02, 1.8418550e+02, 1.8746185e+02, 1.9074839e+02, + 1.9404510e+02, 1.9735205e+02, 2.0066922e+02, 2.0399663e+02, + 2.0733433e+02, 2.1068230e+02, 2.1404055e+02, 2.1740914e+02, + 2.2078804e+02, 2.2417732e+02, 2.2757688e+02, 2.3098684e+02, + 2.3440722e+02, 2.3783797e+02, 2.4127912e+02, 2.4473066e+02, + 2.4819267e+02, 2.5166511e+02, 2.5514805e+02, 2.5864137e+02, + 2.6214528e+02, 2.6565960e+02, 2.6918446e+02, 2.7271981e+02, + 2.7626574e+02, 2.7982218e+02, 2.8338914e+02, 2.8696664e+02, + 2.9055475e+02, 2.9415341e+02, 2.9776270e+02, 3.0138257e+02, + 3.0501300e+02, 3.0865409e+02, 3.1230577e+02, 3.1596803e+02, + 3.1964089e+02, 3.2332444e+02, 3.2701870e+02, 3.3072352e+02, + 3.3443909e+02, 3.3816535e+02, 3.4190239e+02, 3.4565013e+02, + 3.4940858e+02, 3.5317783e+02, 3.5695780e+02, 3.6074849e+02, + 3.6455001e+02, 3.6836216e+02, 3.7218525e+02, 3.7601898e+02, + 3.7986357e+02, 3.8371904e+02, 3.8758516e+02, 3.9146215e+02, + 3.9534991e+02, 3.9924858e+02, 4.0315804e+02, 4.0707830e+02, + 4.1100948e+02, 4.1495147e+02, 4.1890427e+02, 4.2286790e+02, + 4.2684248e+02, 4.3082789e+02, 4.3482426e+02, 4.3883148e+02, + 4.4284956e+02, 4.4687862e+02, 4.5091841e+02, 4.5496933e+02, + 4.5903099e+02, 4.6310367e+02, 4.6718723e+02, 4.7128183e+02, + 4.7538718e+02, 4.7950369e+02, 4.8363096e+02, 4.8776930e+02, + 4.9191855e+02, 4.9607871e+02, 5.0024995e+02, 5.0443211e+02, + 5.0862536e+02, 5.1282939e+02, 5.1704452e+02, 5.2550776e+02, + 5.3401513e+02, 5.4256636e+02, 5.5116179e+02, 5.5980146e+02, + 5.6848508e+02, 5.7721301e+02, 5.8598511e+02, 5.9480143e+02, + 6.0366216e+02, 6.1256715e+02, 6.2151645e+02, 6.3051007e+02, + 6.3954822e+02, 6.4863078e+02, 6.5775770e+02, 6.6692926e+02, + 6.7614528e+02, 6.8540579e+02, 6.9471081e+02, 7.0406035e+02, + 7.1345465e+02, 7.2289353e+02, 7.3237721e+02, 7.4190532e+02, + 7.5147816e+02, 7.6109578e+02, 7.7075809e+02, 7.8046533e+02, + 7.9021731e+02, 8.0001406e+02, 8.0985560e+02, 8.1974218e+02, + 8.2967337e+02, 8.3964965e+02, 8.4967104e+02, 8.5973710e+02, + 8.6984841e+02, 8.8000446e+02, 8.9020540e+02, 9.0045123e+02, + 9.1074217e+02, 9.2107825e+02, 9.3145908e+02, 9.4188481e+02, + 9.5235572e+02, 9.6287130e+02, 9.7343208e+02, 9.8403782e+02, + 9.9468881e+02, 1.0053848e+03, 1.0161255e+03, 1.0269115e+03, + 1.0377428e+03, 1.0486189e+03, 1.0595404e+03, 1.0705069e+03, + 1.0815185e+03, 1.0925752e+03, 1.1036772e+03, 1.1148242e+03, + 1.1260165e+03, 1.1372542e+03, 1.1485368e+03, 1.1598645e+03, + 1.1712377e+03, 1.1826561e+03, 1.1941196e+03, 1.2056286e+03, + 1.2171825e+03, 1.2287819e+03, 1.2404265e+03, 1.2521163e+03, + 1.2638514e+03, 1.2756319e+03,], + [ 1.9000000e+01, 3.0094952e+00, 3.9502207e+00, 4.9634785e+00, + 5.9969161e+00, 7.0399312e+00, 8.0886966e+00, 9.1415921e+00, + 1.0198221e+01, 1.1257740e+01, 1.2319203e+01, 1.3382797e+01, + 1.4448411e+01, 1.5515941e+01, 1.6585289e+01, 1.7656377e+01, + 1.8729105e+01, 1.9803264e+01, 2.0879097e+01, 2.1956687e+01, + 2.3035886e+01, 2.4116644e+01, 2.5198937e+01, 2.6282750e+01, + 2.7368072e+01, 2.8454894e+01, 2.9543214e+01, 3.0633050e+01, + 3.1724453e+01, 3.2817371e+01, 3.3911658e+01, 3.5007352e+01, + 3.6104487e+01, 3.7203071e+01, 3.8303106e+01, 3.9404592e+01, + 4.0507525e+01, 4.1611911e+01, 4.2717745e+01, 4.3825022e+01, + 4.4933743e+01, 4.6043901e+01, 4.7155480e+01, 4.8268461e+01, + 4.9382866e+01, 5.0498761e+01, 5.1616149e+01, 5.2735006e+01, + 5.3855332e+01, 5.4977111e+01, 5.6100349e+01, 5.7225046e+01, + 5.8351209e+01, 5.9478826e+01, 6.0607897e+01, 6.1738438e+01, + 6.2870444e+01, 6.4003908e+01, 6.5138847e+01, 6.6275249e+01, + 6.7413124e+01, 6.8552485e+01, 6.9693321e+01, 7.0835652e+01, + 7.1979474e+01, 7.3124796e+01, 7.4271585e+01, 7.5419820e+01, + 7.6569527e+01, 7.7720695e+01, 7.8873351e+01, 8.0027478e+01, + 8.1183089e+01, 8.2340187e+01, 8.3498775e+01, 8.4658840e+01, + 8.5820411e+01, 8.6983476e+01, 8.8148024e+01, 8.9314068e+01, + 9.0481625e+01, 9.1650669e+01, 9.2821215e+01, 9.3993264e+01, + 9.5166817e+01, 9.6341861e+01, 9.7518428e+01, 9.8696503e+01, + 9.9876072e+01, 1.0105715e+02, 1.0223976e+02, 1.0342386e+02, + 1.0460947e+02, 1.0579659e+02, 1.0698522e+02, 1.0817534e+02, + 1.0936699e+02, 1.1056016e+02, 1.1175484e+02, 1.1295106e+02, + 1.1414884e+02, 1.1534813e+02, 1.1654897e+02, 1.1775134e+02, + 1.1895525e+02, 1.2016068e+02, 1.2136766e+02, 1.2257617e+02, + 1.2378623e+02, 1.2499782e+02, 1.2621094e+02, 1.2742564e+02, + 1.2864185e+02, 1.2985962e+02, 1.3107890e+02, 1.3229976e+02, + 1.3352217e+02, 1.3474610e+02, 1.3597162e+02, 1.3719866e+02, + 1.3842725e+02, 1.3965740e+02, 1.4088912e+02, 1.4212238e+02, + 1.4335721e+02, 1.4459361e+02, 1.4583156e+02, 1.4893325e+02, + 1.5204470e+02, 1.5516597e+02, 1.5829704e+02, 1.6143798e+02, + 1.6458875e+02, 1.6774941e+02, 1.7092000e+02, 1.7410052e+02, + 1.7729096e+02, 1.8049133e+02, 1.8370159e+02, 1.8692178e+02, + 1.9015195e+02, 1.9339209e+02, 1.9664226e+02, 1.9990243e+02, + 2.0317263e+02, 2.0645290e+02, 2.0974322e+02, 2.1304361e+02, + 2.1635412e+02, 2.1967472e+02, 2.2300547e+02, 2.2634629e+02, + 2.2969734e+02, 2.3305848e+02, 2.3642982e+02, 2.3981133e+02, + 2.4320308e+02, 2.4660502e+02, 2.5001716e+02, 2.5343957e+02, + 2.5687220e+02, 2.6031507e+02, 2.6376824e+02, 2.6723167e+02, + 2.7070537e+02, 2.7418941e+02, 2.7768373e+02, 2.8118842e+02, + 2.8470342e+02, 2.8822872e+02, 2.9176442e+02, 2.9531037e+02, + 2.9886681e+02, 3.0243351e+02, 3.0601062e+02, 3.0959817e+02, + 3.1319599e+02, 3.1680426e+02, 3.2042301e+02, 3.2405216e+02, + 3.2769174e+02, 3.3134177e+02, 3.3500233e+02, 3.3867336e+02, + 3.4235484e+02, 3.4604689e+02, 3.4974941e+02, 3.5346250e+02, + 3.5718608e+02, 3.6092015e+02, 3.6466481e+02, 3.6841998e+02, + 3.7218565e+02, 3.7596184e+02, 3.7974866e+02, 3.8354611e+02, + 3.8735400e+02, 3.9117252e+02, 3.9500170e+02, 3.9884133e+02, + 4.0269163e+02, 4.0655261e+02, 4.1042416e+02, 4.1430630e+02, + 4.1819901e+02, 4.2210244e+02, 4.2601646e+02, 4.2994108e+02, + 4.3387643e+02, 4.3782239e+02, 4.4177909e+02, 4.4574629e+02, + 4.4972438e+02, 4.5371297e+02, 4.5771233e+02, 4.6172233e+02, + 4.6574311e+02, 4.6977442e+02, 4.7381666e+02, 4.7786943e+02, + 4.8193297e+02, 4.8600720e+02, 4.9009226e+02, 4.9418799e+02, + 4.9829441e+02, 5.0241152e+02, 5.0653948e+02, 5.1482763e+02, + 5.2315876e+02, 5.3153305e+02, 5.3995040e+02, 5.4841083e+02, + 5.5691437e+02, 5.6546122e+02, 5.7405141e+02, 5.8268464e+02, + 5.9136128e+02, 6.0008118e+02, 6.0884456e+02, 6.1765126e+02, + 6.2650130e+02, 6.3539491e+02, 6.4433173e+02, 6.5331235e+02, + 6.6233623e+02, 6.7140378e+02, 6.8051482e+02, 6.8966959e+02, + 6.9886791e+02, 7.0810979e+02, 7.1739526e+02, 7.2672456e+02, + 7.3609748e+02, 7.4551397e+02, 7.5497443e+02, 7.6447860e+02, + 7.7402650e+02, 7.8361837e+02, 7.9325401e+02, 8.0293346e+02, + 8.1265696e+02, 8.2242430e+02, 8.3223551e+02, 8.4209058e+02, + 8.5198978e+02, 8.6193285e+02, 8.7191993e+02, 8.8195094e+02, + 8.9202582e+02, 9.0214455e+02, 9.1230714e+02, 9.2251410e+02, + 9.3276482e+02, 9.4305944e+02, 9.5339825e+02, 9.6378100e+02, + 9.7420771e+02, 9.8467839e+02, 9.9519332e+02, 1.0057523e+03, + 1.0163552e+03, 1.0270024e+03, 1.0376937e+03, 1.0484291e+03, + 1.0592085e+03, 1.0700322e+03, 1.0809000e+03, 1.0918120e+03, + 1.1027683e+03, 1.1137684e+03, 1.1248129e+03, 1.1359016e+03, + 1.1470347e+03, 1.1582119e+03, 1.1694333e+03, 1.1806988e+03, + 1.1920088e+03, 1.2033627e+03, 1.2147613e+03, 1.2262038e+03, + 1.2376905e+03, 1.2492217e+03,], + [ 2.0000000e+01, 2.9249339e+00, 3.8479917e+00, 4.8420138e+00, + 5.8554709e+00, 6.8781569e+00, 7.9063437e+00, 8.9385995e+00, + 9.9744751e+00, 1.1013163e+01, 1.2053724e+01, 1.3096378e+01, + 1.4140998e+01, 1.5187479e+01, 1.6235739e+01, 1.7285691e+01, + 1.8337242e+01, 1.9390179e+01, 2.0444771e+01, 2.1501078e+01, + 2.2558952e+01, 2.3618348e+01, 2.4679245e+01, 2.5741627e+01, + 2.6805483e+01, 2.7870806e+01, 2.8937593e+01, 3.0005865e+01, + 3.1075676e+01, 3.2146954e+01, 3.3219566e+01, 3.4293556e+01, + 3.5368957e+01, 3.6445776e+01, 3.7524009e+01, 3.8603661e+01, + 3.9684730e+01, 4.0767216e+01, 4.1851117e+01, 4.2936432e+01, + 4.4023158e+01, 4.5111288e+01, 4.6200800e+01, 4.7291683e+01, + 4.8383962e+01, 4.9477707e+01, 5.0572905e+01, 5.1669542e+01, + 5.2767609e+01, 5.3867103e+01, 5.4968022e+01, 5.6070362e+01, + 5.7174134e+01, 5.8279327e+01, 5.9385956e+01, 6.0494009e+01, + 6.1603493e+01, 6.2714417e+01, 6.3826769e+01, 6.4940559e+01, + 6.6055780e+01, 6.7172456e+01, 6.8290584e+01, 6.9410166e+01, + 7.0531224e+01, 7.1653726e+01, 7.2777658e+01, 7.3903013e+01, + 7.5029798e+01, 7.6158022e+01, 7.7287691e+01, 7.8418808e+01, + 7.9551378e+01, 8.0685389e+01, 8.1820868e+01, 8.2957793e+01, + 8.4096177e+01, 8.5236021e+01, 8.6377328e+01, 8.7520098e+01, + 8.8664333e+01, 8.9810036e+01, 9.0957206e+01, 9.2105832e+01, + 9.3255944e+01, 9.4407512e+01, 9.5560555e+01, 9.6715087e+01, + 9.7871079e+01, 9.9028548e+01, 1.0018749e+02, 1.0134790e+02, + 1.0250980e+02, 1.0367317e+02, 1.0483800e+02, 1.0600432e+02, + 1.0717210e+02, 1.0834137e+02, 1.0951214e+02, 1.1068442e+02, + 1.1185820e+02, 1.1303348e+02, 1.1421025e+02, 1.1538853e+02, + 1.1656833e+02, 1.1774960e+02, 1.1893238e+02, 1.2011668e+02, + 1.2130247e+02, 1.2248976e+02, 1.2367856e+02, 1.2486885e+02, + 1.2606067e+02, 1.2725401e+02, 1.2844883e+02, 1.2964519e+02, + 1.3084304e+02, 1.3204241e+02, 1.3324329e+02, 1.3444570e+02, + 1.3564963e+02, 1.3685507e+02, 1.3806204e+02, 1.3927051e+02, + 1.4048053e+02, 1.4169205e+02, 1.4290513e+02, 1.4594443e+02, + 1.4899332e+02, 1.5205177e+02, 1.5511984e+02, 1.5819751e+02, + 1.6128481e+02, 1.6438180e+02, 1.6748848e+02, 1.7060486e+02, + 1.7373096e+02, 1.7686673e+02, 1.8001221e+02, 1.8316740e+02, + 1.8633230e+02, 1.8950700e+02, 1.9269146e+02, 1.9588569e+02, + 1.9908977e+02, 2.0230365e+02, 2.0552741e+02, 2.0876100e+02, + 2.1200444e+02, 2.1525780e+02, 2.1852103e+02, 2.2179415e+02, + 2.2507722e+02, 2.2837021e+02, 2.3167317e+02, 2.3498608e+02, + 2.3830893e+02, 2.4164180e+02, 2.4498464e+02, 2.4833747e+02, + 2.5170035e+02, 2.5507323e+02, 2.5845620e+02, 2.6184919e+02, + 2.6525221e+02, 2.6866535e+02, 2.7208854e+02, 2.7552179e+02, + 2.7896518e+02, 2.8241866e+02, 2.8588222e+02, 2.8935595e+02, + 2.9283978e+02, 2.9633379e+02, 2.9983791e+02, 3.0335215e+02, + 3.0687659e+02, 3.1041117e+02, 3.1395590e+02, 3.1751090e+02, + 3.2107610e+02, 3.2465159e+02, 3.2823730e+02, 3.3183323e+02, + 3.3543939e+02, 3.3905587e+02, 3.4268268e+02, 3.4631964e+02, + 3.4996694e+02, 3.5362460e+02, 3.5729251e+02, 3.6097069e+02, + 3.6465915e+02, 3.6835798e+02, 3.7206710e+02, 3.7578662e+02, + 3.7951643e+02, 3.8325655e+02, 3.8700710e+02, 3.9076795e+02, + 3.9453913e+02, 3.9832074e+02, 4.0211269e+02, 4.0591498e+02, + 4.0972774e+02, 4.1355084e+02, 4.1738443e+02, 4.2122837e+02, + 4.2508269e+02, 4.2894737e+02, 4.3282256e+02, 4.3670826e+02, + 4.4060422e+02, 4.4451070e+02, 4.4842771e+02, 4.5235513e+02, + 4.5629296e+02, 4.6024119e+02, 4.6419998e+02, 4.6816920e+02, + 4.7214884e+02, 4.7613907e+02, 4.8013987e+02, 4.8415092e+02, + 4.8817260e+02, 4.9220472e+02, 4.9624745e+02, 5.0436427e+02, + 5.1252326e+02, 5.2072429e+02, 5.2896756e+02, 5.3725294e+02, + 5.4558047e+02, 5.5395033e+02, 5.6236240e+02, 5.7081671e+02, + 5.7931344e+02, 5.8785265e+02, 5.9643400e+02, 6.0505787e+02, + 6.1372430e+02, 6.2243312e+02, 6.3118437e+02, 6.3997826e+02, + 6.4881462e+02, 6.5769348e+02, 6.6661505e+02, 6.7557916e+02, + 6.8458604e+02, 6.9363550e+02, 7.0272758e+02, 7.1186250e+02, + 7.2104007e+02, 7.3026031e+02, 7.3952347e+02, 7.4882923e+02, + 7.5817784e+02, 7.6756943e+02, 7.7700403e+02, 7.8648123e+02, + 7.9600150e+02, 8.0556484e+02, 8.1517084e+02, 8.2481994e+02, + 8.3451217e+02, 8.4424704e+02, 8.5402528e+02, 8.6384616e+02, + 8.7371028e+02, 8.8361710e+02, 8.9356704e+02, 9.0355961e+02, + 9.1359557e+02, 9.2367445e+02, 9.3379636e+02, 9.4396123e+02, + 9.5416933e+02, 9.6442041e+02, 9.7471449e+02, 9.8505184e+02, + 9.9543221e+02, 1.0058556e+03, 1.0163221e+03, 1.0268319e+03, + 1.0373850e+03, 1.0479809e+03, 1.0586202e+03, 1.0693026e+03, + 1.0800284e+03, 1.0907972e+03, 1.1016093e+03, 1.1124647e+03, + 1.1233633e+03, 1.1343050e+03, 1.1452898e+03, 1.1563182e+03, + 1.1673896e+03, 1.1785046e+03, 1.1896627e+03, 1.2008641e+03, + 1.2121086e+03, 1.2233966e+03,], + [ 2.1000000e+01, 2.8436172e+00, 3.7491539e+00, 4.7241678e+00, + 5.7179318e+00, 6.7205337e+00, 7.7285546e+00, 8.7404810e+00, + 9.7559956e+00, 1.0774190e+01, 1.1794233e+01, 1.2816314e+01, + 1.3840300e+01, 1.4866109e+01, 1.5893648e+01, 1.6922842e+01, + 1.7953591e+01, 1.8985681e+01, 2.0019410e+01, 2.1054811e+01, + 2.2091741e+01, 2.3130157e+01, 2.4170040e+01, 2.5211375e+01, + 2.6254149e+01, 2.7298356e+01, 2.8343998e+01, 2.9391094e+01, + 3.0439700e+01, 3.1489725e+01, 3.2541054e+01, 3.3593734e+01, + 3.4647791e+01, 3.5703234e+01, 3.6760064e+01, 3.7818280e+01, + 3.8877878e+01, 3.9938864e+01, 4.1001231e+01, 4.2064984e+01, + 4.3130111e+01, 4.4196609e+01, 4.5264459e+01, 4.6333644e+01, + 4.7404206e+01, 4.8476201e+01, 4.9549619e+01, 5.0624438e+01, + 5.1700660e+01, 5.2778271e+01, 5.3857276e+01, 5.4937681e+01, + 5.6019474e+01, 5.7102664e+01, 5.8187251e+01, 5.9273236e+01, + 6.0360614e+01, 6.1449401e+01, 6.2539591e+01, 6.3631178e+01, + 6.4724175e+01, 6.5818594e+01, 6.6914427e+01, 6.8011692e+01, + 6.9110390e+01, 7.0210506e+01, 7.1312016e+01, 7.2414907e+01, + 7.3519208e+01, 7.4624907e+01, 7.5732029e+01, 7.6840557e+01, + 7.7950505e+01, 7.9061874e+01, 8.0174667e+01, 8.1288885e+01, + 8.2404529e+01, 8.3521603e+01, 8.4640106e+01, 8.5760027e+01, + 8.6881394e+01, 8.8004182e+01, 8.9128405e+01, 9.0254065e+01, + 9.1381163e+01, 9.2509701e+01, 9.3639679e+01, 9.4771100e+01, + 9.5903963e+01, 9.7038253e+01, 9.8174004e+01, 9.9311181e+01, + 1.0044982e+02, 1.0158988e+02, 1.0273138e+02, 1.0387432e+02, + 1.0501871e+02, 1.0616456e+02, 1.0731186e+02, 1.0846064e+02, + 1.0961088e+02, 1.1076261e+02, 1.1191579e+02, 1.1307044e+02, + 1.1422658e+02, 1.1538416e+02, 1.1654322e+02, 1.1770372e+02, + 1.1886572e+02, 1.2002919e+02, 1.2119412e+02, 1.2236054e+02, + 1.2352842e+02, 1.2469777e+02, 1.2586863e+02, 1.2704094e+02, + 1.2821474e+02, 1.2939002e+02, 1.3056676e+02, 1.3174500e+02, + 1.3292474e+02, 1.3410594e+02, 1.3528865e+02, 1.3647283e+02, + 1.3765849e+02, 1.3884566e+02, 1.4003431e+02, 1.4301249e+02, + 1.4600001e+02, 1.4899687e+02, 1.5200314e+02, 1.5501881e+02, + 1.5804392e+02, 1.6107847e+02, 1.6412250e+02, 1.6717605e+02, + 1.7023906e+02, 1.7331156e+02, 1.7639351e+02, 1.7948496e+02, + 1.8258595e+02, 1.8569647e+02, 1.8881654e+02, 1.9194621e+02, + 1.9508546e+02, 1.9823434e+02, 2.0139283e+02, 2.0456093e+02, + 2.0773872e+02, 2.1092620e+02, 2.1412328e+02, 2.1733009e+02, + 2.2054657e+02, 2.2377280e+02, 2.2700874e+02, 2.3025445e+02, + 2.3350988e+02, 2.3677505e+02, 2.4005003e+02, 2.4333477e+02, + 2.4662928e+02, 2.4993363e+02, 2.5324777e+02, 2.5657179e+02, + 2.5990561e+02, 2.6324925e+02, 2.6660279e+02, 2.6996617e+02, + 2.7333947e+02, 2.7672262e+02, 2.8011563e+02, 2.8351859e+02, + 2.8693142e+02, 2.9035413e+02, 2.9378679e+02, 2.9722935e+02, + 3.0068188e+02, 3.0414433e+02, 3.0761672e+02, 3.1109914e+02, + 3.1459153e+02, 3.1809391e+02, 3.2160636e+02, 3.2512880e+02, + 3.2866134e+02, 3.3220387e+02, 3.3575641e+02, 3.3931906e+02, + 3.4289173e+02, 3.4647443e+02, 3.5006725e+02, 3.5367021e+02, + 3.5728311e+02, 3.6090616e+02, 3.6453937e+02, 3.6818254e+02, + 3.7183588e+02, 3.7549940e+02, 3.7917301e+02, 3.8285670e+02, + 3.8655048e+02, 3.9025448e+02, 3.9396868e+02, 3.9769299e+02, + 4.0142742e+02, 4.0517197e+02, 4.0892677e+02, 4.1269170e+02, + 4.1646688e+02, 4.2025221e+02, 4.2404768e+02, 4.2785343e+02, + 4.3166934e+02, 4.3549540e+02, 4.3933176e+02, 4.4317830e+02, + 4.4703514e+02, 4.5090216e+02, 4.5477937e+02, 4.5866676e+02, + 4.6256449e+02, 4.6647255e+02, 4.7039082e+02, 4.7431931e+02, + 4.7825801e+02, 4.8220704e+02, 4.8616629e+02, 4.9411578e+02, + 5.0210635e+02, 5.1013803e+02, 5.1821100e+02, 5.2632530e+02, + 5.3448065e+02, 5.4267755e+02, 5.5091572e+02, 5.5919518e+02, + 5.6751596e+02, 5.7587843e+02, 5.8428210e+02, 5.9272735e+02, + 6.0121420e+02, 6.0974251e+02, 6.1831229e+02, 6.2692376e+02, + 6.3557675e+02, 6.4427148e+02, 6.5300784e+02, 6.6178567e+02, + 6.7060538e+02, 6.7946691e+02, 6.8837011e+02, 6.9731499e+02, + 7.0630178e+02, 7.1533029e+02, 7.2440076e+02, 7.3351300e+02, + 7.4266692e+02, 7.5186296e+02, 7.6110083e+02, 7.7038080e+02, + 7.7970264e+02, 7.8906638e+02, 7.9847226e+02, 8.0792029e+02, + 8.1741024e+02, 8.2694212e+02, 8.3651592e+02, 8.4613186e+02, + 8.5578996e+02, 8.6548997e+02, 8.7523205e+02, 8.8501586e+02, + 8.9484211e+02, 9.0471006e+02, 9.1462021e+02, 9.2457261e+02, + 9.3456712e+02, 9.4460365e+02, 9.5468221e+02, 9.6480309e+02, + 9.7496602e+02, 9.8517129e+02, 9.9541864e+02, 1.0057081e+03, + 1.0160399e+03, 1.0264138e+03, 1.0368302e+03, 1.0472886e+03, + 1.0577892e+03, 1.0683323e+03, 1.0789174e+03, 1.0895451e+03, + 1.1002149e+03, 1.1109269e+03, 1.1216813e+03, 1.1324780e+03, + 1.1433168e+03, 1.1541982e+03, 1.1651218e+03, 1.1760879e+03, + 1.1870962e+03, 1.1981467e+03,], + [ 2.2000000e+01, 2.7645354e+00, 3.6535983e+00, 4.6096579e+00, + 5.5839710e+00, 6.5669593e+00, 7.5551762e+00, 8.5471752e+00, + 9.5426579e+00, 1.0540748e+01, 1.1540638e+01, 1.2542501e+01, + 1.3546233e+01, 1.4551737e+01, 1.5558934e+01, 1.6567746e+01, + 1.7578065e+01, 1.8589687e+01, 1.9602936e+01, 2.0617809e+01, + 2.1634175e+01, 2.2651994e+01, 2.3671246e+01, 2.4691916e+01, + 2.5713994e+01, 2.6737473e+01, 2.7762355e+01, 2.8788663e+01, + 2.9816453e+01, 3.0845617e+01, 3.1876053e+01, 3.2907812e+01, + 3.3940921e+01, 3.4975383e+01, 3.6011203e+01, 3.7048376e+01, + 3.8086904e+01, 3.9126785e+01, 4.0168020e+01, 4.1210605e+01, + 4.2254535e+01, 4.3299806e+01, 4.4346397e+01, 4.5394287e+01, + 4.6443538e+01, 4.7494187e+01, 4.8546227e+01, 4.9599640e+01, + 5.0654419e+01, 5.1710562e+01, 5.2768068e+01, 5.3826937e+01, + 5.4887164e+01, 5.5948763e+01, 5.7011721e+01, 5.8076047e+01, + 5.9141749e+01, 6.0208814e+01, 6.1277252e+01, 6.2347064e+01, + 6.3418256e+01, 6.4490831e+01, 6.5564790e+01, 6.6640159e+01, + 6.7716921e+01, 6.8795073e+01, 6.9874576e+01, 7.0955441e+01, + 7.2037675e+01, 7.3121286e+01, 7.4206280e+01, 7.5292660e+01, + 7.6380428e+01, 7.7469587e+01, 7.8560126e+01, 7.9652071e+01, + 8.0745400e+01, 8.1840124e+01, 8.2936247e+01, 8.4033783e+01, + 8.5132707e+01, 8.6233020e+01, 8.7334750e+01, 8.8437886e+01, + 8.9542428e+01, 9.0648363e+01, 9.1755723e+01, 9.2864476e+01, + 9.3974641e+01, 9.5086217e+01, 9.6199204e+01, 9.7313602e+01, + 9.8429410e+01, 9.9546626e+01, 1.0066525e+02, 1.0178527e+02, + 1.0290672e+02, 1.0402958e+02, 1.0515390e+02, 1.0627964e+02, + 1.0740682e+02, 1.0853543e+02, 1.0966548e+02, 1.1079697e+02, + 1.1192987e+02, 1.1306423e+02, 1.1420003e+02, 1.1533725e+02, + 1.1647590e+02, 1.1761602e+02, 1.1875756e+02, 1.1990054e+02, + 1.2104496e+02, 1.2219083e+02, 1.2333815e+02, 1.2448689e+02, + 1.2563710e+02, 1.2678874e+02, 1.2794186e+02, 1.2909640e+02, + 1.3025240e+02, 1.3140988e+02, 1.3256879e+02, 1.3372916e+02, + 1.3489095e+02, 1.3605424e+02, 1.3721898e+02, 1.4013722e+02, + 1.4306459e+02, 1.4600110e+02, 1.4894681e+02, 1.5190173e+02, + 1.5486584e+02, 1.5783924e+02, 1.6082188e+02, 1.6381382e+02, + 1.6681505e+02, 1.6982548e+02, 1.7284524e+02, 1.7587423e+02, + 1.7891256e+02, 1.8196026e+02, 1.8501725e+02, 1.8808367e+02, + 1.9115942e+02, 1.9424458e+02, 1.9733919e+02, 2.0044321e+02, + 2.0355664e+02, 2.0667950e+02, 2.0981185e+02, 2.1295371e+02, + 2.1610503e+02, 2.1926584e+02, 2.2243619e+02, 2.2561604e+02, + 2.2880540e+02, 2.3200434e+02, 2.3521281e+02, 2.3843089e+02, + 2.4165852e+02, 2.4489571e+02, 2.4814255e+02, 2.5139897e+02, + 2.5466505e+02, 2.5794073e+02, 2.6122602e+02, 2.6452100e+02, + 2.6782561e+02, 2.7113993e+02, 2.7446390e+02, 2.7779750e+02, + 2.8114084e+02, 2.8449384e+02, 2.8785658e+02, 2.9122898e+02, + 2.9461107e+02, 2.9800293e+02, 3.0140452e+02, 3.0481592e+02, + 3.0823699e+02, 3.1166800e+02, 3.1510877e+02, 3.1855931e+02, + 3.2201963e+02, 3.2548982e+02, 3.2896979e+02, 3.3245965e+02, + 3.3595931e+02, 3.3946876e+02, 3.4298812e+02, 3.4651730e+02, + 3.5005639e+02, 3.5360532e+02, 3.5716407e+02, 3.6073277e+02, + 3.6431131e+02, 3.6789981e+02, 3.7149817e+02, 3.7510639e+02, + 3.7872459e+02, 3.8235266e+02, 3.8599061e+02, 3.8963857e+02, + 3.9329652e+02, 3.9696425e+02, 4.0064199e+02, 4.0432977e+02, + 4.0802746e+02, 4.1173507e+02, 4.1545260e+02, 4.1918017e+02, + 4.2291781e+02, 4.2666525e+02, 4.3042276e+02, 4.3419035e+02, + 4.3796789e+02, 4.4175538e+02, 4.4555297e+02, 4.4936052e+02, + 4.5317803e+02, 4.5700566e+02, 4.6084326e+02, 4.6469098e+02, + 4.6854869e+02, 4.7241638e+02, 4.7629423e+02, 4.8407989e+02, + 4.9190584e+02, 4.9977216e+02, 5.0767870e+02, 5.1562551e+02, + 5.2361292e+02, 5.3164049e+02, 5.3970857e+02, 5.4781720e+02, + 5.5596622e+02, 5.6415585e+02, 5.7238594e+02, 5.8065669e+02, + 5.8896794e+02, 5.9731990e+02, 6.0571243e+02, 6.1414553e+02, + 6.2261960e+02, 6.3113411e+02, 6.3968946e+02, 6.4828568e+02, + 6.5692258e+02, 6.6560040e+02, 6.7431895e+02, 6.8307846e+02, + 6.9187874e+02, 7.0071983e+02, 7.0960215e+02, 7.1852510e+02, + 7.2748914e+02, 7.3649427e+02, 7.4554020e+02, 7.5462716e+02, + 7.6375530e+02, 7.7292463e+02, 7.8213471e+02, 7.9138623e+02, + 8.0067875e+02, 8.1001224e+02, 8.1938695e+02, 8.2880264e+02, + 8.3825954e+02, 8.4775743e+02, 8.5729654e+02, 8.6687666e+02, + 8.7649794e+02, 8.8616030e+02, 8.9586394e+02, 9.0560862e+02, + 9.1539435e+02, 9.2522168e+02, 9.3508996e+02, 9.4499961e+02, + 9.5495039e+02, 9.6494257e+02, 9.7497589e+02, 9.8505064e+02, + 9.9516655e+02, 1.0053236e+03, 1.0155222e+03, 1.0257619e+03, + 1.0360431e+03, 1.0463656e+03, 1.0567295e+03, 1.0671346e+03, + 1.0775813e+03, 1.0880692e+03, 1.0985984e+03, 1.1091691e+03, + 1.1197810e+03, 1.1304345e+03, 1.1411293e+03, 1.1518657e+03, + 1.1626434e+03, 1.1734626e+03,], + [ 2.3000000e+01, 2.6884812e+00, 3.5606452e+00, 4.4983816e+00, + 5.4537099e+00, 6.4174079e+00, 7.3861106e+00, 8.3585480e+00, + 9.3343935e+00, 1.0312722e+01, 1.1292829e+01, 1.2274846e+01, + 1.3258699e+01, 1.4244278e+01, 1.5231504e+01, 1.6220309e+01, + 1.7210575e+01, 1.8202115e+01, 1.9195257e+01, 2.0189984e+01, + 2.1186169e+01, 2.2183773e+01, 2.3182778e+01, 2.4183168e+01, + 2.5184936e+01, 2.6188074e+01, 2.7192585e+01, 2.8198495e+01, + 2.9205857e+01, 3.0214549e+01, 3.1224484e+01, 3.2235717e+01, + 3.3248269e+01, 3.4262146e+01, 3.5277347e+01, 3.6293876e+01, + 3.7311726e+01, 3.8330904e+01, 3.9351401e+01, 4.0373224e+01, + 4.1396359e+01, 4.2420802e+01, 4.3446530e+01, 4.4473535e+01, + 4.5501875e+01, 4.6531584e+01, 4.7562655e+01, 4.8595069e+01, + 4.9628814e+01, 5.0663891e+01, 5.1700308e+01, 5.2738052e+01, + 5.3777130e+01, 5.4817543e+01, 5.5859293e+01, 5.6902380e+01, + 5.7946800e+01, 5.8992567e+01, 6.0039677e+01, 6.1088125e+01, + 6.2137921e+01, 6.3189081e+01, 6.4241595e+01, 6.5295482e+01, + 6.6350738e+01, 6.7407340e+01, 6.8465271e+01, 6.9524523e+01, + 7.0585127e+01, 7.1647068e+01, 7.2710373e+01, 7.3775022e+01, + 7.4841030e+01, 7.5908409e+01, 7.6977138e+01, 7.8047230e+01, + 7.9118688e+01, 8.0191499e+01, 8.1265690e+01, 8.2341251e+01, + 8.3418168e+01, 8.4496472e+01, 8.5576134e+01, 8.6657171e+01, + 8.7739584e+01, 8.8823373e+01, 8.9908540e+01, 9.0995087e+01, + 9.2083013e+01, 9.3172319e+01, 9.4262990e+01, 9.5355056e+01, + 9.6448484e+01, 9.7543306e+01, 9.8639486e+01, 9.9737047e+01, + 1.0083600e+02, 1.0193635e+02, 1.0303811e+02, 1.0414127e+02, + 1.0524582e+02, 1.0635180e+02, 1.0745916e+02, 1.0856794e+02, + 1.0967811e+02, 1.1078969e+02, 1.1190267e+02, 1.1301705e+02, + 1.1413285e+02, 1.1525006e+02, 1.1636867e+02, 1.1748870e+02, + 1.1861012e+02, 1.1973297e+02, 1.2085722e+02, 1.2198288e+02, + 1.2310998e+02, 1.2423848e+02, 1.2536840e+02, 1.2649974e+02, + 1.2763250e+02, 1.2876666e+02, 1.2990227e+02, 1.3103927e+02, + 1.3217773e+02, 1.3331760e+02, 1.3445892e+02, 1.3731839e+02, + 1.4018685e+02, 1.4306422e+02, 1.4595059e+02, 1.4884598e+02, + 1.5175038e+02, 1.5466382e+02, 1.5758635e+02, 1.6051794e+02, + 1.6345858e+02, 1.6640828e+02, 1.6936707e+02, 1.7233494e+02, + 1.7531190e+02, 1.7829798e+02, 1.8129323e+02, 1.8429767e+02, + 1.8731127e+02, 1.9033404e+02, 1.9336605e+02, 1.9640725e+02, + 1.9945772e+02, 2.0251740e+02, 2.0558632e+02, 2.0866454e+02, + 2.1175202e+02, 2.1484882e+02, 2.1795490e+02, 2.2107028e+02, + 2.2419501e+02, 2.2732906e+02, 2.3047249e+02, 2.3362525e+02, + 2.3678735e+02, 2.3995887e+02, 2.4313983e+02, 2.4633009e+02, + 2.4952986e+02, 2.5273896e+02, 2.5595753e+02, 2.5918550e+02, + 2.6242297e+02, 2.6566985e+02, 2.6892624e+02, 2.7219206e+02, + 2.7546733e+02, 2.7875211e+02, 2.8204642e+02, 2.8535011e+02, + 2.8866335e+02, 2.9198616e+02, 2.9531839e+02, 2.9866032e+02, + 3.0201169e+02, 3.0537270e+02, 3.0874335e+02, 3.1212356e+02, + 3.1551332e+02, 3.1891274e+02, 3.2232173e+02, 3.2574029e+02, + 3.2916853e+02, 3.3260645e+02, 3.3605386e+02, 3.3951097e+02, + 3.4297779e+02, 3.4645421e+02, 3.4994025e+02, 3.5343602e+02, + 3.5694141e+02, 3.6045644e+02, 3.6398121e+02, 3.6751574e+02, + 3.7105981e+02, 3.7461364e+02, 3.7817725e+02, 3.8175053e+02, + 3.8533348e+02, 3.8892623e+02, 3.9252866e+02, 3.9614089e+02, + 3.9976268e+02, 4.0339443e+02, 4.0703588e+02, 4.1068704e+02, + 4.1434790e+02, 4.1801861e+02, 4.2169905e+02, 4.2538933e+02, + 4.2908935e+02, 4.3279924e+02, 4.3651873e+02, 4.4024823e+02, + 4.4398735e+02, 4.4773635e+02, 4.5149525e+02, 4.5526391e+02, + 4.5904233e+02, 4.6283067e+02, 4.6662877e+02, 4.7425446e+02, + 4.8191960e+02, 4.8962400e+02, 4.9736793e+02, 5.0515138e+02, + 5.1297423e+02, 5.2083668e+02, 5.2873859e+02, 5.3668015e+02, + 5.4466122e+02, 5.5268200e+02, 5.6074252e+02, 5.6884263e+02, + 5.7698236e+02, 5.8516208e+02, 5.9338129e+02, 6.0164055e+02, + 6.0993951e+02, 6.1827821e+02, 6.2665685e+02, 6.3507526e+02, + 6.4353365e+02, 6.5203206e+02, 6.6057031e+02, 6.6914862e+02, + 6.7776681e+02, 6.8642510e+02, 6.9512331e+02, 7.0386168e+02, + 7.1264001e+02, 7.2145854e+02, 7.3031730e+02, 7.3921610e+02, + 7.4815481e+02, 7.5713392e+02, 7.6615333e+02, 7.7521282e+02, + 7.8431238e+02, 7.9345249e+02, 8.0263242e+02, 8.1185266e+02, + 8.2111320e+02, 8.3041382e+02, 8.3975476e+02, 8.4913580e+02, + 8.5855720e+02, 8.6801871e+02, 8.7752079e+02, 8.8706279e+02, + 8.9664520e+02, 9.0626803e+02, 9.1593078e+02, 9.2563449e+02, + 9.3537828e+02, 9.4516229e+02, 9.5498680e+02, 9.6485156e+02, + 9.7475684e+02, 9.8470266e+02, 9.9468848e+02, 1.0047151e+03, + 1.0147821e+03, 1.0248893e+03, 1.0350371e+03, 1.0452253e+03, + 1.0554540e+03, 1.0657234e+03, 1.0760331e+03, 1.0863831e+03, + 1.0967738e+03, 1.1072048e+03, 1.1176764e+03, 1.1281885e+03, + 1.1387412e+03, 1.1493343e+03,], + [ 2.4000000e+01, 2.6144456e+00, 3.4707676e+00, 4.3902399e+00, + 5.3269395e+00, 6.2717085e+00, 7.2213128e+00, 8.1745047e+00, + 9.1310812e+00, 1.0090038e+01, 1.1050714e+01, 1.2013270e+01, + 1.2977615e+01, 1.3943635e+01, 1.4911270e+01, 1.5880442e+01, + 1.6851037e+01, 1.7822868e+01, 1.8796289e+01, 1.9771250e+01, + 2.0747636e+01, 2.1725408e+01, 2.2704549e+01, 2.3685045e+01, + 2.4666888e+01, 2.5650071e+01, 2.6634599e+01, 2.7620500e+01, + 2.8607824e+01, 2.9596432e+01, 3.0586259e+01, 3.1577356e+01, + 3.2569747e+01, 3.3563431e+01, 3.4558412e+01, 3.5554690e+01, + 3.6552263e+01, 3.7551132e+01, 3.8551294e+01, 3.9552745e+01, + 4.0555487e+01, 4.1559501e+01, 4.2564774e+01, 4.3571292e+01, + 4.4579124e+01, 4.5588307e+01, 4.6598810e+01, 4.7610626e+01, + 4.8623748e+01, 4.9638168e+01, 5.0653899e+01, 5.1670933e+01, + 5.2689267e+01, 5.3708913e+01, 5.4729860e+01, 5.5752115e+01, + 5.6775681e+01, 5.7800558e+01, 5.8826748e+01, 5.9854255e+01, + 6.0883083e+01, 6.1913237e+01, 6.2944726e+01, 6.3977551e+01, + 6.5011712e+01, 6.6047195e+01, 6.7083966e+01, 6.8122041e+01, + 6.9161429e+01, 7.0202136e+01, 7.1244167e+01, 7.2287524e+01, + 7.3332210e+01, 7.4378216e+01, 7.5425565e+01, 7.6474236e+01, + 7.7524254e+01, 7.8575596e+01, 7.9628277e+01, 8.0682296e+01, + 8.1737657e+01, 8.2794359e+01, 8.3852405e+01, 8.4911796e+01, + 8.5972532e+01, 8.7034601e+01, 8.8098033e+01, 8.9162798e+01, + 9.0228913e+01, 9.1296378e+01, 9.2365208e+01, 9.3435372e+01, + 9.4506882e+01, 9.5579722e+01, 9.6653925e+01, 9.7729480e+01, + 9.8806379e+01, 9.9884667e+01, 1.0096431e+02, 1.0204536e+02, + 1.0312775e+02, 1.0421153e+02, 1.0529667e+02, 1.0638319e+02, + 1.0747108e+02, 1.0856033e+02, 1.0965098e+02, 1.1074300e+02, + 1.1183637e+02, 1.1293115e+02, 1.1402729e+02, 1.1512480e+02, + 1.1622370e+02, 1.1732398e+02, 1.1842564e+02, 1.1952870e+02, + 1.2063313e+02, 1.2173896e+02, 1.2284615e+02, 1.2395475e+02, + 1.2506472e+02, 1.2617609e+02, 1.2728887e+02, 1.2840302e+02, + 1.2951857e+02, 1.3063551e+02, 1.3175385e+02, 1.3455579e+02, + 1.3736649e+02, 1.4018597e+02, 1.4301422e+02, 1.4585129e+02, + 1.4869718e+02, 1.5155191e+02, 1.5441554e+02, 1.5728803e+02, + 1.6016940e+02, 1.6305960e+02, 1.6595865e+02, 1.6886662e+02, + 1.7178349e+02, 1.7470932e+02, 1.7764408e+02, 1.8058783e+02, + 1.8354054e+02, 1.8650227e+02, 1.8947298e+02, 1.9245269e+02, + 1.9544146e+02, 1.9843926e+02, 2.0144613e+02, 2.0446206e+02, + 2.0748703e+02, 2.1052113e+02, 2.1356431e+02, 2.1661663e+02, + 2.1967805e+02, 2.2274864e+02, 2.2582836e+02, 2.2891720e+02, + 2.3201524e+02, 2.3512249e+02, 2.3823884e+02, 2.4136449e+02, + 2.4449925e+02, 2.4764327e+02, 2.5079655e+02, 2.5395896e+02, + 2.5713072e+02, 2.6031163e+02, 2.6350183e+02, 2.6670134e+02, + 2.6991007e+02, 2.7312805e+02, 2.7635534e+02, 2.7959189e+02, + 2.8283778e+02, 2.8609295e+02, 2.8935743e+02, 2.9263131e+02, + 2.9591460e+02, 2.9920715e+02, 3.0250912e+02, 3.0582053e+02, + 3.0914129e+02, 3.1247140e+02, 3.1581096e+02, 3.1915989e+02, + 3.2251829e+02, 3.2588606e+02, 3.2926321e+02, 3.3264985e+02, + 3.3604598e+02, 3.3945141e+02, 3.4286635e+02, 3.4629080e+02, + 3.4972467e+02, 3.5316797e+02, 3.5662080e+02, 3.6008306e+02, + 3.6355487e+02, 3.6703613e+02, 3.7052684e+02, 3.7402711e+02, + 3.7753697e+02, 3.8105617e+02, 3.8458495e+02, 3.8812334e+02, + 3.9167122e+02, 3.9522856e+02, 3.9879552e+02, 4.0237197e+02, + 4.0595793e+02, 4.0955351e+02, 4.1315874e+02, 4.1677347e+02, + 4.2039773e+02, 4.2403150e+02, 4.2767493e+02, 4.3132803e+02, + 4.3499067e+02, 4.3866284e+02, 4.4234469e+02, 4.4603608e+02, + 4.4973703e+02, 4.5344767e+02, 4.5716787e+02, 4.6463725e+02, + 4.7214505e+02, 4.7969146e+02, 4.8727650e+02, 4.9490003e+02, + 5.0256228e+02, 5.1026325e+02, 5.1800283e+02, 5.2578119e+02, + 5.3359820e+02, 5.4145406e+02, 5.4934878e+02, 5.5728223e+02, + 5.6525461e+02, 5.7326576e+02, 5.8131588e+02, 5.8940500e+02, + 5.9753296e+02, 6.0569997e+02, 6.1390586e+02, 6.2215103e+02, + 6.3043494e+02, 6.3875798e+02, 6.4712018e+02, 6.5552158e+02, + 6.6396198e+02, 6.7244140e+02, 6.8096029e+02, 6.8951803e+02, + 6.9811530e+02, 7.0675167e+02, 7.1542718e+02, 7.2414228e+02, + 7.3289634e+02, 7.4168990e+02, 7.5052276e+02, 7.5939482e+02, + 7.6830629e+02, 7.7725719e+02, 7.8624727e+02, 7.9527677e+02, + 8.0434546e+02, 8.1345357e+02, 8.2260113e+02, 8.3178791e+02, + 8.4101391e+02, 8.5027966e+02, 8.5958441e+02, 8.6892894e+02, + 8.7831275e+02, 8.8773599e+02, 8.9719860e+02, 9.0670077e+02, + 9.1624225e+02, 9.2582358e+02, 9.3544412e+02, 9.4510429e+02, + 9.5480383e+02, 9.6454302e+02, 9.7432188e+02, 9.8414013e+02, + 9.9399806e+02, 1.0038954e+03, 1.0138324e+03, 1.0238089e+03, + 1.0338251e+03, 1.0438807e+03, 1.0539761e+03, 1.0641112e+03, + 1.0742857e+03, 1.0844997e+03, 1.0947535e+03, 1.1050471e+03, + 1.1153801e+03, 1.1257530e+03,], + [ 2.5000000e+01, 2.5432424e+00, 3.3832952e+00, 4.2853094e+00, + 5.2036742e+00, 6.1297676e+00, 7.0605886e+00, 7.9949882e+00, + 8.9326284e+00, 9.8725839e+00, 1.0814201e+01, 1.1757680e+01, + 1.2702880e+01, 1.3649724e+01, 1.4598143e+01, 1.5548056e+01, + 1.6499358e+01, 1.7451862e+01, 1.8405938e+01, 1.9361515e+01, + 2.0318481e+01, 2.1276805e+01, 2.2236466e+01, 2.3197453e+01, + 2.4159757e+01, 2.5123373e+01, 2.6088303e+01, 2.7054583e+01, + 2.8022257e+01, 2.8991173e+01, 2.9961282e+01, 3.0932637e+01, + 3.1905257e+01, 3.2879141e+01, 3.3854298e+01, 3.4830719e+01, + 3.5808408e+01, 3.6787368e+01, 3.7767589e+01, 3.8749074e+01, + 3.9731818e+01, 4.0715808e+01, 4.1701021e+01, 4.2687456e+01, + 4.3675189e+01, 4.4664238e+01, 4.5654578e+01, 4.6646201e+01, + 4.7639106e+01, 4.8633282e+01, 4.9628734e+01, 5.0625462e+01, + 5.1623466e+01, 5.2622749e+01, 5.3623311e+01, 5.4625147e+01, + 5.5628271e+01, 5.6632671e+01, 5.7638365e+01, 5.8645339e+01, + 5.9653605e+01, 6.0663171e+01, 6.1674045e+01, 6.2686236e+01, + 6.3699730e+01, 6.4714503e+01, 6.5730546e+01, 6.6747857e+01, + 6.7766462e+01, 6.8786349e+01, 6.9807542e+01, 7.0830022e+01, + 7.1853802e+01, 7.2878884e+01, 7.3905269e+01, 7.4932960e+01, + 7.5961957e+01, 7.6992261e+01, 7.8023863e+01, 7.9056787e+01, + 8.0091011e+01, 8.1126561e+01, 8.2163411e+01, 8.3201577e+01, + 8.4241060e+01, 8.5281860e+01, 8.6323979e+01, 8.7367418e+01, + 8.8412178e+01, 8.9458258e+01, 9.0505642e+01, 9.1554361e+01, + 9.2604382e+01, 9.3655718e+01, 9.4708389e+01, 9.5762367e+01, + 9.6817681e+01, 9.7874337e+01, 9.8932341e+01, 9.9991691e+01, + 1.0105237e+02, 1.0211441e+02, 1.0317777e+02, 1.0424250e+02, + 1.0530855e+02, 1.0637597e+02, 1.0744471e+02, 1.0851480e+02, + 1.0958624e+02, 1.1065902e+02, 1.1173316e+02, 1.1280862e+02, + 1.1388546e+02, 1.1496366e+02, 1.1604318e+02, 1.1712406e+02, + 1.1820632e+02, 1.1928991e+02, 1.2037487e+02, 1.2146118e+02, + 1.2254885e+02, 1.2363789e+02, 1.2472829e+02, 1.2582003e+02, + 1.2691316e+02, 1.2800763e+02, 1.2910350e+02, 1.3184909e+02, + 1.3460325e+02, 1.3736600e+02, 1.4013734e+02, 1.4291728e+02, + 1.4570588e+02, 1.4850316e+02, 1.5130908e+02, 1.5412375e+02, + 1.5694701e+02, 1.5977895e+02, 1.6261959e+02, 1.6546893e+02, + 1.6832697e+02, 1.7119377e+02, 1.7406932e+02, 1.7695366e+02, + 1.7984677e+02, 1.8274870e+02, 1.8565942e+02, 1.8857895e+02, + 1.9150734e+02, 1.9444461e+02, 1.9739066e+02, 2.0034566e+02, + 2.0330948e+02, 2.0628221e+02, 2.0926389e+02, 2.1225446e+02, + 2.1525392e+02, 2.1826236e+02, 2.2127979e+02, 2.2430608e+02, + 2.2734138e+02, 2.3038570e+02, 2.3343897e+02, 2.3650128e+02, + 2.3957249e+02, 2.4265284e+02, 2.4574218e+02, 2.4884052e+02, + 2.5194786e+02, 2.5506438e+02, 2.5818984e+02, 2.6132440e+02, + 2.6446799e+02, 2.6762069e+02, 2.7078244e+02, 2.7395331e+02, + 2.7713325e+02, 2.8032236e+02, 2.8352057e+02, 2.8672790e+02, + 2.8994444e+02, 2.9317012e+02, 2.9640502e+02, 2.9964906e+02, + 3.0290235e+02, 3.0616478e+02, 3.0943637e+02, 3.1271721e+02, + 3.1600721e+02, 3.1930649e+02, 3.2261495e+02, 3.2593269e+02, + 3.2925961e+02, 3.3259574e+02, 3.3594116e+02, 3.3929579e+02, + 3.4265975e+02, 3.4603291e+02, 3.4941530e+02, 3.5280703e+02, + 3.5620810e+02, 3.5961842e+02, 3.6303797e+02, 3.6646689e+02, + 3.6990507e+02, 3.7335250e+02, 3.7680932e+02, 3.8027540e+02, + 3.8375088e+02, 3.8723564e+02, 3.9072981e+02, 3.9423327e+02, + 3.9774613e+02, 4.0126830e+02, 4.0479976e+02, 4.0834067e+02, + 4.1189088e+02, 4.1545041e+02, 4.1901953e+02, 4.2259783e+02, + 4.2618559e+02, 4.2978268e+02, 4.3338925e+02, 4.3700515e+02, + 4.4063054e+02, 4.4426527e+02, 4.4790936e+02, 4.5522587e+02, + 4.6258012e+02, 4.6997199e+02, 4.7740166e+02, 4.8486919e+02, + 4.9237436e+02, 4.9991745e+02, 5.0749846e+02, 5.1511742e+02, + 5.2277419e+02, 5.3046897e+02, 5.3820160e+02, 5.4597229e+02, + 5.5378106e+02, 5.6162776e+02, 5.6951259e+02, 5.7743558e+02, + 5.8539674e+02, 5.9339592e+02, 6.0143314e+02, 6.0950879e+02, + 6.1762253e+02, 6.2577435e+02, 6.3396469e+02, 6.4219317e+02, + 6.5045981e+02, 6.5876488e+02, 6.6710824e+02, 6.7549010e+02, + 6.8391019e+02, 6.9236877e+02, 7.0086562e+02, 7.0940100e+02, + 7.1797492e+02, 7.2658716e+02, 7.3523797e+02, 7.4392722e+02, + 7.5265491e+02, 7.6142115e+02, 7.7022573e+02, 7.7906910e+02, + 7.8795055e+02, 7.9687083e+02, 8.0582945e+02, 8.1482644e+02, + 8.2386229e+02, 8.3293627e+02, 8.4204916e+02, 8.5120047e+02, + 8.6039046e+02, 8.6961889e+02, 8.7888602e+02, 8.8819203e+02, + 8.9753629e+02, 9.0691929e+02, 9.1634075e+02, 9.2580120e+02, + 9.3530032e+02, 9.4483795e+02, 9.5441439e+02, 9.6402936e+02, + 9.7368314e+02, 9.8337576e+02, 9.9310693e+02, 1.0028770e+03, + 1.0126858e+03, 1.0225333e+03, 1.0324196e+03, 1.0423445e+03, + 1.0523083e+03, 1.0623107e+03, 1.0723520e+03, 1.0824322e+03, + 1.0925511e+03, 1.1027088e+03,], + [ 2.6000000e+01, 2.4743218e+00, 3.2987097e+00, 4.1833254e+00, + 5.0836053e+00, 5.9914943e+00, 6.9039963e+00, 7.8198358e+00, + 8.7389441e+00, 9.6602684e+00, 1.0583213e+01, 1.1507961e+01, + 1.2434401e+01, 1.3362444e+01, 1.4292018e+01, 1.5223059e+01, + 1.6155440e+01, 1.7088999e+01, 1.8024107e+01, 1.8960680e+01, + 1.9898611e+01, 2.0837867e+01, 2.1778432e+01, 2.2720294e+01, + 2.3663444e+01, 2.4607876e+01, 2.5553598e+01, 2.6500645e+01, + 2.7449056e+01, 2.8398668e+01, 2.9349449e+01, 3.0301451e+01, + 3.1254693e+01, 3.2209171e+01, 3.3164893e+01, 3.4121855e+01, + 3.5080058e+01, 3.6039497e+01, 3.7000178e+01, 3.7962091e+01, + 3.8925238e+01, 3.9889598e+01, 4.0855152e+01, 4.1821909e+01, + 4.2789940e+01, 4.3759258e+01, 4.4729842e+01, 4.5701680e+01, + 4.6674763e+01, 4.7649100e+01, 4.8624679e+01, 4.9601513e+01, + 5.0579590e+01, 5.1558918e+01, 5.2539498e+01, 5.3521338e+01, + 5.4504425e+01, 5.5488761e+01, 5.6474362e+01, 5.7461225e+01, + 5.8449353e+01, 5.9438746e+01, 6.0429430e+01, 6.1421393e+01, + 6.2414629e+01, 6.3409111e+01, 6.4404836e+01, 6.5401812e+01, + 6.6400046e+01, 6.7399545e+01, 6.8400311e+01, 6.9402348e+01, + 7.0405646e+01, 7.1410230e+01, 7.2416078e+01, 7.3423215e+01, + 7.4431618e+01, 7.5441301e+01, 7.6452265e+01, 7.7464512e+01, + 7.8478042e+01, 7.9492857e+01, 8.0508945e+01, 8.1526334e+01, + 8.2545012e+01, 8.3564964e+01, 8.4586223e+01, 8.5608757e+01, + 8.6632583e+01, 8.7657701e+01, 8.8684110e+01, 8.9711809e+01, + 9.0740796e+01, 9.1771071e+01, 9.2802637e+01, 9.3835483e+01, + 9.4869655e+01, 9.5905125e+01, 9.6941913e+01, 9.7980038e+01, + 9.9019459e+01, 1.0006020e+02, 1.0110225e+02, 1.0214561e+02, + 1.0319029e+02, 1.0423629e+02, 1.0528358e+02, 1.0633222e+02, + 1.0738215e+02, 1.0843342e+02, 1.0948599e+02, 1.1053988e+02, + 1.1159510e+02, 1.1265164e+02, 1.1370951e+02, 1.1476870e+02, + 1.1582922e+02, 1.1689107e+02, 1.1795423e+02, 1.1901874e+02, + 1.2008456e+02, 1.2115173e+02, 1.2222022e+02, 1.2329004e+02, + 1.2436120e+02, 1.2543369e+02, 1.2650752e+02, 1.2919797e+02, + 1.3189679e+02, 1.3460398e+02, 1.3731960e+02, 1.4004363e+02, + 1.4277615e+02, 1.4551713e+02, 1.4826664e+02, 1.5102461e+02, + 1.5379104e+02, 1.5656596e+02, 1.5934940e+02, 1.6214134e+02, + 1.6494180e+02, 1.6775085e+02, 1.7056844e+02, 1.7339464e+02, + 1.7622942e+02, 1.7907279e+02, 1.8192486e+02, 1.8478549e+02, + 1.8765479e+02, 1.9053273e+02, 1.9341937e+02, 1.9631473e+02, + 1.9921869e+02, 2.0213145e+02, 2.0505284e+02, 2.0798299e+02, + 2.1092191e+02, 2.1386955e+02, 2.1682598e+02, 2.1979108e+02, + 2.2276507e+02, 2.2574781e+02, 2.2873932e+02, 2.3173967e+02, + 2.3474881e+02, 2.3776673e+02, 2.4079353e+02, 2.4382920e+02, + 2.4687370e+02, 2.4992701e+02, 2.5298922e+02, 2.5606027e+02, + 2.5914023e+02, 2.6222902e+02, 2.6532674e+02, 2.6843332e+02, + 2.7154877e+02, 2.7467319e+02, 2.7780661e+02, 2.8094895e+02, + 2.8410023e+02, 2.8726052e+02, 2.9042976e+02, 2.9360794e+02, + 2.9679516e+02, 2.9999142e+02, 3.0319664e+02, 3.0641082e+02, + 3.0963407e+02, 3.1286629e+02, 3.1610759e+02, 3.1935788e+02, + 3.2261725e+02, 3.2588563e+02, 3.2916300e+02, 3.3244949e+02, + 3.3574499e+02, 3.3904961e+02, 3.4236326e+02, 3.4568605e+02, + 3.4901787e+02, 3.5235873e+02, 3.5570875e+02, 3.5906793e+02, + 3.6243617e+02, 3.6581347e+02, 3.6919995e+02, 3.7259550e+02, + 3.7600012e+02, 3.7941394e+02, 3.8283697e+02, 3.8626909e+02, + 3.8971029e+02, 3.9316073e+02, 3.9662026e+02, 4.0008902e+02, + 4.0356689e+02, 4.0705388e+02, 4.1055011e+02, 4.1405547e+02, + 4.1757008e+02, 4.2109382e+02, 4.2462684e+02, 4.2816899e+02, + 4.3172042e+02, 4.3528100e+02, 4.3885072e+02, 4.4601791e+02, + 4.5322202e+02, 4.6046309e+02, 4.6774099e+02, 4.7505591e+02, + 4.8240774e+02, 4.8979679e+02, 4.9722276e+02, 5.0468588e+02, + 5.1218617e+02, 5.1972347e+02, 5.2729799e+02, 5.3490974e+02, + 5.4255858e+02, 5.5024470e+02, 5.5796814e+02, 5.6572891e+02, + 5.7352686e+02, 5.8136218e+02, 5.8923491e+02, 5.9714487e+02, + 6.0509228e+02, 6.1307716e+02, 6.2109933e+02, 6.2915921e+02, + 6.3725623e+02, 6.4539100e+02, 6.5356315e+02, 6.6177291e+02, + 6.7002029e+02, 6.7830511e+02, 6.8662760e+02, 6.9498779e+02, + 7.0338546e+02, 7.1182086e+02, 7.2029399e+02, 7.2880485e+02, + 7.3735320e+02, 7.4593891e+02, 7.5456270e+02, 7.6322398e+02, + 7.7192299e+02, 7.8065975e+02, 7.8943402e+02, 7.9824607e+02, + 8.0709566e+02, 8.1598305e+02, 8.2490826e+02, 8.3387131e+02, + 8.4287196e+02, 8.5191046e+02, 8.6098659e+02, 8.7010086e+02, + 8.7925277e+02, 8.8844249e+02, 8.9766990e+02, 9.0693523e+02, + 9.1623848e+02, 9.2557961e+02, 9.3495861e+02, 9.4437531e+02, + 9.5383027e+02, 9.6332265e+02, 9.7285333e+02, 9.8242172e+02, + 9.9202814e+02, 1.0016723e+03, 1.0113545e+03, 1.0210747e+03, + 1.0308330e+03, 1.0406290e+03, 1.0504628e+03, 1.0603350e+03, + 1.0702449e+03, 1.0801927e+03,], + [ 2.7000000e+01, 2.4080612e+00, 3.2169228e+00, 4.0842003e+00, + 4.9668606e+00, 5.8568707e+00, 6.7512978e+00, 7.6490640e+00, + 8.5499634e+00, 9.4530196e+00, 1.0357658e+01, 1.1264045e+01, + 1.2172094e+01, 1.3081708e+01, 1.3992816e+01, 1.4905351e+01, + 1.5819191e+01, 1.6734180e+01, 1.7650703e+01, 1.8568650e+01, + 1.9487925e+01, 2.0408495e+01, 2.1330346e+01, 2.2253465e+01, + 2.3177844e+01, 2.4103479e+01, 2.5030377e+01, 2.5958578e+01, + 2.6888112e+01, 2.7818807e+01, 2.8750652e+01, 2.9683691e+01, + 3.0617943e+01, 3.1553408e+01, 3.2490087e+01, 3.3427980e+01, + 3.4367087e+01, 3.5307407e+01, 3.6248938e+01, 3.7191678e+01, + 3.8135617e+01, 3.9080749e+01, 4.0027041e+01, 4.0974521e+01, + 4.1923250e+01, 4.2873236e+01, 4.3824466e+01, 4.4776917e+01, + 4.5730590e+01, 4.6685486e+01, 4.7641597e+01, 4.8598937e+01, + 4.9557499e+01, 5.0517279e+01, 5.1478291e+01, 5.2440522e+01, + 5.3403988e+01, 5.4368677e+01, 5.5334597e+01, 5.6301752e+01, + 5.7270146e+01, 5.8239788e+01, 5.9210687e+01, 6.0182846e+01, + 6.1156236e+01, 6.2130854e+01, 6.3106679e+01, 6.4083738e+01, + 6.5062020e+01, 6.6041539e+01, 6.7022300e+01, 6.8004304e+01, + 6.8987553e+01, 6.9972050e+01, 7.0957795e+01, 7.1944790e+01, + 7.2933025e+01, 7.3922524e+01, 7.4913265e+01, 7.5905273e+01, + 7.6898526e+01, 7.7893035e+01, 7.8888818e+01, 7.9885847e+01, + 8.0884137e+01, 8.1883674e+01, 8.2884488e+01, 8.3886567e+01, + 8.4889910e+01, 8.5894501e+01, 8.6900371e+01, 8.7907487e+01, + 8.8915863e+01, 8.9925498e+01, 9.0936415e+01, 9.1948587e+01, + 9.2962043e+01, 9.3976768e+01, 9.4992802e+01, 9.6010125e+01, + 9.7028736e+01, 9.8048614e+01, 9.9069798e+01, 1.0009225e+02, + 1.0111599e+02, 1.0214101e+02, 1.0316735e+02, 1.0419496e+02, + 1.0522383e+02, 1.0625402e+02, 1.0728550e+02, 1.0831828e+02, + 1.0935232e+02, 1.1038769e+02, 1.1142433e+02, 1.1246230e+02, + 1.1350154e+02, 1.1454207e+02, 1.1558392e+02, 1.1662706e+02, + 1.1767151e+02, 1.1871726e+02, 1.1976432e+02, 1.2081266e+02, + 1.2186234e+02, 1.2291332e+02, 1.2396559e+02, 1.2660201e+02, + 1.2924664e+02, 1.3189948e+02, 1.3456054e+02, 1.3722986e+02, + 1.3990749e+02, 1.4259341e+02, 1.4528763e+02, 1.4799017e+02, + 1.5070101e+02, 1.5342010e+02, 1.5614756e+02, 1.5888334e+02, + 1.6162747e+02, 1.6437995e+02, 1.6714088e+02, 1.6991015e+02, + 1.7268787e+02, 1.7547403e+02, 1.7826861e+02, 1.8107163e+02, + 1.8388313e+02, 1.8670314e+02, 1.8953161e+02, 1.9236855e+02, + 1.9521403e+02, 1.9806801e+02, 2.0093055e+02, 2.0380160e+02, + 2.0668117e+02, 2.0956940e+02, 2.1246611e+02, 2.1537144e+02, + 2.1828539e+02, 2.2120792e+02, 2.2413902e+02, 2.2707878e+02, + 2.3002714e+02, 2.3298417e+02, 2.3594981e+02, 2.3892413e+02, + 2.4190709e+02, 2.4489867e+02, 2.4789905e+02, 2.5090799e+02, + 2.5392565e+02, 2.5695196e+02, 2.5998700e+02, 2.6303080e+02, + 2.6608320e+02, 2.6914447e+02, 2.7221437e+02, 2.7529319e+02, + 2.7838065e+02, 2.8147694e+02, 2.8458208e+02, 2.8769596e+02, + 2.9081860e+02, 2.9395009e+02, 2.9709034e+02, 3.0023946e+02, + 3.0339736e+02, 3.0656414e+02, 3.0973970e+02, 3.1292415e+02, + 3.1611741e+02, 3.1931946e+02, 3.2253043e+02, 3.2575032e+02, + 3.2897903e+02, 3.3221656e+02, 3.3546304e+02, 3.3871834e+02, + 3.4198260e+02, 3.4525571e+02, 3.4853766e+02, 3.5182859e+02, + 3.5512849e+02, 3.5843726e+02, 3.6175489e+02, 3.6508152e+02, + 3.6841703e+02, 3.7176154e+02, 3.7511494e+02, 3.7847724e+02, + 3.8184855e+02, 3.8522889e+02, 3.8861814e+02, 3.9201630e+02, + 3.9542351e+02, 3.9883962e+02, 4.0226478e+02, 4.0569888e+02, + 4.0914204e+02, 4.1259413e+02, 4.1605516e+02, 4.1952526e+02, + 4.2300445e+02, 4.2649259e+02, 4.2998968e+02, 4.3701101e+02, + 4.4406833e+02, 4.5116197e+02, 4.5829165e+02, 4.6545756e+02, + 4.7265973e+02, 4.7989802e+02, 4.8717282e+02, 4.9448374e+02, + 5.0183105e+02, 5.0921458e+02, 5.1663471e+02, 5.2409110e+02, + 5.3158396e+02, 5.3911314e+02, 5.4667900e+02, 5.5428123e+02, + 5.6192001e+02, 5.6959519e+02, 5.7730716e+02, 5.8505556e+02, + 5.9284061e+02, 6.0066214e+02, 6.0852055e+02, 6.1641547e+02, + 6.2434713e+02, 6.3231534e+02, 6.4032054e+02, 6.4836233e+02, + 6.5644094e+02, 6.6455618e+02, 6.7270852e+02, 6.8089752e+02, + 6.8912342e+02, 6.9738602e+02, 7.0568553e+02, 7.1402197e+02, + 7.2239531e+02, 7.3080558e+02, 7.3925240e+02, 7.4773624e+02, + 7.5625676e+02, 7.6481447e+02, 7.7340888e+02, 7.8204026e+02, + 7.9070838e+02, 7.9941374e+02, 8.0815561e+02, 8.1693476e+02, + 8.2575094e+02, 8.3460393e+02, 8.4349398e+02, 8.5242085e+02, + 8.6138480e+02, 8.7038585e+02, 8.7942402e+02, 8.8849949e+02, + 8.9761157e+02, 9.0676077e+02, 9.1594683e+02, 9.2517003e+02, + 9.3443071e+02, 9.4372838e+02, 9.5306294e+02, 9.6243471e+02, + 9.7184367e+02, 9.8128985e+02, 9.9077296e+02, 1.0002933e+03, + 1.0098506e+03, 1.0194454e+03, 1.0290771e+03, 1.0387458e+03, + 1.0484521e+03, 1.0581954e+03,], + [ 2.8000000e+01, 2.3434443e+00, 3.1372739e+00, 3.9878486e+00, + 4.8532463e+00, 5.7257388e+00, 6.6025041e+00, 7.4824793e+00, + 8.3655967e+00, 9.2507288e+00, 1.0137431e+01, 1.1025838e+01, + 1.1915859e+01, 1.2807417e+01, 1.3700432e+01, 1.4594837e+01, + 1.5490511e+01, 1.6387310e+01, 1.7285621e+01, 1.8185323e+01, + 1.9086320e+01, 1.9988585e+01, 2.0892102e+01, 2.1796860e+01, + 2.2702851e+01, 2.3610071e+01, 2.4518529e+01, 2.5428269e+01, + 2.6339310e+01, 2.7251475e+01, 2.8164768e+01, 2.9079234e+01, + 2.9994886e+01, 3.0911723e+01, 3.1829753e+01, 3.2748968e+01, + 3.3669370e+01, 3.4590963e+01, 3.5513738e+01, 3.6437696e+01, + 3.7362830e+01, 3.8289124e+01, 3.9216551e+01, 4.0145147e+01, + 4.1074975e+01, 4.2006029e+01, 4.2938297e+01, 4.3871761e+01, + 4.4806426e+01, 4.5742282e+01, 4.6679333e+01, 4.7617581e+01, + 4.8557026e+01, 4.9497669e+01, 5.0439511e+01, 5.1382547e+01, + 5.2326792e+01, 5.3272241e+01, 5.4218888e+01, 5.5166752e+01, + 5.6115822e+01, 5.7066115e+01, 5.8017641e+01, 5.8970398e+01, + 5.9924365e+01, 6.0879522e+01, 6.1835870e+01, 6.2793418e+01, + 6.3752174e+01, 6.4712131e+01, 6.5673314e+01, 6.6635703e+01, + 6.7599312e+01, 6.8564153e+01, 6.9530204e+01, 7.0497479e+01, + 7.1465979e+01, 7.2435706e+01, 7.3406660e+01, 7.4378829e+01, + 7.5352242e+01, 7.6326886e+01, 7.7302748e+01, 7.8279858e+01, + 7.9258188e+01, 8.0237753e+01, 8.1218555e+01, 8.2200608e+01, + 8.3183884e+01, 8.4168396e+01, 8.5154128e+01, 8.6141111e+01, + 8.7129327e+01, 8.8118758e+01, 8.9109445e+01, 9.0101363e+01, + 9.1094557e+01, 9.2088996e+01, 9.3084696e+01, 9.4081658e+01, + 9.5079879e+01, 9.6079360e+01, 9.7080100e+01, 9.8082100e+01, + 9.9085360e+01, 1.0008986e+02, 1.0109564e+02, 1.0210267e+02, + 1.0311098e+02, 1.0412053e+02, 1.0513135e+02, 1.0614343e+02, + 1.0715679e+02, 1.0817141e+02, 1.0918730e+02, 1.1020446e+02, + 1.1122290e+02, 1.1224258e+02, 1.1326357e+02, 1.1428580e+02, + 1.1530931e+02, 1.1633412e+02, 1.1736019e+02, 1.1838753e+02, + 1.1941616e+02, 1.2044607e+02, 1.2147726e+02, 1.2406084e+02, + 1.2665243e+02, 1.2925208e+02, 1.3185978e+02, 1.3447557e+02, + 1.3709946e+02, 1.3973150e+02, 1.4237167e+02, 1.4501994e+02, + 1.4767637e+02, 1.5034086e+02, 1.5301352e+02, 1.5569437e+02, + 1.5838338e+02, 1.6108057e+02, 1.6378600e+02, 1.6649967e+02, + 1.6922156e+02, 1.7195168e+02, 1.7469009e+02, 1.7743675e+02, + 1.8019171e+02, 1.8295496e+02, 1.8572653e+02, 1.8850640e+02, + 1.9129463e+02, 1.9409118e+02, 1.9689610e+02, 1.9970936e+02, + 2.0253102e+02, 2.0536104e+02, 2.0819941e+02, 2.1104622e+02, + 2.1390148e+02, 2.1676512e+02, 2.1963716e+02, 2.2251767e+02, + 2.2540660e+02, 2.2830402e+02, 2.3120994e+02, 2.3412422e+02, + 2.3704709e+02, 2.3997833e+02, 2.4291817e+02, 2.4586639e+02, + 2.4882316e+02, 2.5178846e+02, 2.5476224e+02, 2.5774450e+02, + 2.6073535e+02, 2.6373481e+02, 2.6674280e+02, 2.6975934e+02, + 2.7278452e+02, 2.7581826e+02, 2.7886065e+02, 2.8191160e+02, + 2.8497121e+02, 2.8803940e+02, 2.9111626e+02, 2.9420170e+02, + 2.9729583e+02, 3.0039855e+02, 3.0350987e+02, 3.0662990e+02, + 3.0975864e+02, 3.1289589e+02, 3.1604197e+02, 3.1919668e+02, + 3.2236002e+02, 3.2553210e+02, 3.2871283e+02, 3.3190231e+02, + 3.3510045e+02, 3.3830724e+02, 3.4152281e+02, 3.4474716e+02, + 3.4798018e+02, 3.5122187e+02, 3.5447237e+02, 3.5773154e+02, + 3.6099953e+02, 3.6427634e+02, 3.6756172e+02, 3.7085593e+02, + 3.7415897e+02, 3.7747072e+02, 3.8079131e+02, 3.8412063e+02, + 3.8745866e+02, 3.9080555e+02, 3.9416132e+02, 3.9752582e+02, + 4.0089904e+02, 4.0428114e+02, 4.0767200e+02, 4.1107174e+02, + 4.1448024e+02, 4.1789749e+02, 4.2132364e+02, 4.2820252e+02, + 4.3511663e+02, 4.4206614e+02, 4.4905108e+02, 4.5607148e+02, + 4.6312737e+02, 4.7021862e+02, 4.7734540e+02, 4.8450777e+02, + 4.9170573e+02, 4.9893929e+02, 5.0620834e+02, 5.1351305e+02, + 5.2085346e+02, 5.2822959e+02, 5.3564146e+02, 5.4308909e+02, + 5.5057232e+02, 5.5809135e+02, 5.6564622e+02, 5.7323674e+02, + 5.8086332e+02, 5.8852560e+02, 5.9622378e+02, 6.0395791e+02, + 6.1172799e+02, 6.1953384e+02, 6.2737568e+02, 6.3525377e+02, + 6.4316747e+02, 6.5111745e+02, 6.5910330e+02, 6.6712526e+02, + 6.7518333e+02, 6.8327754e+02, 6.9140787e+02, 6.9957411e+02, + 7.0777647e+02, 7.1601496e+02, 7.2428934e+02, 7.3260009e+02, + 7.4094661e+02, 7.4932939e+02, 7.5774834e+02, 7.6620322e+02, + 7.7469430e+02, 7.8322159e+02, 7.9178511e+02, 8.0038487e+02, + 8.0902062e+02, 8.1769264e+02, 8.2640094e+02, 8.3514552e+02, + 8.4392614e+02, 8.5274308e+02, 8.6159633e+02, 8.7048591e+02, + 8.7941157e+02, 8.8837357e+02, 8.9737208e+02, 9.0640672e+02, + 9.1547745e+02, 9.2458482e+02, 9.3372860e+02, 9.4290832e+02, + 9.5212474e+02, 9.6137730e+02, 9.7066627e+02, 9.7999168e+02, + 9.8935324e+02, 9.9875124e+02, 1.0081857e+03, 1.0176566e+03, + 1.0271637e+03, 1.0367076e+03,], + [ 2.9000000e+01, 2.2813225e+00, 3.0602555e+00, 3.8941881e+00, + 4.7427851e+00, 5.5980150e+00, 6.4574813e+00, 7.3200648e+00, + 8.1857067e+00, 9.0533076e+00, 9.9224424e+00, 1.0793240e+01, + 1.1665611e+01, 1.2539476e+01, 1.3414772e+01, 1.4291422e+01, + 1.5169303e+01, 1.6048289e+01, 1.6928765e+01, 1.7810594e+01, + 1.8693691e+01, 1.9578029e+01, 2.0463591e+01, 2.1350368e+01, + 2.2238351e+01, 2.3127538e+01, 2.4017939e+01, 2.4909600e+01, + 2.5802530e+01, 2.6696552e+01, 2.7591679e+01, 2.8487956e+01, + 2.9385393e+01, 3.0283995e+01, 3.1183757e+01, 3.2084685e+01, + 3.2986776e+01, 3.3890026e+01, 3.4794435e+01, 3.5700006e+01, + 3.6606723e+01, 3.7514572e+01, 3.8423533e+01, 3.9333641e+01, + 4.0244959e+01, 4.1157480e+01, 4.2071184e+01, 4.2986063e+01, + 4.3902107e+01, 4.4819328e+01, 4.5737714e+01, 4.6657270e+01, + 4.7578005e+01, 4.8499906e+01, 4.9422982e+01, 5.0347233e+01, + 5.1272661e+01, 5.2199267e+01, 5.3127054e+01, 5.4056018e+01, + 5.4986180e+01, 5.5917541e+01, 5.6850101e+01, 5.7783874e+01, + 5.8718819e+01, 5.9654926e+01, 6.0592199e+01, 6.1530649e+01, + 6.2470281e+01, 6.3411100e+01, 6.4353109e+01, 6.5296310e+01, + 6.6240694e+01, 6.7186284e+01, 6.8133059e+01, 6.9081044e+01, + 7.0030217e+01, 7.0980602e+01, 7.1932177e+01, 7.2884954e+01, + 7.3838936e+01, 7.4794123e+01, 7.5750517e+01, 7.6708104e+01, + 7.7666914e+01, 7.8626933e+01, 7.9588147e+01, 8.0550588e+01, + 8.1514224e+01, 8.2479070e+01, 8.3445142e+01, 8.4412405e+01, + 8.5380875e+01, 8.6350552e+01, 8.7321443e+01, 8.8293541e+01, + 8.9266890e+01, 9.0241475e+01, 9.1217278e+01, 9.2194333e+01, + 9.3172603e+01, 9.4152124e+01, 9.5132859e+01, 9.6114826e+01, + 9.7098027e+01, 9.8082463e+01, 9.9068134e+01, 1.0005504e+02, + 1.0104319e+02, 1.0203255e+02, 1.0302317e+02, 1.0401501e+02, + 1.0500811e+02, 1.0600244e+02, 1.0699800e+02, 1.0799484e+02, + 1.0899290e+02, 1.0999220e+02, 1.1099275e+02, 1.1199455e+02, + 1.1299758e+02, 1.1400188e+02, 1.1500743e+02, 1.1601421e+02, + 1.1702227e+02, 1.1803155e+02, 1.1904210e+02, 1.2157398e+02, + 1.2411371e+02, 1.2666131e+02, 1.2921681e+02, 1.3178020e+02, + 1.3435156e+02, 1.3693087e+02, 1.3951816e+02, 1.4211338e+02, + 1.4471655e+02, 1.4732765e+02, 1.4994675e+02, 1.5257383e+02, + 1.5520894e+02, 1.5785205e+02, 1.6050323e+02, 1.6316245e+02, + 1.6582975e+02, 1.6850511e+02, 1.7118858e+02, 1.7388013e+02, + 1.7657976e+02, 1.7928755e+02, 1.8200350e+02, 1.8472756e+02, + 1.8745982e+02, 1.9020021e+02, 1.9294875e+02, 1.9570550e+02, + 1.9847048e+02, 2.0124364e+02, 2.0402498e+02, 2.0681459e+02, + 2.0961239e+02, 2.1241847e+02, 2.1523284e+02, 2.1805544e+02, + 2.2088627e+02, 2.2372542e+02, 2.2657281e+02, 2.2942854e+02, + 2.3229254e+02, 2.3516487e+02, 2.3804548e+02, 2.4093443e+02, + 2.4383167e+02, 2.4673727e+02, 2.4965117e+02, 2.5257338e+02, + 2.5550399e+02, 2.5844304e+02, 2.6139044e+02, 2.6434630e+02, + 2.6731053e+02, 2.7028314e+02, 2.7326421e+02, 2.7625367e+02, + 2.7925160e+02, 2.8225802e+02, 2.8527284e+02, 2.8829606e+02, + 2.9132778e+02, 2.9436792e+02, 2.9741657e+02, 3.0047365e+02, + 3.0353925e+02, 3.0661329e+02, 3.0969587e+02, 3.1278690e+02, + 3.1588637e+02, 3.1899441e+02, 3.2211101e+02, 3.2523608e+02, + 3.2836962e+02, 3.3151174e+02, 3.3466246e+02, 3.3782166e+02, + 3.4098934e+02, 3.4416564e+02, 3.4735043e+02, 3.5054384e+02, + 3.5374576e+02, 3.5695631e+02, 3.6017538e+02, 3.6340308e+02, + 3.6663931e+02, 3.6988419e+02, 3.7313761e+02, 3.7639968e+02, + 3.7967030e+02, 3.8294946e+02, 3.8623729e+02, 3.8953367e+02, + 3.9283874e+02, 3.9615252e+02, 3.9947484e+02, 4.0280572e+02, + 4.0614532e+02, 4.0949348e+02, 4.1285037e+02, 4.1959001e+02, + 4.2636413e+02, 4.3317306e+02, 4.4001651e+02, 4.4689484e+02, + 4.5380775e+02, 4.6075543e+02, 4.6773790e+02, 4.7475503e+02, + 4.8180717e+02, 4.8889421e+02, 4.9601592e+02, 5.0317258e+02, + 5.1036417e+02, 5.1759073e+02, 5.2485228e+02, 5.3214865e+02, + 5.3948024e+02, 5.4684669e+02, 5.5424821e+02, 5.6168483e+02, + 5.6915656e+02, 5.7666342e+02, 5.8420524e+02, 5.9178224e+02, + 5.9939464e+02, 6.0704205e+02, 6.1472450e+02, 6.2244242e+02, + 6.3019562e+02, 6.3798392e+02, 6.4580755e+02, 6.5366651e+02, + 6.6156084e+02, 6.6949030e+02, 6.7745535e+02, 6.8545553e+02, + 6.9349107e+02, 7.0156198e+02, 7.0966824e+02, 7.1780987e+02, + 7.2598664e+02, 7.3419880e+02, 7.4244621e+02, 7.5072917e+02, + 7.5904756e+02, 7.6740115e+02, 7.7579045e+02, 7.8421497e+02, + 7.9267498e+02, 8.0117049e+02, 8.0970125e+02, 8.1826780e+02, + 8.2686961e+02, 8.3550697e+02, 8.4417988e+02, 8.5288808e+02, + 8.6163213e+02, 8.7041149e+02, 8.7922643e+02, 8.8807698e+02, + 8.9696302e+02, 9.0588470e+02, 9.1484171e+02, 9.2383433e+02, + 9.3286285e+02, 9.4192658e+02, 9.5102627e+02, 9.6016132e+02, + 9.6933204e+02, 9.7853844e+02, 9.8778052e+02, 9.9705799e+02, + 1.0063712e+03, 1.0157200e+03,], + [ 3.0000000e+01, 2.2206789e+00, 2.9852162e+00, 3.8033085e+00, + 4.6351852e+00, 5.4736175e+00, 6.3161463e+00, 7.1617014e+00, + 8.0102566e+00, 8.8606681e+00, 9.7126023e+00, 1.0566157e+01, + 1.1421248e+01, 1.2277796e+01, 1.3135737e+01, 1.3995009e+01, + 1.4855466e+01, 1.5717012e+01, 1.6580026e+01, 1.7444358e+01, + 1.8309931e+01, 1.9176717e+01, 2.0044702e+01, 2.0913875e+01, + 2.1784230e+01, 2.2655762e+01, 2.3528486e+01, 2.4402449e+01, + 2.5277649e+01, 2.6153908e+01, 2.7031254e+01, 2.7909725e+01, + 2.8789333e+01, 2.9670080e+01, 3.0551966e+01, 3.1434991e+01, + 3.2319155e+01, 3.3204452e+01, 3.4090889e+01, 3.4978458e+01, + 3.5867148e+01, 3.6756947e+01, 3.7647829e+01, 3.8539841e+01, + 3.9433043e+01, 4.0327424e+01, 4.1222959e+01, 4.2119637e+01, + 4.3017467e+01, 4.3916443e+01, 4.4816565e+01, 4.5717828e+01, + 4.6620245e+01, 4.7523804e+01, 4.8428520e+01, 4.9334379e+01, + 5.0241391e+01, 5.1149564e+01, 5.2058887e+01, 5.2969370e+01, + 5.3881020e+01, 5.4793836e+01, 5.5707846e+01, 5.6623032e+01, + 5.7539359e+01, 5.8456833e+01, 5.9375441e+01, 6.0295211e+01, + 6.1216130e+01, 6.2138211e+01, 6.3061458e+01, 6.3985871e+01, + 6.4911454e+01, 6.5838207e+01, 6.6766132e+01, 6.7695230e+01, + 6.8625490e+01, 6.9556938e+01, 7.0489564e+01, 7.1423354e+01, + 7.2358323e+01, 7.3294486e+01, 7.4231817e+01, 7.5170330e+01, + 7.6110026e+01, 7.7050907e+01, 7.7992973e+01, 7.8936208e+01, + 7.9880644e+01, 8.0826266e+01, 8.1773054e+01, 8.2721041e+01, + 8.3670191e+01, 8.4620524e+01, 8.5572066e+01, 8.6524792e+01, + 8.7478726e+01, 8.8433871e+01, 8.9390226e+01, 9.0347788e+01, + 9.1306539e+01, 9.2266515e+01, 9.3227698e+01, 9.4190069e+01, + 9.5153668e+01, 9.6118455e+01, 9.7084451e+01, 9.8051658e+01, + 9.9020099e+01, 9.9989730e+01, 1.0096057e+02, 1.0193261e+02, + 1.0290589e+02, 1.0388038e+02, 1.0485609e+02, 1.0583299e+02, + 1.0681114e+02, 1.0779048e+02, 1.0877105e+02, 1.0975286e+02, + 1.1073587e+02, 1.1172011e+02, 1.1270557e+02, 1.1369226e+02, + 1.1468018e+02, 1.1566930e+02, 1.1665967e+02, 1.1914097e+02, + 1.2162995e+02, 1.2412666e+02, 1.2663108e+02, 1.2914327e+02, + 1.3166325e+02, 1.3419102e+02, 1.3672657e+02, 1.3926991e+02, + 1.4182100e+02, 1.4437989e+02, 1.4694658e+02, 1.4952112e+02, + 1.5210353e+02, 1.5469373e+02, 1.5729188e+02, 1.5989788e+02, + 1.6251177e+02, 1.6513359e+02, 1.6776330e+02, 1.7040097e+02, + 1.7304657e+02, 1.7570014e+02, 1.7836165e+02, 1.8103116e+02, + 1.8370864e+02, 1.8639413e+02, 1.8908767e+02, 1.9178913e+02, + 1.9449871e+02, 1.9721623e+02, 1.9994189e+02, 2.0267551e+02, + 2.0541729e+02, 2.0816705e+02, 2.1092499e+02, 2.1369091e+02, + 2.1646504e+02, 2.1924717e+02, 2.2203744e+02, 2.2483587e+02, + 2.2764239e+02, 2.3045708e+02, 2.3327987e+02, 2.3611084e+02, + 2.3894992e+02, 2.4179718e+02, 2.4465256e+02, 2.4751608e+02, + 2.5038784e+02, 2.5326786e+02, 2.5615607e+02, 2.5905255e+02, + 2.6195722e+02, 2.6487010e+02, 2.6779126e+02, 2.7072073e+02, + 2.7365840e+02, 2.7660429e+02, 2.7955850e+02, 2.8252102e+02, + 2.8549178e+02, 2.8847077e+02, 2.9145811e+02, 2.9445378e+02, + 2.9745761e+02, 3.0046990e+02, 3.0349046e+02, 3.0651928e+02, + 3.0955647e+02, 3.1260195e+02, 3.1565581e+02, 3.1871796e+02, + 3.2178851e+02, 3.2486736e+02, 3.2795462e+02, 3.3105018e+02, + 3.3415418e+02, 3.3726648e+02, 3.4038722e+02, 3.4351629e+02, + 3.4665380e+02, 3.4979964e+02, 3.5295382e+02, 3.5611646e+02, + 3.5928757e+02, 3.6246702e+02, 3.6565496e+02, 3.6885124e+02, + 3.7205589e+02, 3.7526903e+02, 3.7849054e+02, 3.8172055e+02, + 3.8495906e+02, 3.8820596e+02, 3.9146123e+02, 3.9472503e+02, + 3.9799721e+02, 4.0127793e+02, 4.0456702e+02, 4.1117071e+02, + 4.1780831e+02, 4.2447983e+02, 4.3118531e+02, 4.3792463e+02, + 4.4469811e+02, 4.5150548e+02, 4.5834708e+02, 4.6522260e+02, + 4.7213225e+02, 4.7907603e+02, 4.8605397e+02, 4.9306614e+02, + 5.0011245e+02, 5.0719285e+02, 5.1430768e+02, 5.2145661e+02, + 5.2864002e+02, 5.3585755e+02, 5.4310943e+02, 5.5039566e+02, + 5.5771628e+02, 5.6507129e+02, 5.7246052e+02, 5.7988439e+02, + 5.8734253e+02, 5.9483534e+02, 6.0236246e+02, 6.0992410e+02, + 6.1752029e+02, 6.2515105e+02, 6.3281618e+02, 6.4051612e+02, + 6.4825046e+02, 6.5601964e+02, 6.6382321e+02, 6.7166140e+02, + 6.7953420e+02, 6.8744162e+02, 6.9538341e+02, 7.0336007e+02, + 7.1137112e+02, 7.1941682e+02, 7.2749718e+02, 7.3561222e+02, + 7.4376179e+02, 7.5194620e+02, 7.6016533e+02, 7.6841894e+02, + 7.7670728e+02, 7.8503038e+02, 7.9338825e+02, 8.0178089e+02, + 8.1020832e+02, 8.1867054e+02, 8.2716731e+02, 8.3569889e+02, + 8.4426529e+02, 8.5286653e+02, 8.6150261e+02, 8.7017354e+02, + 8.7887905e+02, 8.8761971e+02, 8.9639516e+02, 9.0520521e+02, + 9.1405014e+02, 9.2292994e+02, 9.3184457e+02, 9.4079431e+02, + 9.4977868e+02, 9.5879796e+02, 9.6785218e+02, 9.7694134e+02, + 9.8606514e+02, 9.9522419e+02,], + [ 3.1000000e+01, 2.1623852e+00, 2.9126542e+00, 3.7149635e+00, + 4.5305794e+00, 5.3525357e+00, 6.1784180e+00, 7.0073060e+00, + 7.8391368e+00, 8.6727414e+00, 9.5078354e+00, 1.0344511e+01, + 1.1182685e+01, 1.2022283e+01, 1.2863241e+01, 1.3705494e+01, + 1.4548900e+01, 1.5393376e+01, 1.6239299e+01, 1.7086509e+01, + 1.7934930e+01, 1.8784539e+01, 1.9635321e+01, 2.0487265e+01, + 2.1340366e+01, 2.2194622e+01, 2.3050046e+01, 2.3906692e+01, + 2.4764537e+01, 2.5623415e+01, 2.6483360e+01, 2.7344406e+01, + 2.8206566e+01, 2.9069844e+01, 2.9934235e+01, 3.0799741e+01, + 3.1666361e+01, 3.2534095e+01, 3.3402941e+01, 3.4272895e+01, + 3.5143945e+01, 3.6016078e+01, 3.6889269e+01, 3.7763581e+01, + 3.8639055e+01, 3.9515683e+01, 4.0393438e+01, 4.1272318e+01, + 4.2152321e+01, 4.3033446e+01, 4.3915694e+01, 4.4799064e+01, + 4.5683559e+01, 4.6569178e+01, 4.7455917e+01, 4.8343789e+01, + 4.9232783e+01, 5.0122915e+01, 5.1014173e+01, 5.1906568e+01, + 5.2800106e+01, 5.3694797e+01, 5.4590648e+01, 5.5487649e+01, + 5.6385772e+01, 5.7285008e+01, 5.8185365e+01, 5.9086842e+01, + 5.9989464e+01, 6.0893215e+01, 6.1798117e+01, 6.2704152e+01, + 6.3611332e+01, 6.4519658e+01, 6.5429143e+01, 6.6339765e+01, + 6.7251525e+01, 6.8164449e+01, 6.9078525e+01, 6.9993755e+01, + 7.0910126e+01, 7.1827667e+01, 7.2746351e+01, 7.3666207e+01, + 7.4587207e+01, 7.5509367e+01, 7.6432703e+01, 7.7357184e+01, + 7.8282825e+01, 7.9209626e+01, 8.0137569e+01, 8.1066685e+01, + 8.1996957e+01, 8.2928371e+01, 8.3860970e+01, 8.4794731e+01, + 8.5729695e+01, 8.6665826e+01, 8.7603141e+01, 8.8541657e+01, + 8.9481337e+01, 9.0422198e+01, 9.1364241e+01, 9.2307445e+01, + 9.3251853e+01, 9.4197445e+01, 9.5144200e+01, 9.6092162e+01, + 9.7041289e+01, 9.7991626e+01, 9.8943128e+01, 9.9895821e+01, + 1.0084970e+02, 1.0180478e+02, 1.0276104e+02, 1.0371850e+02, + 1.0467716e+02, 1.0563701e+02, 1.0659806e+02, 1.0756028e+02, + 1.0852372e+02, 1.0948834e+02, 1.1045415e+02, 1.1142120e+02, + 1.1238942e+02, 1.1335884e+02, 1.1432947e+02, 1.1676131e+02, + 1.1920069e+02, 1.2164761e+02, 1.2410212e+02, 1.2656424e+02, + 1.2903393e+02, 1.3151131e+02, 1.3399631e+02, 1.3648889e+02, + 1.3898910e+02, 1.4149692e+02, 1.4401241e+02, 1.4653555e+02, + 1.4906639e+02, 1.5160496e+02, 1.5415121e+02, 1.5670517e+02, + 1.5926688e+02, 1.6183632e+02, 1.6441354e+02, 1.6699855e+02, + 1.6959132e+02, 1.7219185e+02, 1.7480021e+02, 1.7741640e+02, + 1.8004040e+02, 1.8267219e+02, 1.8531185e+02, 1.8795934e+02, + 1.9061471e+02, 1.9327799e+02, 1.9594911e+02, 1.9862809e+02, + 2.0131499e+02, 2.0400984e+02, 2.0671256e+02, 2.0942325e+02, + 2.1214182e+02, 2.1486831e+02, 2.1760277e+02, 2.2034521e+02, + 2.2309558e+02, 2.2585388e+02, 2.2862018e+02, 2.3139449e+02, + 2.3417673e+02, 2.3696692e+02, 2.3976515e+02, 2.4257142e+02, + 2.4538568e+02, 2.4820795e+02, 2.5103831e+02, 2.5387679e+02, + 2.5672328e+02, 2.5957781e+02, 2.6244046e+02, 2.6531123e+02, + 2.6819004e+02, 2.7107689e+02, 2.7397189e+02, 2.7687504e+02, + 2.7978625e+02, 2.8270552e+02, 2.8563295e+02, 2.8856857e+02, + 2.9151226e+02, 2.9446403e+02, 2.9742400e+02, 3.0039217e+02, + 3.0336844e+02, 3.0635281e+02, 3.0934540e+02, 3.1234621e+02, + 3.1535514e+02, 3.1837220e+02, 3.2139749e+02, 3.2443091e+02, + 3.2747259e+02, 3.3052252e+02, 3.3358060e+02, 3.3664683e+02, + 3.3972132e+02, 3.4280398e+02, 3.4589492e+02, 3.4899402e+02, + 3.5210142e+02, 3.5521712e+02, 3.5834099e+02, 3.6147304e+02, + 3.6461341e+02, 3.6776197e+02, 3.7091884e+02, 3.7408391e+02, + 3.7725732e+02, 3.8043892e+02, 3.8362887e+02, 3.8682702e+02, + 3.9003353e+02, 3.9324825e+02, 3.9647133e+02, 4.0294230e+02, + 4.0944646e+02, 4.1598385e+02, 4.2255434e+02, 4.2915827e+02, + 4.3579551e+02, 4.4246592e+02, 4.4916985e+02, 4.5590716e+02, + 4.6267772e+02, 4.6948170e+02, 4.7631931e+02, 4.8319023e+02, + 4.9009465e+02, 4.9703277e+02, 5.0400423e+02, 5.1100926e+02, + 5.1804789e+02, 5.2512011e+02, 5.3222596e+02, 5.3936526e+02, + 5.4653841e+02, 5.5374526e+02, 5.6098560e+02, 5.6825987e+02, + 5.7556768e+02, 5.8290946e+02, 5.9028483e+02, 5.9769400e+02, + 6.0513700e+02, 6.1261384e+02, 6.2012456e+02, 6.2766915e+02, + 6.3524764e+02, 6.4286001e+02, 6.5050606e+02, 6.5818622e+02, + 6.6590007e+02, 6.7364798e+02, 6.8142958e+02, 6.8924507e+02, + 6.9709448e+02, 7.0497782e+02, 7.1289510e+02, 7.2084633e+02, + 7.2883153e+02, 7.3685033e+02, 7.4490348e+02, 7.5299039e+02, + 7.6111158e+02, 7.6926653e+02, 7.7745553e+02, 7.8567857e+02, + 7.9393568e+02, 8.0222686e+02, 8.1055211e+02, 8.1891119e+02, + 8.2730463e+02, 8.3573191e+02, 8.4419358e+02, 8.5268909e+02, + 8.6121874e+02, 8.6978252e+02, 8.7838045e+02, 8.8701253e+02, + 8.9567848e+02, 9.0437905e+02, 9.1311324e+02, 9.2188189e+02, + 9.3068442e+02, 9.3952148e+02, 9.4839254e+02, 9.5729781e+02, + 9.6623729e+02, 9.7521069e+02,], + [ 3.2000000e+01, 2.1058958e+00, 2.8422099e+00, 3.6290796e+00, + 4.4287866e+00, 5.2345545e+00, 6.0442638e+00, 6.8568304e+00, + 7.6722874e+00, 8.4894410e+00, 9.3080404e+00, 1.0128200e+01, + 1.0949816e+01, 1.1772830e+01, 1.2597172e+01, 1.3422779e+01, + 1.4249500e+01, 1.5077281e+01, 1.5906479e+01, 1.6736935e+01, + 1.7568576e+01, 1.8401379e+01, 1.9235330e+01, 2.0070419e+01, + 2.0906641e+01, 2.1743994e+01, 2.2582493e+01, 2.3422196e+01, + 2.4263064e+01, 2.5104937e+01, 2.5947857e+01, 2.6791857e+01, + 2.7636951e+01, 2.8483134e+01, 2.9330413e+01, 3.0178781e+01, + 3.1028240e+01, 3.1878789e+01, 3.2730427e+01, 3.3583149e+01, + 3.4436947e+01, 3.5291798e+01, 3.6147690e+01, 3.7004680e+01, + 3.7862817e+01, 3.8722079e+01, 3.9582443e+01, 4.0443909e+01, + 4.1306480e+01, 4.2170144e+01, 4.3034907e+01, 4.3900771e+01, + 4.4767735e+01, 4.5635800e+01, 4.6504969e+01, 4.7375242e+01, + 4.8246613e+01, 4.9119099e+01, 4.9992696e+01, 5.0867399e+01, + 5.1743223e+01, 5.2620187e+01, 5.3498279e+01, 5.4377493e+01, + 5.5257803e+01, 5.6139203e+01, 5.7021701e+01, 5.7905306e+01, + 5.8790024e+01, 5.9675858e+01, 6.0562799e+01, 6.1450871e+01, + 6.2340053e+01, 6.3230369e+01, 6.4121798e+01, 6.5014352e+01, + 6.5908032e+01, 6.6802852e+01, 6.7698789e+01, 6.8595856e+01, + 6.9494041e+01, 7.0393371e+01, 7.1293834e+01, 7.2195432e+01, + 7.3098150e+01, 7.4002018e+01, 7.4907008e+01, 7.5813135e+01, + 7.6720413e+01, 7.7628811e+01, 7.8538342e+01, 7.9449005e+01, + 8.0360800e+01, 8.1273732e+01, 8.2187812e+01, 8.3103029e+01, + 8.4019426e+01, 8.4936984e+01, 8.5855682e+01, 8.6775557e+01, + 8.7696570e+01, 8.8618741e+01, 8.9542088e+01, 9.0466574e+01, + 9.1392218e+01, 9.2319022e+01, 9.3246986e+01, 9.4176089e+01, + 9.5106377e+01, 9.6037828e+01, 9.6970420e+01, 9.7904200e+01, + 9.8839123e+01, 9.9775237e+01, 1.0071250e+02, 1.0165092e+02, + 1.0259052e+02, 1.0353129e+02, 1.0447323e+02, 1.0541634e+02, + 1.0636063e+02, 1.0730609e+02, 1.0825273e+02, 1.0920052e+02, + 1.1014951e+02, 1.1109966e+02, 1.1205101e+02, 1.1443449e+02, + 1.1682536e+02, 1.1922365e+02, 1.2162934e+02, 1.2404248e+02, + 1.2646308e+02, 1.2889117e+02, 1.3132672e+02, 1.3376973e+02, + 1.3622017e+02, 1.3867811e+02, 1.4114352e+02, 1.4361646e+02, + 1.4609691e+02, 1.4858493e+02, 1.5108051e+02, 1.5358364e+02, + 1.5609433e+02, 1.5861262e+02, 1.6113849e+02, 1.6367199e+02, + 1.6621314e+02, 1.6876189e+02, 1.7131826e+02, 1.7388230e+02, + 1.7645404e+02, 1.7903341e+02, 1.8162049e+02, 1.8421524e+02, + 1.8681765e+02, 1.8942786e+02, 1.9204569e+02, 1.9467128e+02, + 1.9730464e+02, 1.9994571e+02, 2.0259456e+02, 2.0525114e+02, + 2.0791552e+02, 2.1058764e+02, 2.1326757e+02, 2.1595526e+02, + 2.1865077e+02, 2.2135405e+02, 2.2406517e+02, 2.2678405e+02, + 2.2951078e+02, 2.3224530e+02, 2.3498768e+02, 2.3773788e+02, + 2.4049598e+02, 2.4326200e+02, 2.4603588e+02, 2.4881761e+02, + 2.5160728e+02, 2.5440482e+02, 2.5721031e+02, 2.6002376e+02, + 2.6284499e+02, 2.6567428e+02, 2.6851145e+02, 2.7135652e+02, + 2.7420956e+02, 2.7707061e+02, 2.7993956e+02, 2.8281641e+02, + 2.8570128e+02, 2.8859416e+02, 2.9149497e+02, 2.9440370e+02, + 2.9732048e+02, 3.0024529e+02, 3.0317805e+02, 3.0611875e+02, + 3.0906751e+02, 3.1202433e+02, 3.1498912e+02, 3.1796187e+02, + 3.2094270e+02, 3.2393162e+02, 3.2692851e+02, 3.2993338e+02, + 3.3294636e+02, 3.3596745e+02, 3.3899652e+02, 3.4203372e+02, + 3.4507892e+02, 3.4813212e+02, 3.5119345e+02, 3.5426292e+02, + 3.5734040e+02, 3.6042591e+02, 3.6351956e+02, 3.6662137e+02, + 3.6973121e+02, 3.7284922e+02, 3.7597526e+02, 3.7910933e+02, + 3.8225159e+02, 3.8540203e+02, 3.8856052e+02, 3.9490193e+02, + 4.0127572e+02, 4.0768218e+02, 4.1412122e+02, 4.2059270e+02, + 4.2709696e+02, 4.3363386e+02, 4.4020327e+02, 4.4680554e+02, + 4.5344036e+02, 4.6010808e+02, 4.6680840e+02, 4.7354168e+02, + 4.8030759e+02, 4.8710651e+02, 4.9393812e+02, 5.0080273e+02, + 5.0770007e+02, 5.1463051e+02, 5.2159368e+02, 5.2858981e+02, + 5.3561910e+02, 5.4268118e+02, 5.4977626e+02, 5.5690458e+02, + 5.6406574e+02, 5.7125997e+02, 5.7848728e+02, 5.8574771e+02, + 5.9304126e+02, 6.0036797e+02, 6.0772784e+02, 6.1512089e+02, + 6.2254713e+02, 6.3000655e+02, 6.3749916e+02, 6.4502495e+02, + 6.5258393e+02, 6.6017586e+02, 6.6780126e+02, 6.7545975e+02, + 6.8315127e+02, 6.9087626e+02, 6.9863424e+02, 7.0642547e+02, + 7.1425021e+02, 7.2210799e+02, 7.2999905e+02, 7.3792353e+02, + 7.4588119e+02, 7.5387217e+02, 7.6189649e+02, 7.6995415e+02, + 7.7804516e+02, 7.8616954e+02, 7.9432730e+02, 8.0251816e+02, + 8.1074269e+02, 8.1900061e+02, 8.2729167e+02, 8.3561641e+02, + 8.4397430e+02, 8.5236562e+02, 8.6079066e+02, 8.6924886e+02, + 8.7774051e+02, 8.8626561e+02, 8.9482419e+02, 9.0341642e+02, + 9.1204184e+02, 9.2070073e+02, 9.2939309e+02, 9.3811895e+02, + 9.4687844e+02, 9.5567115e+02,], + [ 3.3000000e+01, 2.0511419e+00, 2.7738138e+00, 3.5455857e+00, + 4.3297338e+00, 5.1197353e+00, 5.9135585e+00, 6.7101280e+00, + 7.5095785e+00, 8.3106473e+00, 9.1131428e+00, 9.9171353e+00, + 1.0722569e+01, 1.1529354e+01, 1.2337443e+01, 1.3146766e+01, + 1.3957168e+01, 1.4768615e+01, 1.5581458e+01, 1.6395528e+01, + 1.7210756e+01, 1.8027121e+01, 1.8844611e+01, 1.9663215e+01, + 2.0482928e+01, 2.1303750e+01, 2.2125697e+01, 2.2948830e+01, + 2.3773092e+01, 2.4598334e+01, 2.5424605e+01, 2.6251935e+01, + 2.7080335e+01, 2.7909806e+01, 2.8740344e+01, 2.9571954e+01, + 3.0404630e+01, 3.1238374e+01, 3.2073188e+01, 3.2909059e+01, + 3.3745982e+01, 3.4583932e+01, 3.5422904e+01, 3.6262964e+01, + 3.7104139e+01, 3.7946418e+01, 3.8789782e+01, 3.9634218e+01, + 4.0479737e+01, 4.1326327e+01, 4.2174000e+01, 4.3022744e+01, + 4.3872567e+01, 4.4723468e+01, 4.5575450e+01, 4.6428514e+01, + 4.7282661e+01, 4.8137893e+01, 4.8994213e+01, 4.9851618e+01, + 5.0710130e+01, 5.1569745e+01, 5.2430482e+01, 5.3292304e+01, + 5.4155205e+01, 5.5019166e+01, 5.5884203e+01, 5.6750326e+01, + 5.7617539e+01, 5.8485845e+01, 5.9355246e+01, 6.0225745e+01, + 6.1097331e+01, 6.1970028e+01, 6.2843815e+01, 6.3718716e+01, + 6.4594709e+01, 6.5471818e+01, 6.6350021e+01, 6.7229331e+01, + 6.8109748e+01, 6.8991275e+01, 6.9873912e+01, 7.0757660e+01, + 7.1642519e+01, 7.2528491e+01, 7.3415562e+01, 7.4303760e+01, + 7.5193056e+01, 7.6083479e+01, 7.6974995e+01, 7.7867620e+01, + 7.8761370e+01, 7.9656219e+01, 8.0552193e+01, 8.1449303e+01, + 8.2347550e+01, 8.3246933e+01, 8.4147434e+01, 8.5049086e+01, + 8.5951873e+01, 8.6855773e+01, 8.7760827e+01, 8.8666995e+01, + 8.9574298e+01, 9.0482757e+01, 9.1392333e+01, 9.2303046e+01, + 9.3214897e+01, 9.4127888e+01, 9.5042019e+01, 9.5957292e+01, + 9.6873684e+01, 9.7791242e+01, 9.8709946e+01, 9.9629770e+01, + 1.0055074e+02, 1.0147288e+02, 1.0239615e+02, 1.0332056e+02, + 1.0424613e+02, 1.0517284e+02, 1.0610071e+02, 1.0702973e+02, + 1.0795991e+02, 1.0889124e+02, 1.0982372e+02, 1.1215994e+02, + 1.1450344e+02, 1.1685416e+02, 1.1921214e+02, 1.2157743e+02, + 1.2395005e+02, 1.2632998e+02, 1.2871720e+02, 1.3111173e+02, + 1.3351358e+02, 1.3592274e+02, 1.3833925e+02, 1.4076311e+02, + 1.4319436e+02, 1.4563298e+02, 1.4807901e+02, 1.5053244e+02, + 1.5299331e+02, 1.5546159e+02, 1.5793734e+02, 1.6042056e+02, + 1.6291123e+02, 1.6540935e+02, 1.6791497e+02, 1.7042812e+02, + 1.7294874e+02, 1.7547685e+02, 1.7801257e+02, 1.8055573e+02, + 1.8310646e+02, 1.8566478e+02, 1.8823062e+02, 1.9080406e+02, + 1.9338505e+02, 1.9597365e+02, 1.9856981e+02, 2.0117361e+02, + 2.0378498e+02, 2.0640400e+02, 2.0903068e+02, 2.1166495e+02, + 2.1430682e+02, 2.1695636e+02, 2.1961350e+02, 2.2227833e+02, + 2.2495085e+02, 2.2763099e+02, 2.3031884e+02, 2.3301435e+02, + 2.3571752e+02, 2.3842846e+02, 2.4114718e+02, 2.4387358e+02, + 2.4660776e+02, 2.4934964e+02, 2.5209932e+02, 2.5485670e+02, + 2.5762188e+02, 2.6039478e+02, 2.6317549e+02, 2.6596393e+02, + 2.6876020e+02, 2.7156419e+02, 2.7437603e+02, 2.7719561e+02, + 2.8002304e+02, 2.8285832e+02, 2.8570126e+02, 2.8855218e+02, + 2.9141086e+02, 2.9427731e+02, 2.9715165e+02, 3.0003388e+02, + 3.0292390e+02, 3.0582170e+02, 3.0872742e+02, 3.1164104e+02, + 3.1456247e+02, 3.1749171e+02, 3.2042900e+02, 3.2337398e+02, + 3.2632689e+02, 3.2928776e+02, 3.3225645e+02, 3.3523309e+02, + 3.3821757e+02, 3.4120988e+02, 3.4421029e+02, 3.4721842e+02, + 3.5023466e+02, 3.5325861e+02, 3.5629069e+02, 3.5933049e+02, + 3.6237842e+02, 3.6543408e+02, 3.6849788e+02, 3.7156942e+02, + 3.7464911e+02, 3.7773653e+02, 3.8083212e+02, 3.8704695e+02, + 3.9329363e+02, 3.9957217e+02, 4.0588278e+02, 4.1222515e+02, + 4.1859947e+02, 4.2500593e+02, 4.3144423e+02, 4.3791472e+02, + 4.4441709e+02, 4.5095169e+02, 4.5751822e+02, 4.6411703e+02, + 4.7074780e+02, 4.7741090e+02, 4.8410599e+02, 4.9083347e+02, + 4.9759319e+02, 5.0438489e+02, 5.1120906e+02, 5.1806551e+02, + 5.2495406e+02, 5.3187511e+02, 5.3882849e+02, 5.4581422e+02, + 5.5283212e+02, 5.5988261e+02, 5.6696551e+02, 5.7408085e+02, + 5.8122842e+02, 5.8840867e+02, 5.9562141e+02, 6.0286665e+02, + 6.1014438e+02, 6.1745440e+02, 6.2479713e+02, 6.3217236e+02, + 6.3958009e+02, 6.4702008e+02, 6.5449281e+02, 6.6199806e+02, + 6.6953588e+02, 6.7710614e+02, 6.8470877e+02, 6.9234421e+02, + 7.0001223e+02, 7.0771284e+02, 7.1544582e+02, 7.2321166e+02, + 7.3101013e+02, 7.3884083e+02, 7.4670457e+02, 7.5460096e+02, + 7.6252976e+02, 7.7049150e+02, 7.7848566e+02, 7.8651277e+02, + 7.9457260e+02, 8.0266485e+02, 8.1079010e+02, 8.1894780e+02, + 8.2713851e+02, 8.3536168e+02, 8.4361760e+02, 8.5190655e+02, + 8.6022798e+02, 8.6858246e+02, 8.7696943e+02, 8.8538918e+02, + 8.9384172e+02, 9.0232734e+02, 9.1084560e+02, 9.1939642e+02, + 9.2798002e+02, 9.3659669e+02,], + [ 3.4000000e+01, 1.9985463e+00, 2.7076865e+00, 3.4644129e+00, + 4.2333501e+00, 5.0080036e+00, 5.7862264e+00, 6.5671866e+00, + 7.3509764e+00, 8.1363111e+00, 8.9230433e+00, 9.7112370e+00, + 1.0500831e+01, 1.1291760e+01, 1.2083956e+01, 1.2877356e+01, + 1.3671797e+01, 1.4467276e+01, 1.5264128e+01, 1.6062174e+01, + 1.6861355e+01, 1.7661648e+01, 1.8463043e+01, 1.9265529e+01, + 2.0069101e+01, 2.0873760e+01, 2.1679525e+01, 2.2486456e+01, + 2.3294482e+01, 2.4103465e+01, 2.4913458e+01, 2.5724492e+01, + 2.6536572e+01, 2.7349701e+01, 2.8163875e+01, 2.8979100e+01, + 2.9795368e+01, 3.0612686e+01, 3.1431044e+01, 3.2250442e+01, + 3.3070871e+01, 3.3892299e+01, 3.4714730e+01, 3.5538235e+01, + 3.6362838e+01, 3.7188515e+01, 3.8015249e+01, 3.8843044e+01, + 3.9671894e+01, 4.0501793e+01, 4.1332753e+01, 4.2164763e+01, + 4.2997835e+01, 4.3831958e+01, 4.4667140e+01, 4.5503381e+01, + 4.6340684e+01, 4.7179050e+01, 4.8018482e+01, 4.8858986e+01, + 4.9700570e+01, 5.0543234e+01, 5.1386997e+01, 5.2231827e+01, + 5.3077695e+01, 5.3924609e+01, 5.4772589e+01, 5.5621624e+01, + 5.6471727e+01, 5.7322901e+01, 5.8175148e+01, 5.9028470e+01, + 5.9882868e+01, 6.0738345e+01, 6.1594900e+01, 6.2452524e+01, + 6.3311240e+01, 6.4171040e+01, 6.5031910e+01, 6.5893864e+01, + 6.6756917e+01, 6.7621044e+01, 6.8486258e+01, 6.9352560e+01, + 7.0219952e+01, 7.1088433e+01, 7.1958005e+01, 7.2828667e+01, + 7.3700419e+01, 7.4573244e+01, 7.5447170e+01, 7.6322166e+01, + 7.7198264e+01, 7.8075441e+01, 7.8953723e+01, 7.9833136e+01, + 8.0713645e+01, 8.1595268e+01, 8.2478003e+01, 8.3361848e+01, + 8.4246804e+01, 8.5132850e+01, 8.6020026e+01, 8.6908314e+01, + 8.7797694e+01, 8.8688207e+01, 8.9579813e+01, 9.0472554e+01, + 9.1366390e+01, 9.2261342e+01, 9.3157411e+01, 9.4054599e+01, + 9.4952906e+01, 9.5852333e+01, 9.6752881e+01, 9.7654552e+01, + 9.8557321e+01, 9.9461239e+01, 1.0036626e+02, 1.0127243e+02, + 1.0217970e+02, 1.0308812e+02, 1.0399765e+02, 1.0490830e+02, + 1.0582009e+02, 1.0673301e+02, 1.0764706e+02, 1.0993713e+02, + 1.1223431e+02, 1.1453857e+02, 1.1684996e+02, 1.1916849e+02, + 1.2149417e+02, 1.2382707e+02, 1.2616712e+02, 1.2851429e+02, + 1.3086864e+02, 1.3323013e+02, 1.3559884e+02, 1.3797479e+02, + 1.4035794e+02, 1.4274830e+02, 1.4514598e+02, 1.4755085e+02, + 1.4996302e+02, 1.5238249e+02, 1.5480923e+02, 1.5724330e+02, + 1.5968471e+02, 1.6213336e+02, 1.6458942e+02, 1.6705281e+02, + 1.6952351e+02, 1.7200160e+02, 1.7448710e+02, 1.7697994e+02, + 1.7948014e+02, 1.8198783e+02, 1.8450284e+02, 1.8702535e+02, + 1.8955519e+02, 1.9209255e+02, 1.9463726e+02, 1.9718951e+02, + 1.9974919e+02, 2.0231629e+02, 2.0489089e+02, 2.0747293e+02, + 2.1006248e+02, 2.1265954e+02, 2.1526406e+02, 2.1787611e+02, + 2.2049561e+02, 2.2312258e+02, 2.2575719e+02, 2.2839921e+02, + 2.3104892e+02, 2.3370607e+02, 2.3637092e+02, 2.3904321e+02, + 2.4172322e+02, 2.4441077e+02, 2.4710586e+02, 2.4980859e+02, + 2.5251896e+02, 2.5523690e+02, 2.5796239e+02, 2.6069555e+02, + 2.6343637e+02, 2.6618477e+02, 2.6894076e+02, 2.7170452e+02, + 2.7447578e+02, 2.7725473e+02, 2.8004139e+02, 2.8283565e+02, + 2.8563763e+02, 2.8844732e+02, 2.9126453e+02, 2.9408958e+02, + 2.9692225e+02, 2.9976256e+02, 3.0261061e+02, 3.0546630e+02, + 3.0832975e+02, 3.1120097e+02, 3.1407983e+02, 3.1696648e+02, + 3.1986077e+02, 3.2276274e+02, 3.2567248e+02, 3.2859003e+02, + 3.3151524e+02, 3.3444826e+02, 3.3738896e+02, 3.4033747e+02, + 3.4329367e+02, 3.4625770e+02, 3.4922941e+02, 3.5220896e+02, + 3.5519620e+02, 3.5819129e+02, 3.6119421e+02, 3.6420471e+02, + 3.6722320e+02, 3.7024941e+02, 3.7328334e+02, 3.7937478e+02, + 3.8549728e+02, 3.9165115e+02, 3.9783627e+02, 4.0405252e+02, + 4.1030022e+02, 4.1657924e+02, 4.2288961e+02, 4.2923136e+02, + 4.3560449e+02, 4.4200921e+02, 4.4844520e+02, 4.5491265e+02, + 4.6141175e+02, 4.6794217e+02, 4.7450429e+02, 4.8109776e+02, + 4.8772298e+02, 4.9437959e+02, 5.0106799e+02, 5.0778798e+02, + 5.1453961e+02, 5.2132290e+02, 5.2813786e+02, 5.3498451e+02, + 5.4186287e+02, 5.4877296e+02, 5.5571480e+02, 5.6268841e+02, + 5.6969401e+02, 5.7673122e+02, 5.8380024e+02, 5.9090131e+02, + 5.9803399e+02, 6.0519872e+02, 6.1239507e+02, 6.1962346e+02, + 6.2688345e+02, 6.3417551e+02, 6.4149917e+02, 6.4885491e+02, + 6.5624252e+02, 6.6366200e+02, 6.7111317e+02, 6.7859641e+02, + 6.8611160e+02, 6.9365873e+02, 7.0123779e+02, 7.0884880e+02, + 7.1649178e+02, 7.2416672e+02, 7.3187365e+02, 7.3961241e+02, + 7.4738331e+02, 7.5518620e+02, 7.6302112e+02, 7.7088806e+02, + 7.7878702e+02, 7.8671830e+02, 7.9468136e+02, 8.0267647e+02, + 8.1070364e+02, 8.1876315e+02, 8.2685447e+02, 8.3497786e+02, + 8.4313334e+02, 8.5132121e+02, 8.5954089e+02, 8.6779267e+02, + 8.7607686e+02, 8.8439288e+02, 8.9274132e+02, 9.0112160e+02, + 9.0953418e+02, 9.1797893e+02,], + [ 3.5000000e+01, 1.9470745e+00, 2.6431890e+00, 3.3854945e+00, + 4.1395663e+00, 4.8991528e+00, 5.6621933e+00, 6.4279285e+00, + 7.1964004e+00, 7.9663495e+00, 8.7376564e+00, 9.5104070e+00, + 1.0284525e+01, 1.1059948e+01, 1.1836609e+01, 1.2614442e+01, + 1.3393287e+01, 1.4173159e+01, 1.4954376e+01, 1.5736761e+01, + 1.6520256e+01, 1.7304841e+01, 1.8090504e+01, 1.8877236e+01, + 1.9665031e+01, 2.0453893e+01, 2.1243840e+01, 2.2034937e+01, + 2.2827093e+01, 2.3620186e+01, 2.4414270e+01, 2.5209374e+01, + 2.6005501e+01, 2.6802658e+01, 2.7600842e+01, 2.8400052e+01, + 2.9200285e+01, 3.0001546e+01, 3.0803825e+01, 3.1607126e+01, + 3.2411427e+01, 3.3216708e+01, 3.4022979e+01, 3.4830306e+01, + 3.5638707e+01, 3.6448159e+01, 3.7258651e+01, 3.8070178e+01, + 3.8882732e+01, 3.9696325e+01, 4.0510953e+01, 4.1326608e+01, + 4.2143305e+01, 4.2961032e+01, 4.3779795e+01, 4.4599605e+01, + 4.5420447e+01, 4.6242332e+01, 4.7065262e+01, 4.7889242e+01, + 4.8714282e+01, 4.9540392e+01, 5.0367568e+01, 5.1195776e+01, + 5.2025016e+01, 5.2855273e+01, 5.3686577e+01, 5.4518913e+01, + 5.5352307e+01, 5.6186740e+01, 5.7022226e+01, 5.7858764e+01, + 5.8696357e+01, 5.9535007e+01, 6.0374713e+01, 6.1215478e+01, + 6.2057303e+01, 6.2900188e+01, 6.3744123e+01, 6.4589132e+01, + 6.5435193e+01, 6.6282331e+01, 6.7130522e+01, 6.7979779e+01, + 6.8830103e+01, 6.9681510e+01, 7.0533970e+01, 7.1387498e+01, + 7.2242078e+01, 7.3097739e+01, 7.3954463e+01, 7.4812251e+01, + 7.5671087e+01, 7.6531016e+01, 7.7392013e+01, 7.8254118e+01, + 7.9117298e+01, 7.9981568e+01, 8.0846946e+01, 8.1713393e+01, + 8.2580928e+01, 8.3449551e+01, 8.4319262e+01, 8.5190062e+01, + 8.6061931e+01, 8.6934911e+01, 8.7808983e+01, 8.8684125e+01, + 8.9560382e+01, 9.0437711e+01, 9.1316135e+01, 9.2195678e+01, + 9.3076294e+01, 9.3958009e+01, 9.4840821e+01, 9.5724734e+01, + 9.6609747e+01, 9.7495861e+01, 9.8383079e+01, 9.9271373e+01, + 1.0016080e+02, 1.0105130e+02, 1.0194294e+02, 1.0283565e+02, + 1.0372951e+02, 1.0462444e+02, 1.0552048e+02, 1.0776545e+02, + 1.1001738e+02, 1.1227625e+02, 1.1454211e+02, 1.1681496e+02, + 1.1909486e+02, 1.2138180e+02, 1.2367574e+02, 1.2597665e+02, + 1.2828459e+02, 1.3059958e+02, 1.3292160e+02, 1.3525071e+02, + 1.3758687e+02, 1.3993016e+02, 1.4228052e+02, 1.4463802e+02, + 1.4700266e+02, 1.4937442e+02, 1.5175331e+02, 1.5413937e+02, + 1.5653262e+02, 1.5893302e+02, 1.6134064e+02, 1.6375542e+02, + 1.6617743e+02, 1.6860663e+02, 1.7104308e+02, 1.7348679e+02, + 1.7593771e+02, 1.7839584e+02, 1.8086127e+02, 1.8333399e+02, + 1.8581395e+02, 1.8830122e+02, 1.9079576e+02, 1.9329762e+02, + 1.9580675e+02, 1.9832322e+02, 2.0084704e+02, 2.0337816e+02, + 2.0591656e+02, 2.0846232e+02, 2.1101546e+02, 2.1357590e+02, + 2.1614364e+02, 2.1871886e+02, 2.2130133e+02, 2.2389131e+02, + 2.2648857e+02, 2.2909337e+02, 2.3170556e+02, 2.3432512e+02, + 2.3695215e+02, 2.3958666e+02, 2.4222856e+02, 2.4487785e+02, + 2.4753463e+02, 2.5019891e+02, 2.5287060e+02, 2.5554980e+02, + 2.5823641e+02, 2.6093055e+02, 2.6363211e+02, 2.6634120e+02, + 2.6905783e+02, 2.7178190e+02, 2.7451342e+02, 2.7725249e+02, + 2.7999912e+02, 2.8275321e+02, 2.8551477e+02, 2.8828390e+02, + 2.9106061e+02, 2.9384479e+02, 2.9663657e+02, 2.9943584e+02, + 3.0224270e+02, 3.0505706e+02, 3.0787903e+02, 3.1070862e+02, + 3.1354571e+02, 3.1639031e+02, 3.1924254e+02, 3.2210241e+02, + 3.2496979e+02, 3.2784470e+02, 3.3072738e+02, 3.3361746e+02, + 3.3651521e+02, 3.3942061e+02, 3.4233356e+02, 3.4525418e+02, + 3.4818247e+02, 3.5111818e+02, 3.5406171e+02, 3.5701279e+02, + 3.5997143e+02, 3.6293776e+02, 3.6591180e+02, 3.7188257e+02, + 3.7788406e+02, 3.8391613e+02, 3.8997883e+02, 3.9607217e+02, + 4.0219617e+02, 4.0835087e+02, 4.1453644e+02, 4.2075258e+02, + 4.2699965e+02, 4.3327732e+02, 4.3958597e+02, 4.4592544e+02, + 4.5229574e+02, 4.5869691e+02, 4.6512896e+02, 4.7159209e+02, + 4.7808595e+02, 4.8461094e+02, 4.9116670e+02, 4.9775363e+02, + 5.0437152e+02, 5.1102044e+02, 5.1770039e+02, 5.2441139e+02, + 5.3115345e+02, 5.3792661e+02, 5.4473086e+02, 5.5156645e+02, + 5.5843298e+02, 5.6533088e+02, 5.7225996e+02, 5.7922000e+02, + 5.8621144e+02, 5.9323406e+02, 6.0028786e+02, 6.0737284e+02, + 6.1448899e+02, 6.2163633e+02, 6.2881509e+02, 6.3602482e+02, + 6.4326600e+02, 6.5053817e+02, 6.5784182e+02, 6.6517649e+02, + 6.7254269e+02, 6.7994012e+02, 6.8736887e+02, 6.9482892e+02, + 7.0232029e+02, 7.0984297e+02, 7.1739699e+02, 7.2498235e+02, + 7.3259905e+02, 7.4024721e+02, 7.4792661e+02, 7.5563738e+02, + 7.6337979e+02, 7.7115360e+02, 7.7895853e+02, 7.8679513e+02, + 7.9466314e+02, 8.0256229e+02, 8.1049314e+02, 8.1845541e+02, + 8.2644913e+02, 8.3447428e+02, 8.4253088e+02, 8.5061893e+02, + 8.5873874e+02, 8.6688972e+02, 8.7507217e+02, 8.8328609e+02, + 8.9153179e+02, 8.9980868e+02,], + [ 3.6000000e+01, 1.8976389e+00, 2.5808340e+00, 3.3089335e+00, + 4.0484182e+00, 4.7932476e+00, 5.5414322e+00, 6.2922130e+00, + 7.0457260e+00, 7.8006471e+00, 8.5568975e+00, 9.3145576e+00, + 1.0073561e+01, 1.0833825e+01, 1.1595305e+01, 1.2357932e+01, + 1.3121531e+01, 1.3886154e+01, 1.4652095e+01, 1.5419177e+01, + 1.6187345e+01, 1.6956581e+01, 1.7726871e+01, 1.8498209e+01, + 1.9270589e+01, 2.0044015e+01, 2.0818508e+01, 2.1594134e+01, + 2.2370782e+01, 2.3148347e+01, 2.3926886e+01, 2.4706426e+01, + 2.5486971e+01, 2.6268522e+01, 2.7051080e+01, 2.7834643e+01, + 2.8619212e+01, 2.9404781e+01, 3.0191355e+01, 3.0978921e+01, + 3.1767473e+01, 3.2556977e+01, 3.3347452e+01, 3.4138977e+01, + 3.4931548e+01, 3.5725149e+01, 3.6519768e+01, 3.7315400e+01, + 3.8112045e+01, 3.8909697e+01, 3.9708368e+01, 4.0508052e+01, + 4.1308745e+01, 4.2110459e+01, 4.2913183e+01, 4.3716933e+01, + 4.4521694e+01, 4.5327477e+01, 4.6134286e+01, 4.6942133e+01, + 4.7751012e+01, 4.8560940e+01, 4.9371902e+01, 5.0183889e+01, + 5.0996877e+01, 5.1810872e+01, 5.2625874e+01, 5.3441909e+01, + 5.4258960e+01, 5.5077051e+01, 5.5896162e+01, 5.6716305e+01, + 5.7537481e+01, 5.8359705e+01, 5.9182953e+01, 6.0007238e+01, + 6.0832562e+01, 6.1658912e+01, 6.2486316e+01, 6.3314761e+01, + 6.4144236e+01, 6.4974767e+01, 6.5806343e+01, 6.6638950e+01, + 6.7472602e+01, 6.8307316e+01, 6.9143061e+01, 6.9979853e+01, + 7.0817690e+01, 7.1656571e+01, 7.2496493e+01, 7.3337456e+01, + 7.4179465e+01, 7.5022513e+01, 7.5866644e+01, 7.6711845e+01, + 7.7558099e+01, 7.8405438e+01, 7.9253826e+01, 8.0103280e+01, + 8.0953800e+01, 8.1805405e+01, 8.2658057e+01, 8.3511777e+01, + 8.4366564e+01, 8.5222420e+01, 8.6079324e+01, 8.6937320e+01, + 8.7796387e+01, 8.8656504e+01, 8.9517717e+01, 9.0379981e+01, + 9.1243343e+01, 9.2107758e+01, 9.2973249e+01, 9.3839818e+01, + 9.4707490e+01, 9.5576217e+01, 9.6446025e+01, 9.7316888e+01, + 9.8188858e+01, 9.9061913e+01, 9.9936051e+01, 1.0081125e+02, + 1.0168756e+02, 1.0256493e+02, 1.0344341e+02, 1.0564433e+02, + 1.0785207e+02, 1.1006661e+02, 1.1228801e+02, 1.1451626e+02, + 1.1675142e+02, 1.1899348e+02, 1.2124238e+02, 1.2349816e+02, + 1.2576078e+02, 1.2803032e+02, 1.3030676e+02, 1.3259013e+02, + 1.3488043e+02, 1.3717769e+02, 1.3948194e+02, 1.4179314e+02, + 1.4411130e+02, 1.4643652e+02, 1.4876868e+02, 1.5110791e+02, + 1.5345415e+02, 1.5580740e+02, 1.5816771e+02, 1.6053510e+02, + 1.6290952e+02, 1.6529098e+02, 1.6767955e+02, 1.7007523e+02, + 1.7247804e+02, 1.7488786e+02, 1.7730488e+02, 1.7972900e+02, + 1.8216020e+02, 1.8459858e+02, 1.8704413e+02, 1.8949680e+02, + 1.9195666e+02, 1.9442364e+02, 1.9689783e+02, 1.9937916e+02, + 2.0186771e+02, 2.0436347e+02, 2.0686638e+02, 2.0937645e+02, + 2.1189375e+02, 2.1441829e+02, 2.1695003e+02, 2.1948905e+02, + 2.2203529e+02, 2.2458884e+02, 2.2714961e+02, 2.2971771e+02, + 2.3229312e+02, 2.3487577e+02, 2.3746567e+02, 2.4006290e+02, + 2.4266747e+02, 2.4527930e+02, 2.4789847e+02, 2.5052491e+02, + 2.5315871e+02, 2.5579989e+02, 2.5844834e+02, 2.6110407e+02, + 2.6376719e+02, 2.6643771e+02, 2.6911552e+02, 2.7180062e+02, + 2.7449325e+02, 2.7719307e+02, 2.7990043e+02, 2.8261510e+02, + 2.8533709e+02, 2.8806651e+02, 2.9080327e+02, 2.9354747e+02, + 2.9629912e+02, 2.9905811e+02, 3.0182457e+02, 3.0459837e+02, + 3.0737964e+02, 3.1016827e+02, 3.1296438e+02, 3.1576785e+02, + 3.1857881e+02, 3.2139713e+02, 3.2422296e+02, 3.2705629e+02, + 3.2989700e+02, 3.3274508e+02, 3.3560082e+02, 3.3846381e+02, + 3.4133433e+02, 3.4421237e+02, 3.4709795e+02, 3.4999079e+02, + 3.5289131e+02, 3.5579923e+02, 3.5871457e+02, 3.6456789e+02, + 3.7045103e+02, 3.7636429e+02, 3.8230755e+02, 3.8828084e+02, + 3.9428433e+02, 4.0031775e+02, 4.0638141e+02, 4.1247504e+02, + 4.1859896e+02, 4.2475305e+02, 4.3093731e+02, 4.3715195e+02, + 4.4339664e+02, 4.4967156e+02, 4.5597692e+02, 4.6231256e+02, + 4.6867849e+02, 4.7507474e+02, 4.8150132e+02, 4.8795844e+02, + 4.9444573e+02, 5.0096364e+02, 5.0751189e+02, 5.1409059e+02, + 5.2069974e+02, 5.2733935e+02, 5.3400944e+02, 5.4071003e+02, + 5.4744134e+02, 5.5420298e+02, 5.6099537e+02, 5.6781832e+02, + 5.7467181e+02, 5.8155585e+02, 5.8847044e+02, 5.9541580e+02, + 6.0239147e+02, 6.0939793e+02, 6.1643494e+02, 6.2350230e+02, + 6.3060047e+02, 6.3772925e+02, 6.4488863e+02, 6.5207889e+02, + 6.5929953e+02, 6.6655107e+02, 6.7383305e+02, 6.8114590e+02, + 6.8848945e+02, 6.9586343e+02, 7.0326837e+02, 7.1070427e+02, + 7.1817063e+02, 7.2566771e+02, 7.3319552e+02, 7.4075417e+02, + 7.4834371e+02, 7.5596373e+02, 7.6361477e+02, 7.7129659e+02, + 7.7900918e+02, 7.8675254e+02, 7.9452670e+02, 8.0233164e+02, + 8.1016766e+02, 8.1803421e+02, 8.2593185e+02, 8.3386002e+02, + 8.4181930e+02, 8.4980941e+02, 8.5783035e+02, 8.6588213e+02, + 8.7396475e+02, 8.8207822e+02,], + [ 3.7000000e+01, 1.8492047e+00, 2.5199870e+00, 3.2345000e+00, + 3.9597377e+00, 4.6901529e+00, 5.4238262e+00, 6.1600309e+00, + 6.8989219e+00, 7.6391571e+00, 8.3806954e+00, 9.1236114e+00, + 9.8678403e+00, 1.0613301e+01, 1.1359952e+01, 1.2107718e+01, + 1.2856429e+01, 1.3606157e+01, 1.4357175e+01, 1.5109308e+01, + 1.5862504e+01, 1.6616745e+01, 1.7372020e+01, 1.8128321e+01, + 1.8885644e+01, 1.9643992e+01, 2.0403390e+01, 2.1163901e+01, + 2.1925403e+01, 2.2687801e+01, 2.3451158e+01, 2.4215495e+01, + 2.4980817e+01, 2.5747126e+01, 2.6514421e+01, 2.7282701e+01, + 2.8051966e+01, 2.8822215e+01, 2.9593442e+01, 3.0365647e+01, + 3.1138808e+01, 3.1912907e+01, 3.2687959e+01, 3.3464041e+01, + 3.4241157e+01, 3.5019275e+01, 3.5798391e+01, 3.6578499e+01, + 3.7359600e+01, 3.8141694e+01, 3.8924774e+01, 3.9708854e+01, + 4.0493928e+01, 4.1279991e+01, 4.2067057e+01, 4.2855114e+01, + 4.3644178e+01, 4.4434236e+01, 4.5225299e+01, 4.6017382e+01, + 4.6810477e+01, 4.7604603e+01, 4.8399747e+01, 4.9195882e+01, + 4.9992990e+01, 5.0791094e+01, 5.1590195e+01, 5.2390300e+01, + 5.3191401e+01, 5.3993521e+01, 5.4796641e+01, 5.5600772e+01, + 5.6405928e+01, 5.7212088e+01, 5.8019263e+01, 5.8827454e+01, + 5.9636663e+01, 6.0446891e+01, 6.1258139e+01, 6.2070408e+01, + 6.2883699e+01, 6.3697999e+01, 6.4513336e+01, 6.5329698e+01, + 6.6147071e+01, 6.6965468e+01, 6.7784906e+01, 6.8605355e+01, + 6.9426827e+01, 7.0249321e+01, 7.1072835e+01, 7.1897369e+01, + 7.2722931e+01, 7.3549529e+01, 7.4377174e+01, 7.5205868e+01, + 7.6035592e+01, 7.6866381e+01, 7.7698197e+01, 7.8531077e+01, + 7.9364982e+01, 8.0199951e+01, 8.1035946e+01, 8.1872986e+01, + 8.2711074e+01, 8.3550208e+01, 8.4390391e+01, 8.5231624e+01, + 8.6073906e+01, 8.6917240e+01, 8.7761602e+01, 8.8607041e+01, + 8.9453509e+01, 9.0301056e+01, 9.1149634e+01, 9.1999293e+01, + 9.2849985e+01, 9.3701735e+01, 9.4554544e+01, 9.5408412e+01, + 9.6263342e+01, 9.7119333e+01, 9.7976387e+01, 9.8834504e+01, + 9.9693686e+01, 1.0055391e+02, 1.0141522e+02, 1.0357313e+02, + 1.0573773e+02, 1.0790900e+02, 1.1008699e+02, 1.1227169e+02, + 1.1446316e+02, 1.1666140e+02, 1.1886634e+02, 1.2107802e+02, + 1.2329641e+02, 1.2552158e+02, 1.2775350e+02, 1.2999224e+02, + 1.3223779e+02, 1.3449014e+02, 1.3674928e+02, 1.3901533e+02, + 1.4128815e+02, 1.4356790e+02, 1.4585449e+02, 1.4814793e+02, + 1.5044827e+02, 1.5275553e+02, 1.5506967e+02, 1.5739075e+02, + 1.5971872e+02, 1.6205364e+02, 1.6439547e+02, 1.6674428e+02, + 1.6910007e+02, 1.7146279e+02, 1.7383245e+02, 1.7620912e+02, + 1.7859281e+02, 1.8098352e+02, 1.8338114e+02, 1.8578586e+02, + 1.8819756e+02, 1.9061625e+02, 1.9304207e+02, 1.9547481e+02, + 1.9791463e+02, 2.0036152e+02, 2.0281549e+02, 2.0527639e+02, + 2.0774446e+02, 2.1021956e+02, 2.1270179e+02, 2.1519108e+02, + 2.1768745e+02, 2.2019106e+02, 2.2270167e+02, 2.2521954e+02, + 2.2774450e+02, 2.3027655e+02, 2.3281578e+02, 2.3536221e+02, + 2.3791574e+02, 2.4047647e+02, 2.4304432e+02, 2.4561938e+02, + 2.4820155e+02, 2.5079095e+02, 2.5338748e+02, 2.5599125e+02, + 2.5860226e+02, 2.6122042e+02, 2.6384582e+02, 2.6647838e+02, + 2.6911821e+02, 2.7176519e+02, 2.7441945e+02, 2.7708099e+02, + 2.7974970e+02, 2.8242558e+02, 2.8510876e+02, 2.8779925e+02, + 2.9049691e+02, 2.9320189e+02, 2.9591407e+02, 2.9863356e+02, + 3.0136026e+02, 3.0409428e+02, 3.0683563e+02, 3.0958421e+02, + 3.1234012e+02, 3.1510325e+02, 3.1787360e+02, 3.2065144e+02, + 3.2343651e+02, 3.2622881e+02, 3.2902848e+02, 3.3183539e+02, + 3.3464967e+02, 3.3747133e+02, 3.4030024e+02, 3.4313654e+02, + 3.4598009e+02, 3.4883104e+02, 3.5168925e+02, 3.5742773e+02, + 3.6319571e+02, 3.6899293e+02, 3.7481969e+02, 3.8067589e+02, + 3.8656153e+02, 3.9247680e+02, 3.9842141e+02, 4.0439570e+02, + 4.1039952e+02, 4.1643290e+02, 4.2249586e+02, 4.2858858e+02, + 4.3471075e+02, 4.4086273e+02, 4.4704436e+02, 4.5325566e+02, + 4.5949665e+02, 4.6576754e+02, 4.7206815e+02, 4.7839831e+02, + 4.8475842e+02, 4.9114851e+02, 4.9756819e+02, 5.0401794e+02, + 5.1049723e+02, 5.1700662e+02, 5.2354588e+02, 5.3011503e+02, + 5.3671409e+02, 5.4334328e+02, 5.5000240e+02, 5.5669124e+02, + 5.6341023e+02, 5.7015915e+02, 5.7693823e+02, 5.8374700e+02, + 5.9058594e+02, 5.9745458e+02, 6.0435340e+02, 6.1128218e+02, + 6.1824093e+02, 6.2522991e+02, 6.3224864e+02, 6.3929763e+02, + 6.4637639e+02, 6.5348543e+02, 6.6062451e+02, 6.6779390e+02, + 6.7499312e+02, 6.8222237e+02, 6.8948198e+02, 6.9677168e+02, + 7.0409148e+02, 7.1144139e+02, 7.1882140e+02, 7.2623154e+02, + 7.3367208e+02, 7.4114230e+02, 7.4864308e+02, 7.5617402e+02, + 7.6373510e+02, 7.7132635e+02, 7.7894776e+02, 7.8659934e+02, + 7.9428138e+02, 8.0199361e+02, 8.0973574e+02, 8.1750836e+02, + 8.2531117e+02, 8.3314419e+02, 8.4100772e+02, 8.4890117e+02, + 8.5682514e+02, 8.6477904e+02,],],) \ No newline at end of file diff --git a/build/lib/bgcArgoDMQC/unit.py b/build/lib/bgcArgoDMQC/unit.py index 62478d6..10ff521 100644 --- a/build/lib/bgcArgoDMQC/unit.py +++ b/build/lib/bgcArgoDMQC/unit.py @@ -1,21 +1,9 @@ import warnings import numpy as np +import gsw -# soft attempt to load gsw, but allow for seawater as well -try: - import gsw - flagSA = True -except: - try: - # if this also fails, just load gsw to throw the error - from seawater import pden - flagSA = False - warnings.warn('gsw package for thermodynamic equations of seawater not installed, attempting to load seawater package, however seawater is deprecated in favour of gsw-python, see https://teos-10.github.io/GSW-Python/\n') - except: - import gsw - -def oxy_sol(S, T, unit='micromole/kg'): +def oxy_sol(S, T, PDEN, a4330=True): ''' Calculate oxygen saturation concentration in seawater as a function of S & T, in equilibrium with standard coponsition moist air at 1atm total @@ -23,46 +11,32 @@ def oxy_sol(S, T, unit='micromole/kg'): of Benson & Krause in table 1, as used in Sarmiento & Gruber's "Ocean Biogeochemical Dynamics" ch. 3, p. 81, table 3.2.4. - INPUT: - S: salinity, psu - T: temperature, deg C - unit: micromole/kg or millimole/m3, default if micromole/kg - - OUTPUT: - O2sol: oxygen solubility, unit same as input unit - - AUTHOR: Christopher Gordon - Fisheries and Oceans Canada - chris.gordon@dfo-mpo.gc.ca - - ACKNOWLEDGEMENT: this code is adapted from the SOCCOM SAGE_O2Argo matlab - code, available via https://github.com/SOCCOM-BGCArgo/ARGO_PROCESSING, - written by Josh Plant - - LAST UPDATE: 21-04-2020 - - CHANGE LOG: - ''' - - # check for improper units - if unit != 'micromole/kg' and unit != 'millimole/m3': - raise ValueError('Unrecognized unit string - valid units are ''micromole/kg'' or ''millimole/m3''.') - - if unit == 'micromole/kg': - A = [3.80369, -9.86643e-2, 5.10006, 4.17887, 3.20291, 5.80871] - B = [-9.51519e-3, -1.13864e-2, -7.70028e-3, -7.01577e-3] - C = -2.75915e-7 + Args: + S (float or array-like): salinity, psu + T (float or array-like): temperature, deg C + a4330 (bool): True or False for Aanderaa 4330 optode - elif unit == 'millimole/m3': - A = [3.88767, -0.256847, 4.94457, 4.05010, 3.22014, 2.00907] - B = [-8.17083e-3, -1.03410e-2, -7.37614e-3, -6.24523e-3] + Returns: + O2sol (float or array-like): oxygen solubility + ''' + + O2_volume = 22.3916 + if a4330: + A = [1.71069, 0.978188, 4.80299, 3.99063, 3.22400, 2.00856] # Temperature coeff + B = [-4.29155e-3, -6.90358e-3, -6.93498e-3, -6.24097e-3] # Salinity coeff + C = -3.11680e-7 + factor = 1000/O2_volume + else: + A = [3.88767, -0.256847, 4.94457, 4.05010, 3.22014, 2.00907] # Temperature coeff + B = [-8.17083e-3, -1.03410e-2, -7.37614e-3, -6.24523e-3] # Salinity coeff C = -4.88682e-7 + factor = 44.614 # listed in argo cookbook # Scaled temperature - Ts = np.log((298.15 - T)/(273.15 + T)); + Ts = np.log((298.15 - T)/(273.15 + T)) L = np.polyval(A,Ts) + S*np.polyval(B,Ts) + C*S**2 - O2sol = np.exp(L) + O2sol = factor*np.exp(L)*1000/PDEN return O2sol @@ -70,20 +44,13 @@ def pH2O(T, S=0, unit='Pa'): ''' Calculate vapor pressure of water - INPUT: - T: temperature, deg C - S: salinity, only necessary for mbar unit - - OUTPUT: - vapor_pressure: vapor pressure of water, Pa or mbar - - AUTHOR: Christopher Gordon - Fisheries and Oceans Canada - chris.gordon@dfo-mpo.gc.ca - - LAST UPDATE: 06-05-2020 - - CHANGE LOG: + Args: + T (float or array-like): temperature, deg C + S (optional, float or array-like): salinity, only necessary for mbar unit, default 0 + unit (optional, str): "Pa" or "mbar" for unit of vapor pressure, defauly "Pa" + + Returns: + vapor_pressure: vapor pressure of water, Pa or mbar ''' # temperature in kelvin @@ -94,7 +61,7 @@ def pH2O(T, S=0, unit='Pa'): vapor_pressure = np.exp(52.57 - (6690.9/Tk) - 4.681*np.log(Tk)) elif unit == 'mbar': # SCOR WG 142 - vapor_pressure = 1013.25 * (np.exp(24.4543 - (67.4509*(100/Tk))) - 4.8489*np.log(((Tk/100)) - 0.000544*S)) + vapor_pressure = 1013.25 * (np.exp(24.4543 - (67.4509*(100/Tk)) - 4.8489*np.log(Tk/100) - 0.000544*S)) else: raise ValueError('Invalid unit input of {}, must be one of "Pa" or "mbar"'.format(unit)) @@ -152,15 +119,7 @@ def umol_per_sw_to_mmol_per_L(doxy, S, T, P, Pref=0, lat=None, lon=None): umol_L_conc (float or array-like): dissolved oxygen concentration in umol L-1 (or equivalently mmol m-3) ''' - if flagSA: - if lat is None and lon is None: - pot_density = gsw.pot_rho_t_exact(S, T, P, Pref) - warnings.warn('No coordinate information required, proceeding with calculation using practical salinity instead of absolute salinity') - else: - pot_density = gsw.pot_rho_t_exact(gsw.SA_from_SP(S, P, lon, lat), T, P, Pref) - else: - pot_density = pden(S, T, P, pr=Pref) - + pot_density = gsw.pot_rho_t_exact(gsw.SA_from_SP(S, P, lon, lat), T, P, Pref) umol_L_conc = 1000*doxy / pot_density return umol_L_conc @@ -278,6 +237,6 @@ def pO2_to_doxy(pO2, S, T, P=0): Vm = 0.317 # molar volume of O2 in m3 mol-1 Pa dbar-1 (Enns et al. 1965) R = 8.314 # universal gas constant in J mol-1 K-1 - O2conc = pO2/(xO2*(1013.25 - pH2Osat))/(Tcorr*Scorr)*np.exp(Vm*P/(R*Tk)) + O2conc = pO2/(xO2*(1013.25 - pH2Osat))*(Tcorr*Scorr)/np.exp(Vm*P/(R*Tk)) return O2conc \ No newline at end of file diff --git a/build/lib/bgcArgoDMQC/util.py b/build/lib/bgcArgoDMQC/util.py index 2e17997..3730b60 100644 --- a/build/lib/bgcArgoDMQC/util.py +++ b/build/lib/bgcArgoDMQC/util.py @@ -1,4 +1,5 @@ import sys +from pathlib import Path import numpy as np from netCDF4 import Dataset @@ -235,6 +236,9 @@ def read_gain_value(fn, verbose=True): equation = eqs[ix] comment = comms[ix] + else: + raise ValueError('Cannot parse calibration info based on dimensions N_PROF={} and N_CALIB={}'.format(nprof, ncalib)) + return G, equation, comment @@ -382,4 +386,61 @@ def haversine(c1, c2): def cycle_from_time(time, t_arr, c_arr): ix = np.abs(t_arr - time) == np.nanmin(np.abs(t_arr - time)) - return c_arr[ix][0] \ No newline at end of file + return c_arr[ix][0] + +def get_vars(files): + + nc = Dataset(Path(files[0]), 'r') + varnames = set(nc.variables.keys()) + nc.close() + + for fn in files: + nc = Dataset(Path(fn), 'r') + varnames = varnames.intersection(nc.variables.keys()) + nc.close() + + varnames = list(varnames) + + return varnames + +def read_ncstr(arr): + decode_str = np.array([f.decode('utf-8') for f in arr]) + out = ''.join(decode_str) + + return out.strip() + +def read_qc(flags): + + decode_flags = np.array([f.decode('utf-8') for f in flags]) + decode_flags[decode_flags == ' '] = '4' + + out_flags = np.array([int(f) for f in decode_flags]) + + return out_flags + +def get_worst_flag(*args): + out_flags = np.ones(args[0].shape) + + if len(args) == 1: + out_flags = args[0] + else: + # make an array where all data marked as good + out_flags = np.ones(args[0].shape) + # loop through input flags + for flags in args: + # loop through each datapoint flag + for i,f in enumerate(flags): + if f > out_flags[i] and f <= 4: + out_flags[i] = f + elif f in [5,8] and out_flags[i] <= 2: + out_flags[i] = f + elif f == 9: + out_flags[i] = 9 + + return out_flags + +def get_parameter_index(parameter_array, parameter): + str_arr = np.array([read_ncstr(s) for s in parameter_array]) + index = np.where(str_arr == parameter)[0] + + return index \ No newline at end of file diff --git a/dist/bgcArgoDMQC-0.2.10.tar.gz b/dist/bgcArgoDMQC-0.2.11-py3-none-any.whl similarity index 77% rename from dist/bgcArgoDMQC-0.2.10.tar.gz rename to dist/bgcArgoDMQC-0.2.11-py3-none-any.whl index d99495d..ef6b49f 100644 Binary files a/dist/bgcArgoDMQC-0.2.10.tar.gz and b/dist/bgcArgoDMQC-0.2.11-py3-none-any.whl differ diff --git a/dist/bgcArgoDMQC-0.2.10-py3-none-any.whl b/dist/bgcArgoDMQC-0.2.11.tar.gz similarity index 77% rename from dist/bgcArgoDMQC-0.2.10-py3-none-any.whl rename to dist/bgcArgoDMQC-0.2.11.tar.gz index a518b2a..bb63693 100644 Binary files a/dist/bgcArgoDMQC-0.2.10-py3-none-any.whl and b/dist/bgcArgoDMQC-0.2.11.tar.gz differ diff --git a/setup.py b/setup.py index c37b6b4..d26bba9 100644 --- a/setup.py +++ b/setup.py @@ -8,7 +8,7 @@ setuptools.setup( name='bgcArgoDMQC', - version='0.2.10', + version='0.2.11', license='The MIT License (MIT)', author_email='chris.gordon@dfo-mpo.gc.ca', description='A python library for quality control of BGC-Argo data',