From 0c5e8f56afd1fc51ddae095970beee3d14f0192b Mon Sep 17 00:00:00 2001 From: caes Date: Tue, 8 Aug 2017 05:16:38 -0400 Subject: [PATCH] cleanup --- src/sed/mehdipour/ngc5548_magdziarz.py | 116 ------ src/sed/mehdipour/powlaw-cutoff.pl | 72 ---- src/sed/mehdipour/powlaw-cutoff.py | 139 ------- src/sed/mehdipour/sed.hpp | 303 --------------- src/sed/mehdipour/spectrum | 501 ------------------------- 5 files changed, 1131 deletions(-) delete mode 100755 src/sed/mehdipour/ngc5548_magdziarz.py delete mode 100755 src/sed/mehdipour/powlaw-cutoff.pl delete mode 100755 src/sed/mehdipour/powlaw-cutoff.py delete mode 100644 src/sed/mehdipour/sed.hpp delete mode 100644 src/sed/mehdipour/spectrum diff --git a/src/sed/mehdipour/ngc5548_magdziarz.py b/src/sed/mehdipour/ngc5548_magdziarz.py deleted file mode 100755 index c06e356..0000000 --- a/src/sed/mehdipour/ngc5548_magdziarz.py +++ /dev/null @@ -1,116 +0,0 @@ -""" A program to recreate the average spectrum fit for ngc 5548 in Magdziarz et al 1998 """ -import math -import scipy -import numpy - -PI=3.14159265358979323846; -PLANCK_CONST=4.135668e-15; # in eV * s -BOLTZMANN_CONST=0.00008617332385; # in eV / K -RYDBERG_CONST=1.0973731568539e7; # in 1 / m -RYDBERG_UNIT_EV=13.60569252; # in eV -RYDBERG_UNIT_ANGSTROM=1e10/RYDBERG_CONST; # in A - -CONT_MIN_ENERGY_keV = 1e-3; -CONT_MAX_ENERGY_keV = 1e2; -CONT_MIN_X = math.log10(CONT_MIN_ENERGY_keV); -CONT_MAX_X = math.log10(CONT_MAX_ENERGY_keV); -CONT_WIDTH_X = CONT_MAX_X - CONT_MIN_X; -CONT_MIN_VAL = 1e-35; - -""" Cloudy's continuum domain, for reference, version 13.3 """ -CLOUDY_EMM = 1.001e-8; # in Rydberg -CLOUDY_EGAMRY = 7.354e6; # in Rydberg -CLOUDY_MIN_EV = CLOUDY_EMM*RYDBERG_UNIT_EV; -CLOUDY_MAX_EV = CLOUDY_EGAMRY*RYDBERG_UNIT_EV; - -IN_EV_2500A = 12398.41929/2500; - - - - - - - -""" Curve Parameters from MNRAS 301 Mdagziarz 1998 """ - - -α_HC = 0.86 - - -# Soft Excess -α_SE_sec2_1 = 1.1 # Quoted consistent with Korista 1995 and Marshall 1997 -kT_SE_sec2_1 = .56 - - -# Comtonization fitted to ROSAT data -# ξ = - -# OSSE data fit -α_HC = 0.86 -R = 0.96 -E_cutoff_HC = .120 # keV, phase 1 -F_HC = .38 # keV cm⁻² s⁻¹ -# E_cutoff_HC = 118 # keV, phase 3 -# F_HC = .61 # keV cm⁻² s⁻¹ - - -# Section 3.3 values -kT_SE_sec3_2 = .270 # keV -α_SE_sec3_2 = 1.13 -kT_HC_sec3_2 = 55 # keV -α_HC_sec3_2 = .76 - - - -def hν_at(i,n): - """ returns hν coordinate of bin i out of n """ - relative_coord = i/n - x_coord = relative_coord*CONT_WIDTH_X + CONT_MIN_X; - return math.pow(10,x_coord); - -def histogram_table(n): - output = [] - # max=0,min=1 - indices = range(n) - for i in range(0,n): - hν = hν_at(i,n); - value = (hν,sed(hν)) - # if (output.value[hν] > max) max = output.value[hν]; - # if (output.value[hν] < min) min = output.value[hν]; - output.append(value) - - # Add a final point at 100 KeV - hν = 1e2; - value = sed(hν); - output.append((hν,value)) - return output; - -def sed(hν): - magnitude=0.0; - magnitude += powlaw_cutoff(hν,α_HC,E_cutoff_HC,1) # OSSE data fit - # magnitude += powlaw_cutoff(hν,α_SE_sec2_1,kT_SE_sec2_1,1) - # magnitude += powlaw_cutoff(hν,α_SE_sec3_2,kT_SE_sec3_2,1) - #magnitude += compt_approx(hν,-1.3,.345,.0034,1) - if magnitude < CONT_MIN_VAL: return CONT_MIN_VAL - # magnitude = CONT_MIN_VAL; - return magnitude; - -def powlaw_cutoff(hν,α,E_cutoff,norm): - low_cutoff = .1 - resultant = norm - resultant *= math.exp(-hν/E_cutoff) - #resultant *= math.exp(-low_cutoff/hν) - resultant *= math.pow(hν,1+α) - return resultant - -def compt_approx(hν,α,kT_keV,cutoff_keV,norm): - magnitude = math.pow(hν,(1+α)) - magnitude *= math.exp(-(hν/kT_keV)) - magnitude *= math.exp(-(cutoff_keV/hν)) - magnitude *= norm - return magnitude - -test_table = histogram_table(500) - -for pair in test_table: - print (pair[0],pair[1]) \ No newline at end of file diff --git a/src/sed/mehdipour/powlaw-cutoff.pl b/src/sed/mehdipour/powlaw-cutoff.pl deleted file mode 100755 index 6b01e2c..0000000 --- a/src/sed/mehdipour/powlaw-cutoff.pl +++ /dev/null @@ -1,72 +0,0 @@ -#!/usr/bin/env - -use strict; use warnings; use 5.010; use utf8; -use IO::Handle; -use File::Temp "tempfile"; - -open(my $spectrum_file,"spectrum"); - -# my @x = (); -# my @y = (); -# my($xi,$yi); -# ($xi,$yi)=(0,0); - -# while(my $line = <$spectrum_file>) { -# $line =~ /([0-9\.]+)\s+([0-9\.]+)/; -# ($x[$xi],$y[$yi])=($1,$2); -# $xi++; $yi++; -# } - -# while (my $line = <$spectrum_file>) { -# print $line; -# } - -my($T,$N) = tempfile("spectrum-XXXXXXXX", "UNLINK", 1); -# for my $t (100..500) -# { say $T $t*sin($t*0.1), " ", $t*cos($t*0.1); } -while (my $_ = <$spectrum_file>) { - chomp; - say $T $_; -} -close $T; -open my $P, "|-", "gnuplot" or die; -printflush $P qq[ - unset key - set logscale xy - set xrange [.001,1000] - plot "$N" -]; -; -close $P; - - -# sub histogram_table(n) { -# my @output = () -# my @x = () -# my @y = () -# output.append(x) -# output.append(y) -# max=0 -# min=1 -# indices = range(n) -# for i in range(0,n): -# hνᗉkeVᗆ = hνᗉkeVᗆ_at(i,n); -# x.append(hνᗉkeVᗆ) -# value = total(hνᗉkeVᗆ,1,1,1) -# y.append(value) -# if (value > max): max = value; -# if (value < min): min = value; -# # Add a final point at 100 KeV -# hνᗉkeVᗆ = 1e2; -# x.append(hνᗉkeVᗆ) -# y.append(total(hνᗉkeVᗆ,1,1,1)) -# output.append(x) -# output.append(y) -# return output; -# } - - - - -close($spectrum_file) -__END__ diff --git a/src/sed/mehdipour/powlaw-cutoff.py b/src/sed/mehdipour/powlaw-cutoff.py deleted file mode 100755 index e85841e..0000000 --- a/src/sed/mehdipour/powlaw-cutoff.py +++ /dev/null @@ -1,139 +0,0 @@ -""" A program to recreate the average spectrum fit for ngc 5548 in Magdziarz et al 1998 """ -import math -import scipy -import numpy - -import matplotlib.pyplot as plt - -PI=3.14159265358979323846; -PLANCK_CONST=4.135668e-15; # in eV * s -# Boltzman Constant -kᵦᗉeVᓯKᗆ=0.00008617332385; # in eV / K -kᵦᗉkeVᓯKᗆ=kᵦᗉeVᓯKᗆ/1000; -RYDBERG_CONST=1.0973731568539e7; # in 1 / m -RYDBERG_UNITᗉeVᗆ=13.60569252; # in eV -RYDBERG_UNIT_ANGSTROM=1e10/RYDBERG_CONST; # in A - -CONT_MIN_ENERGYᗉkeVᗆ = 1e-3; -CONT_MAX_ENERGYᗉkeVᗆ = 1e2; -CONT_MIN_XᗉkeVᗆ = math.log10(CONT_MIN_ENERGYᗉkeVᗆ); -CONT_MAX_XᗉkeVᗆ = math.log10(CONT_MAX_ENERGYᗉkeVᗆ); -CONT_WIDTH_XᗉkeVᗆ = CONT_MAX_XᗉkeVᗆ - CONT_MIN_XᗉkeVᗆ; -CONT_MIN_VAL = 1e-35; - -""" Cloudy's continuum domain, for reference, version 13.3 """ -CLOUDY_EMMᗉRydbergᗆ = 1.001e-8; # in Rydberg -CLOUDY_EγᗉRydbergᗆ = 7.354e6; # in Rydberg -CLOUDY_MINᗉeVᗆ= CLOUDY_EMMᗉRydbergᗆ*RYDBERG_UNITᗉeVᗆ; -CLOUDY_MAXᗉeVᗆ= CLOUDY_EγᗉRydbergᗆ*RYDBERG_UNITᗉeVᗆ; - -hcᓯ2500ᗉeVᗆ = 12398.41929/2500; - -""" Returns the SED as a histrogram (list of floats) with n bins""" -# def histogram_table(n): -# output = [] -# # max=0,min=1 -# indices = range(n) -# for i in range(0,n): -# hνᗉkeVᗆ = hνᗉkeVᗆ_at(i,n); -# value = (hνᗉkeVᗆ,sum(hνᗉkeVᗆ)) -# # if (output.value[hνᗉkeVᗆ] > max) max = output.value[hνᗉkeVᗆ]; -# # if (output.value[hνᗉkeVᗆ] < min) min = output.value[hνᗉkeVᗆ]; -# output.append(value) -# -# # Add a final point at 100 KeV -# hνᗉkeVᗆ = 1e2; -# value = sum(hνᗉkeVᗆ); -# output.append((hνᗉkeVᗆ,value)) -# return output; - -def histogram_table(n): - output = [] - x = [] - y = [] - output.append(x) - output.append(y) - max=0 - min=1 - indices = range(n) - for i in range(0,n): - hνᗉkeVᗆ = hνᗉkeVᗆ_at(i,n); - x.append(hνᗉkeVᗆ) - value = total(hνᗉkeVᗆ,1,1,1) - y.append(value) - if (value > max): max = value; - if (value < min): min = value; - # Add a final point at 100 KeV - hνᗉkeVᗆ = 1e2; - x.append(hνᗉkeVᗆ) - y.append(total(hνᗉkeVᗆ,1,1,1)) - output.append(x) - output.append(y) - return output; - - -# Sums 2 power-law cutoff functions and the disk contribution at energy coordinate hνᗉkeVᗆ in keV. -# Coefficients should be equal to functions at hνᗉkeVᗆ = ?? keV -def total(hνᗉkeVᗆ,C1=1.0,C2=1.0,C3=1.0): - magnitude=0.0 - # accretion disk blackbody continuum has α=1/3 - magnitude += powlaw_cutoff(hνᗉkeVᗆ,1/3,3e3,6e6,C1) - magnitude += powlaw_cutoff(hνᗉkeVᗆ,-1.1,.01/kᵦᗉkeVᓯKᗆ,1/kᵦᗉkeVᓯKᗆ,C2) - magnitude += powlaw_cutoff(hνᗉkeVᗆ,-0.8,.01/kᵦᗉkeVᓯKᗆ,100/kᵦᗉkeVᓯKᗆ,C3) - if magnitude < CONT_MIN_VAL: return CONT_MIN_VAL - # print (magnitude) - return magnitude; - - -def hνᗉkeVᗆ_at(i,n): - """ returns hνᗉkeVᗆ coordinate in keV of bin i out of n """ - relative_coord = i/n - hν = relative_coord*CONT_WIDTH_XᗉkeVᗆ + CONT_MIN_XᗉkeVᗆ - return math.pow(10,hν) - - - - -def powlaw_cutoff(hνᗉkeVᗆ,α,T1,T2,coefficient): - resultant = coefficient - resultant *= math.exp(-hνᗉkeVᗆ/(kᵦᗉkeVᓯKᗆ*T1)) - resultant *= math.exp(-kᵦᗉkeVᓯKᗆ*T2/hνᗉkeVᗆ) - resultant *= math.pow(hνᗉkeVᗆ,1+α) - #print(math.exp(-hνᗉkeVᗆ/(kᵦᗉkeVᓯKᗆ*T1))) - #print(-hνᗉkeVᗆ/(kᵦᗉkeVᓯKᗆ*T1)) - #print(math.exp(-kᵦᗉkeVᓯKᗆ*T2/hνᗉkeVᗆ)) - #print(math.pow(hνᗉkeVᗆ,1+α)) - #print(resultant) - #print("──────────────────────────────────────────────────────────────────────────") - return resultant - - - - - - -test_table = histogram_table(500) - -fig = plt.figure() -sed_plot = fig.add_subplot(111) -sed_plot.set_xscale("log") -sed_plot.set_yscale("log") -sed_plot.set_xlim(CONT_MIN_XᗉkeVᗆ,CONT_MAX_XᗉkeVᗆ) -sed_plot.set_ylim(1e-1,1e2) -sed_plot.set_aspect(1) -sed_plot.set_title("log-log plot of SED") - -sed_plot.plot(test_table[0],test_table[1]) - -fig.show() - -#for pair in test_table: -# print (pair[0],pair[1]) - - -# index=0 -# for energy in test_table[0]: -# print (energy,test_table[1][index]) -# index += 1 - - diff --git a/src/sed/mehdipour/sed.hpp b/src/sed/mehdipour/sed.hpp deleted file mode 100644 index 2639142..0000000 --- a/src/sed/mehdipour/sed.hpp +++ /dev/null @@ -1,303 +0,0 @@ -#ifndef sed_hpp -#define sed_hpp - - - -#include "agn.hpp" - -namespace agn { - -// Continuum domain, step size constant in log space -const double CONT_MIN_ENERGY=1e-2; // eV -const double CONT_MAX_ENERGY=1e5; // eV -const double CONT_MIN_X=log10(CONT_MIN_ENERGY); -const double CONT_MAX_X=log10(CONT_MAX_ENERGY); -const double CONT_WIDTH_X=CONT_MAX_X - CONT_MIN_X; -const double CONT_MIN_VAL=1e-35; - -// Cloudy's continuum domain, for reference, version 13.3 -const double CLOUDY_EMM = 1.001e-8; // in Rydberg -const double CLOUDY_EGAMRY = 7.354e6; // in Rydberg -const double CLOUDY_MIN_EV=CLOUDY_EMM*RYDBERG_UNIT_EV; -const double CLOUDY_MAX_EV=CLOUDY_EGAMRY*RYDBERG_UNIT_EV; - -const double IN_EV_2500A=12398.41929/2500; - -// Pulled from cloudy 17.00, first version -const double emm = 1.001e-8f; -const double egamry = 7.354e6f; - - -// SEDs are represented by 2d histogram tables. -struct sed_table { - std::string header; - table_1d value; -}; - -class sed_pow_law { -public: - // Continuum output functions - // Returns histogram with n bins evenly space in log space - sed_table histogram_table(int n); - - // Argument is photon energy in eV - double sed(double hnu); - double eval_uv(double hnu); - double eval_xray(double hnu); - - // Determined differently to be of use as the - // xray coefficient. - double SED_at_2KeV(); - - // Continuum shape arguments - double _T; //TCut - double _alpha_ox; - double _alpha_x; - double _alpha_uv; - double _cutoff_uv_rydberg; - double _cutoff_xray_rydberg; - double _log_radius_in_cm; - - // Derived values - double _cutoff_uv_eV; // IRCut - double _cutoff_xray_eV; // lowend_cutoff - double _radius_in_cm; - double _radius_in_cm_squared; - double _scaling_factor; - double _xray_coefficient; - - sed_pow_law ( - double T, - double alpha_ox, - double alpha_x, - double alpha_uv, - double cutoff_uv_rydberg, - double cutoff_xray_rydberg, - double log_radius_in_cm, - double scaling_factor = 1.0 - - // EL[e] model scaling factor - // double scaling_factor = 1.39666E44 - ); -}; - -// Returns coord in eV for given relative coord. -double hnu_at(int i,int n); - -// Takes an SED table as input and returns a string with format: -// '\t\n' for each energy-flux pair -std::string format_sed_table(sed_table table); - -// Read continuum from file with '\t\n' formatting. -// Will ignore up to 1 header. -sed_table read_sed_table(std::ifstream& table_file); - -// Does the same but converts hnu from rydberg to eV. -sed_table read_and_convert_sed_table(std::ifstream& table_file); - -// Cloudy takes the SED density as input. This function outputs -// the corresponding SED table's SED density function in the form -// of a cloudy input script "interpolate" command. -std::string cloudy_interpolate_str(sed_table SED); - -} // end namespace agn - - - - - - -agn::sed_table agn::read_sed_table(std::ifstream& table_file) { - sed_table resultant; - std::string scratch; - int current_line=0; - double hnu; - std::getline(table_file,scratch); - if(!isdigit(scratch[0])) { - resultant.header = scratch; - current_line++; - } - while(!table_file.eof()) { - table_file >> hnu; - table_file >> resultant.value[hnu]; - } -} - - -agn::sed_table agn::read_and_convert_sed_table(std::ifstream& table_file) { - sed_table resultant; - std::string scratch; - int current_line=0; - double hnu_in_ryd,hnu_in_ev,value; - std::getline(table_file,scratch); - if(!isdigit(scratch[0])) { - resultant.header = scratch; - current_line++; - } - int c=0; - while(!table_file.eof()) { - //std::cout << c; - table_file >> hnu_in_ryd; - hnu_in_ev = hnu_in_ryd*agn::RYDBERG_UNIT_EV; - table_file >> resultant.value[hnu_in_ev]; - getline(table_file,scratch); - } -} - -std::string agn::format_sed_table(agn::sed_table table) { - std::stringstream output; - if (!table.header.empty()) output << table.header; - output << std::setprecision(5); - agn::table2d::iterator table_iterator; - table_iterator=table.value.begin(); - while(table_iterator != table.value.end()) { - output - << std::fixed - << table_iterator->first - << "\t" - << std::scientific - << table_iterator->second - << "\n"; - table_iterator++; - } - return output.str(); -} - -std::string agn::cloudy_interpolate_str(agn::sed_table table) { - std::stringstream output; - agn::table2d::iterator table_iterator = table.value.begin(); - // Lead in to uv bump at slope=2 in log(energy [rydberg]) space - double energy_in_rydbergs = table_iterator->first - / agn::RYDBERG_UNIT_EV; - double log_uv_bump_start = log10( energy_in_rydbergs ); - double log_lowest_value = log10(table_iterator->second - / table_iterator->first); - double log_min_energy = log10(agn::CLOUDY_EMM) - - 1; - double log_SED_density = log_lowest_value - - 2*(log_uv_bump_start - - log_min_energy); - if ( log_SED_density < 1e-36 ) log_SED_density = 1e-36; - output - << "interpolate (" - << pow(10,log_min_energy) - << " " - << log_SED_density - << ")"; - int count=0; - - while(table_iterator != table.value.end()) { - energy_in_rydbergs = table_iterator->first - / agn::RYDBERG_UNIT_EV; - double log_SED_density = log10( table_iterator->second - / table_iterator->first); - if ((count%5)==0) output << "\n" << "continue "; - else output << " "; - output - << "(" - << energy_in_rydbergs - << " " - << log_SED_density - << ")"; - count++; - table_iterator++; - } - // Trail off at slope=-2 in log(energy [rydberg]) space - while ( energy_in_rydbergs < agn::CLOUDY_EGAMRY ) { - double log_energy = log10(energy_in_rydbergs); - energy_in_rydbergs = pow(10,log_energy+1); - log_SED_density -= 2; - output - << "(" - << energy_in_rydbergs - << " " - << log_SED_density - << ")"; - } - return output.str(); -} - - -double agn::hnu_at(int i,int n) { - double relative_coord=(double)(i)/n; - double x_coord = relative_coord*CONT_WIDTH_X + CONT_MIN_X; - return pow(10,x_coord); -} - -agn::sed_table agn::sed_pow_law::histogram_table(int n){ - agn::sed_table output; - double max=0,min=1,hnu; - for(int i=0; ised(hnu); - if (output.value[hnu] > max) max = output.value[hnu]; - if (output.value[hnu] < min) min = output.value[hnu]; - } - // Add a final point at 100 KeV - hnu = 1e5; - output.value[hnu] = this->sed(hnu); - return output; -} - -double agn::sed_pow_law::sed(double hnu) { - double magnitude=0.0; - magnitude += this->eval_uv(hnu); - magnitude += this->eval_xray(hnu); - if (magnitude < agn::CONT_MIN_VAL) return agn::CONT_MIN_VAL; - return magnitude; -} -double agn::sed_pow_law::eval_uv(double hnu) { - double bigbump_kT = _T - * agn::BOLTZMANN_CONST; - double magnitude = pow(hnu,(1+_alpha_uv)) - * exp(-(hnu)/bigbump_kT) - * exp(-(_cutoff_uv_eV/hnu)) - * _scaling_factor; - if (magnitude < agn::CONT_MIN_VAL) return agn::CONT_MIN_VAL; - return magnitude; -} -double agn::sed_pow_law::eval_xray(double hnu) { - return _xray_coefficient - * pow(hnu/2000,1+_alpha_x) - * exp(-_cutoff_xray_eV/hnu) - * _scaling_factor; -} - -double agn::sed_pow_law::SED_at_2KeV() { - double ELe_at_2500A_no_scale = eval_uv(IN_EV_2500A) - / _scaling_factor; - double energy_ratio = 2000/IN_EV_2500A; - // Returns EL[e] at 2 KeV - return ELe_at_2500A_no_scale - * pow(energy_ratio,_alpha_ox + 1); -} - -agn::sed_pow_law::sed_pow_law ( - double T, - double alpha_ox, - double alpha_x, - double alpha_uv, - double cutoff_uv_rydberg, - double cutoff_xray_rydberg, - double log_radius_in_cm, - double scaling_factor - ): - _T(T), - _alpha_ox(alpha_ox), - _alpha_x(alpha_x), - _alpha_uv(alpha_uv), - _cutoff_uv_rydberg(cutoff_uv_rydberg), - _cutoff_xray_rydberg(cutoff_xray_rydberg), - _log_radius_in_cm(log_radius_in_cm), - _scaling_factor(scaling_factor) - { - _cutoff_uv_eV = cutoff_uv_rydberg*RYDBERG_UNIT_EV; - _cutoff_xray_eV = cutoff_xray_rydberg*RYDBERG_UNIT_EV; - _radius_in_cm = pow(10,log_radius_in_cm); - _radius_in_cm_squared = _radius_in_cm*_radius_in_cm; - _xray_coefficient = agn::sed_pow_law::SED_at_2KeV(); -} - - - -#endif \ No newline at end of file diff --git a/src/sed/mehdipour/spectrum b/src/sed/mehdipour/spectrum deleted file mode 100644 index a7612c7..0000000 --- a/src/sed/mehdipour/spectrum +++ /dev/null @@ -1,501 +0,0 @@ -0.001 1e-35 -0.0010232929922807535 1e-35 -0.0010471285480508996 1e-35 -0.001071519305237606 1e-35 -0.0010964781961431851 1e-35 -0.001122018454301963 1e-35 -0.0011481536214968829 1e-35 -0.001174897554939529 1e-35 -0.001202264434617413 1e-35 -0.0012302687708123812 1e-35 -0.0012589254117941675 1e-35 -0.0012882495516931337 1e-35 -0.0013182567385564075 1e-35 -0.0013489628825916532 1e-35 -0.0013803842646028853 1e-35 -0.001412537544622754 1e-35 -0.001445439770745928 1e-35 -0.0014791083881682072 1e-35 -0.0015135612484362087 1e-35 -0.0015488166189124811 1e-35 -0.001584893192461114 1e-35 -0.0016218100973589297 1e-35 -0.0016595869074375598 1e-35 -0.0016982436524617442 1e-35 -0.0017378008287493763 1e-35 -0.0017782794100389228 1e-35 -0.0018197008586099826 1e-35 -0.0018620871366628676 1e-35 -0.0019054607179632482 1e-35 -0.0019498445997580456 1e-35 -0.001995262314968879 1e-35 -0.0020417379446695297 1e-35 -0.0020892961308540386 1e-35 -0.0021379620895022326 1e-35 -0.002187761623949552 1e-35 -0.00223872113856834 1e-35 -0.0022908676527677724 1e-35 -0.0023442288153199225 1e-35 -0.00239883291901949 1e-35 -0.002454708915685031 1e-35 -0.0025118864315095794 1e-35 -0.0025703957827688645 1e-35 -0.0026302679918953813 1e-35 -0.002691534803926914 1e-35 -0.002754228703338166 1e-35 -0.002818382931264455 1e-35 -0.0028840315031266055 1e-35 -0.0029512092266663842 1e-35 -0.003019951720402016 1e-35 -0.003090295432513592 1e-35 -0.0031622776601683794 1e-35 -0.003235936569296281 1e-35 -0.003311311214825911 1e-35 -0.0033884415613920273 1e-35 -0.0034673685045253167 1e-35 -0.0035481338923357532 1e-35 -0.003630780547701014 1e-35 -0.003715352290971728 1e-35 -0.0038018939632056127 1e-35 -0.003890451449942805 1e-35 -0.003981071705534973 1e-35 -0.004073802778041126 1e-35 -0.004168693834703355 1e-35 -0.004265795188015926 1e-35 -0.004365158322401661 1e-35 -0.0044668359215096305 1e-35 -0.004570881896148752 1e-35 -0.004677351412871981 1e-35 -0.004786300923226385 1e-35 -0.004897788193684461 1e-35 -0.005011872336272725 1e-35 -0.005128613839913648 1e-35 -0.005248074602497723 1e-35 -0.005370317963702527 1e-35 -0.005495408738576248 1e-35 -0.005623413251903491 1e-35 -0.005754399373371567 1e-35 -0.00588843655355589 1e-35 -0.0060255958607435805 1e-35 -0.006165950018614822 1e-35 -0.00630957344480193 1e-35 -0.006456542290346556 1e-35 -0.006606934480075964 1e-35 -0.006760829753919818 1e-35 -0.006918309709189363 1e-35 -0.00707945784384138 1e-35 -0.007244359600749898 1e-35 -0.007413102413009177 1e-35 -0.007585775750291836 1e-35 -0.007762471166286911 1e-35 -0.007943282347242814 1e-35 -0.008128305161640995 1e-35 -0.008317637711026709 1e-35 -0.008511380382023759 1e-35 -0.008709635899560805 1e-35 -0.008912509381337459 1e-35 -0.009120108393559097 1e-35 -0.009332543007969905 1e-35 -0.009549925860214359 1e-35 -0.009772372209558112 1e-35 -0.01 1e-35 -0.010232929922807542 1e-35 -0.010471285480508996 1e-35 -0.010715193052376065 1e-35 -0.01096478196143185 1e-35 -0.011220184543019636 1e-35 -0.01148153621496883 1e-35 -0.011748975549395297 1e-35 -0.012022644346174132 1e-35 -0.012302687708123818 1e-35 -0.012589254117941675 1.3996479694365586e-35 -0.012882495516931342 8.270588387595168e-35 -0.013182567385564075 4.686869718494287e-34 -0.01348962882591654 2.5495183758866658e-33 -0.013803842646028852 1.3324555672404638e-32 -0.014125375446227547 6.69650156124801e-32 -0.01445439770745928 3.2390389883990527e-31 -0.01479108388168208 1.5091097908171951e-30 -0.01513561248436208 6.77823828047859e-30 -0.01548816618912481 2.937315521425098e-29 -0.015848931924611134 1.229023903677627e-28 -0.0162181009735893 4.96908168781093e-28 -0.016595869074375606 1.9427648570657324e-27 -0.016982436524617443 7.35033495487743e-27 -0.017378008287493755 2.6930458296420804e-26 -0.01778279410038923 9.561578992892138e-26 -0.018197008586099836 3.291978943924586e-25 -0.018620871366628676 1.0997937687327044e-24 -0.019054607179632473 3.567553707485399e-24 -0.019498445997580455 1.1243624803203092e-23 -0.0199526231496888 3.444955292838125e-23 -0.020417379446695295 1.0267403190419972e-22 -0.020892961308540396 2.978443886444978e-22 -0.021379620895022326 8.414257076941903e-22 -0.02187761623949553 2.316217559426091e-21 -0.0223872113856834 6.216040568787896e-21 -0.022908676527677734 1.6272230934438987e-20 -0.023442288153199226 4.157203175385443e-20 -0.02398832919019491 1.037033554390446e-19 -0.02454708915685031 2.527160323920646e-19 -0.025118864315095808 6.019034683630338e-19 -0.025703957827688632 1.4017653709182508e-18 -0.026302679918953815 3.1935479048228853e-18 -0.026915348039269153 7.120513330808699e-18 -0.02754228703338166 1.5544405019374462e-17 -0.028183829312644536 3.323855537770272e-17 -0.028840315031266057 6.964516155528575e-17 -0.029512092266663854 1.4305116343583793e-16 -0.03019951720402016 2.881441107018318e-16 -0.030902954325135904 5.693873153980269e-16 -0.03162277660168379 1.1041876398087576e-15 -0.03235936569296283 2.1021711242266972e-15 -0.03311311214825911 3.930358212034185e-15 -0.033884415613920256 7.219044298575817e-15 -0.034673685045253165 1.3030207068668043e-14 -0.03548133892335755 2.311976844535101e-14 -0.03630780547701014 4.033748022821911e-14 -0.03715352290971726 6.922386914347113e-14 -0.038018939632056124 1.1688255134455832e-13 -0.03890451449942807 1.942277841488844e-13 -0.039810717055349734 3.177301022377131e-13 -0.04073802778041128 5.118050485325646e-13 -0.04168693834703355 8.120079354581276e-13 -0.04265795188015928 1.2692065385883532e-12 -0.04365158322401661 1.9548976487697138e-12 -0.04466835921509633 2.967805516254491e-12 -0.04570881896148752 4.441843010381999e-12 -0.046773514128719836 6.555422864803426e-12 -0.04786300923226385 9.541971463194307e-12 -0.04897788193684464 1.3701319235101568e-11 -0.05011872336272725 1.9411422705668308e-11 -0.05128613839913651 2.713962278441181e-11 -0.05248074602497723 3.745237873994417e-11 -0.05370317963702527 5.1022162257801555e-11 -0.05495408738576243 6.862998325765646e-11 -0.05623413251903491 9.116188665618086e-11 -0.057543993733715666 1.1959774736453685e-10 -0.0588843655355589 1.5499083779831052e-10 -0.060255958607435746 1.984369787187912e-10 -0.06165950018614822 2.510326273124928e-10 -0.0630957344480193 3.1382200360394453e-10 -0.06456542290346556 3.8773428111463193e-10 -0.06606934480075957 4.735129171793244e-10 -0.06760829753919818 5.716402935905871e-10 -0.06918309709189363 6.822618784025435e-10 -0.0707945784384138 8.051149896910117e-10 -0.07244359600749899 9.39467823519304e-10 -0.07413102413009177 1.0840745931609151e-09 -0.07585775750291836 1.2371523312028086e-09 -0.07762471166286919 1.3963840850430572e-09 -0.07943282347242814 1.5589518929887134e-09 -0.08128305161640995 1.7216011213346151e-09 -0.08317637711026708 1.8807355866092624e-09 -0.08511380382023767 2.0325405447914e-09 -0.08709635899560805 2.1731282998801223e-09 -0.08912509381337459 2.2986990842106615e-09 -0.09120108393559097 2.4057082037586527e-09 -0.09332543007969915 2.4910294061764307e-09 -0.09549925860214359 2.5521041498216867e-09 -0.09772372209558111 2.587066993222519e-09 -0.1 2.5948386728995015e-09 -0.10232929922807547 2.575180500105021e-09 -0.10471285480508996 2.528706318336725e-09 -0.10715193052376071 2.4568512014159055e-09 -0.1096478196143185 2.361799080546359e-09 -0.1122018454301963 2.246374304867694e-09 -0.1148153621496883 2.113904520619545e-09 -0.11748975549395291 1.968064001474688e-09 -0.12022644346174131 1.8127075441364575e-09 -0.1230268770812381 1.6517052030269713e-09 -0.12589254117941676 1.4887874997683055e-09 -0.12882495516931336 1.3274094050272717e-09 -0.13182567385564073 1.1706395100544199e-09 -0.13489628825916533 1.0210785811529965e-09 -0.13803842646028852 8.808093380610489e-10 -0.1412537544622754 7.513770267652624e-10 -0.1445439770745928 6.33798352017303e-10 -0.1479108388168207 5.285947356327267e-10 -0.15135612484362088 4.358447618373043e-10 -0.1548816618912481 3.5525009307994924e-10 -0.15848931924611143 2.862090689151862e-10 -0.16218100973589297 2.2789257281885011e-10 -0.16595869074375613 1.79317471386279e-10 -0.16982436524617442 1.3941388375889464e-10 -0.17378008287493762 1.0708360902930806e-10 -0.1778279410038923 8.124811700436344e-11 -0.18197008586099844 6.088550225309452e-11 -0.18620871366628675 4.505664596575927e-11 -0.19054607179632482 3.292148422128933e-11 -0.19498445997580455 2.3746729602152994e-11 -0.19952623149688808 1.6906642405883577e-11 -0.20417379446695297 1.1878521424425692e-11 -0.2089296130854041 8.234516676141156e-12 -0.21379620895022325 5.6311968800517345e-12 -0.2187761623949554 3.798072102037078e-12 -0.22387211385683378 2.5260121648710612e-12 -0.22908676527677724 1.6562428798766963e-12 -0.23442288153199228 1.0703659887732308e-12 -0.239883291901949 6.816481705533256e-13 -0.24547089156850285 4.2766584329980625e-13 -0.25118864315095796 2.6427638803007737e-13 -0.25703957827688645 1.6080937186127808e-13 -0.26302679918953814 9.632736554301501e-14 -0.2691534803926914 5.6787907956332455e-14 -0.2754228703338166 3.29388752593895e-14 -0.2818382931264455 1.8792453319028872e-14 -0.28840315031266056 1.054268710470452e-14 -0.2951209226666384 5.814062644134074e-15 -0.3019951720402016 3.1508819598434147e-15 -0.30902954325135923 1.677521388861027e-15 -0.31622776601683794 8.770874187336641e-16 -0.3235936569296281 4.502023813394213e-16 -0.3311311214825911 2.2678260915331503e-16 -0.33884415613920277 1.1207052186782802e-16 -0.34673685045253166 5.4311394033068657e-17 -0.3548133892335753 2.5801332772845348e-17 -0.3630780547701014 1.2010859965334827e-17 -0.3715352290971728 5.476603553191455e-18 -0.38018939632056126 2.444969439940952e-18 -0.3890451449942805 1.0682559661573058e-18 -0.3981071705534973 4.565904734324759e-19 -0.407380277804113 1.9082391186568624e-19 -0.41686938347033553 7.794581613449174e-20 -0.42657951880159256 3.1102926232515327e-20 -0.4365158322401661 1.2118450663658595e-20 -0.4466835921509635 4.608014533984292e-21 -0.4570881896148752 1.70914673499978e-21 -0.4677351412871981 6.180388513252975e-22 -0.47863009232263853 2.1776567333421397e-22 -0.48977881936844664 7.472408687024307e-23 -0.5011872336272725 2.4956494949825537e-23 -0.5128613839913648 8.107861938716106e-24 -0.5248074602497729 2.560769685036931e-24 -0.5370317963702532 7.857986072002221e-25 -0.5495408738576248 2.3412999115812987e-25 -0.5623413251903491 6.769079540073872e-26 -0.5754399373371573 1.897770730559601e-26 -0.5888436553555896 5.155931399260007e-27 -0.6025595860743581 1.3565013767056107e-27 -0.6165950018614822 3.453632609113776e-28 -0.6309573444801936 8.5027680056385e-29 -0.6456542290346563 2.022789078916929e-29 -0.6606934480075958 4.646402537358794e-30 -0.6760829753919811 1.0297240039824094e-30 -0.6918309709189363 2.1999670471056836e-31 -0.7079457843841374 4.527390700191154e-32 -0.7244359600749899 8.967114922110128e-33 -0.7413102413009169 1.7078831203715665e-33 -0.7585775750291835 3.125236440976627e-34 -0.7762471166286912 5.489545560621661e-35 -0.7943282347242814 1e-35 -0.8128305161640986 1e-35 -0.8317637711026709 1e-35 -0.8511380382023759 1e-35 -0.8709635899560806 1e-35 -0.891250938133745 1e-35 -0.9120108393559097 1e-35 -0.9332543007969905 1e-35 -0.9549925860214359 1e-35 -0.9772372209558101 1e-35 -1.0 1e-35 -1.0232929922807537 1e-35 -1.0471285480508996 1e-35 -1.071519305237606 1e-35 -1.096478196143185 1e-35 -1.122018454301963 1e-35 -1.1481536214968828 1e-35 -1.174897554939529 1e-35 -1.2022644346174132 1e-35 -1.2302687708123812 1e-35 -1.2589254117941675 1e-35 -1.2882495516931336 1e-35 -1.3182567385564075 1e-35 -1.3489628825916533 1e-35 -1.3803842646028852 1e-35 -1.412537544622754 1e-35 -1.4454397707459279 1e-35 -1.4791083881682072 1e-35 -1.5135612484362087 1e-35 -1.5488166189124812 1e-35 -1.584893192461114 1e-35 -1.6218100973589298 1e-35 -1.6595869074375613 1e-35 -1.6982436524617444 1e-35 -1.7378008287493762 1e-35 -1.7782794100389228 1e-35 -1.8197008586099843 1e-35 -1.8620871366628675 1e-35 -1.9054607179632483 1e-35 -1.9498445997580456 1e-35 -1.9952623149688808 1e-35 -2.0417379446695296 1e-35 -2.089296130854041 1e-35 -2.1379620895022327 1e-35 -2.187761623949554 1e-35 -2.23872113856834 1e-35 -2.290867652767775 1e-35 -2.344228815319923 1e-35 -2.398832919019492 1e-35 -2.454708915685031 1e-35 -2.5118864315095824 1e-35 -2.570395782768865 1e-35 -2.630267991895384 1e-35 -2.691534803926917 1e-35 -2.754228703338163 1e-35 -2.818382931264452 1e-35 -2.8840315031266055 1e-35 -2.951209226666384 1e-35 -3.019951720402013 1e-35 -3.0902954325135887 1e-35 -3.1622776601683795 1e-35 -3.235936569296281 1e-35 -3.3113112148259076 1e-35 -3.388441561392024 1e-35 -3.4673685045253166 1e-35 -3.5481338923357533 1e-35 -3.63078054770101 1e-35 -3.715352290971724 1e-35 -3.801893963205613 1e-35 -3.890451449942805 1e-35 -3.981071705534969 1e-35 -4.073802778041126 1e-35 -4.168693834703355 1e-35 -4.265795188015925 1e-35 -4.365158322401657 1e-35 -4.46683592150963 1e-35 -4.570881896148752 1e-35 -4.677351412871981 1e-35 -4.7863009232263805 1e-35 -4.897788193684462 1e-35 -5.011872336272725 1e-35 -5.1286138399136485 1e-35 -5.248074602497723 1e-35 -5.370317963702527 1e-35 -5.4954087385762485 1e-35 -5.623413251903491 1e-35 -5.754399373371567 1e-35 -5.88843655355589 1e-35 -6.025595860743581 1e-35 -6.165950018614822 1e-35 -6.30957344480193 1e-35 -6.456542290346556 1e-35 -6.606934480075965 1e-35 -6.760829753919819 1e-35 -6.918309709189363 1e-35 -7.07945784384138 1e-35 -7.244359600749906 1e-35 -7.413102413009177 1e-35 -7.585775750291836 1e-35 -7.76247116628692 1e-35 -7.943282347242821 1e-35 -8.128305161640995 1e-35 -8.317637711026709 1e-35 -8.511380382023768 1e-35 -8.709635899560814 1e-35 -8.91250938133746 1e-35 -9.120108393559097 1e-35 -9.332543007969914 1e-35 -9.549925860214369 1e-35 -9.772372209558112 1e-35 -10.0 1e-35 -10.232929922807536 1e-35 -10.471285480509007 1e-35 -10.71519305237607 1e-35 -10.964781961431852 1e-35 -11.220184543019652 1e-35 -11.481536214968841 1e-35 -11.74897554939528 1e-35 -12.02264434617413 1e-35 -12.30268770812381 1e-35 -12.589254117941662 1e-35 -12.882495516931323 1e-35 -13.182567385564074 1e-35 -13.489628825916533 1e-35 -13.803842646028839 1e-35 -14.125375446227526 1e-35 -14.45439770745928 1e-35 -14.791083881682072 1e-35 -15.135612484362072 1e-35 -15.488166189124795 1e-35 -15.848931924611142 1e-35 -16.218100973589298 1e-35 -16.595869074375596 1e-35 -16.982436524617427 1e-35 -17.378008287493763 1e-35 -17.78279410038923 1e-35 -18.197008586099827 1e-35 -18.620871366628656 1e-35 -19.054607179632484 1e-35 -19.498445997580454 1e-35 -19.952623149688787 1e-35 -20.417379446695275 1e-35 -20.892961308540407 1e-35 -21.379620895022324 1e-35 -21.87761623949552 1e-35 -22.38721138568338 1e-35 -22.90867652767775 1e-35 -23.442288153199225 1e-35 -23.9883291901949 1e-35 -24.547089156850287 1e-35 -25.11886431509582 1e-35 -25.703957827688647 1e-35 -26.302679918953814 1e-35 -26.91534803926914 1e-35 -27.54228703338169 1e-35 -28.18382931264455 1e-35 -28.84031503126606 1e-35 -29.51209226666384 1e-35 -30.199517204020193 1e-35 -30.90295432513592 1e-35 -31.622776601683793 1e-35 -32.35936569296281 1e-35 -33.11311214825915 1e-35 -33.884415613920275 1e-35 -34.673685045253166 1e-35 -35.481338923357534 1e-35 -36.30780547701018 1e-35 -37.15352290971728 1e-35 -38.018939632056124 1e-35 -38.904514499428046 1e-35 -39.81071705534978 1e-35 -40.7380277804113 1e-35 -41.68693834703355 1e-35 -42.65795188015925 1e-35 -43.651583224016655 1e-35 -44.668359215096345 1e-35 -45.708818961487516 1e-35 -46.77351412871981 1e-35 -47.8630092322639 1e-35 -48.97788193684456 1e-35 -50.118723362727145 1e-35 -51.28613839913648 1e-35 -52.48074602497723 1e-35 -53.703179637025215 1e-35 -54.954087385762485 1e-35 -56.23413251903491 1e-35 -57.543993733715666 1e-35 -58.88436553555884 1e-35 -60.25595860743569 1e-35 -61.65950018614822 1e-35 -63.0957344480193 1e-35 -64.56542290346549 1e-35 -66.06934480075964 1e-35 -67.60829753919819 1e-35 -69.18309709189363 1e-35 -70.79457843841374 1e-35 -72.44359600749891 1e-35 -74.13102413009177 1e-35 -75.85775750291836 1e-35 -77.62471166286912 1e-35 -79.43282347242821 1e-35 -81.28305161640995 1e-35 -83.17637711026708 1e-35 -85.11380382023759 1e-35 -87.09635899560796 1e-35 -89.12509381337459 1e-35 -91.20108393559097 1e-35 -93.32543007969905 1e-35 -95.49925860214368 1e-35 -97.72372209558111 1e-35 -100.0 1e-35