"""
Contains utilities for color manipulation and conversion
Copyright Schrodinger, LLC. All rights reserved.
"""
import math
from scipy import constants
from scipy import interpolate
from schrodinger.math import mathutils
[docs]def get_distance(point_1, point_2):
"""
Get the distance between points 1 and 2. Accepts points as arbitrary-length
lists or tuples and calculates the distance between them.
:param point_1: The first point
:type point_1: list or tuple
:param point_2: The second point
:type point_2: list or tuple
:rtype: float
:return: The distance between the two points
"""
squares = [(point_1[i] - point_2[i])**2 for i in range(len(point_1))]
dist = math.sqrt(sum(squares))
return dist
[docs]def luminance_level(color_tuple):
"""
Returns the luminance level of an RGB color tuple. Grabbed from the web, it
is supposedly used to convert color TV to B&W. Luminance runs from 0 to X,
where X is the upper limit of a color_tuple value (typically 255 or 65535).
One place this algorithm is found is in the W3C accessibility working draft
for color contrast in webpages.
:param tuple color_tuple: The color's RGB as a tuple
:rtype: float
:return: The luminance of the color
"""
luminance = color_tuple[0] * 0.30 + color_tuple[1] * 0.59 + color_tuple[
2] * 0.11
return luminance
[docs]def color_distance(color1_rgb, color2_rgb):
"""
Calculates the distance in u'v' space between two colors
:param tuple color1_rgb: The RGB tuple of color 1
:param tuple color2_rgb: The RGB tuple of color 2
:rtype: float
:return: The distance between the two colors in u'v' space
"""
def get_upvp(color_rgb):
ciexyz = web_cie_to_rgb(color_rgb, xyz_to_rgb=False)
cie_sum = ciexyz[0] + ciexyz[1] + ciexyz[2]
try:
ciex = ciexyz[0] / cie_sum
ciey = ciexyz[1] / cie_sum
except ZeroDivisionError:
ciex = ciey = 0
cieup, cievp = ciexy_to_upvp(ciex, ciey)
return (cieup, cievp)
upvp1 = get_upvp(color1_rgb)
upvp2 = get_upvp(color2_rgb)
distance = get_distance(upvp1, upvp2)
return distance
[docs]def ciexy_to_upvp(ciex, ciey):
"""
Converts CIE(x,y) to CIE(u'v'), returns CIEu' and CIEv'. Note that u'v' are
from the CIELUV color space (1976).
:param float ciex: CIE's x component
:param float ciey: CIE's y component
:rtype: float, float
:return: CIEu' and CIEv'
"""
denom = -2 * ciex + 12 * ciey + 3
try:
cieup = 4 * ciex / denom
cievp = 9 * ciey / denom
except ArithmeticError:
cieup = cievp = 0
return cieup, cievp
[docs]def web_cie_to_rgb(color_tuple, whitepoint=(0.333, 0.333), xyz_to_rgb=True):
"""
Converts CIEx,y,z data to RGB values if xyz_to_rgb is True. If false, the
other way around.
:param tuple color_tuple: CIEx,y,z or RGB tuple for the color
:param tuple whitepoint: CIEx,y for white
:param bool xyz_to_rgb: Whether CIEx,y,z should be converted to RGB or
the other way around
:rtype: tuple
:return: Converted CIEx,y,z or RGB tuple for the color
"""
# NTSC Primaries
CIE_x_r = 0.670
CIE_y_r = 0.330
CIE_x_g = 0.210
CIE_y_g = 0.710
CIE_x_b = 0.140
CIE_y_b = 0.080
# White point
CIE_x_w = whitepoint[0]
CIE_y_w = whitepoint[1]
CIE_D = (CIE_x_r * (CIE_y_g - CIE_y_b) + CIE_x_g * (CIE_y_b - CIE_y_r) +
CIE_x_b * (CIE_y_r - CIE_y_g))
CIE_C_rD = ((1.0 / CIE_y_w) *
(CIE_x_w * (CIE_y_g - CIE_y_b) - CIE_y_w *
(CIE_x_g - CIE_x_b) + CIE_x_g * CIE_y_b - CIE_x_b * CIE_y_g))
CIE_C_gD = ((1. / CIE_y_w) *
(CIE_x_w * (CIE_y_b - CIE_y_r) - CIE_y_w *
(CIE_x_b - CIE_x_r) - CIE_x_r * CIE_y_b + CIE_x_b * CIE_y_r))
CIE_C_bD = ((1. / CIE_y_w) *
(CIE_x_w * (CIE_y_r - CIE_y_g) - CIE_y_w *
(CIE_x_r - CIE_x_g) + CIE_x_r * CIE_y_g - CIE_x_g * CIE_y_r))
xyz2rgbmat = \
[[(CIE_y_g - CIE_y_b - CIE_x_b*CIE_y_g + CIE_y_b*CIE_x_g)/CIE_C_rD,
(CIE_x_b - CIE_x_g - CIE_x_b*CIE_y_g + CIE_x_g*CIE_y_b)/CIE_C_rD,
(CIE_x_g*CIE_y_b - CIE_x_b*CIE_y_g)/CIE_C_rD],
[(CIE_y_b - CIE_y_r - CIE_y_b*CIE_x_r + CIE_y_r*CIE_x_b)/CIE_C_gD,
(CIE_x_r - CIE_x_b - CIE_x_r*CIE_y_b + CIE_x_b*CIE_y_r)/CIE_C_gD,
(CIE_x_b*CIE_y_r - CIE_x_r*CIE_y_b)/CIE_C_gD],
[(CIE_y_r - CIE_y_g - CIE_y_r*CIE_x_g + CIE_y_g*CIE_x_r)/CIE_C_bD,
(CIE_x_g - CIE_x_r - CIE_x_g*CIE_y_r + CIE_x_r*CIE_y_g)/CIE_C_bD,
(CIE_x_r*CIE_y_g - CIE_x_g*CIE_y_r)/CIE_C_bD]]
rgb2xyzmat = \
[[CIE_x_r*CIE_C_rD/CIE_D, CIE_x_g*CIE_C_gD/CIE_D,
CIE_x_b*CIE_C_bD/CIE_D],
[CIE_y_r*CIE_C_rD/CIE_D, CIE_y_g*CIE_C_gD/CIE_D,
CIE_y_b*CIE_C_bD/CIE_D],
[(1.-CIE_x_r-CIE_y_r)*CIE_C_rD/CIE_D,
(1.-CIE_x_g-CIE_y_g)*CIE_C_gD/CIE_D,
(1.-CIE_x_b-CIE_y_b)*CIE_C_bD/CIE_D]]
color = []
if xyz_to_rgb:
for i in range(0, 3):
color.append(xyz2rgbmat[i][0] * color_tuple[0] +
xyz2rgbmat[i][1] * color_tuple[1] +
xyz2rgbmat[i][2] * color_tuple[2])
if color[-1] < 0.0:
color[-1] = 0.0
else:
for i in range(0, 3):
color.append(rgb2xyzmat[i][0] * color_tuple[0] +
rgb2xyzmat[i][1] * color_tuple[1] +
rgb2xyzmat[i][2] * color_tuple[2])
return color
[docs]def calculate_ciexy(x_vals, y_vals):
"""
Calculates the CIE coordinates of the passed x and y data.
:param list x_vals: X values of the spectrum
:param list y_vals: Y values of the spectrum
:rtype: tuple
:return: Tuple containing CIEx, CIEy, CIEX, CIEY and CIEZ
"""
cie_bigx = 0
cie_bigy = 0
cie_bigz = 0
for x_val, y_val in zip(x_vals, y_vals):
cie_bigx += y_val * CIEXY_FUNCTIONS[x_val][0]
cie_bigy += y_val * CIEXY_FUNCTIONS[x_val][1]
cie_bigz += y_val * CIEXY_FUNCTIONS[x_val][2]
cie_sum = cie_bigx + cie_bigy + cie_bigz
if cie_sum != 0:
cie_x = cie_bigx / cie_sum
cie_y = cie_bigy / cie_sum
else:
cie_x = cie_y = 0
return (cie_x, cie_y, cie_bigx, cie_bigy, cie_bigz)
[docs]def calculate_nits(x_vals, y_vals):
"""
Calculates and returns Candelas/m2 assuming x_vals is in nm and y_vals is in
W-Light/Sr/m2
:param list x_vals: X values of the spectrum
:param list y_vals: Y values of the spectrum
:rtype: float
:return: The nits of the spectrum
"""
sum = 0
for xval, yval in zip(x_vals, y_vals):
# 1 W/sr = 683 candela at 555 nm, and multiplying by the photoptic
# response curve accounts for the other wavelengths.
sum += 683.002 * yval * PHOTOPIC_RESPONSE_CURVE[xval]
return sum
[docs]def color_temperature(cie_x, cie_y):
"""
Calculates the correlated color temperature (CCT) from CIEx and CIEy values
:param float cie_x: The CIEx value of the spectrum
:param float cie_y: The CIEy value of the spectrum
:rtype: float, bool
:return: CCT and a boolean that tells whether CCT falls within the required
tolerance (0.05 in CIE1960 uv space) for valid CCT
"""
# CCT(x,y) = A0 + A1exp( - n / t1) + A2exp( - n / t2) + A3exp( - n / t3)
# n = (x - xe) / (y - ye)
# from http://en.wikipedia.org/wiki/Color_temperature which gets it from
# https://www.usna.edu/Users/oceano/raylee/papers/RLee_AO_CCTpaper.pdf
def calc_cct(cct_range=1):
if cie_x == 0 and cie_y == 0:
return 0.0
try:
n_val = (cie_x - x_e) / (cie_y - y_e)
if cct_range == 1:
cct = (A_0 + A_1 * math.exp(-n_val / t_1) +
A_2 * math.exp(-n_val / t_2) +
A_3 * math.exp(-n_val / t_3))
elif cct_range == 2:
cct = (A_0 + A_1 * math.exp(-n_val / t_1) +
A_2 * math.exp(-n_val / t_2))
elif cct_range == 0:
cct = A_0 + A_1 * math.exp(-n_val / t_1)
except ArithmeticError:
cct = 0.0
return cct
valid = False
x_e = 0.3366
y_e = 0.1735
A_0 = -949.86315
A_1 = 6253.80338
t_1 = 0.92159
A_2 = 28.70599
t_2 = 0.20039
A_3 = 0.00004
t_3 = 0.07125
cct = calc_cct()
if cct > 50000:
x_e = 0.3356
y_e = 0.1691
A_0 = 36284.48953
A_1 = 0.00228
t_1 = 0.07861
A_2 = 5.4535e-36
t_2 = 0.01543
cct = calc_cct(cct_range=2)
elif cct < 3000:
# The extrapolation above is only valid for cct > 3000.
# this part was added to extend the range to 1000-3000
x_e = 0.27656005
y_e = -0.238113052
A_0 = 285.811472
A_1 = 6227.771238
t_1 = 0.296185537
cct = calc_cct(cct_range=0)
if cct:
valid = distance_from_planckian(cie_x, cie_y, cct=cct) <= 0.05
return max(cct, 0), valid
[docs]def distance_from_planckian(cie_x, cie_y, cct=None):
"""
Determines the distance of the point (cie_x, cie_y) from the Planckian locus
in CIE 1960 uv space.
If the correlated color temperature of cie_x, cie_y is known, it can be
supplied as cct, otherwise it is calculated.
:param float cie_x: The CIEx value of the spectrum
:param float cie_y: The CIEy value of the spectrum
:type cct: float or None
:param cct: Correlated color temperature of the spectrum
:rtype: float
:return: Distance from the Planckian locus
"""
if cct is None:
cct, valid = color_temperature(cie_x, cie_y)
if cct:
cie_uv = ciexy_to_cie1960uv(cie_x, cie_y)
plank_x, plank_y = planckian_locus(cct)
plank_uv = ciexy_to_cie1960uv(plank_x, plank_y)
dist = get_distance(cie_uv, plank_uv)
else:
dist = 1.
return dist
[docs]def ciexy_to_cie1960uv(cie_x, cie_y):
"""
Converts cie(x,y) to cie(uv).
:param float cie_x: The CIEx value of the spectrum
:param float cie_y: The CIEy value of the spectrum
:rtype: float, float
:return: CIEu, CIEv of the spectrum. Note that u'v' are from the 1960 USC
color space.
"""
denom = -2 * cie_x + 12 * cie_y + 3
try:
cie_u = 4 * cie_x / denom
cie_v = 6 * cie_y / denom
except ArithmeticError:
cie_u = cie_v = 0
return cie_u, cie_v
[docs]def planckian_locus(temperature=None, delta=50):
""""
If temperature is given, returns the CIEx and CIEy values of the Planckian
locus at that temperature. If temperature is not given, returns a list of
(color, (CIEx, CIEy)) tuples of the Planckian locus from 1000K to 25000K
at every `delta` CCT degrees.
:type temperature: float or None
:param temperature: The temperature to get CIEx and CIEy values at
:param int delta: The temperature step between each (CIEx, CIEy) tuple if
temperature is not provided
:rtype: tuple or list
:return: CIEx and CIEy at the given temperature, or a list of
(color, (CIEx, CIEy)) tuples
"""
# The original calculations are only valid from 1667K to 25000K, and come
# from http://en.wikipedia.org/wiki/Planckian_locus and originally from J of
# the Korean Physical Society 41 (6): 865-871.
# The data from 1000 to 11000K have been refit, allowing for a much higher
# accuracy in this temperature range. Data above 11000K use the fit from the
# original paper.
def planckian_point(temp):
if temp >= 1000 and temp <= 25000:
n_val = temp / 1000.
n_2 = n_val**2
n_3 = n_2 * n_val
if temp <= 3950:
cie_x = 0.01701 * n_2 - 0.1736 * n_val + 0.8062
cie_y = 0.009607 * n_3 - 0.09589 * n_2 + 0.2896 * n_val + 0.1446
elif temp > 3950 and temp <= 11000:
cie_x = (-0.0003308 * n_3 + 0.009664 * n_2 - 0.1001 * n_val +
0.6485)
cie_y = (-0.0001414 * n_3 + 0.004805 * n_2 - 0.06058 * n_val +
0.5566)
else:
try:
cie_x = (-3.0258469 / n_3 + 2.1070379 / n_2 +
0.2226347 / n_val + 0.24039)
cie_y = (3.081758 * (cie_x**3) - 5.8733867 * (cie_x**2) +
3.75112997 * cie_x - 0.37001483)
except ZeroDivisionError:
cie_x = cie_y = 0
else:
cie_x = cie_y = 0
return cie_x, cie_y
# temperature might be 0, and then we want just the point at 0
if temperature is not None:
return planckian_point(temperature)
else:
step = max(int(delta), 1)
plank_list = []
for atemp in range(1000, 25000, step):
plank_list.append((atemp, planckian_point(atemp)))
return plank_list
[docs]def get_gamut_area(cie_pairs, xy_space=True):
"""
Calculates the area of the triangle formed by the provided CIEx,y pairs.
:param tuple cie_pairs: Tuple of three (CIEx, CIEy) pairs
:param bool xy_space: Whether the CIE is given and the gamut is returned in
the x,y space, or the u'v' space
:rtype: float
:return: The area of triangle formed by the cie pairs
"""
# Area of triangle given a,b,c = sqrt([s(s-a)(s-b)(s-c)]) when s = (a+b+c)/2
a_val = get_distance(cie_pairs[0], cie_pairs[1])
b_val = get_distance(cie_pairs[1], cie_pairs[2])
c_val = get_distance(cie_pairs[2], cie_pairs[0])
s_val = (a_val + b_val + c_val) / 2
area = (s_val * (s_val - a_val) * (s_val - b_val) * (s_val - c_val))**0.5
if xy_space:
gamut = 100 * area / 0.1582
else:
gamut = 100 * area / 0.07407
return gamut
[docs]def calculate_cri(intensities, cct=None):
"""
Calculates the CIE Color Rendering Index of the spectrum. Calculates cct if
it is not supplied.
:param list intensities: Spectrum intensities from 400-700 nm in arbitrary
units.
:type cct: float or None
:param cct: Correlated color temperature
:rtype: int, bool
:return: CRI and a boolean that tells whether CRI falls within the required
tolerance
"""
# This procedure comes from CIE Technical Report CIE 13.3-1995.
# Throughout this procedure, the following variable prefixes mean:
# test = the input light spectrum to be tested
# ref = the reference light spectrum:
# Planckian (black body) radiator for test CCT < 5000 and
# daylight (illuminant D) for CCT >= 5000 to 25000K
# shifted = the reflection of a Munsell test patch under the test light
# spectrum
# refpatch = the reflection of a Munsell test patch under the reference
# light spectrum
def calc_c_and_d(cie_u, cie_v):
# This is formula 5.4
try:
c_val = (4.0 - cie_u - 10 * cie_v) / cie_v
d_val = (1.708 * cie_v + 0.404 - 1.481 * cie_u) / cie_v
except ZeroDivisionError:
c_val = 0.0
d_val = 0.0
return c_val, d_val
def calc_upki_vpki(ref_c, ref_d, test_c, test_d, shifted_c, shifted_d):
# This is equation 5-3
c_constant = shifted_c * ref_c / test_c
d_constant = shifted_d * ref_d / test_d
denominator = (16.518 + 1.481 * c_constant - d_constant)
try:
upki = (10.872 + 0.404 * c_constant -
4.0 * d_constant) / denominator
vpki = 5.520 / denominator
except ArithmeticError:
upki = vpki = 0
return upki, vpki
def calc_wuv_star(y_norm, patch_cie_u, patch_cie_v, light_cie_u,
light_cie_v):
# Equation 5.5
w_star = 25.0 * (y_norm**(1.0 / 3.0)) - 17
u_star = 13.0 * w_star * (patch_cie_u - light_cie_u)
v_star = 13.0 * w_star * (patch_cie_v - light_cie_v)
return w_star, u_star, v_star
def calc_cie_data(spec):
# Calculates the necessary CIE data (and data derived from CIE data) for
# a spectrum "spec" running from 400-700nm
cie_x, cie_y, big_x, big_y, big_z = calculate_ciexy(xdata, spec)
cie_u, cie_v = ciexy_to_cie1960uv(cie_x, cie_y)
c_val, d_val = calc_c_and_d(cie_u, cie_v)
try:
y_norm = 100.0 / big_y
except ZeroDivisionError:
y_norm = 0.0
return cie_u, cie_v, c_val, d_val, big_y, y_norm, cie_x, cie_y
if len(intensities) != 301:
# print 'CRI calculation requires a spectrum from 400-700 nm'
return 0.0, False
valid = False
cri = 0.0
xdata = [x for x in range(400, 701)]
# Calculate some required data for the input (test) spectrum
test_cie_u, test_cie_v, test_c, test_d, _, test_y_norm, test_cie_x, \
test_cie_y = calc_cie_data(intensities)
if not cct:
cct, cct_valid = color_temperature(test_cie_x, test_cie_y)
if test_c != 0 and cct > 0.0 and cct <= 25000:
if cct < 5000.:
reference_radiator = planckian_radiator(cct)
else:
reference_radiator = daylight_radiator(cct)
# Calculate some required data for the reference (black body or daylight)
# spectrum
ref_cie_u, ref_cie_v, ref_c, ref_d, _, ref_y_norm, _, _ = \
calc_cie_data(reference_radiator)
# General CRI uses the first 8 Munsell color patches
patches = [TCS01, TCS02, TCS03, TCS04, TCS05, TCS06, TCS07, TCS08]
special_cri = []
for patch in patches:
# We are interested in the reflection of the patch under the test
# spectrum = test.dot.patch)
shifted_patch = [
test_intensity * patch_dat
for test_intensity, patch_dat in zip(intensities, patch)
]
shifted_cie_u, shifted_cie_v, shifted_c, shifted_d, shifted_big_y, \
_, _, _ = calc_cie_data(shifted_patch)
# CIE Y of the patch reflection is normalized by the CIE Y of the
# light spectrum
shifted_big_y_norm = shifted_big_y * test_y_norm
# The line below accounts for the "adaptive colour shift" due to the
# test spectrum using a von Kries chromatic transform. Regurgitated
# from CIE 13.3 and Wikipedia
upki, vpki = calc_upki_vpki(ref_c, ref_d, test_c, test_d, shifted_c,
shifted_d)
# Now we are interested in the reflection of the patch under the
# reference spectrum = ref.dot.patch)
refpatch_patch = [
test_intensity * patch_dat
for test_intensity, patch_dat in zip(reference_radiator, patch)
]
refpatch_cie_u, refpatch_cie_v, refpatch_c, refpatch_d, \
refpatch_big_y, _, _, _ = calc_cie_data(refpatch_patch)
# CIE Y of the patch reflection is normalized by the CIE Y of the
# light spectrum
refpatch_big_y_norm = refpatch_big_y * ref_y_norm
# Now calculate W*, U* and V* for the patch reflected under the test
# and reference spectra
ref_wstar, ref_ustar, ref_vstar = \
calc_wuv_star(refpatch_big_y_norm, refpatch_cie_u,
refpatch_cie_v, ref_cie_u, ref_cie_v)
# For the test spectrum, we use upki and vpki and the reference CIEu
# and CIEv
test_wstar, test_ustar, test_vstar = \
calc_wuv_star(shifted_big_y_norm, upki,
vpki, ref_cie_u, ref_cie_v)
# The total color shift is just this distance between the ref and
# test W*, U* and V* data (Equation 5-5)
delta = get_distance((ref_wstar, ref_ustar, ref_vstar),
(test_wstar, test_ustar, test_vstar))
# Special CRI is defined in Equation 6-1
special_cri.append(100.0 - 4.6 * delta)
cri = sum(special_cri) / 8.0
# Test for validity of CRI calculation, the tolerance specified by CIE
# is 0.0054 distance between the test and reference CIEuv
valid = get_distance((ref_cie_u, ref_cie_v),
(test_cie_u, test_cie_v)) <= 0.0054
elif cct > 25000.0:
pass
#print 'CRI for CCT>25000 not implemented'
return cri, valid
[docs]def planckian_radiator(temp, low=400, high=700, step=1):
"""
Returns the normalized spectrum of a Planckian (black body) radiator at the
given color temperature.
The spectrum is a list of intensities returned starting at low nm and ending
at high nm every step nm. The intensities are normalized.
intensity = 2*pi*h*(c^2) / (L^5 * (exp(hc/Lkt) - 1))
Where L is the wavelength in meters
:param float temp: The color temperature for the Planckian radiator
:param int low: The lower nm cutoff of the returned values
:param int high: The higher nm cutoff of the returned values
:param int step: The step between returned values
:rtype: list
:return: The normalized spectrum of a Planckian radiator
"""
radiator = []
planck = constants.h
light_speed = constants.c
boltzman = constants.k
leading_constant = 2 * math.pi * planck * (light_speed**2)
exp_constant = (planck * light_speed) / (boltzman * temp)
for nm_val in range(low, high + 1, step):
meters = float(nm_val) * 1.0e-9
try:
radiator.append(leading_constant /
((meters**5) *
(math.exp(exp_constant / meters) - 1)))
except ArithmeticError:
radiator.append(0.0)
max_val = max(radiator)
try:
radiator = [x / max_val for x in radiator]
except ArithmeticError:
radiator = []
return radiator
[docs]def daylight_radiator(temp, low=400, high=700, step=1):
"""
Returns the normalized spectrum of a illuminant D (daylight) radiator at the
given color temperature.
The spectrum is a list of intensities returned starting at low nm and ending
at high nm every step nm. The intensities are normalized.
:param float temp: The color temperature for the radiator
:param int low: The lower nm cutoff of the returned values
:param int high: The higher nm cutoff of the returned values
:param int step: The step in nm between returned values
:rtype: list
:return: The normalized spectrum of a illuminant D radiator
"""
# The calculation is taken from http://en.wikipedia.org/wiki/Standard_illuminant
# and also from the spreadsheet found at:
# http://www.rit-mcsl.org/UsefulData/DaylightSeries.xlsx
# Both sources give the same calculation. This is valid from CCT of 4000-25000
#
# The spectrum intensity of spectrum S at a given nm is given by:
# S[nm] = s0[nm] + s1[nm]*m1 + s2[nm]*m2
radiator = []
cie_x, cie_y = daylight_locus(temp)
denom = 0.0241 + 0.2562 * cie_x - 0.7341 * cie_y
m_1 = (-1.3515 - 1.7703 * cie_x + 5.9114 * cie_y) / denom
m_2 = (0.0300 - 31.4424 * cie_x + 30.0717 * cie_y) / denom
for nm_val in range(low, high + 1, step):
radiator.append(ILLUM_D_S0[nm_val] + ILLUM_D_S1[nm_val] * m_1 +
ILLUM_D_S2[nm_val] * m_2)
# Now to normalize it
max_val = max(radiator)
try:
radiator = [x / max_val for x in radiator]
except ArithmeticError:
radiator = []
return radiator
[docs]def daylight_locus(temperature=None, delta=50):
"""
If temperature is given, returns the CIEx and CIEy values of the daylight
locus at that temperature. If temperature is not given, returns a list of
(color, (CIEx, CIEy)) tuples of the daylight locus from 4000K to 25000K
at every `delta` CCT degrees
:type temperature: float or None
:param temperature: The temperature to get CIEx and CIEy values at
:param int delta: The temperature step between each (CIEx, CIEy) tuple if
temperature is not provided
"""
# The calculation is taken from http://en.wikipedia.org/wiki/Standard_illuminant
# and also from the spreadsheet found at:
# http://www.rit-mcsl.org/UsefulData/DaylightSeries.xlsx
# Both sources give the same calculation. This is valid from CCT of 4000-25000
# The calculation is only valid from 4000K to 25000K
def daylight_point(temp):
if temp >= 4000 and temp <= 25000:
temp = float(temp)
n_val = temp / 1000.
n_2 = n_val**2
n_3 = n_2 * n_val
try:
if temp < 7000:
cie_x = (-4.6070 / n_3 + 2.9678 / n_2 + 0.09911 / n_val +
0.244063)
else:
cie_x = (-2.0064 / n_3 + 1.9018 / n_2 + 0.24748 / n_val +
0.23704)
cie_y = -3.000 * (cie_x**2) + 2.870 * cie_x - 0.275
except ZeroDivisionError:
cie_x = cie_y = 0
else:
cie_x = cie_y = 0
return cie_x, cie_y
# temperature might be 0, and then we want just the point at 0
if temperature != None:
return daylight_point(temperature)
else:
step = max(int(delta), 1)
daylist = []
for atemp in range(4000, 25000, step):
daylist.append((atemp, daylight_point(atemp)))
return daylist
[docs]def get_complete_spectrum(x_vals, y_vals, data_min, data_max):
"""
Fills in the missing values of a spectrum using a cubic interpolation, so
that it has data for every nm.
Makes sure all y values are > 0, all x values are between data_min and
data_max, and no x value is repeated.
:param list x_vals: X values of the spectrum
:param list y_vals: Y values of the spectrum
:param int data_min: The low cut-off for x values
:param int data_max: The high cut-off for x values
:rtype: list, list
:return: The completed x and y values for the spectrum
"""
# Note - in testing cubic interpolation gave (essentially) identical results
# to the previous method of solving exactly the parabola formed by the
# nearest 3 points.
deduped_x, deduped_y = mathutils.deduplicate_xy_data(x_vals, y_vals)
fill_function = interpolate.interp1d(deduped_x,
deduped_y,
kind='cubic',
fill_value=0.0,
bounds_error=False)
new_spectrum_x = list(range(data_min, data_max + 1))
new_spectrum_y = [max(0, fill_function(x)) for x in new_spectrum_x]
return (new_spectrum_x, new_spectrum_y)
# CIE 1924 from http://cvision.ucsd.edu/database/data/lum/vl1924e_1.txt
PHOTOPIC_RESPONSE_CURVE = {
360: 3.92E-06,
361: 4.39E-06,
362: 4.93E-06,
363: 5.53E-06,
364: 6.21E-06,
365: 6.97E-06,
366: 7.81E-06,
367: 8.77E-06,
368: 9.84E-06,
369: 1.10E-05,
370: 1.24E-05,
371: 1.39E-05,
372: 1.56E-05,
373: 1.74E-05,
374: 1.96E-05,
375: 2.20E-05,
376: 2.48E-05,
377: 2.80E-05,
378: 3.15E-05,
379: 3.52E-05,
380: 3.90E-05,
381: 4.28E-05,
382: 4.69E-05,
383: 5.16E-05,
384: 5.72E-05,
385: 6.40E-05,
386: 7.23E-05,
387: 8.22E-05,
388: 9.35E-05,
389: 1.06E-04,
390: 1.20E-04,
391: 1.35E-04,
392: 1.51E-04,
393: 1.70E-04,
394: 1.92E-04,
395: 2.17E-04,
396: 2.47E-04,
397: 2.81E-04,
398: 3.19E-04,
399: 3.57E-04,
400: 3.96E-04,
401: 4.34E-04,
402: 4.73E-04,
403: 5.18E-04,
404: 5.72E-04,
405: 6.40E-04,
406: 7.25E-04,
407: 8.26E-04,
408: 9.41E-04,
409: 1.07E-03,
410: 1.21E-03,
411: 1.36E-03,
412: 1.53E-03,
413: 1.72E-03,
414: 1.94E-03,
415: 2.18E-03,
416: 2.45E-03,
417: 2.76E-03,
418: 3.12E-03,
419: 3.53E-03,
420: 4.00E-03,
421: 4.55E-03,
422: 5.16E-03,
423: 5.83E-03,
424: 6.55E-03,
425: 7.30E-03,
426: 8.09E-03,
427: 8.91E-03,
428: 9.77E-03,
429: 1.07E-02,
430: 1.16E-02,
431: 1.26E-02,
432: 1.36E-02,
433: 1.46E-02,
434: 1.57E-02,
435: 1.68E-02,
436: 1.80E-02,
437: 1.92E-02,
438: 2.05E-02,
439: 2.17E-02,
440: 2.30E-02,
441: 2.43E-02,
442: 2.56E-02,
443: 2.70E-02,
444: 2.84E-02,
445: 2.98E-02,
446: 3.13E-02,
447: 3.29E-02,
448: 3.45E-02,
449: 3.62E-02,
450: 3.80E-02,
451: 3.98E-02,
452: 4.18E-02,
453: 4.38E-02,
454: 4.58E-02,
455: 4.80E-02,
456: 5.02E-02,
457: 5.26E-02,
458: 5.50E-02,
459: 5.75E-02,
460: 6.00E-02,
461: 6.26E-02,
462: 6.53E-02,
463: 6.80E-02,
464: 7.09E-02,
465: 7.39E-02,
466: 7.70E-02,
467: 8.03E-02,
468: 8.37E-02,
469: 8.72E-02,
470: 9.10E-02,
471: 9.49E-02,
472: 9.90E-02,
473: 1.03E-01,
474: 1.08E-01,
475: 1.13E-01,
476: 1.18E-01,
477: 1.23E-01,
478: 1.28E-01,
479: 1.33E-01,
480: 1.39E-01,
481: 1.45E-01,
482: 1.50E-01,
483: 1.56E-01,
484: 1.63E-01,
485: 1.69E-01,
486: 1.76E-01,
487: 1.84E-01,
488: 1.91E-01,
489: 1.99E-01,
490: 2.08E-01,
491: 2.17E-01,
492: 2.27E-01,
493: 2.37E-01,
494: 2.47E-01,
495: 2.59E-01,
496: 2.70E-01,
497: 2.82E-01,
498: 2.95E-01,
499: 3.09E-01,
500: 3.23E-01,
501: 3.38E-01,
502: 3.55E-01,
503: 3.72E-01,
504: 3.89E-01,
505: 4.07E-01,
506: 4.26E-01,
507: 4.44E-01,
508: 4.63E-01,
509: 4.83E-01,
510: 5.03E-01,
511: 5.24E-01,
512: 5.45E-01,
513: 5.66E-01,
514: 5.87E-01,
515: 6.08E-01,
516: 6.29E-01,
517: 6.50E-01,
518: 6.71E-01,
519: 6.91E-01,
520: 7.10E-01,
521: 7.28E-01,
522: 7.45E-01,
523: 7.62E-01,
524: 7.78E-01,
525: 7.93E-01,
526: 8.08E-01,
527: 8.22E-01,
528: 8.36E-01,
529: 8.49E-01,
530: 8.62E-01,
531: 8.74E-01,
532: 8.85E-01,
533: 8.95E-01,
534: 9.05E-01,
535: 9.15E-01,
536: 9.24E-01,
537: 9.32E-01,
538: 9.40E-01,
539: 9.47E-01,
540: 9.54E-01,
541: 9.60E-01,
542: 9.66E-01,
543: 9.71E-01,
544: 9.76E-01,
545: 9.80E-01,
546: 9.84E-01,
547: 9.87E-01,
548: 9.90E-01,
549: 9.93E-01,
550: 9.95E-01,
551: 9.97E-01,
552: 9.98E-01,
553: 9.99E-01,
554: 1.00E+00,
555: 1.00E+00,
556: 1.00E+00,
557: 9.99E-01,
558: 9.98E-01,
559: 9.97E-01,
560: 9.95E-01,
561: 9.93E-01,
562: 9.90E-01,
563: 9.86E-01,
564: 9.83E-01,
565: 9.79E-01,
566: 9.74E-01,
567: 9.69E-01,
568: 9.64E-01,
569: 9.58E-01,
570: 9.52E-01,
571: 9.45E-01,
572: 9.38E-01,
573: 9.31E-01,
574: 9.23E-01,
575: 9.15E-01,
576: 9.07E-01,
577: 8.98E-01,
578: 8.89E-01,
579: 8.80E-01,
580: 8.70E-01,
581: 8.60E-01,
582: 8.49E-01,
583: 8.39E-01,
584: 8.28E-01,
585: 8.16E-01,
586: 8.05E-01,
587: 7.93E-01,
588: 7.81E-01,
589: 7.69E-01,
590: 7.57E-01,
591: 7.45E-01,
592: 7.32E-01,
593: 7.20E-01,
594: 7.07E-01,
595: 6.95E-01,
596: 6.82E-01,
597: 6.69E-01,
598: 6.57E-01,
599: 6.44E-01,
600: 6.31E-01,
601: 6.18E-01,
602: 6.05E-01,
603: 5.92E-01,
604: 5.80E-01,
605: 5.67E-01,
606: 5.54E-01,
607: 5.41E-01,
608: 5.28E-01,
609: 5.16E-01,
610: 5.03E-01,
611: 4.90E-01,
612: 4.78E-01,
613: 4.66E-01,
614: 4.53E-01,
615: 4.41E-01,
616: 4.29E-01,
617: 4.17E-01,
618: 4.05E-01,
619: 3.93E-01,
620: 3.81E-01,
621: 3.69E-01,
622: 3.57E-01,
623: 3.45E-01,
624: 3.33E-01,
625: 3.21E-01,
626: 3.09E-01,
627: 2.98E-01,
628: 2.87E-01,
629: 2.76E-01,
630: 2.65E-01,
631: 2.55E-01,
632: 2.45E-01,
633: 2.35E-01,
634: 2.26E-01,
635: 2.17E-01,
636: 2.08E-01,
637: 2.00E-01,
638: 1.91E-01,
639: 1.83E-01,
640: 1.75E-01,
641: 1.67E-01,
642: 1.60E-01,
643: 1.52E-01,
644: 1.45E-01,
645: 1.38E-01,
646: 1.32E-01,
647: 1.25E-01,
648: 1.19E-01,
649: 1.13E-01,
650: 1.07E-01,
651: 1.01E-01,
652: 9.62E-02,
653: 9.11E-02,
654: 8.63E-02,
655: 8.16E-02,
656: 7.71E-02,
657: 7.28E-02,
658: 6.87E-02,
659: 6.48E-02,
660: 6.10E-02,
661: 5.74E-02,
662: 5.40E-02,
663: 5.07E-02,
664: 4.75E-02,
665: 4.46E-02,
666: 4.18E-02,
667: 3.91E-02,
668: 3.66E-02,
669: 3.42E-02,
670: 3.20E-02,
671: 3.00E-02,
672: 2.81E-02,
673: 2.63E-02,
674: 2.47E-02,
675: 2.32E-02,
676: 2.18E-02,
677: 2.05E-02,
678: 1.93E-02,
679: 1.81E-02,
680: 1.70E-02,
681: 1.59E-02,
682: 1.48E-02,
683: 1.38E-02,
684: 1.28E-02,
685: 1.19E-02,
686: 1.11E-02,
687: 1.03E-02,
688: 9.53E-03,
689: 8.85E-03,
690: 8.21E-03,
691: 7.62E-03,
692: 7.09E-03,
693: 6.59E-03,
694: 6.14E-03,
695: 5.72E-03,
696: 5.34E-03,
697: 5.00E-03,
698: 4.68E-03,
699: 4.38E-03,
700: 4.10E-03,
701: 3.84E-03,
702: 3.59E-03,
703: 3.35E-03,
704: 3.13E-03,
705: 2.93E-03,
706: 2.74E-03,
707: 2.56E-03,
708: 2.39E-03,
709: 2.24E-03,
710: 2.09E-03,
711: 1.95E-03,
712: 1.82E-03,
713: 1.70E-03,
714: 1.59E-03,
715: 1.48E-03,
716: 1.38E-03,
717: 1.29E-03,
718: 1.20E-03,
719: 1.12E-03,
720: 1.05E-03,
721: 9.77E-04,
722: 9.11E-04,
723: 8.50E-04,
724: 7.93E-04,
725: 7.40E-04,
726: 6.90E-04,
727: 6.43E-04,
728: 5.99E-04,
729: 5.58E-04,
730: 5.20E-04,
731: 4.84E-04,
732: 4.50E-04,
733: 4.18E-04,
734: 3.89E-04,
735: 3.61E-04,
736: 3.35E-04,
737: 3.11E-04,
738: 2.89E-04,
739: 2.68E-04,
740: 2.49E-04,
741: 2.31E-04,
742: 2.15E-04,
743: 1.99E-04,
744: 1.85E-04,
745: 1.72E-04,
746: 1.60E-04,
747: 1.49E-04,
748: 1.38E-04,
749: 1.29E-04,
750: 1.20E-04,
751: 1.12E-04,
752: 1.04E-04,
753: 9.73E-05,
754: 9.08E-05,
755: 8.48E-05,
756: 7.91E-05,
757: 7.39E-05,
758: 6.89E-05,
759: 6.43E-05,
760: 6.00E-05,
761: 5.60E-05,
762: 5.22E-05,
763: 4.87E-05,
764: 4.54E-05,
765: 4.24E-05,
766: 3.96E-05,
767: 3.69E-05,
768: 3.44E-05,
769: 3.21E-05,
770: 3.00E-05,
771: 2.80E-05,
772: 2.61E-05,
773: 2.44E-05,
774: 2.27E-05,
775: 2.12E-05,
776: 1.98E-05,
777: 1.85E-05,
778: 1.72E-05,
779: 1.61E-05,
780: 1.50E-05,
781: 1.40E-05,
782: 1.31E-05,
783: 1.22E-05,
784: 1.14E-05,
785: 1.06E-05,
786: 9.89E-06,
787: 9.22E-06,
788: 8.59E-06,
789: 8.01E-06,
790: 7.47E-06,
791: 6.96E-06,
792: 6.49E-06,
793: 6.05E-06,
794: 5.64E-06,
795: 5.26E-06,
796: 4.90E-06,
797: 4.57E-06,
798: 4.26E-06,
799: 3.97E-06,
800: 3.70E-06,
801: 3.45216E-06,
802: 3.2183E-06,
803: 3.0003E-06,
804: 2.79714E-06,
805: 2.6078E-06,
806: 2.43122E-06,
807: 2.26653E-06,
808: 2.11301E-06,
809: 1.96994E-06,
810: 1.8366E-06,
811: 1.71223E-06,
812: 1.59623E-06,
813: 1.48809E-06,
814: 1.38731E-06,
815: 1.2934E-06,
816: 1.20582E-06,
817: 1.12414E-06,
818: 1.04801E-06,
819: 9.77058E-07,
820: 9.1093E-07,
821: 8.49251E-07,
822: 7.91721E-07,
823: 7.3809E-07,
824: 6.8811E-07,
825: 6.4153E-07,
826: 5.9809E-07,
827: 5.57575E-07,
828: 5.19808E-07,
829: 4.84612E-07,
830: 4.5181E-07
}
# The CIE color matching functions
# From http://cvrl.ioo.ucl.ac.uk/database/data/cmfs/ciexyz31_1.txt
# Each tuple is an R, G, B value for that wavelength
CIEXY_FUNCTIONS = {
360: (0.0001299, 0.000003917, 0.0006061),
361: (0.000145847, 4.39358E-06, 0.000680879),
362: (0.000163802, 4.9296E-06, 0.000765146),
363: (0.000184004, 5.53214E-06, 0.000860012),
364: (0.00020669, 6.20825E-06, 0.000966593),
365: (0.0002321, 0.000006965, 0.001086),
366: (0.000260728, 7.81322E-06, 0.001220586),
367: (0.000293075, 8.76734E-06, 0.001372729),
368: (0.000329388, 9.83984E-06, 0.001543579),
369: (0.000369914, 1.10432E-05, 0.001734286),
370: (0.0004149, 0.00001239, 0.001946),
371: (0.000464159, 1.38864E-05, 0.002177777),
372: (0.000518986, 1.55573E-05, 0.002435809),
373: (0.000581854, 1.7443E-05, 0.002731953),
374: (0.000655235, 1.95838E-05, 0.003078064),
375: (0.0007416, 0.00002202, 0.003486),
376: (0.00084503, 2.48397E-05, 0.003975227),
377: (0.000964527, 2.80413E-05, 0.00454088),
378: (0.001094949, 3.1531E-05, 0.00515832),
379: (0.001231154, 3.52152E-05, 0.005802907),
380: (0.001368, 0.000039, 0.006450001),
381: (0.00150205, 4.28264E-05, 0.007083216),
382: (0.001642328, 4.69146E-05, 0.007745488),
383: (0.001802382, 5.15896E-05, 0.008501152),
384: (0.001995757, 5.71764E-05, 0.009414544),
385: (0.002236, 0.000064, 0.01054999),
386: (0.002535385, 7.23442E-05, 0.0119658),
387: (0.002892603, 8.22122E-05, 0.01365587),
388: (0.003300829, 9.35082E-05, 0.01558805),
389: (0.003753236, 0.000106136, 0.01773015),
390: (0.004243, 0.00012, 0.02005001),
391: (0.004762389, 0.000134984, 0.02251136),
392: (0.005330048, 0.000151492, 0.02520288),
393: (0.005978712, 0.000170208, 0.02827972),
394: (0.006741117, 0.000191816, 0.03189704),
395: (0.00765, 0.000217, 0.03621),
396: (0.008751373, 0.000246907, 0.04143771),
397: (0.01002888, 0.00028124, 0.04750372),
398: (0.0114217, 0.00031852, 0.05411988),
399: (0.01286901, 0.000357267, 0.06099803),
400: (0.01431, 0.000396, 0.06785001),
401: (0.01570443, 0.000433715, 0.07448632),
402: (0.01714744, 0.000473024, 0.08136156),
403: (0.01878122, 0.000517876, 0.08915364),
404: (0.02074801, 0.000572219, 0.09854048),
405: (0.02319, 0.00064, 0.1102),
406: (0.02620736, 0.00072456, 0.1246133),
407: (0.02978248, 0.0008255, 0.1417017),
408: (0.03388092, 0.00094116, 0.1613035),
409: (0.03846824, 0.00106988, 0.1832568),
410: (0.04351, 0.00121, 0.2074),
411: (0.0489956, 0.001362091, 0.2336921),
412: (0.0550226, 0.001530752, 0.2626114),
413: (0.0617188, 0.001720368, 0.2947746),
414: (0.069212, 0.001935323, 0.3307985),
415: (0.07763, 0.00218, 0.3713),
416: (0.08695811, 0.0024548, 0.4162091),
417: (0.09717672, 0.002764, 0.4654642),
418: (0.1084063, 0.0031178, 0.5196948),
419: (0.1207672, 0.0035264, 0.5795303),
420: (0.13438, 0.004, 0.6456),
421: (0.1493582, 0.00454624, 0.7184838),
422: (0.1653957, 0.00515932, 0.7967133),
423: (0.1819831, 0.00582928, 0.8778459),
424: (0.198611, 0.00654616, 0.959439),
425: (0.21477, 0.0073, 1.0390501),
426: (0.2301868, 0.008086507, 1.1153673),
427: (0.2448797, 0.00890872, 1.1884971),
428: (0.2587773, 0.00976768, 1.2581233),
429: (0.2718079, 0.01066443, 1.3239296),
430: (0.2839, 0.0116, 1.3856),
431: (0.2949438, 0.01257317, 1.4426352),
432: (0.3048965, 0.01358272, 1.4948035),
433: (0.3137873, 0.01462968, 1.5421903),
434: (0.3216454, 0.01571509, 1.5848807),
435: (0.3285, 0.01684, 1.62296),
436: (0.3343513, 0.01800736, 1.6564048),
437: (0.3392101, 0.01921448, 1.6852959),
438: (0.3431213, 0.02045392, 1.7098745),
439: (0.3461296, 0.02171824, 1.7303821),
440: (0.34828, 0.023, 1.74706),
441: (0.3495999, 0.02429461, 1.7600446),
442: (0.3501474, 0.02561024, 1.7696233),
443: (0.350013, 0.02695857, 1.7762637),
444: (0.349287, 0.02835125, 1.7804334),
445: (0.34806, 0.0298, 1.7826),
446: (0.3463733, 0.03131083, 1.7829682),
447: (0.3442624, 0.03288368, 1.7816998),
448: (0.3418088, 0.03452112, 1.7791982),
449: (0.3390941, 0.03622571, 1.7758671),
450: (0.3362, 0.038, 1.77211),
451: (0.3331977, 0.03984667, 1.7682589),
452: (0.3300411, 0.041768, 1.764039),
453: (0.3266357, 0.043766, 1.7589438),
454: (0.3228868, 0.04584267, 1.7524663),
455: (0.3187, 0.048, 1.7441),
456: (0.3140251, 0.05024368, 1.7335595),
457: (0.308884, 0.05257304, 1.7208581),
458: (0.3032904, 0.05498056, 1.7059369),
459: (0.2972579, 0.05745872, 1.6887372),
460: (0.2908, 0.06, 1.6692),
461: (0.2839701, 0.06260197, 1.6475287),
462: (0.2767214, 0.06527752, 1.6234127),
463: (0.2689178, 0.06804208, 1.5960223),
464: (0.2604227, 0.07091109, 1.564528),
465: (0.2511, 0.0739, 1.5281),
466: (0.2408475, 0.077016, 1.4861114),
467: (0.2298512, 0.0802664, 1.4395215),
468: (0.2184072, 0.0836668, 1.3898799),
469: (0.2068115, 0.0872328, 1.3387362),
470: (0.19536, 0.09098, 1.28764),
471: (0.1842136, 0.09491755, 1.2374223),
472: (0.1733273, 0.09904584, 1.1878243),
473: (0.1626881, 0.1033674, 1.1387611),
474: (0.1522833, 0.1078846, 1.090148),
475: (0.1421, 0.1126, 1.0419),
476: (0.1321786, 0.117532, 0.9941976),
477: (0.1225696, 0.1226744, 0.9473473),
478: (0.1132752, 0.1279928, 0.9014531),
479: (0.1042979, 0.1334528, 0.8566193),
480: (0.09564, 0.13902, 0.8129501),
481: (0.08729955, 0.1446764, 0.7705173),
482: (0.07930804, 0.1504693, 0.7294448),
483: (0.07171776, 0.1564619, 0.6899136),
484: (0.06458099, 0.1627177, 0.6521049),
485: (0.05795001, 0.1693, 0.6162),
486: (0.05186211, 0.1762431, 0.5823286),
487: (0.04628152, 0.1835581, 0.5504162),
488: (0.04115088, 0.1912735, 0.5203376),
489: (0.03641283, 0.199418, 0.4919673),
490: (0.03201, 0.20802, 0.46518),
491: (0.0279172, 0.2171199, 0.4399246),
492: (0.0241444, 0.2267345, 0.4161836),
493: (0.020687, 0.2368571, 0.3938822),
494: (0.0175404, 0.2474812, 0.3729459),
495: (0.0147, 0.2586, 0.3533),
496: (0.01216179, 0.2701849, 0.3348578),
497: (0.00991996, 0.2822939, 0.3175521),
498: (0.00796724, 0.2950505, 0.3013375),
499: (0.006296346, 0.308578, 0.2861686),
500: (0.0049, 0.323, 0.272),
501: (0.003777173, 0.3384021, 0.2588171),
502: (0.00294532, 0.3546858, 0.2464838),
503: (0.00242488, 0.3716986, 0.2347718),
504: (0.002236293, 0.3892875, 0.2234533),
505: (0.0024, 0.4073, 0.2123),
506: (0.00292552, 0.4256299, 0.2011692),
507: (0.00383656, 0.4443096, 0.1901196),
508: (0.00517484, 0.4633944, 0.1792254),
509: (0.00698208, 0.4829395, 0.1685608),
510: (0.0093, 0.503, 0.1582),
511: (0.01214949, 0.5235693, 0.1481383),
512: (0.01553588, 0.544512, 0.1383758),
513: (0.01947752, 0.56569, 0.1289942),
514: (0.02399277, 0.5869653, 0.1200751),
515: (0.0291, 0.6082, 0.1117),
516: (0.03481485, 0.6293456, 0.1039048),
517: (0.04112016, 0.6503068, 0.09666748),
518: (0.04798504, 0.6708752, 0.08998272),
519: (0.05537861, 0.6908424, 0.08384531),
520: (0.06327, 0.71, 0.07824999),
521: (0.07163501, 0.7281852, 0.07320899),
522: (0.08046224, 0.7454636, 0.06867816),
523: (0.08973996, 0.7619694, 0.06456784),
524: (0.09945645, 0.7778368, 0.06078835),
525: (0.1096, 0.7932, 0.05725001),
526: (0.1201674, 0.8081104, 0.05390435),
527: (0.1311145, 0.8224962, 0.05074664),
528: (0.1423679, 0.8363068, 0.04775276),
529: (0.1538542, 0.8494916, 0.04489859),
530: (0.1655, 0.862, 0.04216),
531: (0.1772571, 0.8738108, 0.03950728),
532: (0.18914, 0.8849624, 0.03693564),
533: (0.2011694, 0.8954936, 0.03445836),
534: (0.2133658, 0.9054432, 0.03208872),
535: (0.2257499, 0.9148501, 0.02984),
536: (0.2383209, 0.9237348, 0.02771181),
537: (0.2510668, 0.9320924, 0.02569444),
538: (0.2639922, 0.9399226, 0.02378716),
539: (0.2771017, 0.9472252, 0.02198925),
540: (0.2904, 0.954, 0.0203),
541: (0.3038912, 0.9602561, 0.01871805),
542: (0.3175726, 0.9660074, 0.01724036),
543: (0.3314384, 0.9712606, 0.01586364),
544: (0.3454828, 0.9760225, 0.01458461),
545: (0.3597, 0.9803, 0.0134),
546: (0.3740839, 0.9840924, 0.01230723),
547: (0.3886396, 0.9874182, 0.01130188),
548: (0.4033784, 0.9903128, 0.01037792),
549: (0.4183115, 0.9928116, 0.009529306),
550: (0.4334499, 0.9949501, 0.008749999),
551: (0.4487953, 0.9967108, 0.0080352),
552: (0.464336, 0.9980983, 0.0073816),
553: (0.480064, 0.999112, 0.0067854),
554: (0.4959713, 0.9997482, 0.0062428),
555: (0.5120501, 1, 0.005749999),
556: (0.5282959, 0.9998567, 0.0053036),
557: (0.5446916, 0.9993046, 0.0048998),
558: (0.5612094, 0.9983255, 0.0045342),
559: (0.5778215, 0.9968987, 0.0042024),
560: (0.5945, 0.995, 0.0039),
561: (0.6112209, 0.9926005, 0.0036232),
562: (0.6279758, 0.9897426, 0.0033706),
563: (0.6447602, 0.9864444, 0.0031414),
564: (0.6615697, 0.9827241, 0.0029348),
565: (0.6784, 0.9786, 0.002749999),
566: (0.6952392, 0.9740837, 0.0025852),
567: (0.7120586, 0.9691712, 0.0024386),
568: (0.7288284, 0.9638568, 0.0023094),
569: (0.7455188, 0.9581349, 0.0021968),
570: (0.7621, 0.952, 0.0021),
571: (0.7785432, 0.9454504, 0.002017733),
572: (0.7948256, 0.9384992, 0.0019482),
573: (0.8109264, 0.9311628, 0.0018898),
574: (0.8268248, 0.9234576, 0.001840933),
575: (0.8425, 0.9154, 0.0018),
576: (0.8579325, 0.9070064, 0.001766267),
577: (0.8730816, 0.8982772, 0.0017378),
578: (0.8878944, 0.8892048, 0.0017112),
579: (0.9023181, 0.8797816, 0.001683067),
580: (0.9163, 0.87, 0.001650001),
581: (0.9297995, 0.8598613, 0.001610133),
582: (0.9427984, 0.849392, 0.0015644),
583: (0.9552776, 0.838622, 0.0015136),
584: (0.9672179, 0.8275813, 0.001458533),
585: (0.9786, 0.8163, 0.0014),
586: (0.9893856, 0.8047947, 0.001336667),
587: (0.9995488, 0.793082, 0.00127),
588: (1.0090892, 0.781192, 0.001205),
589: (1.0180064, 0.7691547, 0.001146667),
590: (1.0263, 0.757, 0.0011),
591: (1.0339827, 0.7447541, 0.0010688),
592: (1.040986, 0.7324224, 0.0010494),
593: (1.047188, 0.7200036, 0.0010356),
594: (1.0524667, 0.7074965, 0.0010212),
595: (1.0567, 0.6949, 0.001),
596: (1.0597944, 0.6822192, 0.00096864),
597: (1.0617992, 0.6694716, 0.00092992),
598: (1.0628068, 0.6566744, 0.00088688),
599: (1.0629096, 0.6438448, 0.00084256),
600: (1.0622, 0.631, 0.0008),
601: (1.0607352, 0.6181555, 0.00076096),
602: (1.0584436, 0.6053144, 0.00072368),
603: (1.0552244, 0.5924756, 0.00068592),
604: (1.0509768, 0.5796379, 0.00064544),
605: (1.0456, 0.5668, 0.0006),
606: (1.0390369, 0.5539611, 0.000547867),
607: (1.0313608, 0.5411372, 0.0004916),
608: (1.0226662, 0.5283528, 0.0004354),
609: (1.0130477, 0.5156323, 0.000383467),
610: (1.0026, 0.503, 0.00034),
611: (0.9913675, 0.4904688, 0.000307253),
612: (0.9793314, 0.4780304, 0.00028316),
613: (0.9664916, 0.4656776, 0.00026544),
614: (0.9528479, 0.4534032, 0.000251813),
615: (0.9384, 0.4412, 0.00024),
616: (0.923194, 0.42908, 0.000229547),
617: (0.907244, 0.417036, 0.00022064),
618: (0.890502, 0.405032, 0.00021196),
619: (0.87292, 0.393032, 0.000202187),
620: (0.8544499, 0.381, 0.00019),
621: (0.835084, 0.3689184, 0.000174213),
622: (0.814946, 0.3568272, 0.00015564),
623: (0.794186, 0.3447768, 0.00013596),
624: (0.772954, 0.3328176, 0.000116853),
625: (0.7514, 0.321, 0.0001),
626: (0.7295836, 0.3093381, 8.61333E-05),
627: (0.7075888, 0.2978504, 0.0000746),
628: (0.6856022, 0.2865936, 0.000065),
629: (0.6638104, 0.2756245, 5.69333E-05),
630: (0.6424, 0.265, 5E-05),
631: (0.6215149, 0.2547632, 0.00004416),
632: (0.6011138, 0.2448896, 0.00003948),
633: (0.5811052, 0.2353344, 0.00003572),
634: (0.5613977, 0.2260528, 0.00003264),
635: (0.5419, 0.217, 0.00003),
636: (0.5225995, 0.2081616, 2.76533E-05),
637: (0.5035464, 0.1995488, 0.00002556),
638: (0.4847436, 0.1911552, 0.00002364),
639: (0.4661939, 0.1829744, 2.18133E-05),
640: (0.4479, 0.175, 0.00002),
641: (0.4298613, 0.1672235, 1.81333E-05),
642: (0.412098, 0.1596464, 0.0000162),
643: (0.394644, 0.1522776, 0.0000142),
644: (0.3775333, 0.1451259, 1.21333E-05),
645: (0.3608, 0.1382, 0.00001),
646: (0.3444563, 0.1315003, 7.73333E-06),
647: (0.3285168, 0.1250248, 0.0000054),
648: (0.3130192, 0.1187792, 0.0000032),
649: (0.2980011, 0.1127691, 1.33333E-06),
650: (0.2835, 0.107, 0),
651: (0.2695448, 0.1014762, 0),
652: (0.2561184, 0.09618864, 0),
653: (0.2431896, 0.09112296, 0),
654: (0.2307272, 0.08626485, 0),
655: (0.2187, 0.0816, 0),
656: (0.2070971, 0.07712064, 0),
657: (0.1959232, 0.07282552, 0),
658: (0.1851708, 0.06871008, 0),
659: (0.1748323, 0.06476976, 0),
660: (0.1649, 0.061, 0),
661: (0.1553667, 0.05739621, 0),
662: (0.14623, 0.05395504, 0),
663: (0.13749, 0.05067376, 0),
664: (0.1291467, 0.04754965, 0),
665: (0.1212, 0.04458, 0),
666: (0.1136397, 0.04175872, 0),
667: (0.106465, 0.03908496, 0),
668: (0.09969044, 0.03656384, 0),
669: (0.09333061, 0.03420048, 0),
670: (0.0874, 0.032, 0),
671: (0.08190096, 0.02996261, 0),
672: (0.07680428, 0.02807664, 0),
673: (0.07207712, 0.02632936, 0),
674: (0.06768664, 0.02470805, 0),
675: (0.0636, 0.0232, 0),
676: (0.05980685, 0.02180077, 0),
677: (0.05628216, 0.02050112, 0),
678: (0.05297104, 0.01928108, 0),
679: (0.04981861, 0.01812069, 0),
680: (0.04677, 0.017, 0),
681: (0.04378405, 0.01590379, 0),
682: (0.04087536, 0.01483718, 0),
683: (0.03807264, 0.01381068, 0),
684: (0.03540461, 0.01283478, 0),
685: (0.0329, 0.01192, 0),
686: (0.03056419, 0.01106831, 0),
687: (0.02838056, 0.01027339, 0),
688: (0.02634484, 0.009533311, 0),
689: (0.02445275, 0.008846157, 0),
690: (0.0227, 0.00821, 0),
691: (0.02108429, 0.007623781, 0),
692: (0.01959988, 0.007085424, 0),
693: (0.01823732, 0.006591476, 0),
694: (0.01698717, 0.006138485, 0),
695: (0.01584, 0.005723, 0),
696: (0.01479064, 0.005343059, 0),
697: (0.01383132, 0.004995796, 0),
698: (0.01294868, 0.004676404, 0),
699: (0.0121292, 0.004380075, 0),
700: (0.01135916, 0.004102, 0),
701: (0.01062935, 0.003838453, 0),
702: (0.009938846, 0.003589099, 0),
703: (0.009288422, 0.003354219, 0),
704: (0.008678854, 0.003134093, 0),
705: (0.008110916, 0.002929, 0),
706: (0.007582388, 0.002738139, 0),
707: (0.007088746, 0.002559876, 0),
708: (0.006627313, 0.002393244, 0),
709: (0.006195408, 0.002237275, 0),
710: (0.005790346, 0.002091, 0),
711: (0.005409826, 0.001953587, 0),
712: (0.005052583, 0.00182458, 0),
713: (0.004717512, 0.00170358, 0),
714: (0.004403507, 0.001590187, 0),
715: (0.004109457, 0.001484, 0),
716: (0.003833913, 0.001384496, 0),
717: (0.003575748, 0.001291268, 0),
718: (0.003334342, 0.001204092, 0),
719: (0.003109075, 0.001122744, 0),
720: (0.002899327, 0.001047, 0),
721: (0.002704348, 0.00097659, 0),
722: (0.00252302, 0.000911109, 0),
723: (0.002354168, 0.000850133, 0),
724: (0.002196616, 0.000793238, 0),
725: (0.00204919, 0.00074, 0),
726: (0.00191096, 0.000690083, 0),
727: (0.001781438, 0.00064331, 0),
728: (0.00166011, 0.000599496, 0),
729: (0.001546459, 0.000558455, 0),
730: (0.001439971, 0.00052, 0),
731: (0.001340042, 0.000483914, 0),
732: (0.001246275, 0.000450053, 0),
733: (0.001158471, 0.000418345, 0),
734: (0.00107643, 0.000388718, 0),
735: (0.000999949, 0.0003611, 0),
736: (0.000928736, 0.000335384, 0),
737: (0.000862433, 0.00031144, 0),
738: (0.00080075, 0.000289166, 0),
739: (0.000743396, 0.000268454, 0),
740: (0.000690079, 0.0002492, 0),
741: (0.000640516, 0.000231302, 0),
742: (0.000594502, 0.000214686, 0),
743: (0.000551865, 0.000199288, 0),
744: (0.000512429, 0.000185048, 0),
745: (0.000476021, 0.0001719, 0),
746: (0.000442454, 0.000159778, 0),
747: (0.000411512, 0.000148604, 0),
748: (0.000382981, 0.000138302, 0),
749: (0.000356649, 0.000128793, 0),
750: (0.000332301, 0.00012, 0),
751: (0.000309759, 0.00011186, 0),
752: (0.000288887, 0.000104322, 0),
753: (0.000269539, 9.73356E-05, 0),
754: (0.000251568, 9.08459E-05, 0),
755: (0.000234826, 0.0000848, 0),
756: (0.000219171, 7.91467E-05, 0),
757: (0.000204526, 0.000073858, 0),
758: (0.000190841, 0.000068916, 0),
759: (0.000178065, 6.43027E-05, 0),
760: (0.000166151, 0.00006, 0),
761: (0.000155024, 5.59819E-05, 0),
762: (0.000144622, 5.22256E-05, 0),
763: (0.00013491, 4.87184E-05, 0),
764: (0.000125852, 4.54475E-05, 0),
765: (0.000117413, 0.0000424, 0),
766: (0.000109552, 3.9561E-05, 0),
767: (0.000102225, 3.69151E-05, 0),
768: (9.53945E-05, 3.44487E-05, 0),
769: (8.90239E-05, 3.21482E-05, 0),
770: (8.30753E-05, 0.00003, 0),
771: (7.75127E-05, 2.79913E-05, 0),
772: (7.2313E-05, 2.61136E-05, 0),
773: (6.74578E-05, 2.43602E-05, 0),
774: (6.29284E-05, 2.27246E-05, 0),
775: (5.87065E-05, 0.0000212, 0),
776: (5.47703E-05, 1.97786E-05, 0),
777: (5.10992E-05, 1.84529E-05, 0),
778: (4.76765E-05, 1.72169E-05, 0),
779: (4.44857E-05, 1.60646E-05, 0),
780: (4.15099E-05, 0.00001499, 0),
781: (3.87332E-05, 1.39873E-05, 0),
782: (3.6142E-05, 1.30516E-05, 0),
783: (3.37235E-05, 1.21782E-05, 0),
784: (3.14649E-05, 1.13625E-05, 0),
785: (2.93533E-05, 0.0000106, 0),
786: (2.73757E-05, 9.88588E-06, 0),
787: (2.55243E-05, 9.2173E-06, 0),
788: (2.37938E-05, 8.59236E-06, 0),
789: (2.21787E-05, 8.00913E-06, 0),
790: (2.06738E-05, 7.4657E-06, 0),
791: (1.92723E-05, 6.95957E-06, 0),
792: (1.79664E-05, 6.488E-06, 0),
793: (1.67499E-05, 6.0487E-06, 0),
794: (1.56165E-05, 5.6394E-06, 0),
795: (1.45598E-05, 5.2578E-06, 0),
796: (1.35739E-05, 4.90177E-06, 0),
797: (1.26544E-05, 4.56972E-06, 0),
798: (1.17972E-05, 4.26019E-06, 0),
799: (1.09984E-05, 3.97174E-06, 0),
800: (1.0254E-05, 3.7029E-06, 0),
801: (9.55965E-06, 3.45216E-06, 0),
802: (8.91204E-06, 3.2183E-06, 0),
803: (8.30836E-06, 3.0003E-06, 0),
804: (7.74577E-06, 2.79714E-06, 0),
805: (7.22146E-06, 2.6078E-06, 0),
806: (6.73248E-06, 2.43122E-06, 0),
807: (6.27642E-06, 2.26653E-06, 0),
808: (5.8513E-06, 2.11301E-06, 0),
809: (5.45512E-06, 1.96994E-06, 0),
810: (5.08587E-06, 1.8366E-06, 0),
811: (4.74147E-06, 1.71223E-06, 0),
812: (4.42024E-06, 1.59623E-06, 0),
813: (4.12078E-06, 1.48809E-06, 0),
814: (3.84172E-06, 1.38731E-06, 0),
815: (3.58165E-06, 1.2934E-06, 0),
816: (3.33913E-06, 1.20582E-06, 0),
817: (3.11295E-06, 1.12414E-06, 0),
818: (2.90212E-06, 1.04801E-06, 0),
819: (2.70565E-06, 9.77058E-07, 0),
820: (2.52253E-06, 9.1093E-07, 0),
821: (2.35173E-06, 8.49251E-07, 0),
822: (2.19242E-06, 7.91721E-07, 0),
823: (2.0439E-06, 7.3809E-07, 0),
824: (1.9055E-06, 6.8811E-07, 0),
825: (1.77651E-06, 6.4153E-07, 0),
826: (1.65622E-06, 5.9809E-07, 0),
827: (1.54402E-06, 5.57575E-07, 0),
828: (1.43944E-06, 5.19808E-07, 0),
829: (1.34198E-06, 4.84612E-07, 0),
830: (1.25114E-06, 4.5181E-07, 0)
}
CIEXY_FUNCTIONS_MIN_NM = min(CIEXY_FUNCTIONS.keys())
CIEXY_FUNCTIONS_MAX_NM = max(CIEXY_FUNCTIONS.keys())
# DOE quadrangles in CIEx,y taken from American National Standard Lighting Group
# found at http://ledart.ru/files/img/C78.377-2008.pdf
DOE_QUADRANGLES = [
((0.4813, 0.4319), (0.4562, 0.426), (0.4373, 0.3893), (0.4593, 0.3944)),
((0.4562, 0.426 ), (0.4299, 0.4165), (0.4147, 0.3814), (0.4373, 0.3893)),
((0.4299, 0.4165), (0.3996, 0.4015), (0.3889, 0.369), (0.4147, 0.3814)),
((0.4006, 0.4044), (0.3736, 0.3874), (0.367, 0.3578), (0.3898, 0.3716)),
((0.3736, 0.3874), (0.3548, 0.3736), (0.3512, 0.3465), (0.367, 0.3578)),
((0.3551, 0.376), (0.3376, 0.3616), (0.3366, 0.3369), (0.3515, 0.3487)),
((0.3376, 0.3616), (0.3207, 0.3462), (0.3222, 0.3243), (0.3366, 0.3369)),
((0.3205, 0.3481), (0.3028, 0.3304), (0.3068, 0.3113), (0.3221, 0.3261))
] # yapf: disable
# The labels for each DOE quadrangle and the CIEx,y coordinate of the label
QUADRANGLE_LABELS = {
'6500K': (0.285, 0.355),
'5700K': (0.303, 0.37),
'5000K': (0.320, 0.384),
'4500K': (0.343, 0.399),
'4000K': (0.367, 0.415),
'3500K': (0.395, 0.427),
'3000K': (0.423, 0.437),
'2700K': (0.455, 0.445)
}
# Munsell patches for CRI calculation
# These have been linearly interpolated from data every 5nm to data every 1 nm
# and run from 400 to 700 nm by every 1 nm
TCS01 = [
0.256, 0.256, 0.255, 0.255, 0.254, 0.254, 0.254, 0.253, 0.253, 0.252, 0.252,
0.251, 0.250, 0.250, 0.249, 0.248, 0.247, 0.246, 0.246, 0.245, 0.244, 0.243,
0.242, 0.242, 0.241, 0.240, 0.239, 0.239, 0.238, 0.238, 0.237, 0.236, 0.235,
0.234, 0.233, 0.232, 0.232, 0.231, 0.231, 0.230, 0.230, 0.229, 0.228, 0.228,
0.227, 0.226, 0.226, 0.226, 0.225, 0.225, 0.225, 0.224, 0.224, 0.223, 0.223,
0.222, 0.222, 0.221, 0.221, 0.220, 0.220, 0.220, 0.219, 0.219, 0.218, 0.218,
0.218, 0.217, 0.217, 0.216, 0.216, 0.216, 0.215, 0.215, 0.214, 0.214, 0.214,
0.214, 0.214, 0.214, 0.214, 0.214, 0.214, 0.214, 0.214, 0.214, 0.214, 0.215,
0.215, 0.216, 0.216, 0.216, 0.217, 0.217, 0.218, 0.218, 0.219, 0.220, 0.221,
0.222, 0.223, 0.223, 0.224, 0.224, 0.225, 0.225, 0.225, 0.225, 0.226, 0.226,
0.226, 0.226, 0.226, 0.226, 0.226, 0.226, 0.226, 0.226, 0.225, 0.225, 0.225,
0.225, 0.225, 0.225, 0.225, 0.225, 0.225, 0.226, 0.226, 0.227, 0.227, 0.228,
0.228, 0.229, 0.229, 0.230, 0.231, 0.232, 0.234, 0.235, 0.236, 0.238, 0.240,
0.241, 0.243, 0.245, 0.247, 0.248, 0.250, 0.251, 0.253, 0.255, 0.257, 0.258,
0.260, 0.262, 0.264, 0.266, 0.268, 0.270, 0.272, 0.274, 0.276, 0.279, 0.281,
0.283, 0.286, 0.289, 0.292, 0.295, 0.298, 0.302, 0.306, 0.310, 0.314, 0.318,
0.323, 0.327, 0.332, 0.336, 0.341, 0.346, 0.351, 0.357, 0.362, 0.367, 0.372,
0.376, 0.381, 0.385, 0.390, 0.394, 0.398, 0.401, 0.405, 0.409, 0.412, 0.415,
0.418, 0.421, 0.424, 0.426, 0.428, 0.431, 0.433, 0.435, 0.436, 0.438, 0.439,
0.441, 0.442, 0.443, 0.444, 0.446, 0.447, 0.448, 0.448, 0.449, 0.449, 0.450,
0.450, 0.450, 0.450, 0.451, 0.451, 0.451, 0.451, 0.451, 0.451, 0.451, 0.451,
0.451, 0.451, 0.451, 0.451, 0.451, 0.451, 0.451, 0.451, 0.451, 0.451, 0.451,
0.451, 0.451, 0.451, 0.451, 0.451, 0.451, 0.450, 0.450, 0.450, 0.450, 0.450,
0.450, 0.450, 0.450, 0.450, 0.450, 0.451, 0.451, 0.451, 0.451, 0.451, 0.451,
0.451, 0.451, 0.451, 0.452, 0.452, 0.453, 0.453, 0.453, 0.453, 0.454, 0.454,
0.454, 0.454, 0.454, 0.455, 0.455, 0.455, 0.455, 0.456, 0.456, 0.457, 0.457,
0.457, 0.457, 0.458, 0.458, 0.458, 0.458, 0.459, 0.459, 0.460, 0.460, 0.460,
0.461, 0.461, 0.462, 0.462
]
TCS02 = [
0.111, 0.112, 0.113, 0.114, 0.115, 0.116, 0.116, 0.117, 0.117, 0.118, 0.118,
0.118, 0.119, 0.119, 0.120, 0.120, 0.120, 0.120, 0.121, 0.121, 0.121, 0.121,
0.121, 0.122, 0.122, 0.122, 0.122, 0.122, 0.122, 0.122, 0.122, 0.122, 0.122,
0.122, 0.122, 0.122, 0.122, 0.122, 0.123, 0.123, 0.123, 0.123, 0.123, 0.124,
0.124, 0.124, 0.125, 0.125, 0.126, 0.126, 0.127, 0.127, 0.127, 0.128, 0.128,
0.128, 0.129, 0.129, 0.130, 0.130, 0.131, 0.132, 0.132, 0.133, 0.133, 0.134,
0.135, 0.136, 0.136, 0.137, 0.138, 0.139, 0.140, 0.141, 0.142, 0.143, 0.144,
0.146, 0.147, 0.149, 0.150, 0.152, 0.154, 0.155, 0.157, 0.159, 0.162, 0.165,
0.168, 0.171, 0.174, 0.177, 0.180, 0.184, 0.187, 0.190, 0.193, 0.197, 0.200,
0.204, 0.207, 0.211, 0.214, 0.218, 0.221, 0.225, 0.228, 0.232, 0.235, 0.239,
0.242, 0.244, 0.246, 0.249, 0.251, 0.253, 0.254, 0.256, 0.257, 0.259, 0.260,
0.261, 0.262, 0.262, 0.263, 0.264, 0.265, 0.265, 0.266, 0.266, 0.267, 0.267,
0.268, 0.268, 0.269, 0.269, 0.270, 0.270, 0.271, 0.271, 0.272, 0.273, 0.274,
0.274, 0.275, 0.276, 0.277, 0.278, 0.280, 0.281, 0.282, 0.283, 0.285, 0.286,
0.288, 0.289, 0.291, 0.293, 0.295, 0.297, 0.299, 0.301, 0.303, 0.305, 0.307,
0.309, 0.312, 0.314, 0.317, 0.319, 0.322, 0.323, 0.325, 0.326, 0.328, 0.329,
0.330, 0.331, 0.333, 0.334, 0.335, 0.336, 0.337, 0.337, 0.338, 0.339, 0.339,
0.340, 0.340, 0.341, 0.341, 0.341, 0.341, 0.341, 0.341, 0.341, 0.341, 0.341,
0.342, 0.342, 0.342, 0.342, 0.342, 0.342, 0.342, 0.342, 0.342, 0.342, 0.342,
0.342, 0.342, 0.342, 0.342, 0.341, 0.341, 0.341, 0.341, 0.341, 0.341, 0.341,
0.341, 0.341, 0.340, 0.340, 0.339, 0.339, 0.339, 0.339, 0.339, 0.339, 0.339,
0.339, 0.339, 0.338, 0.338, 0.338, 0.338, 0.338, 0.338, 0.338, 0.338, 0.338,
0.338, 0.337, 0.337, 0.337, 0.337, 0.337, 0.336, 0.336, 0.336, 0.336, 0.336,
0.335, 0.335, 0.335, 0.335, 0.335, 0.334, 0.334, 0.334, 0.334, 0.333, 0.333,
0.332, 0.332, 0.332, 0.332, 0.332, 0.332, 0.332, 0.332, 0.332, 0.331, 0.331,
0.331, 0.331, 0.331, 0.331, 0.331, 0.331, 0.331, 0.331, 0.330, 0.330, 0.330,
0.330, 0.330, 0.329, 0.329, 0.329, 0.329, 0.329, 0.328, 0.328, 0.328, 0.328,
0.328, 0.328, 0.328, 0.328
]
TCS03 = [
0.073, 0.073, 0.073, 0.073, 0.073, 0.073, 0.073, 0.073, 0.074, 0.074, 0.074,
0.074, 0.074, 0.074, 0.074, 0.074, 0.074, 0.074, 0.074, 0.074, 0.074, 0.074,
0.074, 0.073, 0.073, 0.073, 0.073, 0.073, 0.073, 0.073, 0.073, 0.073, 0.073,
0.073, 0.073, 0.073, 0.073, 0.073, 0.073, 0.073, 0.073, 0.073, 0.073, 0.073,
0.073, 0.073, 0.073, 0.073, 0.074, 0.074, 0.074, 0.074, 0.074, 0.075, 0.075,
0.075, 0.075, 0.076, 0.076, 0.077, 0.077, 0.078, 0.078, 0.079, 0.079, 0.080,
0.081, 0.082, 0.083, 0.084, 0.085, 0.087, 0.089, 0.090, 0.092, 0.094, 0.097,
0.100, 0.103, 0.106, 0.109, 0.112, 0.116, 0.119, 0.123, 0.126, 0.130, 0.135,
0.139, 0.144, 0.148, 0.153, 0.158, 0.162, 0.167, 0.172, 0.177, 0.182, 0.188,
0.193, 0.198, 0.203, 0.207, 0.212, 0.216, 0.221, 0.225, 0.229, 0.233, 0.237,
0.241, 0.245, 0.249, 0.252, 0.256, 0.260, 0.264, 0.267, 0.271, 0.274, 0.278,
0.283, 0.288, 0.292, 0.297, 0.302, 0.309, 0.317, 0.324, 0.332, 0.339, 0.345,
0.351, 0.358, 0.364, 0.370, 0.374, 0.379, 0.383, 0.388, 0.392, 0.393, 0.395,
0.396, 0.398, 0.399, 0.399, 0.399, 0.400, 0.400, 0.400, 0.399, 0.397, 0.396,
0.394, 0.393, 0.390, 0.388, 0.385, 0.383, 0.380, 0.377, 0.374, 0.371, 0.368,
0.365, 0.362, 0.359, 0.355, 0.352, 0.349, 0.346, 0.342, 0.339, 0.335, 0.332,
0.329, 0.325, 0.322, 0.318, 0.315, 0.312, 0.309, 0.305, 0.302, 0.299, 0.296,
0.293, 0.291, 0.288, 0.285, 0.282, 0.280, 0.277, 0.275, 0.272, 0.270, 0.269,
0.267, 0.266, 0.264, 0.263, 0.261, 0.260, 0.258, 0.257, 0.256, 0.255, 0.254,
0.253, 0.252, 0.251, 0.250, 0.249, 0.248, 0.247, 0.246, 0.245, 0.243, 0.242,
0.241, 0.240, 0.239, 0.237, 0.236, 0.235, 0.234, 0.233, 0.231, 0.230, 0.229,
0.228, 0.227, 0.226, 0.225, 0.224, 0.223, 0.222, 0.222, 0.221, 0.220, 0.219,
0.219, 0.218, 0.218, 0.217, 0.217, 0.217, 0.216, 0.216, 0.216, 0.216, 0.216,
0.216, 0.216, 0.216, 0.217, 0.217, 0.218, 0.218, 0.219, 0.220, 0.221, 0.222,
0.223, 0.224, 0.225, 0.226, 0.228, 0.229, 0.230, 0.232, 0.233, 0.235, 0.236,
0.238, 0.241, 0.243, 0.246, 0.248, 0.251, 0.255, 0.258, 0.262, 0.265, 0.269,
0.273, 0.277, 0.280, 0.284, 0.288, 0.293, 0.298, 0.302, 0.307, 0.312, 0.318,
0.323, 0.329, 0.334, 0.340
]
TCS04 = [
0.116, 0.117, 0.118, 0.119, 0.120, 0.121, 0.122, 0.122, 0.123, 0.123, 0.124,
0.124, 0.125, 0.125, 0.126, 0.126, 0.126, 0.127, 0.127, 0.128, 0.128, 0.129,
0.129, 0.130, 0.130, 0.131, 0.132, 0.133, 0.133, 0.134, 0.135, 0.136, 0.137,
0.137, 0.138, 0.139, 0.140, 0.141, 0.142, 0.143, 0.144, 0.145, 0.147, 0.148,
0.150, 0.151, 0.153, 0.155, 0.157, 0.159, 0.161, 0.163, 0.165, 0.168, 0.170,
0.172, 0.175, 0.178, 0.180, 0.183, 0.186, 0.190, 0.194, 0.197, 0.201, 0.205,
0.210, 0.215, 0.219, 0.224, 0.229, 0.234, 0.239, 0.244, 0.249, 0.254, 0.259,
0.265, 0.270, 0.276, 0.281, 0.286, 0.292, 0.297, 0.303, 0.308, 0.313, 0.318,
0.322, 0.327, 0.332, 0.336, 0.340, 0.344, 0.348, 0.352, 0.356, 0.359, 0.363,
0.366, 0.370, 0.373, 0.375, 0.378, 0.380, 0.383, 0.384, 0.386, 0.387, 0.389,
0.390, 0.391, 0.392, 0.392, 0.393, 0.394, 0.394, 0.394, 0.395, 0.395, 0.395,
0.394, 0.394, 0.393, 0.393, 0.392, 0.391, 0.389, 0.388, 0.386, 0.385, 0.383,
0.382, 0.380, 0.379, 0.377, 0.375, 0.373, 0.371, 0.369, 0.367, 0.364, 0.362,
0.359, 0.357, 0.354, 0.351, 0.349, 0.346, 0.344, 0.341, 0.338, 0.335, 0.333,
0.330, 0.327, 0.324, 0.321, 0.318, 0.315, 0.312, 0.309, 0.306, 0.302, 0.299,
0.296, 0.293, 0.290, 0.286, 0.283, 0.280, 0.277, 0.273, 0.270, 0.266, 0.263,
0.260, 0.257, 0.253, 0.250, 0.247, 0.243, 0.240, 0.236, 0.233, 0.229, 0.226,
0.223, 0.220, 0.217, 0.214, 0.211, 0.208, 0.204, 0.201, 0.198, 0.195, 0.193,
0.190, 0.188, 0.185, 0.183, 0.181, 0.179, 0.177, 0.175, 0.174, 0.173, 0.171,
0.170, 0.169, 0.168, 0.167, 0.166, 0.165, 0.164, 0.163, 0.162, 0.162, 0.161,
0.160, 0.159, 0.158, 0.158, 0.157, 0.156, 0.156, 0.155, 0.155, 0.154, 0.154,
0.154, 0.153, 0.153, 0.152, 0.152, 0.152, 0.152, 0.151, 0.151, 0.151, 0.151,
0.150, 0.150, 0.149, 0.149, 0.149, 0.149, 0.148, 0.148, 0.148, 0.148, 0.148,
0.148, 0.148, 0.148, 0.148, 0.148, 0.148, 0.148, 0.148, 0.148, 0.148, 0.149,
0.149, 0.149, 0.149, 0.150, 0.150, 0.151, 0.151, 0.152, 0.152, 0.153, 0.153,
0.154, 0.155, 0.156, 0.156, 0.157, 0.158, 0.159, 0.160, 0.160, 0.161, 0.162,
0.163, 0.163, 0.164, 0.164, 0.165, 0.166, 0.166, 0.167, 0.167, 0.168, 0.168,
0.169, 0.169, 0.170, 0.170
]
TCS05 = [
0.313, 0.313, 0.314, 0.314, 0.315, 0.315, 0.316, 0.317, 0.317, 0.318, 0.319,
0.320, 0.320, 0.321, 0.321, 0.322, 0.323, 0.324, 0.324, 0.325, 0.326, 0.327,
0.328, 0.328, 0.329, 0.330, 0.331, 0.332, 0.332, 0.333, 0.334, 0.335, 0.336,
0.337, 0.338, 0.339, 0.340, 0.342, 0.343, 0.345, 0.346, 0.347, 0.348, 0.350,
0.351, 0.352, 0.354, 0.355, 0.357, 0.358, 0.360, 0.362, 0.364, 0.365, 0.367,
0.369, 0.371, 0.374, 0.376, 0.379, 0.381, 0.384, 0.386, 0.389, 0.391, 0.394,
0.396, 0.398, 0.399, 0.401, 0.403, 0.404, 0.406, 0.407, 0.409, 0.410, 0.411,
0.412, 0.413, 0.414, 0.415, 0.416, 0.416, 0.417, 0.417, 0.418, 0.418, 0.418,
0.419, 0.419, 0.419, 0.419, 0.418, 0.418, 0.417, 0.417, 0.416, 0.415, 0.415,
0.414, 0.413, 0.412, 0.411, 0.411, 0.410, 0.409, 0.408, 0.407, 0.405, 0.404,
0.403, 0.402, 0.400, 0.399, 0.397, 0.396, 0.395, 0.393, 0.392, 0.390, 0.389,
0.387, 0.386, 0.384, 0.383, 0.381, 0.379, 0.377, 0.376, 0.374, 0.372, 0.370,
0.368, 0.367, 0.365, 0.363, 0.361, 0.359, 0.357, 0.355, 0.353, 0.351, 0.349,
0.346, 0.344, 0.342, 0.340, 0.338, 0.335, 0.333, 0.331, 0.329, 0.327, 0.324,
0.322, 0.320, 0.318, 0.315, 0.313, 0.310, 0.308, 0.306, 0.303, 0.301, 0.298,
0.296, 0.294, 0.291, 0.289, 0.286, 0.284, 0.281, 0.279, 0.276, 0.274, 0.271,
0.269, 0.267, 0.264, 0.262, 0.260, 0.257, 0.255, 0.252, 0.250, 0.247, 0.244,
0.241, 0.238, 0.235, 0.232, 0.230, 0.227, 0.225, 0.222, 0.220, 0.218, 0.216,
0.214, 0.212, 0.210, 0.208, 0.206, 0.204, 0.202, 0.200, 0.199, 0.198, 0.196,
0.195, 0.194, 0.193, 0.192, 0.191, 0.190, 0.189, 0.188, 0.187, 0.187, 0.186,
0.185, 0.185, 0.184, 0.184, 0.183, 0.183, 0.182, 0.182, 0.181, 0.181, 0.180,
0.179, 0.179, 0.178, 0.178, 0.177, 0.177, 0.177, 0.176, 0.176, 0.176, 0.176,
0.176, 0.175, 0.175, 0.175, 0.175, 0.175, 0.175, 0.175, 0.175, 0.175, 0.175,
0.175, 0.175, 0.175, 0.175, 0.175, 0.175, 0.175, 0.175, 0.175, 0.176, 0.176,
0.177, 0.177, 0.178, 0.178, 0.179, 0.179, 0.180, 0.181, 0.181, 0.182, 0.182,
0.183, 0.184, 0.184, 0.185, 0.185, 0.186, 0.187, 0.187, 0.188, 0.188, 0.189,
0.190, 0.190, 0.191, 0.191, 0.192, 0.193, 0.193, 0.194, 0.194, 0.195, 0.196,
0.197, 0.197, 0.198, 0.199
]
TCS06 = [
0.410, 0.421, 0.432, 0.442, 0.453, 0.464, 0.470, 0.475, 0.481, 0.486, 0.492,
0.495, 0.498, 0.502, 0.505, 0.508, 0.510, 0.512, 0.513, 0.515, 0.517, 0.518,
0.520, 0.521, 0.523, 0.524, 0.525, 0.527, 0.528, 0.530, 0.531, 0.532, 0.534,
0.535, 0.537, 0.538, 0.539, 0.540, 0.542, 0.543, 0.544, 0.545, 0.547, 0.548,
0.550, 0.551, 0.552, 0.553, 0.554, 0.555, 0.556, 0.556, 0.556, 0.556, 0.556,
0.556, 0.556, 0.555, 0.555, 0.554, 0.554, 0.553, 0.552, 0.551, 0.550, 0.549,
0.547, 0.546, 0.544, 0.543, 0.541, 0.539, 0.537, 0.535, 0.533, 0.531, 0.529,
0.526, 0.524, 0.521, 0.519, 0.516, 0.513, 0.510, 0.507, 0.504, 0.501, 0.498,
0.494, 0.491, 0.488, 0.484, 0.480, 0.477, 0.473, 0.469, 0.465, 0.461, 0.458,
0.454, 0.450, 0.446, 0.442, 0.439, 0.435, 0.431, 0.428, 0.424, 0.421, 0.417,
0.414, 0.410, 0.406, 0.403, 0.399, 0.395, 0.391, 0.388, 0.384, 0.381, 0.377,
0.373, 0.369, 0.366, 0.362, 0.358, 0.355, 0.351, 0.348, 0.344, 0.341, 0.338,
0.335, 0.331, 0.328, 0.325, 0.322, 0.319, 0.315, 0.312, 0.309, 0.306, 0.303,
0.299, 0.296, 0.293, 0.290, 0.287, 0.285, 0.282, 0.279, 0.276, 0.273, 0.271,
0.268, 0.265, 0.263, 0.260, 0.258, 0.255, 0.253, 0.251, 0.248, 0.246, 0.243,
0.241, 0.240, 0.238, 0.237, 0.235, 0.234, 0.233, 0.231, 0.230, 0.228, 0.227,
0.227, 0.226, 0.226, 0.225, 0.225, 0.224, 0.224, 0.223, 0.223, 0.222, 0.222,
0.222, 0.221, 0.221, 0.221, 0.221, 0.221, 0.220, 0.220, 0.220, 0.220, 0.220,
0.220, 0.220, 0.220, 0.220, 0.220, 0.220, 0.220, 0.220, 0.220, 0.220, 0.220,
0.220, 0.220, 0.220, 0.220, 0.220, 0.220, 0.220, 0.221, 0.221, 0.222, 0.222,
0.223, 0.224, 0.225, 0.225, 0.226, 0.227, 0.228, 0.229, 0.231, 0.232, 0.233,
0.234, 0.235, 0.237, 0.238, 0.239, 0.240, 0.241, 0.242, 0.243, 0.244, 0.245,
0.247, 0.248, 0.250, 0.251, 0.252, 0.254, 0.255, 0.257, 0.258, 0.259, 0.260,
0.261, 0.262, 0.263, 0.264, 0.265, 0.266, 0.267, 0.268, 0.269, 0.270, 0.271,
0.272, 0.273, 0.274, 0.275, 0.276, 0.277, 0.278, 0.279, 0.279, 0.280, 0.280,
0.281, 0.281, 0.282, 0.282, 0.283, 0.283, 0.284, 0.284, 0.285, 0.285, 0.286,
0.287, 0.288, 0.289, 0.290, 0.291, 0.292, 0.293, 0.294, 0.295, 0.296, 0.297,
0.298, 0.300, 0.301, 0.302
]
TCS07 = [
0.551, 0.552, 0.553, 0.553, 0.554, 0.555, 0.556, 0.557, 0.557, 0.558, 0.559,
0.559, 0.559, 0.560, 0.560, 0.560, 0.560, 0.560, 0.561, 0.561, 0.561, 0.560,
0.560, 0.559, 0.559, 0.558, 0.558, 0.557, 0.557, 0.556, 0.556, 0.555, 0.554,
0.553, 0.552, 0.551, 0.550, 0.548, 0.547, 0.545, 0.544, 0.542, 0.540, 0.539,
0.537, 0.535, 0.532, 0.530, 0.527, 0.525, 0.522, 0.519, 0.516, 0.512, 0.509,
0.506, 0.502, 0.499, 0.495, 0.492, 0.488, 0.484, 0.480, 0.477, 0.473, 0.469,
0.465, 0.461, 0.456, 0.452, 0.448, 0.444, 0.440, 0.437, 0.433, 0.429, 0.425,
0.421, 0.416, 0.412, 0.408, 0.403, 0.399, 0.394, 0.390, 0.385, 0.381, 0.376,
0.372, 0.367, 0.363, 0.359, 0.354, 0.350, 0.345, 0.341, 0.338, 0.334, 0.331,
0.327, 0.324, 0.321, 0.319, 0.316, 0.314, 0.311, 0.309, 0.307, 0.305, 0.303,
0.301, 0.299, 0.297, 0.295, 0.293, 0.291, 0.289, 0.288, 0.286, 0.285, 0.283,
0.281, 0.279, 0.277, 0.275, 0.273, 0.271, 0.270, 0.268, 0.267, 0.265, 0.264,
0.263, 0.262, 0.261, 0.260, 0.259, 0.259, 0.258, 0.258, 0.257, 0.257, 0.257,
0.257, 0.257, 0.257, 0.257, 0.258, 0.258, 0.259, 0.259, 0.259, 0.259, 0.260,
0.260, 0.260, 0.260, 0.260, 0.260, 0.260, 0.260, 0.260, 0.259, 0.259, 0.258,
0.258, 0.258, 0.257, 0.257, 0.256, 0.256, 0.256, 0.255, 0.255, 0.254, 0.254,
0.254, 0.254, 0.254, 0.254, 0.254, 0.255, 0.256, 0.257, 0.258, 0.259, 0.261,
0.263, 0.266, 0.268, 0.270, 0.273, 0.276, 0.278, 0.281, 0.284, 0.288, 0.291,
0.295, 0.298, 0.302, 0.306, 0.311, 0.315, 0.320, 0.324, 0.328, 0.332, 0.336,
0.340, 0.344, 0.348, 0.351, 0.355, 0.358, 0.362, 0.365, 0.368, 0.371, 0.374,
0.377, 0.379, 0.382, 0.384, 0.387, 0.389, 0.391, 0.393, 0.396, 0.398, 0.400,
0.402, 0.404, 0.406, 0.408, 0.410, 0.412, 0.414, 0.416, 0.418, 0.420, 0.422,
0.424, 0.425, 0.427, 0.429, 0.431, 0.433, 0.434, 0.436, 0.438, 0.439, 0.441,
0.442, 0.444, 0.445, 0.446, 0.448, 0.449, 0.451, 0.452, 0.453, 0.454, 0.455,
0.456, 0.457, 0.458, 0.459, 0.460, 0.461, 0.462, 0.463, 0.464, 0.464, 0.465,
0.466, 0.466, 0.467, 0.467, 0.468, 0.468, 0.468, 0.469, 0.469, 0.470, 0.470,
0.471, 0.471, 0.472, 0.472, 0.473, 0.474, 0.475, 0.475, 0.476, 0.477, 0.478,
0.479, 0.481, 0.482, 0.483
]
TCS08 = [
0.319, 0.338, 0.358, 0.377, 0.397, 0.416, 0.425, 0.434, 0.444, 0.453, 0.462,
0.466, 0.470, 0.474, 0.478, 0.482, 0.484, 0.485, 0.487, 0.488, 0.490, 0.490,
0.489, 0.489, 0.488, 0.488, 0.487, 0.486, 0.484, 0.483, 0.482, 0.480, 0.478,
0.477, 0.475, 0.473, 0.471, 0.469, 0.466, 0.464, 0.462, 0.460, 0.457, 0.455,
0.452, 0.450, 0.448, 0.446, 0.443, 0.441, 0.439, 0.436, 0.434, 0.431, 0.429,
0.426, 0.423, 0.421, 0.418, 0.416, 0.413, 0.410, 0.407, 0.403, 0.400, 0.397,
0.394, 0.391, 0.388, 0.385, 0.382, 0.379, 0.376, 0.372, 0.369, 0.366, 0.363,
0.360, 0.358, 0.355, 0.352, 0.349, 0.346, 0.343, 0.340, 0.337, 0.335, 0.332,
0.330, 0.327, 0.325, 0.322, 0.319, 0.316, 0.313, 0.310, 0.308, 0.306, 0.303,
0.301, 0.299, 0.297, 0.295, 0.293, 0.291, 0.289, 0.288, 0.287, 0.285, 0.284,
0.283, 0.282, 0.280, 0.279, 0.277, 0.276, 0.275, 0.274, 0.272, 0.271, 0.270,
0.268, 0.267, 0.265, 0.264, 0.262, 0.261, 0.260, 0.258, 0.257, 0.256, 0.255,
0.254, 0.253, 0.252, 0.251, 0.251, 0.251, 0.250, 0.250, 0.250, 0.250, 0.250,
0.251, 0.251, 0.251, 0.252, 0.252, 0.253, 0.253, 0.254, 0.255, 0.256, 0.256,
0.257, 0.258, 0.259, 0.260, 0.262, 0.263, 0.264, 0.265, 0.266, 0.267, 0.268,
0.269, 0.270, 0.270, 0.271, 0.271, 0.272, 0.272, 0.273, 0.273, 0.274, 0.274,
0.275, 0.276, 0.276, 0.277, 0.278, 0.279, 0.280, 0.282, 0.283, 0.284, 0.286,
0.288, 0.291, 0.293, 0.295, 0.299, 0.303, 0.308, 0.312, 0.316, 0.322, 0.329,
0.335, 0.342, 0.348, 0.355, 0.362, 0.370, 0.377, 0.384, 0.394, 0.404, 0.414,
0.424, 0.434, 0.444, 0.453, 0.463, 0.472, 0.482, 0.491, 0.500, 0.510, 0.519,
0.528, 0.536, 0.544, 0.552, 0.560, 0.568, 0.575, 0.582, 0.590, 0.597, 0.604,
0.609, 0.614, 0.619, 0.624, 0.629, 0.633, 0.637, 0.640, 0.644, 0.648, 0.651,
0.654, 0.657, 0.660, 0.663, 0.666, 0.668, 0.671, 0.673, 0.676, 0.678, 0.680,
0.681, 0.683, 0.685, 0.687, 0.688, 0.690, 0.691, 0.693, 0.694, 0.696, 0.697,
0.699, 0.700, 0.701, 0.702, 0.703, 0.704, 0.705, 0.706, 0.707, 0.707, 0.708,
0.709, 0.710, 0.710, 0.711, 0.711, 0.712, 0.713, 0.713, 0.714, 0.714, 0.715,
0.715, 0.716, 0.716, 0.717, 0.717, 0.717, 0.718, 0.718, 0.719, 0.719, 0.719,
0.720, 0.720, 0.721, 0.721
]
TCS09 = [
0.256, 0.256, 0.255, 0.255, 0.254, 0.254, 0.254, 0.253, 0.253, 0.252, 0.252,
0.251, 0.250, 0.250, 0.249, 0.248, 0.247, 0.246, 0.246, 0.245, 0.244, 0.243,
0.242, 0.242, 0.241, 0.240, 0.239, 0.239, 0.238, 0.238, 0.237, 0.236, 0.235,
0.234, 0.233, 0.232, 0.232, 0.231, 0.231, 0.230, 0.230, 0.229, 0.228, 0.228,
0.227, 0.226, 0.226, 0.226, 0.225, 0.225, 0.225, 0.224, 0.224, 0.223, 0.223,
0.222, 0.222, 0.221, 0.221, 0.220, 0.220, 0.220, 0.219, 0.219, 0.218, 0.218,
0.218, 0.217, 0.217, 0.216, 0.216, 0.216, 0.215, 0.215, 0.214, 0.214, 0.214,
0.214, 0.214, 0.214, 0.214, 0.214, 0.214, 0.214, 0.214, 0.214, 0.214, 0.215,
0.215, 0.216, 0.216, 0.216, 0.217, 0.217, 0.218, 0.218, 0.219, 0.220, 0.221,
0.222, 0.223, 0.223, 0.224, 0.224, 0.225, 0.225, 0.225, 0.225, 0.226, 0.226,
0.226, 0.226, 0.226, 0.226, 0.226, 0.226, 0.226, 0.226, 0.225, 0.225, 0.225,
0.225, 0.225, 0.225, 0.225, 0.225, 0.225, 0.226, 0.226, 0.227, 0.227, 0.228,
0.228, 0.229, 0.229, 0.230, 0.231, 0.232, 0.234, 0.235, 0.236, 0.238, 0.240,
0.241, 0.243, 0.245, 0.247, 0.248, 0.250, 0.251, 0.253, 0.255, 0.257, 0.258,
0.260, 0.262, 0.264, 0.266, 0.268, 0.270, 0.272, 0.274, 0.276, 0.279, 0.281,
0.283, 0.286, 0.289, 0.292, 0.295, 0.298, 0.302, 0.306, 0.310, 0.314, 0.318,
0.323, 0.327, 0.332, 0.336, 0.341, 0.346, 0.351, 0.357, 0.362, 0.367, 0.372,
0.376, 0.381, 0.385, 0.390, 0.394, 0.398, 0.401, 0.405, 0.409, 0.412, 0.415,
0.418, 0.421, 0.424, 0.426, 0.428, 0.431, 0.433, 0.435, 0.436, 0.438, 0.439,
0.441, 0.442, 0.443, 0.444, 0.446, 0.447, 0.448, 0.448, 0.449, 0.449, 0.450,
0.450, 0.450, 0.450, 0.451, 0.451, 0.451, 0.451, 0.451, 0.451, 0.451, 0.451,
0.451, 0.451, 0.451, 0.451, 0.451, 0.451, 0.451, 0.451, 0.451, 0.451, 0.451,
0.451, 0.451, 0.451, 0.451, 0.451, 0.451, 0.450, 0.450, 0.450, 0.450, 0.450,
0.450, 0.450, 0.450, 0.450, 0.450, 0.451, 0.451, 0.451, 0.451, 0.451, 0.451,
0.451, 0.451, 0.451, 0.452, 0.452, 0.453, 0.453, 0.453, 0.453, 0.454, 0.454,
0.454, 0.454, 0.454, 0.455, 0.455, 0.455, 0.455, 0.456, 0.456, 0.457, 0.457,
0.457, 0.457, 0.458, 0.458, 0.458, 0.458, 0.459, 0.459, 0.460, 0.460, 0.460,
0.461, 0.461, 0.462, 0.462
]
TCS10 = [
0.111, 0.112, 0.113, 0.114, 0.115, 0.116, 0.116, 0.117, 0.117, 0.118, 0.118,
0.118, 0.119, 0.119, 0.120, 0.120, 0.120, 0.120, 0.121, 0.121, 0.121, 0.121,
0.121, 0.122, 0.122, 0.122, 0.122, 0.122, 0.122, 0.122, 0.122, 0.122, 0.122,
0.122, 0.122, 0.122, 0.122, 0.122, 0.123, 0.123, 0.123, 0.123, 0.123, 0.124,
0.124, 0.124, 0.125, 0.125, 0.126, 0.126, 0.127, 0.127, 0.127, 0.128, 0.128,
0.128, 0.129, 0.129, 0.130, 0.130, 0.131, 0.132, 0.132, 0.133, 0.133, 0.134,
0.135, 0.136, 0.136, 0.137, 0.138, 0.139, 0.140, 0.141, 0.142, 0.143, 0.144,
0.146, 0.147, 0.149, 0.150, 0.152, 0.154, 0.155, 0.157, 0.159, 0.162, 0.165,
0.168, 0.171, 0.174, 0.177, 0.180, 0.184, 0.187, 0.190, 0.193, 0.197, 0.200,
0.204, 0.207, 0.211, 0.214, 0.218, 0.221, 0.225, 0.228, 0.232, 0.235, 0.239,
0.242, 0.244, 0.246, 0.249, 0.251, 0.253, 0.254, 0.256, 0.257, 0.259, 0.260,
0.261, 0.262, 0.262, 0.263, 0.264, 0.265, 0.265, 0.266, 0.266, 0.267, 0.267,
0.268, 0.268, 0.269, 0.269, 0.270, 0.270, 0.271, 0.271, 0.272, 0.273, 0.274,
0.274, 0.275, 0.276, 0.277, 0.278, 0.280, 0.281, 0.282, 0.283, 0.285, 0.286,
0.288, 0.289, 0.291, 0.293, 0.295, 0.297, 0.299, 0.301, 0.303, 0.305, 0.307,
0.309, 0.312, 0.314, 0.317, 0.319, 0.322, 0.323, 0.325, 0.326, 0.328, 0.329,
0.330, 0.331, 0.333, 0.334, 0.335, 0.336, 0.337, 0.337, 0.338, 0.339, 0.339,
0.340, 0.340, 0.341, 0.341, 0.341, 0.341, 0.341, 0.341, 0.341, 0.341, 0.341,
0.342, 0.342, 0.342, 0.342, 0.342, 0.342, 0.342, 0.342, 0.342, 0.342, 0.342,
0.342, 0.342, 0.342, 0.342, 0.341, 0.341, 0.341, 0.341, 0.341, 0.341, 0.341,
0.341, 0.341, 0.340, 0.340, 0.339, 0.339, 0.339, 0.339, 0.339, 0.339, 0.339,
0.339, 0.339, 0.338, 0.338, 0.338, 0.338, 0.338, 0.338, 0.338, 0.338, 0.338,
0.338, 0.337, 0.337, 0.337, 0.337, 0.337, 0.336, 0.336, 0.336, 0.336, 0.336,
0.335, 0.335, 0.335, 0.335, 0.335, 0.334, 0.334, 0.334, 0.334, 0.333, 0.333,
0.332, 0.332, 0.332, 0.332, 0.332, 0.332, 0.332, 0.332, 0.332, 0.331, 0.331,
0.331, 0.331, 0.331, 0.331, 0.331, 0.331, 0.331, 0.331, 0.330, 0.330, 0.330,
0.330, 0.330, 0.329, 0.329, 0.329, 0.329, 0.329, 0.328, 0.328, 0.328, 0.328,
0.328, 0.328, 0.328, 0.328
]
TCS11 = [
0.073, 0.073, 0.073, 0.073, 0.073, 0.073, 0.073, 0.073, 0.074, 0.074, 0.074,
0.074, 0.074, 0.074, 0.074, 0.074, 0.074, 0.074, 0.074, 0.074, 0.074, 0.074,
0.074, 0.073, 0.073, 0.073, 0.073, 0.073, 0.073, 0.073, 0.073, 0.073, 0.073,
0.073, 0.073, 0.073, 0.073, 0.073, 0.073, 0.073, 0.073, 0.073, 0.073, 0.073,
0.073, 0.073, 0.073, 0.073, 0.074, 0.074, 0.074, 0.074, 0.074, 0.075, 0.075,
0.075, 0.075, 0.076, 0.076, 0.077, 0.077, 0.078, 0.078, 0.079, 0.079, 0.080,
0.081, 0.082, 0.083, 0.084, 0.085, 0.087, 0.089, 0.090, 0.092, 0.094, 0.097,
0.100, 0.103, 0.106, 0.109, 0.112, 0.116, 0.119, 0.123, 0.126, 0.130, 0.135,
0.139, 0.144, 0.148, 0.153, 0.158, 0.162, 0.167, 0.172, 0.177, 0.182, 0.188,
0.193, 0.198, 0.203, 0.207, 0.212, 0.216, 0.221, 0.225, 0.229, 0.233, 0.237,
0.241, 0.245, 0.249, 0.252, 0.256, 0.260, 0.264, 0.267, 0.271, 0.274, 0.278,
0.283, 0.288, 0.292, 0.297, 0.302, 0.309, 0.317, 0.324, 0.332, 0.339, 0.345,
0.351, 0.358, 0.364, 0.370, 0.374, 0.379, 0.383, 0.388, 0.392, 0.393, 0.395,
0.396, 0.398, 0.399, 0.399, 0.399, 0.400, 0.400, 0.400, 0.399, 0.397, 0.396,
0.394, 0.393, 0.390, 0.388, 0.385, 0.383, 0.380, 0.377, 0.374, 0.371, 0.368,
0.365, 0.362, 0.359, 0.355, 0.352, 0.349, 0.346, 0.342, 0.339, 0.335, 0.332,
0.329, 0.325, 0.322, 0.318, 0.315, 0.312, 0.309, 0.305, 0.302, 0.299, 0.296,
0.293, 0.291, 0.288, 0.285, 0.282, 0.280, 0.277, 0.275, 0.272, 0.270, 0.269,
0.267, 0.266, 0.264, 0.263, 0.261, 0.260, 0.258, 0.257, 0.256, 0.255, 0.254,
0.253, 0.252, 0.251, 0.250, 0.249, 0.248, 0.247, 0.246, 0.245, 0.243, 0.242,
0.241, 0.240, 0.239, 0.237, 0.236, 0.235, 0.234, 0.233, 0.231, 0.230, 0.229,
0.228, 0.227, 0.226, 0.225, 0.224, 0.223, 0.222, 0.222, 0.221, 0.220, 0.219,
0.219, 0.218, 0.218, 0.217, 0.217, 0.217, 0.216, 0.216, 0.216, 0.216, 0.216,
0.216, 0.216, 0.216, 0.217, 0.217, 0.218, 0.218, 0.219, 0.220, 0.221, 0.222,
0.223, 0.224, 0.225, 0.226, 0.228, 0.229, 0.230, 0.232, 0.233, 0.235, 0.236,
0.238, 0.241, 0.243, 0.246, 0.248, 0.251, 0.255, 0.258, 0.262, 0.265, 0.269,
0.273, 0.277, 0.280, 0.284, 0.288, 0.293, 0.298, 0.302, 0.307, 0.312, 0.318,
0.323, 0.329, 0.334, 0.340
]
TCS12 = [
0.116, 0.117, 0.118, 0.119, 0.120, 0.121, 0.122, 0.122, 0.123, 0.123, 0.124,
0.124, 0.125, 0.125, 0.126, 0.126, 0.126, 0.127, 0.127, 0.128, 0.128, 0.129,
0.129, 0.130, 0.130, 0.131, 0.132, 0.133, 0.133, 0.134, 0.135, 0.136, 0.137,
0.137, 0.138, 0.139, 0.140, 0.141, 0.142, 0.143, 0.144, 0.145, 0.147, 0.148,
0.150, 0.151, 0.153, 0.155, 0.157, 0.159, 0.161, 0.163, 0.165, 0.168, 0.170,
0.172, 0.175, 0.178, 0.180, 0.183, 0.186, 0.190, 0.194, 0.197, 0.201, 0.205,
0.210, 0.215, 0.219, 0.224, 0.229, 0.234, 0.239, 0.244, 0.249, 0.254, 0.259,
0.265, 0.270, 0.276, 0.281, 0.286, 0.292, 0.297, 0.303, 0.308, 0.313, 0.318,
0.322, 0.327, 0.332, 0.336, 0.340, 0.344, 0.348, 0.352, 0.356, 0.359, 0.363,
0.366, 0.370, 0.373, 0.375, 0.378, 0.380, 0.383, 0.384, 0.386, 0.387, 0.389,
0.390, 0.391, 0.392, 0.392, 0.393, 0.394, 0.394, 0.394, 0.395, 0.395, 0.395,
0.394, 0.394, 0.393, 0.393, 0.392, 0.391, 0.389, 0.388, 0.386, 0.385, 0.383,
0.382, 0.380, 0.379, 0.377, 0.375, 0.373, 0.371, 0.369, 0.367, 0.364, 0.362,
0.359, 0.357, 0.354, 0.351, 0.349, 0.346, 0.344, 0.341, 0.338, 0.335, 0.333,
0.330, 0.327, 0.324, 0.321, 0.318, 0.315, 0.312, 0.309, 0.306, 0.302, 0.299,
0.296, 0.293, 0.290, 0.286, 0.283, 0.280, 0.277, 0.273, 0.270, 0.266, 0.263,
0.260, 0.257, 0.253, 0.250, 0.247, 0.243, 0.240, 0.236, 0.233, 0.229, 0.226,
0.223, 0.220, 0.217, 0.214, 0.211, 0.208, 0.204, 0.201, 0.198, 0.195, 0.193,
0.190, 0.188, 0.185, 0.183, 0.181, 0.179, 0.177, 0.175, 0.174, 0.173, 0.171,
0.170, 0.169, 0.168, 0.167, 0.166, 0.165, 0.164, 0.163, 0.162, 0.162, 0.161,
0.160, 0.159, 0.158, 0.158, 0.157, 0.156, 0.156, 0.155, 0.155, 0.154, 0.154,
0.154, 0.153, 0.153, 0.152, 0.152, 0.152, 0.152, 0.151, 0.151, 0.151, 0.151,
0.150, 0.150, 0.149, 0.149, 0.149, 0.149, 0.148, 0.148, 0.148, 0.148, 0.148,
0.148, 0.148, 0.148, 0.148, 0.148, 0.148, 0.148, 0.148, 0.148, 0.148, 0.149,
0.149, 0.149, 0.149, 0.150, 0.150, 0.151, 0.151, 0.152, 0.152, 0.153, 0.153,
0.154, 0.155, 0.156, 0.156, 0.157, 0.158, 0.159, 0.160, 0.160, 0.161, 0.162,
0.163, 0.163, 0.164, 0.164, 0.165, 0.166, 0.166, 0.167, 0.167, 0.168, 0.168,
0.169, 0.169, 0.170, 0.170
]
TCS13 = [
0.313, 0.313, 0.314, 0.314, 0.315, 0.315, 0.316, 0.317, 0.317, 0.318, 0.319,
0.320, 0.320, 0.321, 0.321, 0.322, 0.323, 0.324, 0.324, 0.325, 0.326, 0.327,
0.328, 0.328, 0.329, 0.330, 0.331, 0.332, 0.332, 0.333, 0.334, 0.335, 0.336,
0.337, 0.338, 0.339, 0.340, 0.342, 0.343, 0.345, 0.346, 0.347, 0.348, 0.350,
0.351, 0.352, 0.354, 0.355, 0.357, 0.358, 0.360, 0.362, 0.364, 0.365, 0.367,
0.369, 0.371, 0.374, 0.376, 0.379, 0.381, 0.384, 0.386, 0.389, 0.391, 0.394,
0.396, 0.398, 0.399, 0.401, 0.403, 0.404, 0.406, 0.407, 0.409, 0.410, 0.411,
0.412, 0.413, 0.414, 0.415, 0.416, 0.416, 0.417, 0.417, 0.418, 0.418, 0.418,
0.419, 0.419, 0.419, 0.419, 0.418, 0.418, 0.417, 0.417, 0.416, 0.415, 0.415,
0.414, 0.413, 0.412, 0.411, 0.411, 0.410, 0.409, 0.408, 0.407, 0.405, 0.404,
0.403, 0.402, 0.400, 0.399, 0.397, 0.396, 0.395, 0.393, 0.392, 0.390, 0.389,
0.387, 0.386, 0.384, 0.383, 0.381, 0.379, 0.377, 0.376, 0.374, 0.372, 0.370,
0.368, 0.367, 0.365, 0.363, 0.361, 0.359, 0.357, 0.355, 0.353, 0.351, 0.349,
0.346, 0.344, 0.342, 0.340, 0.338, 0.335, 0.333, 0.331, 0.329, 0.327, 0.324,
0.322, 0.320, 0.318, 0.315, 0.313, 0.310, 0.308, 0.306, 0.303, 0.301, 0.298,
0.296, 0.294, 0.291, 0.289, 0.286, 0.284, 0.281, 0.279, 0.276, 0.274, 0.271,
0.269, 0.267, 0.264, 0.262, 0.260, 0.257, 0.255, 0.252, 0.250, 0.247, 0.244,
0.241, 0.238, 0.235, 0.232, 0.230, 0.227, 0.225, 0.222, 0.220, 0.218, 0.216,
0.214, 0.212, 0.210, 0.208, 0.206, 0.204, 0.202, 0.200, 0.199, 0.198, 0.196,
0.195, 0.194, 0.193, 0.192, 0.191, 0.190, 0.189, 0.188, 0.187, 0.187, 0.186,
0.185, 0.185, 0.184, 0.184, 0.183, 0.183, 0.182, 0.182, 0.181, 0.181, 0.180,
0.179, 0.179, 0.178, 0.178, 0.177, 0.177, 0.177, 0.176, 0.176, 0.176, 0.176,
0.176, 0.175, 0.175, 0.175, 0.175, 0.175, 0.175, 0.175, 0.175, 0.175, 0.175,
0.175, 0.175, 0.175, 0.175, 0.175, 0.175, 0.175, 0.175, 0.175, 0.176, 0.176,
0.177, 0.177, 0.178, 0.178, 0.179, 0.179, 0.180, 0.181, 0.181, 0.182, 0.182,
0.183, 0.184, 0.184, 0.185, 0.185, 0.186, 0.187, 0.187, 0.188, 0.188, 0.189,
0.190, 0.190, 0.191, 0.191, 0.192, 0.193, 0.193, 0.194, 0.194, 0.195, 0.196,
0.197, 0.197, 0.198, 0.199
]
TCS14 = [
0.410, 0.421, 0.432, 0.442, 0.453, 0.464, 0.470, 0.475, 0.481, 0.486, 0.492,
0.495, 0.498, 0.502, 0.505, 0.508, 0.510, 0.512, 0.513, 0.515, 0.517, 0.518,
0.520, 0.521, 0.523, 0.524, 0.525, 0.527, 0.528, 0.530, 0.531, 0.532, 0.534,
0.535, 0.537, 0.538, 0.539, 0.540, 0.542, 0.543, 0.544, 0.545, 0.547, 0.548,
0.550, 0.551, 0.552, 0.553, 0.554, 0.555, 0.556, 0.556, 0.556, 0.556, 0.556,
0.556, 0.556, 0.555, 0.555, 0.554, 0.554, 0.553, 0.552, 0.551, 0.550, 0.549,
0.547, 0.546, 0.544, 0.543, 0.541, 0.539, 0.537, 0.535, 0.533, 0.531, 0.529,
0.526, 0.524, 0.521, 0.519, 0.516, 0.513, 0.510, 0.507, 0.504, 0.501, 0.498,
0.494, 0.491, 0.488, 0.484, 0.480, 0.477, 0.473, 0.469, 0.465, 0.461, 0.458,
0.454, 0.450, 0.446, 0.442, 0.439, 0.435, 0.431, 0.428, 0.424, 0.421, 0.417,
0.414, 0.410, 0.406, 0.403, 0.399, 0.395, 0.391, 0.388, 0.384, 0.381, 0.377,
0.373, 0.369, 0.366, 0.362, 0.358, 0.355, 0.351, 0.348, 0.344, 0.341, 0.338,
0.335, 0.331, 0.328, 0.325, 0.322, 0.319, 0.315, 0.312, 0.309, 0.306, 0.303,
0.299, 0.296, 0.293, 0.290, 0.287, 0.285, 0.282, 0.279, 0.276, 0.273, 0.271,
0.268, 0.265, 0.263, 0.260, 0.258, 0.255, 0.253, 0.251, 0.248, 0.246, 0.243,
0.241, 0.240, 0.238, 0.237, 0.235, 0.234, 0.233, 0.231, 0.230, 0.228, 0.227,
0.227, 0.226, 0.226, 0.225, 0.225, 0.224, 0.224, 0.223, 0.223, 0.222, 0.222,
0.222, 0.221, 0.221, 0.221, 0.221, 0.221, 0.220, 0.220, 0.220, 0.220, 0.220,
0.220, 0.220, 0.220, 0.220, 0.220, 0.220, 0.220, 0.220, 0.220, 0.220, 0.220,
0.220, 0.220, 0.220, 0.220, 0.220, 0.220, 0.220, 0.221, 0.221, 0.222, 0.222,
0.223, 0.224, 0.225, 0.225, 0.226, 0.227, 0.228, 0.229, 0.231, 0.232, 0.233,
0.234, 0.235, 0.237, 0.238, 0.239, 0.240, 0.241, 0.242, 0.243, 0.244, 0.245,
0.247, 0.248, 0.250, 0.251, 0.252, 0.254, 0.255, 0.257, 0.258, 0.259, 0.260,
0.261, 0.262, 0.263, 0.264, 0.265, 0.266, 0.267, 0.268, 0.269, 0.270, 0.271,
0.272, 0.273, 0.274, 0.275, 0.276, 0.277, 0.278, 0.279, 0.279, 0.280, 0.280,
0.281, 0.281, 0.282, 0.282, 0.283, 0.283, 0.284, 0.284, 0.285, 0.285, 0.286,
0.287, 0.288, 0.289, 0.290, 0.291, 0.292, 0.293, 0.294, 0.295, 0.296, 0.297,
0.298, 0.300, 0.301, 0.302
]
# ILLUM_D_S0, ILLUM_D_S1, ILLUM_D_S2 are used in calculating the spectrum of
# illuminant D (daylight) at various color temperatures (see
# http://en.wikipedia.org/wiki/Standard_illuminant, and also from the
# spreadsheet found at:
# http://www.cis.rit.edu/mcsl/online/CIE/DaylightSeries.xls. Both sources give
# the same calculation.) The original data is given at every 10 nm, CIE gives
# the data at every 5 nm by linear interpolation of the 10nm data. This data at
# every nm is just a linear interpolation of the 10 nm data. Because the
# functions are not-continuous, I don't think any better fit can be done.
ILLUM_D_S0 = {
300: 0.04,
301: 0.64,
302: 1.23,
303: 1.83,
304: 2.42,
305: 3.02,
306: 3.62,
307: 4.21,
308: 4.81,
309: 5.40,
310: 6.00,
311: 8.36,
312: 10.72,
313: 13.08,
314: 15.44,
315: 17.80,
316: 20.16,
317: 22.52,
318: 24.88,
319: 27.24,
320: 29.60,
321: 32.17,
322: 34.74,
323: 37.31,
324: 39.88,
325: 42.45,
326: 45.02,
327: 47.59,
328: 50.16,
329: 52.73,
330: 55.30,
331: 55.50,
332: 55.70,
333: 55.90,
334: 56.10,
335: 56.30,
336: 56.50,
337: 56.70,
338: 56.90,
339: 57.10,
340: 57.30,
341: 57.75,
342: 58.20,
343: 58.65,
344: 59.10,
345: 59.55,
346: 60.00,
347: 60.45,
348: 60.90,
349: 61.35,
350: 61.80,
351: 61.77,
352: 61.74,
353: 61.71,
354: 61.68,
355: 61.65,
356: 61.62,
357: 61.59,
358: 61.56,
359: 61.53,
360: 61.50,
361: 62.23,
362: 62.96,
363: 63.69,
364: 64.42,
365: 65.15,
366: 65.88,
367: 66.61,
368: 67.34,
369: 68.07,
370: 68.80,
371: 68.26,
372: 67.72,
373: 67.18,
374: 66.64,
375: 66.10,
376: 65.56,
377: 65.02,
378: 64.48,
379: 63.94,
380: 63.40,
381: 63.64,
382: 63.88,
383: 64.12,
384: 64.36,
385: 64.60,
386: 64.84,
387: 65.08,
388: 65.32,
389: 65.56,
390: 65.80,
391: 68.70,
392: 71.60,
393: 74.50,
394: 77.40,
395: 80.30,
396: 83.20,
397: 86.10,
398: 89.00,
399: 91.90,
400: 94.80,
401: 95.80,
402: 96.80,
403: 97.80,
404: 98.80,
405: 99.80,
406: 100.80,
407: 101.80,
408: 102.80,
409: 103.80,
410: 104.80,
411: 104.91,
412: 105.02,
413: 105.13,
414: 105.24,
415: 105.35,
416: 105.46,
417: 105.57,
418: 105.68,
419: 105.79,
420: 105.90,
421: 104.99,
422: 104.08,
423: 103.17,
424: 102.26,
425: 101.35,
426: 100.44,
427: 99.53,
428: 98.62,
429: 97.71,
430: 96.80,
431: 98.51,
432: 100.22,
433: 101.93,
434: 103.64,
435: 105.35,
436: 107.06,
437: 108.77,
438: 110.48,
439: 112.19,
440: 113.90,
441: 115.07,
442: 116.24,
443: 117.41,
444: 118.58,
445: 119.75,
446: 120.92,
447: 122.09,
448: 123.26,
449: 124.43,
450: 125.60,
451: 125.59,
452: 125.58,
453: 125.57,
454: 125.56,
455: 125.55,
456: 125.54,
457: 125.53,
458: 125.52,
459: 125.51,
460: 125.50,
461: 125.08,
462: 124.66,
463: 124.24,
464: 123.82,
465: 123.40,
466: 122.98,
467: 122.56,
468: 122.14,
469: 121.72,
470: 121.30,
471: 121.30,
472: 121.30,
473: 121.30,
474: 121.30,
475: 121.30,
476: 121.30,
477: 121.30,
478: 121.30,
479: 121.30,
480: 121.30,
481: 120.52,
482: 119.74,
483: 118.96,
484: 118.18,
485: 117.40,
486: 116.62,
487: 115.84,
488: 115.06,
489: 114.28,
490: 113.50,
491: 113.46,
492: 113.42,
493: 113.38,
494: 113.34,
495: 113.30,
496: 113.26,
497: 113.22,
498: 113.18,
499: 113.14,
500: 113.10,
501: 112.87,
502: 112.64,
503: 112.41,
504: 112.18,
505: 111.95,
506: 111.72,
507: 111.49,
508: 111.26,
509: 111.03,
510: 110.80,
511: 110.37,
512: 109.94,
513: 109.51,
514: 109.08,
515: 108.65,
516: 108.22,
517: 107.79,
518: 107.36,
519: 106.93,
520: 106.50,
521: 106.73,
522: 106.96,
523: 107.19,
524: 107.42,
525: 107.65,
526: 107.88,
527: 108.11,
528: 108.34,
529: 108.57,
530: 108.80,
531: 108.45,
532: 108.10,
533: 107.75,
534: 107.40,
535: 107.05,
536: 106.70,
537: 106.35,
538: 106.00,
539: 105.65,
540: 105.30,
541: 105.21,
542: 105.12,
543: 105.03,
544: 104.94,
545: 104.85,
546: 104.76,
547: 104.67,
548: 104.58,
549: 104.49,
550: 104.40,
551: 103.96,
552: 103.52,
553: 103.08,
554: 102.64,
555: 102.20,
556: 101.76,
557: 101.32,
558: 100.88,
559: 100.44,
560: 100.00,
561: 99.60,
562: 99.20,
563: 98.80,
564: 98.40,
565: 98.00,
566: 97.60,
567: 97.20,
568: 96.80,
569: 96.40,
570: 96.00,
571: 95.91,
572: 95.82,
573: 95.73,
574: 95.64,
575: 95.55,
576: 95.46,
577: 95.37,
578: 95.28,
579: 95.19,
580: 95.10,
581: 94.50,
582: 93.90,
583: 93.30,
584: 92.70,
585: 92.10,
586: 91.50,
587: 90.90,
588: 90.30,
589: 89.70,
590: 89.10,
591: 89.24,
592: 89.38,
593: 89.52,
594: 89.66,
595: 89.80,
596: 89.94,
597: 90.08,
598: 90.22,
599: 90.36,
600: 90.50,
601: 90.48,
602: 90.46,
603: 90.44,
604: 90.42,
605: 90.40,
606: 90.38,
607: 90.36,
608: 90.34,
609: 90.32,
610: 90.30,
611: 90.11,
612: 89.92,
613: 89.73,
614: 89.54,
615: 89.35,
616: 89.16,
617: 88.97,
618: 88.78,
619: 88.59,
620: 88.40,
621: 87.96,
622: 87.52,
623: 87.08,
624: 86.64,
625: 86.20,
626: 85.76,
627: 85.32,
628: 84.88,
629: 84.44,
630: 84.00,
631: 84.11,
632: 84.22,
633: 84.33,
634: 84.44,
635: 84.55,
636: 84.66,
637: 84.77,
638: 84.88,
639: 84.99,
640: 85.10,
641: 84.78,
642: 84.46,
643: 84.14,
644: 83.82,
645: 83.50,
646: 83.18,
647: 82.86,
648: 82.54,
649: 82.22,
650: 81.90,
651: 81.97,
652: 82.04,
653: 82.11,
654: 82.18,
655: 82.25,
656: 82.32,
657: 82.39,
658: 82.46,
659: 82.53,
660: 82.60,
661: 82.83,
662: 83.06,
663: 83.29,
664: 83.52,
665: 83.75,
666: 83.98,
667: 84.21,
668: 84.44,
669: 84.67,
670: 84.90,
671: 84.54,
672: 84.18,
673: 83.82,
674: 83.46,
675: 83.10,
676: 82.74,
677: 82.38,
678: 82.02,
679: 81.66,
680: 81.30,
681: 80.36,
682: 79.42,
683: 78.48,
684: 77.54,
685: 76.60,
686: 75.66,
687: 74.72,
688: 73.78,
689: 72.84,
690: 71.90,
691: 72.14,
692: 72.38,
693: 72.62,
694: 72.86,
695: 73.10,
696: 73.34,
697: 73.58,
698: 73.82,
699: 74.06,
700: 74.30,
701: 74.51,
702: 74.72,
703: 74.93,
704: 75.14,
705: 75.35,
706: 75.56,
707: 75.77,
708: 75.98,
709: 76.19,
710: 76.40,
711: 75.09,
712: 73.78,
713: 72.47,
714: 71.16,
715: 69.85,
716: 68.54,
717: 67.23,
718: 65.92,
719: 64.61,
720: 63.30,
721: 64.14,
722: 64.98,
723: 65.82,
724: 66.66,
725: 67.50,
726: 68.34,
727: 69.18,
728: 70.02,
729: 70.86,
730: 71.70,
731: 72.23,
732: 72.76,
733: 73.29,
734: 73.82,
735: 74.35,
736: 74.88,
737: 75.41,
738: 75.94,
739: 76.47,
740: 77.00,
741: 75.82,
742: 74.64,
743: 73.46,
744: 72.28,
745: 71.10,
746: 69.92,
747: 68.74,
748: 67.56,
749: 66.38,
750: 65.20,
751: 63.45,
752: 61.70,
753: 59.95,
754: 58.20,
755: 56.45,
756: 54.70,
757: 52.95,
758: 51.20,
759: 49.45,
760: 47.70,
761: 49.79,
762: 51.88,
763: 53.97,
764: 56.06,
765: 58.15,
766: 60.24,
767: 62.33,
768: 64.42,
769: 66.51,
770: 68.60,
771: 68.24,
772: 67.88,
773: 67.52,
774: 67.16,
775: 66.80,
776: 66.44,
777: 66.08,
778: 65.72,
779: 65.36,
780: 65.00,
781: 65.10,
782: 65.20,
783: 65.30,
784: 65.40,
785: 65.50,
786: 65.60,
787: 65.70,
788: 65.80,
789: 65.90,
790: 66.00,
791: 65.50,
792: 65.00,
793: 64.50,
794: 64.00,
795: 63.50,
796: 63.00,
797: 62.50,
798: 62.00,
799: 61.50,
800: 61.00,
801: 60.23,
802: 59.46,
803: 58.69,
804: 57.92,
805: 57.15,
806: 56.38,
807: 55.61,
808: 54.84,
809: 54.07,
810: 53.30,
811: 53.86,
812: 54.42,
813: 54.98,
814: 55.54,
815: 56.10,
816: 56.66,
817: 57.22,
818: 57.78,
819: 58.34,
820: 58.90,
821: 59.20,
822: 59.50,
823: 59.80,
824: 60.10,
825: 60.40,
826: 60.70,
827: 61.00,
828: 61.30,
829: 61.60,
830: 61.90
}
ILLUM_D_S1 = {
300: 0.02,
301: 0.47,
302: 0.92,
303: 1.36,
304: 1.81,
305: 2.26,
306: 2.71,
307: 3.16,
308: 3.60,
309: 4.05,
310: 4.50,
311: 6.29,
312: 8.08,
313: 9.87,
314: 11.66,
315: 13.45,
316: 15.24,
317: 17.03,
318: 18.82,
319: 20.61,
320: 22.40,
321: 24.36,
322: 26.32,
323: 28.28,
324: 30.24,
325: 32.20,
326: 34.16,
327: 36.12,
328: 38.08,
329: 40.04,
330: 42.00,
331: 41.86,
332: 41.72,
333: 41.58,
334: 41.44,
335: 41.30,
336: 41.16,
337: 41.02,
338: 40.88,
339: 40.74,
340: 40.60,
341: 40.70,
342: 40.80,
343: 40.90,
344: 41.00,
345: 41.10,
346: 41.20,
347: 41.30,
348: 41.40,
349: 41.50,
350: 41.60,
351: 41.24,
352: 40.88,
353: 40.52,
354: 40.16,
355: 39.80,
356: 39.44,
357: 39.08,
358: 38.72,
359: 38.36,
360: 38.00,
361: 38.54,
362: 39.08,
363: 39.62,
364: 40.16,
365: 40.70,
366: 41.24,
367: 41.78,
368: 42.32,
369: 42.86,
370: 43.40,
371: 42.91,
372: 42.42,
373: 41.93,
374: 41.44,
375: 40.95,
376: 40.46,
377: 39.97,
378: 39.48,
379: 38.99,
380: 38.50,
381: 38.15,
382: 37.80,
383: 37.45,
384: 37.10,
385: 36.75,
386: 36.40,
387: 36.05,
388: 35.70,
389: 35.35,
390: 35.00,
391: 35.84,
392: 36.68,
393: 37.52,
394: 38.36,
395: 39.20,
396: 40.04,
397: 40.88,
398: 41.72,
399: 42.56,
400: 43.40,
401: 43.69,
402: 43.98,
403: 44.27,
404: 44.56,
405: 44.85,
406: 45.14,
407: 45.43,
408: 45.72,
409: 46.01,
410: 46.30,
411: 46.06,
412: 45.82,
413: 45.58,
414: 45.34,
415: 45.10,
416: 44.86,
417: 44.62,
418: 44.38,
419: 44.14,
420: 43.90,
421: 43.22,
422: 42.54,
423: 41.86,
424: 41.18,
425: 40.50,
426: 39.82,
427: 39.14,
428: 38.46,
429: 37.78,
430: 37.10,
431: 37.06,
432: 37.02,
433: 36.98,
434: 36.94,
435: 36.90,
436: 36.86,
437: 36.82,
438: 36.78,
439: 36.74,
440: 36.70,
441: 36.62,
442: 36.54,
443: 36.46,
444: 36.38,
445: 36.30,
446: 36.22,
447: 36.14,
448: 36.06,
449: 35.98,
450: 35.90,
451: 35.57,
452: 35.24,
453: 34.91,
454: 34.58,
455: 34.25,
456: 33.92,
457: 33.59,
458: 33.26,
459: 32.93,
460: 32.60,
461: 32.13,
462: 31.66,
463: 31.19,
464: 30.72,
465: 30.25,
466: 29.78,
467: 29.31,
468: 28.84,
469: 28.37,
470: 27.90,
471: 27.54,
472: 27.18,
473: 26.82,
474: 26.46,
475: 26.10,
476: 25.74,
477: 25.38,
478: 25.02,
479: 24.66,
480: 24.30,
481: 23.88,
482: 23.46,
483: 23.04,
484: 22.62,
485: 22.20,
486: 21.78,
487: 21.36,
488: 20.94,
489: 20.52,
490: 20.10,
491: 19.71,
492: 19.32,
493: 18.93,
494: 18.54,
495: 18.15,
496: 17.76,
497: 17.37,
498: 16.98,
499: 16.59,
500: 16.20,
501: 15.90,
502: 15.60,
503: 15.30,
504: 15.00,
505: 14.70,
506: 14.40,
507: 14.10,
508: 13.80,
509: 13.50,
510: 13.20,
511: 12.74,
512: 12.28,
513: 11.82,
514: 11.36,
515: 10.90,
516: 10.44,
517: 9.98,
518: 9.52,
519: 9.06,
520: 8.60,
521: 8.35,
522: 8.10,
523: 7.85,
524: 7.60,
525: 7.35,
526: 7.10,
527: 6.85,
528: 6.60,
529: 6.35,
530: 6.10,
531: 5.91,
532: 5.72,
533: 5.53,
534: 5.34,
535: 5.15,
536: 4.96,
537: 4.77,
538: 4.58,
539: 4.39,
540: 4.20,
541: 3.97,
542: 3.74,
543: 3.51,
544: 3.28,
545: 3.05,
546: 2.82,
547: 2.59,
548: 2.36,
549: 2.13,
550: 1.90,
551: 1.71,
552: 1.52,
553: 1.33,
554: 1.14,
555: 0.95,
556: 0.76,
557: 0.57,
558: 0.38,
559: 0.19,
560: 0.00,
561: -0.16,
562: -0.32,
563: -0.48,
564: -0.64,
565: -0.80,
566: -0.96,
567: -1.12,
568: -1.28,
569: -1.44,
570: -1.60,
571: -1.79,
572: -1.98,
573: -2.17,
574: -2.36,
575: -2.55,
576: -2.74,
577: -2.93,
578: -3.12,
579: -3.31,
580: -3.50,
581: -3.50,
582: -3.50,
583: -3.50,
584: -3.50,
585: -3.50,
586: -3.50,
587: -3.50,
588: -3.50,
589: -3.50,
590: -3.50,
591: -3.73,
592: -3.96,
593: -4.19,
594: -4.42,
595: -4.65,
596: -4.88,
597: -5.11,
598: -5.34,
599: -5.57,
600: -5.80,
601: -5.94,
602: -6.08,
603: -6.22,
604: -6.36,
605: -6.50,
606: -6.64,
607: -6.78,
608: -6.92,
609: -7.06,
610: -7.20,
611: -7.34,
612: -7.48,
613: -7.62,
614: -7.76,
615: -7.90,
616: -8.04,
617: -8.18,
618: -8.32,
619: -8.46,
620: -8.60,
621: -8.69,
622: -8.78,
623: -8.87,
624: -8.96,
625: -9.05,
626: -9.14,
627: -9.23,
628: -9.32,
629: -9.41,
630: -9.50,
631: -9.64,
632: -9.78,
633: -9.92,
634: -10.06,
635: -10.20,
636: -10.34,
637: -10.48,
638: -10.62,
639: -10.76,
640: -10.90,
641: -10.88,
642: -10.86,
643: -10.84,
644: -10.82,
645: -10.80,
646: -10.78,
647: -10.76,
648: -10.74,
649: -10.72,
650: -10.70,
651: -10.83,
652: -10.96,
653: -11.09,
654: -11.22,
655: -11.35,
656: -11.48,
657: -11.61,
658: -11.74,
659: -11.87,
660: -12.00,
661: -12.20,
662: -12.40,
663: -12.60,
664: -12.80,
665: -13.00,
666: -13.20,
667: -13.40,
668: -13.60,
669: -13.80,
670: -14.00,
671: -13.96,
672: -13.92,
673: -13.88,
674: -13.84,
675: -13.80,
676: -13.76,
677: -13.72,
678: -13.68,
679: -13.64,
680: -13.60,
681: -13.44,
682: -13.28,
683: -13.12,
684: -12.96,
685: -12.80,
686: -12.64,
687: -12.48,
688: -12.32,
689: -12.16,
690: -12.00,
691: -12.13,
692: -12.26,
693: -12.39,
694: -12.52,
695: -12.65,
696: -12.78,
697: -12.91,
698: -13.04,
699: -13.17,
700: -13.30,
701: -13.26,
702: -13.22,
703: -13.18,
704: -13.14,
705: -13.10,
706: -13.06,
707: -13.02,
708: -12.98,
709: -12.94,
710: -12.90,
711: -12.67,
712: -12.44,
713: -12.21,
714: -11.98,
715: -11.75,
716: -11.52,
717: -11.29,
718: -11.06,
719: -10.83,
720: -10.60,
721: -10.70,
722: -10.80,
723: -10.90,
724: -11.00,
725: -11.10,
726: -11.20,
727: -11.30,
728: -11.40,
729: -11.50,
730: -11.60,
731: -11.66,
732: -11.72,
733: -11.78,
734: -11.84,
735: -11.90,
736: -11.96,
737: -12.02,
738: -12.08,
739: -12.14,
740: -12.20,
741: -12.00,
742: -11.80,
743: -11.60,
744: -11.40,
745: -11.20,
746: -11.00,
747: -10.80,
748: -10.60,
749: -10.40,
750: -10.20,
751: -9.96,
752: -9.72,
753: -9.48,
754: -9.24,
755: -9.00,
756: -8.76,
757: -8.52,
758: -8.28,
759: -8.04,
760: -7.80,
761: -8.14,
762: -8.48,
763: -8.82,
764: -9.16,
765: -9.50,
766: -9.84,
767: -10.18,
768: -10.52,
769: -10.86,
770: -11.20,
771: -11.12,
772: -11.04,
773: -10.96,
774: -10.88,
775: -10.80,
776: -10.72,
777: -10.64,
778: -10.56,
779: -10.48,
780: -10.40,
781: -10.42,
782: -10.44,
783: -10.46,
784: -10.48,
785: -10.50,
786: -10.52,
787: -10.54,
788: -10.56,
789: -10.58,
790: -10.60,
791: -10.51,
792: -10.42,
793: -10.33,
794: -10.24,
795: -10.15,
796: -10.06,
797: -9.97,
798: -9.88,
799: -9.79,
800: -9.70,
801: -9.56,
802: -9.42,
803: -9.28,
804: -9.14,
805: -9.00,
806: -8.86,
807: -8.72,
808: -8.58,
809: -8.44,
810: -8.30,
811: -8.40,
812: -8.50,
813: -8.60,
814: -8.70,
815: -8.80,
816: -8.90,
817: -9.00,
818: -9.10,
819: -9.20,
820: -9.30,
821: -9.35,
822: -9.40,
823: -9.45,
824: -9.50,
825: -9.55,
826: -9.60,
827: -9.65,
828: -9.70,
829: -9.75,
830: -9.80
}
ILLUM_D_S2 = {
300: 0.00,
301: 0.20,
302: 0.40,
303: 0.60,
304: 0.80,
305: 1.00,
306: 1.20,
307: 1.40,
308: 1.60,
309: 1.80,
310: 2.00,
311: 2.20,
312: 2.40,
313: 2.60,
314: 2.80,
315: 3.00,
316: 3.20,
317: 3.40,
318: 3.60,
319: 3.80,
320: 4.00,
321: 4.45,
322: 4.90,
323: 5.35,
324: 5.80,
325: 6.25,
326: 6.70,
327: 7.15,
328: 7.60,
329: 8.05,
330: 8.50,
331: 8.43,
332: 8.36,
333: 8.29,
334: 8.22,
335: 8.15,
336: 8.08,
337: 8.01,
338: 7.94,
339: 7.87,
340: 7.80,
341: 7.69,
342: 7.58,
343: 7.47,
344: 7.36,
345: 7.25,
346: 7.14,
347: 7.03,
348: 6.92,
349: 6.81,
350: 6.70,
351: 6.56,
352: 6.42,
353: 6.28,
354: 6.14,
355: 6.00,
356: 5.86,
357: 5.72,
358: 5.58,
359: 5.44,
360: 5.30,
361: 5.38,
362: 5.46,
363: 5.54,
364: 5.62,
365: 5.70,
366: 5.78,
367: 5.86,
368: 5.94,
369: 6.02,
370: 6.10,
371: 5.79,
372: 5.48,
373: 5.17,
374: 4.86,
375: 4.55,
376: 4.24,
377: 3.93,
378: 3.62,
379: 3.31,
380: 3.00,
381: 2.82,
382: 2.64,
383: 2.46,
384: 2.28,
385: 2.10,
386: 1.92,
387: 1.74,
388: 1.56,
389: 1.38,
390: 1.20,
391: 0.97,
392: 0.74,
393: 0.51,
394: 0.28,
395: 0.05,
396: -0.18,
397: -0.41,
398: -0.64,
399: -0.87,
400: -1.10,
401: -1.04,
402: -0.98,
403: -0.92,
404: -0.86,
405: -0.80,
406: -0.74,
407: -0.68,
408: -0.62,
409: -0.56,
410: -0.50,
411: -0.52,
412: -0.54,
413: -0.56,
414: -0.58,
415: -0.60,
416: -0.62,
417: -0.64,
418: -0.66,
419: -0.68,
420: -0.70,
421: -0.75,
422: -0.80,
423: -0.85,
424: -0.90,
425: -0.95,
426: -1.00,
427: -1.05,
428: -1.10,
429: -1.15,
430: -1.20,
431: -1.34,
432: -1.48,
433: -1.62,
434: -1.76,
435: -1.90,
436: -2.04,
437: -2.18,
438: -2.32,
439: -2.46,
440: -2.60,
441: -2.63,
442: -2.66,
443: -2.69,
444: -2.72,
445: -2.75,
446: -2.78,
447: -2.81,
448: -2.84,
449: -2.87,
450: -2.90,
451: -2.89,
452: -2.88,
453: -2.87,
454: -2.86,
455: -2.85,
456: -2.84,
457: -2.83,
458: -2.82,
459: -2.81,
460: -2.80,
461: -2.78,
462: -2.76,
463: -2.74,
464: -2.72,
465: -2.70,
466: -2.68,
467: -2.66,
468: -2.64,
469: -2.62,
470: -2.60,
471: -2.60,
472: -2.60,
473: -2.60,
474: -2.60,
475: -2.60,
476: -2.60,
477: -2.60,
478: -2.60,
479: -2.60,
480: -2.60,
481: -2.52,
482: -2.44,
483: -2.36,
484: -2.28,
485: -2.20,
486: -2.12,
487: -2.04,
488: -1.96,
489: -1.88,
490: -1.80,
491: -1.77,
492: -1.74,
493: -1.71,
494: -1.68,
495: -1.65,
496: -1.62,
497: -1.59,
498: -1.56,
499: -1.53,
500: -1.50,
501: -1.48,
502: -1.46,
503: -1.44,
504: -1.42,
505: -1.40,
506: -1.38,
507: -1.36,
508: -1.34,
509: -1.32,
510: -1.30,
511: -1.29,
512: -1.28,
513: -1.27,
514: -1.26,
515: -1.25,
516: -1.24,
517: -1.23,
518: -1.22,
519: -1.21,
520: -1.20,
521: -1.18,
522: -1.16,
523: -1.14,
524: -1.12,
525: -1.10,
526: -1.08,
527: -1.06,
528: -1.04,
529: -1.02,
530: -1.00,
531: -0.95,
532: -0.90,
533: -0.85,
534: -0.80,
535: -0.75,
536: -0.70,
537: -0.65,
538: -0.60,
539: -0.55,
540: -0.50,
541: -0.48,
542: -0.46,
543: -0.44,
544: -0.42,
545: -0.40,
546: -0.38,
547: -0.36,
548: -0.34,
549: -0.32,
550: -0.30,
551: -0.27,
552: -0.24,
553: -0.21,
554: -0.18,
555: -0.15,
556: -0.12,
557: -0.09,
558: -0.06,
559: -0.03,
560: 0.00,
561: 0.02,
562: 0.04,
563: 0.06,
564: 0.08,
565: 0.10,
566: 0.12,
567: 0.14,
568: 0.16,
569: 0.18,
570: 0.20,
571: 0.23,
572: 0.26,
573: 0.29,
574: 0.32,
575: 0.35,
576: 0.38,
577: 0.41,
578: 0.44,
579: 0.47,
580: 0.50,
581: 0.66,
582: 0.82,
583: 0.98,
584: 1.14,
585: 1.30,
586: 1.46,
587: 1.62,
588: 1.78,
589: 1.94,
590: 2.10,
591: 2.21,
592: 2.32,
593: 2.43,
594: 2.54,
595: 2.65,
596: 2.76,
597: 2.87,
598: 2.98,
599: 3.09,
600: 3.20,
601: 3.29,
602: 3.38,
603: 3.47,
604: 3.56,
605: 3.65,
606: 3.74,
607: 3.83,
608: 3.92,
609: 4.01,
610: 4.10,
611: 4.16,
612: 4.22,
613: 4.28,
614: 4.34,
615: 4.40,
616: 4.46,
617: 4.52,
618: 4.58,
619: 4.64,
620: 4.70,
621: 4.74,
622: 4.78,
623: 4.82,
624: 4.86,
625: 4.90,
626: 4.94,
627: 4.98,
628: 5.02,
629: 5.06,
630: 5.10,
631: 5.26,
632: 5.42,
633: 5.58,
634: 5.74,
635: 5.90,
636: 6.06,
637: 6.22,
638: 6.38,
639: 6.54,
640: 6.70,
641: 6.76,
642: 6.82,
643: 6.88,
644: 6.94,
645: 7.00,
646: 7.06,
647: 7.12,
648: 7.18,
649: 7.24,
650: 7.30,
651: 7.43,
652: 7.56,
653: 7.69,
654: 7.82,
655: 7.95,
656: 8.08,
657: 8.21,
658: 8.34,
659: 8.47,
660: 8.60,
661: 8.72,
662: 8.84,
663: 8.96,
664: 9.08,
665: 9.20,
666: 9.32,
667: 9.44,
668: 9.56,
669: 9.68,
670: 9.80,
671: 9.84,
672: 9.88,
673: 9.92,
674: 9.96,
675: 10.00,
676: 10.04,
677: 10.08,
678: 10.12,
679: 10.16,
680: 10.20,
681: 10.01,
682: 9.82,
683: 9.63,
684: 9.44,
685: 9.25,
686: 9.06,
687: 8.87,
688: 8.68,
689: 8.49,
690: 8.30,
691: 8.43,
692: 8.56,
693: 8.69,
694: 8.82,
695: 8.95,
696: 9.08,
697: 9.21,
698: 9.34,
699: 9.47,
700: 9.60,
701: 9.49,
702: 9.38,
703: 9.27,
704: 9.16,
705: 9.05,
706: 8.94,
707: 8.83,
708: 8.72,
709: 8.61,
710: 8.50,
711: 8.35,
712: 8.20,
713: 8.05,
714: 7.90,
715: 7.75,
716: 7.60,
717: 7.45,
718: 7.30,
719: 7.15,
720: 7.00,
721: 7.06,
722: 7.12,
723: 7.18,
724: 7.24,
725: 7.30,
726: 7.36,
727: 7.42,
728: 7.48,
729: 7.54,
730: 7.60,
731: 7.64,
732: 7.68,
733: 7.72,
734: 7.76,
735: 7.80,
736: 7.84,
737: 7.88,
738: 7.92,
739: 7.96,
740: 8.00,
741: 7.87,
742: 7.74,
743: 7.61,
744: 7.48,
745: 7.35,
746: 7.22,
747: 7.09,
748: 6.96,
749: 6.83,
750: 6.70,
751: 6.55,
752: 6.40,
753: 6.25,
754: 6.10,
755: 5.95,
756: 5.80,
757: 5.65,
758: 5.50,
759: 5.35,
760: 5.20,
761: 5.42,
762: 5.64,
763: 5.86,
764: 6.08,
765: 6.30,
766: 6.52,
767: 6.74,
768: 6.96,
769: 7.18,
770: 7.40,
771: 7.34,
772: 7.28,
773: 7.22,
774: 7.16,
775: 7.10,
776: 7.04,
777: 6.98,
778: 6.92,
779: 6.86,
780: 6.80,
781: 6.82,
782: 6.84,
783: 6.86,
784: 6.88,
785: 6.90,
786: 6.92,
787: 6.94,
788: 6.96,
789: 6.98,
790: 7.00,
791: 6.94,
792: 6.88,
793: 6.82,
794: 6.76,
795: 6.70,
796: 6.64,
797: 6.58,
798: 6.52,
799: 6.46,
800: 6.40,
801: 6.31,
802: 6.22,
803: 6.13,
804: 6.04,
805: 5.95,
806: 5.86,
807: 5.77,
808: 5.68,
809: 5.59,
810: 5.50,
811: 5.56,
812: 5.62,
813: 5.68,
814: 5.74,
815: 5.80,
816: 5.86,
817: 5.92,
818: 5.98,
819: 6.04,
820: 6.10,
821: 6.14,
822: 6.18,
823: 6.22,
824: 6.26,
825: 6.30,
826: 6.34,
827: 6.38,
828: 6.42,
829: 6.46,
830: 6.50
}