up follow livre
This commit is contained in:
parent
b4b4398bb0
commit
3a7a3849ae
12242 changed files with 2564461 additions and 6914 deletions
129
venv/lib/python3.13/site-packages/scipy/spatial/__init__.py
Normal file
129
venv/lib/python3.13/site-packages/scipy/spatial/__init__.py
Normal file
|
|
@ -0,0 +1,129 @@
|
|||
"""
|
||||
=============================================================
|
||||
Spatial algorithms and data structures (:mod:`scipy.spatial`)
|
||||
=============================================================
|
||||
|
||||
.. currentmodule:: scipy.spatial
|
||||
|
||||
.. toctree::
|
||||
:hidden:
|
||||
|
||||
spatial.distance
|
||||
|
||||
Spatial transformations
|
||||
=======================
|
||||
|
||||
These are contained in the `scipy.spatial.transform` submodule.
|
||||
|
||||
Nearest-neighbor queries
|
||||
========================
|
||||
.. autosummary::
|
||||
:toctree: generated/
|
||||
|
||||
KDTree -- class for efficient nearest-neighbor queries
|
||||
cKDTree -- class for efficient nearest-neighbor queries (faster implementation)
|
||||
Rectangle
|
||||
|
||||
Distance metrics
|
||||
================
|
||||
|
||||
Distance metrics are contained in the :mod:`scipy.spatial.distance` submodule.
|
||||
|
||||
Delaunay triangulation, convex hulls, and Voronoi diagrams
|
||||
==========================================================
|
||||
|
||||
.. autosummary::
|
||||
:toctree: generated/
|
||||
|
||||
Delaunay -- compute Delaunay triangulation of input points
|
||||
ConvexHull -- compute a convex hull for input points
|
||||
Voronoi -- compute a Voronoi diagram hull from input points
|
||||
SphericalVoronoi -- compute a Voronoi diagram from input points on the surface of a sphere
|
||||
HalfspaceIntersection -- compute the intersection points of input halfspaces
|
||||
|
||||
Plotting helpers
|
||||
================
|
||||
|
||||
.. autosummary::
|
||||
:toctree: generated/
|
||||
|
||||
delaunay_plot_2d -- plot 2-D triangulation
|
||||
convex_hull_plot_2d -- plot 2-D convex hull
|
||||
voronoi_plot_2d -- plot 2-D Voronoi diagram
|
||||
|
||||
.. seealso:: :ref:`Tutorial <qhulltutorial>`
|
||||
|
||||
|
||||
Simplex representation
|
||||
======================
|
||||
The simplices (triangles, tetrahedra, etc.) appearing in the Delaunay
|
||||
tessellation (N-D simplices), convex hull facets, and Voronoi ridges
|
||||
(N-1-D simplices) are represented in the following scheme::
|
||||
|
||||
tess = Delaunay(points)
|
||||
hull = ConvexHull(points)
|
||||
voro = Voronoi(points)
|
||||
|
||||
# coordinates of the jth vertex of the ith simplex
|
||||
tess.points[tess.simplices[i, j], :] # tessellation element
|
||||
hull.points[hull.simplices[i, j], :] # convex hull facet
|
||||
voro.vertices[voro.ridge_vertices[i, j], :] # ridge between Voronoi cells
|
||||
|
||||
For Delaunay triangulations and convex hulls, the neighborhood
|
||||
structure of the simplices satisfies the condition:
|
||||
``tess.neighbors[i,j]`` is the neighboring simplex of the ith
|
||||
simplex, opposite to the ``j``-vertex. It is -1 in case of no neighbor.
|
||||
|
||||
Convex hull facets also define a hyperplane equation::
|
||||
|
||||
(hull.equations[i,:-1] * coord).sum() + hull.equations[i,-1] == 0
|
||||
|
||||
Similar hyperplane equations for the Delaunay triangulation correspond
|
||||
to the convex hull facets on the corresponding N+1-D
|
||||
paraboloid.
|
||||
|
||||
The Delaunay triangulation objects offer a method for locating the
|
||||
simplex containing a given point, and barycentric coordinate
|
||||
computations.
|
||||
|
||||
Functions
|
||||
---------
|
||||
|
||||
.. autosummary::
|
||||
:toctree: generated/
|
||||
|
||||
tsearch
|
||||
distance_matrix
|
||||
minkowski_distance
|
||||
minkowski_distance_p
|
||||
procrustes
|
||||
geometric_slerp
|
||||
|
||||
Warnings / Errors used in :mod:`scipy.spatial`
|
||||
----------------------------------------------
|
||||
.. autosummary::
|
||||
:toctree: generated/
|
||||
|
||||
QhullError
|
||||
""" # noqa: E501
|
||||
|
||||
from ._kdtree import *
|
||||
from ._ckdtree import * # type: ignore[import-not-found]
|
||||
from ._qhull import *
|
||||
from ._spherical_voronoi import SphericalVoronoi
|
||||
from ._plotutils import *
|
||||
from ._procrustes import procrustes
|
||||
from ._geometric_slerp import geometric_slerp
|
||||
|
||||
# Deprecated namespaces, to be removed in v2.0.0
|
||||
from . import ckdtree, kdtree, qhull
|
||||
|
||||
__all__ = [s for s in dir() if not s.startswith('_')]
|
||||
|
||||
from . import distance, transform
|
||||
|
||||
__all__ += ['distance', 'transform']
|
||||
|
||||
from scipy._lib._testutils import PytestTester
|
||||
test = PytestTester(__name__)
|
||||
del PytestTester
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -0,0 +1,238 @@
|
|||
__all__ = ['geometric_slerp']
|
||||
|
||||
import warnings
|
||||
from typing import TYPE_CHECKING
|
||||
|
||||
import numpy as np
|
||||
from scipy.spatial.distance import euclidean
|
||||
|
||||
if TYPE_CHECKING:
|
||||
import numpy.typing as npt
|
||||
|
||||
|
||||
def _geometric_slerp(start, end, t):
|
||||
# create an orthogonal basis using QR decomposition
|
||||
basis = np.vstack([start, end])
|
||||
Q, R = np.linalg.qr(basis.T)
|
||||
signs = 2 * (np.diag(R) >= 0) - 1
|
||||
Q = Q.T * signs.T[:, np.newaxis]
|
||||
R = R.T * signs.T[:, np.newaxis]
|
||||
|
||||
# calculate the angle between `start` and `end`
|
||||
c = np.dot(start, end)
|
||||
s = np.linalg.det(R)
|
||||
omega = np.arctan2(s, c)
|
||||
|
||||
# interpolate
|
||||
start, end = Q
|
||||
s = np.sin(t * omega)
|
||||
c = np.cos(t * omega)
|
||||
return start * c[:, np.newaxis] + end * s[:, np.newaxis]
|
||||
|
||||
|
||||
def geometric_slerp(
|
||||
start: "npt.ArrayLike",
|
||||
end: "npt.ArrayLike",
|
||||
t: "npt.ArrayLike",
|
||||
tol: float = 1e-7,
|
||||
) -> np.ndarray:
|
||||
"""
|
||||
Geometric spherical linear interpolation.
|
||||
|
||||
The interpolation occurs along a unit-radius
|
||||
great circle arc in arbitrary dimensional space.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
start : (n_dimensions, ) array-like
|
||||
Single n-dimensional input coordinate in a 1-D array-like
|
||||
object. `n` must be greater than 1.
|
||||
end : (n_dimensions, ) array-like
|
||||
Single n-dimensional input coordinate in a 1-D array-like
|
||||
object. `n` must be greater than 1.
|
||||
t : float or (n_points,) 1D array-like
|
||||
A float or 1D array-like of doubles representing interpolation
|
||||
parameters, with values required in the inclusive interval
|
||||
between 0 and 1. A common approach is to generate the array
|
||||
with ``np.linspace(0, 1, n_pts)`` for linearly spaced points.
|
||||
Ascending, descending, and scrambled orders are permitted.
|
||||
tol : float
|
||||
The absolute tolerance for determining if the start and end
|
||||
coordinates are antipodes.
|
||||
|
||||
Returns
|
||||
-------
|
||||
result : (t.size, D)
|
||||
An array of doubles containing the interpolated
|
||||
spherical path and including start and
|
||||
end when 0 and 1 t are used. The
|
||||
interpolated values should correspond to the
|
||||
same sort order provided in the t array. The result
|
||||
may be 1-dimensional if ``t`` is a float.
|
||||
|
||||
Raises
|
||||
------
|
||||
ValueError
|
||||
If ``start`` and ``end`` are antipodes, not on the
|
||||
unit n-sphere, or for a variety of degenerate conditions.
|
||||
|
||||
See Also
|
||||
--------
|
||||
scipy.spatial.transform.Slerp : 3-D Slerp that works with quaternions
|
||||
|
||||
Notes
|
||||
-----
|
||||
The implementation is based on the mathematical formula provided in [1]_,
|
||||
and the first known presentation of this algorithm, derived from study of
|
||||
4-D geometry, is credited to Glenn Davis in a footnote of the original
|
||||
quaternion Slerp publication by Ken Shoemake [2]_.
|
||||
|
||||
.. versionadded:: 1.5.0
|
||||
|
||||
References
|
||||
----------
|
||||
.. [1] https://en.wikipedia.org/wiki/Slerp#Geometric_Slerp
|
||||
.. [2] Ken Shoemake (1985) Animating rotation with quaternion curves.
|
||||
ACM SIGGRAPH Computer Graphics, 19(3): 245-254.
|
||||
|
||||
Examples
|
||||
--------
|
||||
Interpolate four linearly-spaced values on the circumference of
|
||||
a circle spanning 90 degrees:
|
||||
|
||||
>>> import numpy as np
|
||||
>>> from scipy.spatial import geometric_slerp
|
||||
>>> import matplotlib.pyplot as plt
|
||||
>>> fig = plt.figure()
|
||||
>>> ax = fig.add_subplot(111)
|
||||
>>> start = np.array([1, 0])
|
||||
>>> end = np.array([0, 1])
|
||||
>>> t_vals = np.linspace(0, 1, 4)
|
||||
>>> result = geometric_slerp(start,
|
||||
... end,
|
||||
... t_vals)
|
||||
|
||||
The interpolated results should be at 30 degree intervals
|
||||
recognizable on the unit circle:
|
||||
|
||||
>>> ax.scatter(result[...,0], result[...,1], c='k')
|
||||
>>> circle = plt.Circle((0, 0), 1, color='grey')
|
||||
>>> ax.add_artist(circle)
|
||||
>>> ax.set_aspect('equal')
|
||||
>>> plt.show()
|
||||
|
||||
Attempting to interpolate between antipodes on a circle is
|
||||
ambiguous because there are two possible paths, and on a
|
||||
sphere there are infinite possible paths on the geodesic surface.
|
||||
Nonetheless, one of the ambiguous paths is returned along
|
||||
with a warning:
|
||||
|
||||
>>> opposite_pole = np.array([-1, 0])
|
||||
>>> with np.testing.suppress_warnings() as sup:
|
||||
... sup.filter(UserWarning)
|
||||
... geometric_slerp(start,
|
||||
... opposite_pole,
|
||||
... t_vals)
|
||||
array([[ 1.00000000e+00, 0.00000000e+00],
|
||||
[ 5.00000000e-01, 8.66025404e-01],
|
||||
[-5.00000000e-01, 8.66025404e-01],
|
||||
[-1.00000000e+00, 1.22464680e-16]])
|
||||
|
||||
Extend the original example to a sphere and plot interpolation
|
||||
points in 3D:
|
||||
|
||||
>>> from mpl_toolkits.mplot3d import proj3d
|
||||
>>> fig = plt.figure()
|
||||
>>> ax = fig.add_subplot(111, projection='3d')
|
||||
|
||||
Plot the unit sphere for reference (optional):
|
||||
|
||||
>>> u = np.linspace(0, 2 * np.pi, 100)
|
||||
>>> v = np.linspace(0, np.pi, 100)
|
||||
>>> x = np.outer(np.cos(u), np.sin(v))
|
||||
>>> y = np.outer(np.sin(u), np.sin(v))
|
||||
>>> z = np.outer(np.ones(np.size(u)), np.cos(v))
|
||||
>>> ax.plot_surface(x, y, z, color='y', alpha=0.1)
|
||||
|
||||
Interpolating over a larger number of points
|
||||
may provide the appearance of a smooth curve on
|
||||
the surface of the sphere, which is also useful
|
||||
for discretized integration calculations on a
|
||||
sphere surface:
|
||||
|
||||
>>> start = np.array([1, 0, 0])
|
||||
>>> end = np.array([0, 0, 1])
|
||||
>>> t_vals = np.linspace(0, 1, 200)
|
||||
>>> result = geometric_slerp(start,
|
||||
... end,
|
||||
... t_vals)
|
||||
>>> ax.plot(result[...,0],
|
||||
... result[...,1],
|
||||
... result[...,2],
|
||||
... c='k')
|
||||
>>> plt.show()
|
||||
"""
|
||||
|
||||
start = np.asarray(start, dtype=np.float64)
|
||||
end = np.asarray(end, dtype=np.float64)
|
||||
t = np.asarray(t)
|
||||
|
||||
if t.ndim > 1:
|
||||
raise ValueError("The interpolation parameter "
|
||||
"value must be one dimensional.")
|
||||
|
||||
if start.ndim != 1 or end.ndim != 1:
|
||||
raise ValueError("Start and end coordinates "
|
||||
"must be one-dimensional")
|
||||
|
||||
if start.size != end.size:
|
||||
raise ValueError("The dimensions of start and "
|
||||
"end must match (have same size)")
|
||||
|
||||
if start.size < 2 or end.size < 2:
|
||||
raise ValueError("The start and end coordinates must "
|
||||
"both be in at least two-dimensional "
|
||||
"space")
|
||||
|
||||
if np.array_equal(start, end):
|
||||
return np.linspace(start, start, t.size)
|
||||
|
||||
# for points that violate equation for n-sphere
|
||||
for coord in [start, end]:
|
||||
if not np.allclose(np.linalg.norm(coord), 1.0,
|
||||
rtol=1e-9,
|
||||
atol=0):
|
||||
raise ValueError("start and end are not"
|
||||
" on a unit n-sphere")
|
||||
|
||||
if not isinstance(tol, float):
|
||||
raise ValueError("tol must be a float")
|
||||
else:
|
||||
tol = np.fabs(tol)
|
||||
|
||||
coord_dist = euclidean(start, end)
|
||||
|
||||
# diameter of 2 within tolerance means antipodes, which is a problem
|
||||
# for all unit n-spheres (even the 0-sphere would have an ambiguous path)
|
||||
if np.allclose(coord_dist, 2.0, rtol=0, atol=tol):
|
||||
warnings.warn("start and end are antipodes "
|
||||
"using the specified tolerance; "
|
||||
"this may cause ambiguous slerp paths",
|
||||
stacklevel=2)
|
||||
|
||||
t = np.asarray(t, dtype=np.float64)
|
||||
|
||||
if t.size == 0:
|
||||
return np.empty((0, start.size))
|
||||
|
||||
if t.min() < 0 or t.max() > 1:
|
||||
raise ValueError("interpolation parameter must be in [0, 1]")
|
||||
|
||||
if t.ndim == 0:
|
||||
return _geometric_slerp(start,
|
||||
end,
|
||||
np.atleast_1d(t)).ravel()
|
||||
else:
|
||||
return _geometric_slerp(start,
|
||||
end,
|
||||
t)
|
||||
Binary file not shown.
920
venv/lib/python3.13/site-packages/scipy/spatial/_kdtree.py
Normal file
920
venv/lib/python3.13/site-packages/scipy/spatial/_kdtree.py
Normal file
|
|
@ -0,0 +1,920 @@
|
|||
# Copyright Anne M. Archibald 2008
|
||||
# Released under the scipy license
|
||||
import numpy as np
|
||||
from ._ckdtree import cKDTree, cKDTreeNode # type: ignore[import-not-found]
|
||||
|
||||
__all__ = ['minkowski_distance_p', 'minkowski_distance',
|
||||
'distance_matrix',
|
||||
'Rectangle', 'KDTree']
|
||||
|
||||
|
||||
def minkowski_distance_p(x, y, p=2):
|
||||
"""Compute the pth power of the L**p distance between two arrays.
|
||||
|
||||
For efficiency, this function computes the L**p distance but does
|
||||
not extract the pth root. If `p` is 1 or infinity, this is equal to
|
||||
the actual L**p distance.
|
||||
|
||||
The last dimensions of `x` and `y` must be the same length. Any
|
||||
other dimensions must be compatible for broadcasting.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
x : (..., K) array_like
|
||||
Input array.
|
||||
y : (..., K) array_like
|
||||
Input array.
|
||||
p : float, 1 <= p <= infinity
|
||||
Which Minkowski p-norm to use.
|
||||
|
||||
Returns
|
||||
-------
|
||||
dist : ndarray
|
||||
pth power of the distance between the input arrays.
|
||||
|
||||
Examples
|
||||
--------
|
||||
>>> from scipy.spatial import minkowski_distance_p
|
||||
>>> minkowski_distance_p([[0, 0], [0, 0]], [[1, 1], [0, 1]])
|
||||
array([2., 1.])
|
||||
|
||||
"""
|
||||
x = np.asarray(x)
|
||||
y = np.asarray(y)
|
||||
|
||||
# Find smallest common datatype with float64 (return type of this
|
||||
# function) - addresses #10262.
|
||||
# Don't just cast to float64 for complex input case.
|
||||
common_datatype = np.promote_types(np.promote_types(x.dtype, y.dtype),
|
||||
'float64')
|
||||
|
||||
# Make sure x and y are NumPy arrays of correct datatype.
|
||||
x = x.astype(common_datatype)
|
||||
y = y.astype(common_datatype)
|
||||
|
||||
if p == np.inf:
|
||||
return np.amax(np.abs(y-x), axis=-1)
|
||||
elif p == 1:
|
||||
return np.sum(np.abs(y-x), axis=-1)
|
||||
else:
|
||||
return np.sum(np.abs(y-x)**p, axis=-1)
|
||||
|
||||
|
||||
def minkowski_distance(x, y, p=2):
|
||||
"""Compute the L**p distance between two arrays.
|
||||
|
||||
The last dimensions of `x` and `y` must be the same length. Any
|
||||
other dimensions must be compatible for broadcasting.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
x : (..., K) array_like
|
||||
Input array.
|
||||
y : (..., K) array_like
|
||||
Input array.
|
||||
p : float, 1 <= p <= infinity
|
||||
Which Minkowski p-norm to use.
|
||||
|
||||
Returns
|
||||
-------
|
||||
dist : ndarray
|
||||
Distance between the input arrays.
|
||||
|
||||
Examples
|
||||
--------
|
||||
>>> from scipy.spatial import minkowski_distance
|
||||
>>> minkowski_distance([[0, 0], [0, 0]], [[1, 1], [0, 1]])
|
||||
array([ 1.41421356, 1. ])
|
||||
|
||||
"""
|
||||
x = np.asarray(x)
|
||||
y = np.asarray(y)
|
||||
if p == np.inf or p == 1:
|
||||
return minkowski_distance_p(x, y, p)
|
||||
else:
|
||||
return minkowski_distance_p(x, y, p)**(1./p)
|
||||
|
||||
|
||||
class Rectangle:
|
||||
"""Hyperrectangle class.
|
||||
|
||||
Represents a Cartesian product of intervals.
|
||||
"""
|
||||
def __init__(self, maxes, mins):
|
||||
"""Construct a hyperrectangle."""
|
||||
self.maxes = np.maximum(maxes,mins).astype(float)
|
||||
self.mins = np.minimum(maxes,mins).astype(float)
|
||||
self.m, = self.maxes.shape
|
||||
|
||||
def __repr__(self):
|
||||
return f"<Rectangle {list(zip(self.mins, self.maxes))}>"
|
||||
|
||||
def volume(self):
|
||||
"""Total volume."""
|
||||
return np.prod(self.maxes-self.mins)
|
||||
|
||||
def split(self, d, split):
|
||||
"""Produce two hyperrectangles by splitting.
|
||||
|
||||
In general, if you need to compute maximum and minimum
|
||||
distances to the children, it can be done more efficiently
|
||||
by updating the maximum and minimum distances to the parent.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
d : int
|
||||
Axis to split hyperrectangle along.
|
||||
split : float
|
||||
Position along axis `d` to split at.
|
||||
|
||||
"""
|
||||
mid = np.copy(self.maxes)
|
||||
mid[d] = split
|
||||
less = Rectangle(self.mins, mid)
|
||||
mid = np.copy(self.mins)
|
||||
mid[d] = split
|
||||
greater = Rectangle(mid, self.maxes)
|
||||
return less, greater
|
||||
|
||||
def min_distance_point(self, x, p=2.):
|
||||
"""
|
||||
Return the minimum distance between input and points in the
|
||||
hyperrectangle.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
x : array_like
|
||||
Input.
|
||||
p : float, optional
|
||||
Input.
|
||||
|
||||
"""
|
||||
return minkowski_distance(
|
||||
0, np.maximum(0, np.maximum(self.mins-x, x-self.maxes)),
|
||||
p
|
||||
)
|
||||
|
||||
def max_distance_point(self, x, p=2.):
|
||||
"""
|
||||
Return the maximum distance between input and points in the hyperrectangle.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
x : array_like
|
||||
Input array.
|
||||
p : float, optional
|
||||
Input.
|
||||
|
||||
"""
|
||||
return minkowski_distance(0, np.maximum(self.maxes-x, x-self.mins), p)
|
||||
|
||||
def min_distance_rectangle(self, other, p=2.):
|
||||
"""
|
||||
Compute the minimum distance between points in the two hyperrectangles.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
other : hyperrectangle
|
||||
Input.
|
||||
p : float
|
||||
Input.
|
||||
|
||||
"""
|
||||
return minkowski_distance(
|
||||
0,
|
||||
np.maximum(0, np.maximum(self.mins-other.maxes,
|
||||
other.mins-self.maxes)),
|
||||
p
|
||||
)
|
||||
|
||||
def max_distance_rectangle(self, other, p=2.):
|
||||
"""
|
||||
Compute the maximum distance between points in the two hyperrectangles.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
other : hyperrectangle
|
||||
Input.
|
||||
p : float, optional
|
||||
Input.
|
||||
|
||||
"""
|
||||
return minkowski_distance(
|
||||
0, np.maximum(self.maxes-other.mins, other.maxes-self.mins), p)
|
||||
|
||||
|
||||
class KDTree(cKDTree):
|
||||
"""kd-tree for quick nearest-neighbor lookup.
|
||||
|
||||
This class provides an index into a set of k-dimensional points
|
||||
which can be used to rapidly look up the nearest neighbors of any
|
||||
point.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
data : array_like, shape (n,m)
|
||||
The n data points of dimension m to be indexed. This array is
|
||||
not copied unless this is necessary to produce a contiguous
|
||||
array of doubles, and so modifying this data will result in
|
||||
bogus results. The data are also copied if the kd-tree is built
|
||||
with copy_data=True.
|
||||
leafsize : positive int, optional
|
||||
The number of points at which the algorithm switches over to
|
||||
brute-force. Default: 10.
|
||||
compact_nodes : bool, optional
|
||||
If True, the kd-tree is built to shrink the hyperrectangles to
|
||||
the actual data range. This usually gives a more compact tree that
|
||||
is robust against degenerated input data and gives faster queries
|
||||
at the expense of longer build time. Default: True.
|
||||
copy_data : bool, optional
|
||||
If True the data is always copied to protect the kd-tree against
|
||||
data corruption. Default: False.
|
||||
balanced_tree : bool, optional
|
||||
If True, the median is used to split the hyperrectangles instead of
|
||||
the midpoint. This usually gives a more compact tree and
|
||||
faster queries at the expense of longer build time. Default: True.
|
||||
boxsize : array_like or scalar, optional
|
||||
Apply a m-d toroidal topology to the KDTree.. The topology is generated
|
||||
by :math:`x_i + n_i L_i` where :math:`n_i` are integers and :math:`L_i`
|
||||
is the boxsize along i-th dimension. The input data shall be wrapped
|
||||
into :math:`[0, L_i)`. A ValueError is raised if any of the data is
|
||||
outside of this bound.
|
||||
|
||||
Notes
|
||||
-----
|
||||
The algorithm used is described in Maneewongvatana and Mount 1999.
|
||||
The general idea is that the kd-tree is a binary tree, each of whose
|
||||
nodes represents an axis-aligned hyperrectangle. Each node specifies
|
||||
an axis and splits the set of points based on whether their coordinate
|
||||
along that axis is greater than or less than a particular value.
|
||||
|
||||
During construction, the axis and splitting point are chosen by the
|
||||
"sliding midpoint" rule, which ensures that the cells do not all
|
||||
become long and thin.
|
||||
|
||||
The tree can be queried for the r closest neighbors of any given point
|
||||
(optionally returning only those within some maximum distance of the
|
||||
point). It can also be queried, with a substantial gain in efficiency,
|
||||
for the r approximate closest neighbors.
|
||||
|
||||
For large dimensions (20 is already large) do not expect this to run
|
||||
significantly faster than brute force. High-dimensional nearest-neighbor
|
||||
queries are a substantial open problem in computer science.
|
||||
|
||||
Attributes
|
||||
----------
|
||||
data : ndarray, shape (n,m)
|
||||
The n data points of dimension m to be indexed. This array is
|
||||
not copied unless this is necessary to produce a contiguous
|
||||
array of doubles. The data are also copied if the kd-tree is built
|
||||
with ``copy_data=True``.
|
||||
leafsize : positive int
|
||||
The number of points at which the algorithm switches over to
|
||||
brute-force.
|
||||
m : int
|
||||
The dimension of a single data-point.
|
||||
n : int
|
||||
The number of data points.
|
||||
maxes : ndarray, shape (m,)
|
||||
The maximum value in each dimension of the n data points.
|
||||
mins : ndarray, shape (m,)
|
||||
The minimum value in each dimension of the n data points.
|
||||
size : int
|
||||
The number of nodes in the tree.
|
||||
|
||||
"""
|
||||
|
||||
class node:
|
||||
@staticmethod
|
||||
def _create(ckdtree_node=None):
|
||||
"""Create either an inner or leaf node, wrapping a cKDTreeNode instance"""
|
||||
if ckdtree_node is None:
|
||||
return KDTree.node(ckdtree_node)
|
||||
elif ckdtree_node.split_dim == -1:
|
||||
return KDTree.leafnode(ckdtree_node)
|
||||
else:
|
||||
return KDTree.innernode(ckdtree_node)
|
||||
|
||||
def __init__(self, ckdtree_node=None):
|
||||
if ckdtree_node is None:
|
||||
ckdtree_node = cKDTreeNode()
|
||||
self._node = ckdtree_node
|
||||
|
||||
def __lt__(self, other):
|
||||
return id(self) < id(other)
|
||||
|
||||
def __gt__(self, other):
|
||||
return id(self) > id(other)
|
||||
|
||||
def __le__(self, other):
|
||||
return id(self) <= id(other)
|
||||
|
||||
def __ge__(self, other):
|
||||
return id(self) >= id(other)
|
||||
|
||||
def __eq__(self, other):
|
||||
return id(self) == id(other)
|
||||
|
||||
class leafnode(node):
|
||||
@property
|
||||
def idx(self):
|
||||
return self._node.indices
|
||||
|
||||
@property
|
||||
def children(self):
|
||||
return self._node.children
|
||||
|
||||
class innernode(node):
|
||||
def __init__(self, ckdtreenode):
|
||||
assert isinstance(ckdtreenode, cKDTreeNode)
|
||||
super().__init__(ckdtreenode)
|
||||
self.less = KDTree.node._create(ckdtreenode.lesser)
|
||||
self.greater = KDTree.node._create(ckdtreenode.greater)
|
||||
|
||||
@property
|
||||
def split_dim(self):
|
||||
return self._node.split_dim
|
||||
|
||||
@property
|
||||
def split(self):
|
||||
return self._node.split
|
||||
|
||||
@property
|
||||
def children(self):
|
||||
return self._node.children
|
||||
|
||||
@property
|
||||
def tree(self):
|
||||
if not hasattr(self, "_tree"):
|
||||
self._tree = KDTree.node._create(super().tree)
|
||||
|
||||
return self._tree
|
||||
|
||||
def __init__(self, data, leafsize=10, compact_nodes=True, copy_data=False,
|
||||
balanced_tree=True, boxsize=None):
|
||||
data = np.asarray(data)
|
||||
if data.dtype.kind == 'c':
|
||||
raise TypeError("KDTree does not work with complex data")
|
||||
|
||||
# Note KDTree has different default leafsize from cKDTree
|
||||
super().__init__(data, leafsize, compact_nodes, copy_data,
|
||||
balanced_tree, boxsize)
|
||||
|
||||
def query(
|
||||
self, x, k=1, eps=0, p=2, distance_upper_bound=np.inf, workers=1):
|
||||
r"""Query the kd-tree for nearest neighbors.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
x : array_like, last dimension self.m
|
||||
An array of points to query.
|
||||
k : int or Sequence[int], optional
|
||||
Either the number of nearest neighbors to return, or a list of the
|
||||
k-th nearest neighbors to return, starting from 1.
|
||||
eps : nonnegative float, optional
|
||||
Return approximate nearest neighbors; the kth returned value
|
||||
is guaranteed to be no further than (1+eps) times the
|
||||
distance to the real kth nearest neighbor.
|
||||
p : float, 1<=p<=infinity, optional
|
||||
Which Minkowski p-norm to use.
|
||||
1 is the sum-of-absolute-values distance ("Manhattan" distance).
|
||||
2 is the usual Euclidean distance.
|
||||
infinity is the maximum-coordinate-difference distance.
|
||||
A large, finite p may cause a ValueError if overflow can occur.
|
||||
distance_upper_bound : nonnegative float, optional
|
||||
Return only neighbors within this distance. This is used to prune
|
||||
tree searches, so if you are doing a series of nearest-neighbor
|
||||
queries, it may help to supply the distance to the nearest neighbor
|
||||
of the most recent point.
|
||||
workers : int, optional
|
||||
Number of workers to use for parallel processing. If -1 is given
|
||||
all CPU threads are used. Default: 1.
|
||||
|
||||
.. versionadded:: 1.6.0
|
||||
|
||||
Returns
|
||||
-------
|
||||
d : float or array of floats
|
||||
The distances to the nearest neighbors.
|
||||
If ``x`` has shape ``tuple+(self.m,)``, then ``d`` has shape
|
||||
``tuple+(k,)``.
|
||||
When k == 1, the last dimension of the output is squeezed.
|
||||
Missing neighbors are indicated with infinite distances.
|
||||
Hits are sorted by distance (nearest first).
|
||||
|
||||
.. versionchanged:: 1.9.0
|
||||
Previously if ``k=None``, then `d` was an object array of
|
||||
shape ``tuple``, containing lists of distances. This behavior
|
||||
has been removed, use `query_ball_point` instead.
|
||||
|
||||
i : integer or array of integers
|
||||
The index of each neighbor in ``self.data``.
|
||||
``i`` is the same shape as d.
|
||||
Missing neighbors are indicated with ``self.n``.
|
||||
|
||||
Examples
|
||||
--------
|
||||
|
||||
>>> import numpy as np
|
||||
>>> from scipy.spatial import KDTree
|
||||
>>> x, y = np.mgrid[0:5, 2:8]
|
||||
>>> tree = KDTree(np.c_[x.ravel(), y.ravel()])
|
||||
|
||||
To query the nearest neighbours and return squeezed result, use
|
||||
|
||||
>>> dd, ii = tree.query([[0, 0], [2.2, 2.9]], k=1)
|
||||
>>> print(dd, ii, sep='\n')
|
||||
[2. 0.2236068]
|
||||
[ 0 13]
|
||||
|
||||
To query the nearest neighbours and return unsqueezed result, use
|
||||
|
||||
>>> dd, ii = tree.query([[0, 0], [2.2, 2.9]], k=[1])
|
||||
>>> print(dd, ii, sep='\n')
|
||||
[[2. ]
|
||||
[0.2236068]]
|
||||
[[ 0]
|
||||
[13]]
|
||||
|
||||
To query the second nearest neighbours and return unsqueezed result,
|
||||
use
|
||||
|
||||
>>> dd, ii = tree.query([[0, 0], [2.2, 2.9]], k=[2])
|
||||
>>> print(dd, ii, sep='\n')
|
||||
[[2.23606798]
|
||||
[0.80622577]]
|
||||
[[ 6]
|
||||
[19]]
|
||||
|
||||
To query the first and second nearest neighbours, use
|
||||
|
||||
>>> dd, ii = tree.query([[0, 0], [2.2, 2.9]], k=2)
|
||||
>>> print(dd, ii, sep='\n')
|
||||
[[2. 2.23606798]
|
||||
[0.2236068 0.80622577]]
|
||||
[[ 0 6]
|
||||
[13 19]]
|
||||
|
||||
or, be more specific
|
||||
|
||||
>>> dd, ii = tree.query([[0, 0], [2.2, 2.9]], k=[1, 2])
|
||||
>>> print(dd, ii, sep='\n')
|
||||
[[2. 2.23606798]
|
||||
[0.2236068 0.80622577]]
|
||||
[[ 0 6]
|
||||
[13 19]]
|
||||
|
||||
"""
|
||||
x = np.asarray(x)
|
||||
if x.dtype.kind == 'c':
|
||||
raise TypeError("KDTree does not work with complex data")
|
||||
|
||||
if k is None:
|
||||
raise ValueError("k must be an integer or a sequence of integers")
|
||||
|
||||
d, i = super().query(x, k, eps, p, distance_upper_bound, workers)
|
||||
if isinstance(i, int):
|
||||
i = np.intp(i)
|
||||
return d, i
|
||||
|
||||
def query_ball_point(self, x, r, p=2., eps=0, workers=1,
|
||||
return_sorted=None, return_length=False):
|
||||
"""Find all points within distance r of point(s) x.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
x : array_like, shape tuple + (self.m,)
|
||||
The point or points to search for neighbors of.
|
||||
r : array_like, float
|
||||
The radius of points to return, must broadcast to the length of x.
|
||||
p : float, optional
|
||||
Which Minkowski p-norm to use. Should be in the range [1, inf].
|
||||
A finite large p may cause a ValueError if overflow can occur.
|
||||
eps : nonnegative float, optional
|
||||
Approximate search. Branches of the tree are not explored if their
|
||||
nearest points are further than ``r / (1 + eps)``, and branches are
|
||||
added in bulk if their furthest points are nearer than
|
||||
``r * (1 + eps)``.
|
||||
workers : int, optional
|
||||
Number of jobs to schedule for parallel processing. If -1 is given
|
||||
all processors are used. Default: 1.
|
||||
|
||||
.. versionadded:: 1.6.0
|
||||
return_sorted : bool, optional
|
||||
Sorts returned indices if True and does not sort them if False. If
|
||||
None, does not sort single point queries, but does sort
|
||||
multi-point queries which was the behavior before this option
|
||||
was added.
|
||||
|
||||
.. versionadded:: 1.6.0
|
||||
return_length : bool, optional
|
||||
Return the number of points inside the radius instead of a list
|
||||
of the indices.
|
||||
|
||||
.. versionadded:: 1.6.0
|
||||
|
||||
Returns
|
||||
-------
|
||||
results : list or array of lists
|
||||
If `x` is a single point, returns a list of the indices of the
|
||||
neighbors of `x`. If `x` is an array of points, returns an object
|
||||
array of shape tuple containing lists of neighbors.
|
||||
|
||||
Notes
|
||||
-----
|
||||
If you have many points whose neighbors you want to find, you may save
|
||||
substantial amounts of time by putting them in a KDTree and using
|
||||
query_ball_tree.
|
||||
|
||||
Examples
|
||||
--------
|
||||
>>> import numpy as np
|
||||
>>> from scipy import spatial
|
||||
>>> x, y = np.mgrid[0:5, 0:5]
|
||||
>>> points = np.c_[x.ravel(), y.ravel()]
|
||||
>>> tree = spatial.KDTree(points)
|
||||
>>> sorted(tree.query_ball_point([2, 0], 1))
|
||||
[5, 10, 11, 15]
|
||||
|
||||
Query multiple points and plot the results:
|
||||
|
||||
>>> import matplotlib.pyplot as plt
|
||||
>>> points = np.asarray(points)
|
||||
>>> plt.plot(points[:,0], points[:,1], '.')
|
||||
>>> for results in tree.query_ball_point(([2, 0], [3, 3]), 1):
|
||||
... nearby_points = points[results]
|
||||
... plt.plot(nearby_points[:,0], nearby_points[:,1], 'o')
|
||||
>>> plt.margins(0.1, 0.1)
|
||||
>>> plt.show()
|
||||
|
||||
"""
|
||||
x = np.asarray(x)
|
||||
if x.dtype.kind == 'c':
|
||||
raise TypeError("KDTree does not work with complex data")
|
||||
return super().query_ball_point(
|
||||
x, r, p, eps, workers, return_sorted, return_length)
|
||||
|
||||
def query_ball_tree(self, other, r, p=2., eps=0):
|
||||
"""
|
||||
Find all pairs of points between `self` and `other` whose distance is
|
||||
at most r.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
other : KDTree instance
|
||||
The tree containing points to search against.
|
||||
r : float
|
||||
The maximum distance, has to be positive.
|
||||
p : float, optional
|
||||
Which Minkowski norm to use. `p` has to meet the condition
|
||||
``1 <= p <= infinity``.
|
||||
eps : float, optional
|
||||
Approximate search. Branches of the tree are not explored
|
||||
if their nearest points are further than ``r/(1+eps)``, and
|
||||
branches are added in bulk if their furthest points are nearer
|
||||
than ``r * (1+eps)``. `eps` has to be non-negative.
|
||||
|
||||
Returns
|
||||
-------
|
||||
results : list of lists
|
||||
For each element ``self.data[i]`` of this tree, ``results[i]`` is a
|
||||
list of the indices of its neighbors in ``other.data``.
|
||||
|
||||
Examples
|
||||
--------
|
||||
You can search all pairs of points between two kd-trees within a distance:
|
||||
|
||||
>>> import matplotlib.pyplot as plt
|
||||
>>> import numpy as np
|
||||
>>> from scipy.spatial import KDTree
|
||||
>>> rng = np.random.default_rng()
|
||||
>>> points1 = rng.random((15, 2))
|
||||
>>> points2 = rng.random((15, 2))
|
||||
>>> plt.figure(figsize=(6, 6))
|
||||
>>> plt.plot(points1[:, 0], points1[:, 1], "xk", markersize=14)
|
||||
>>> plt.plot(points2[:, 0], points2[:, 1], "og", markersize=14)
|
||||
>>> kd_tree1 = KDTree(points1)
|
||||
>>> kd_tree2 = KDTree(points2)
|
||||
>>> indexes = kd_tree1.query_ball_tree(kd_tree2, r=0.2)
|
||||
>>> for i in range(len(indexes)):
|
||||
... for j in indexes[i]:
|
||||
... plt.plot([points1[i, 0], points2[j, 0]],
|
||||
... [points1[i, 1], points2[j, 1]], "-r")
|
||||
>>> plt.show()
|
||||
|
||||
"""
|
||||
return super().query_ball_tree(other, r, p, eps)
|
||||
|
||||
def query_pairs(self, r, p=2., eps=0, output_type='set'):
|
||||
"""Find all pairs of points in `self` whose distance is at most r.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
r : positive float
|
||||
The maximum distance.
|
||||
p : float, optional
|
||||
Which Minkowski norm to use. `p` has to meet the condition
|
||||
``1 <= p <= infinity``.
|
||||
eps : float, optional
|
||||
Approximate search. Branches of the tree are not explored
|
||||
if their nearest points are further than ``r/(1+eps)``, and
|
||||
branches are added in bulk if their furthest points are nearer
|
||||
than ``r * (1+eps)``. `eps` has to be non-negative.
|
||||
output_type : string, optional
|
||||
Choose the output container, 'set' or 'ndarray'. Default: 'set'
|
||||
|
||||
.. versionadded:: 1.6.0
|
||||
|
||||
Returns
|
||||
-------
|
||||
results : set or ndarray
|
||||
Set of pairs ``(i,j)``, with ``i < j``, for which the corresponding
|
||||
positions are close. If output_type is 'ndarray', an ndarry is
|
||||
returned instead of a set.
|
||||
|
||||
Examples
|
||||
--------
|
||||
You can search all pairs of points in a kd-tree within a distance:
|
||||
|
||||
>>> import matplotlib.pyplot as plt
|
||||
>>> import numpy as np
|
||||
>>> from scipy.spatial import KDTree
|
||||
>>> rng = np.random.default_rng()
|
||||
>>> points = rng.random((20, 2))
|
||||
>>> plt.figure(figsize=(6, 6))
|
||||
>>> plt.plot(points[:, 0], points[:, 1], "xk", markersize=14)
|
||||
>>> kd_tree = KDTree(points)
|
||||
>>> pairs = kd_tree.query_pairs(r=0.2)
|
||||
>>> for (i, j) in pairs:
|
||||
... plt.plot([points[i, 0], points[j, 0]],
|
||||
... [points[i, 1], points[j, 1]], "-r")
|
||||
>>> plt.show()
|
||||
|
||||
"""
|
||||
return super().query_pairs(r, p, eps, output_type)
|
||||
|
||||
def count_neighbors(self, other, r, p=2., weights=None, cumulative=True):
|
||||
"""Count how many nearby pairs can be formed.
|
||||
|
||||
Count the number of pairs ``(x1,x2)`` can be formed, with ``x1`` drawn
|
||||
from ``self`` and ``x2`` drawn from ``other``, and where
|
||||
``distance(x1, x2, p) <= r``.
|
||||
|
||||
Data points on ``self`` and ``other`` are optionally weighted by the
|
||||
``weights`` argument. (See below)
|
||||
|
||||
This is adapted from the "two-point correlation" algorithm described by
|
||||
Gray and Moore [1]_. See notes for further discussion.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
other : KDTree
|
||||
The other tree to draw points from, can be the same tree as self.
|
||||
r : float or one-dimensional array of floats
|
||||
The radius to produce a count for. Multiple radii are searched with
|
||||
a single tree traversal.
|
||||
If the count is non-cumulative(``cumulative=False``), ``r`` defines
|
||||
the edges of the bins, and must be non-decreasing.
|
||||
p : float, optional
|
||||
1<=p<=infinity.
|
||||
Which Minkowski p-norm to use.
|
||||
Default 2.0.
|
||||
A finite large p may cause a ValueError if overflow can occur.
|
||||
weights : tuple, array_like, or None, optional
|
||||
If None, the pair-counting is unweighted.
|
||||
If given as a tuple, weights[0] is the weights of points in
|
||||
``self``, and weights[1] is the weights of points in ``other``;
|
||||
either can be None to indicate the points are unweighted.
|
||||
If given as an array_like, weights is the weights of points in
|
||||
``self`` and ``other``. For this to make sense, ``self`` and
|
||||
``other`` must be the same tree. If ``self`` and ``other`` are two
|
||||
different trees, a ``ValueError`` is raised.
|
||||
Default: None
|
||||
|
||||
.. versionadded:: 1.6.0
|
||||
cumulative : bool, optional
|
||||
Whether the returned counts are cumulative. When cumulative is set
|
||||
to ``False`` the algorithm is optimized to work with a large number
|
||||
of bins (>10) specified by ``r``. When ``cumulative`` is set to
|
||||
True, the algorithm is optimized to work with a small number of
|
||||
``r``. Default: True
|
||||
|
||||
.. versionadded:: 1.6.0
|
||||
|
||||
Returns
|
||||
-------
|
||||
result : scalar or 1-D array
|
||||
The number of pairs. For unweighted counts, the result is integer.
|
||||
For weighted counts, the result is float.
|
||||
If cumulative is False, ``result[i]`` contains the counts with
|
||||
``(-inf if i == 0 else r[i-1]) < R <= r[i]``
|
||||
|
||||
Notes
|
||||
-----
|
||||
Pair-counting is the basic operation used to calculate the two point
|
||||
correlation functions from a data set composed of position of objects.
|
||||
|
||||
Two point correlation function measures the clustering of objects and
|
||||
is widely used in cosmology to quantify the large scale structure
|
||||
in our Universe, but it may be useful for data analysis in other fields
|
||||
where self-similar assembly of objects also occur.
|
||||
|
||||
The Landy-Szalay estimator for the two point correlation function of
|
||||
``D`` measures the clustering signal in ``D``. [2]_
|
||||
|
||||
For example, given the position of two sets of objects,
|
||||
|
||||
- objects ``D`` (data) contains the clustering signal, and
|
||||
|
||||
- objects ``R`` (random) that contains no signal,
|
||||
|
||||
.. math::
|
||||
|
||||
\\xi(r) = \\frac{<D, D> - 2 f <D, R> + f^2<R, R>}{f^2<R, R>},
|
||||
|
||||
where the brackets represents counting pairs between two data sets
|
||||
in a finite bin around ``r`` (distance), corresponding to setting
|
||||
`cumulative=False`, and ``f = float(len(D)) / float(len(R))`` is the
|
||||
ratio between number of objects from data and random.
|
||||
|
||||
The algorithm implemented here is loosely based on the dual-tree
|
||||
algorithm described in [1]_. We switch between two different
|
||||
pair-cumulation scheme depending on the setting of ``cumulative``.
|
||||
The computing time of the method we use when for
|
||||
``cumulative == False`` does not scale with the total number of bins.
|
||||
The algorithm for ``cumulative == True`` scales linearly with the
|
||||
number of bins, though it is slightly faster when only
|
||||
1 or 2 bins are used. [5]_.
|
||||
|
||||
As an extension to the naive pair-counting,
|
||||
weighted pair-counting counts the product of weights instead
|
||||
of number of pairs.
|
||||
Weighted pair-counting is used to estimate marked correlation functions
|
||||
([3]_, section 2.2),
|
||||
or to properly calculate the average of data per distance bin
|
||||
(e.g. [4]_, section 2.1 on redshift).
|
||||
|
||||
.. [1] Gray and Moore,
|
||||
"N-body problems in statistical learning",
|
||||
Mining the sky, 2000,
|
||||
https://arxiv.org/abs/astro-ph/0012333
|
||||
|
||||
.. [2] Landy and Szalay,
|
||||
"Bias and variance of angular correlation functions",
|
||||
The Astrophysical Journal, 1993,
|
||||
http://adsabs.harvard.edu/abs/1993ApJ...412...64L
|
||||
|
||||
.. [3] Sheth, Connolly and Skibba,
|
||||
"Marked correlations in galaxy formation models",
|
||||
Arxiv e-print, 2005,
|
||||
https://arxiv.org/abs/astro-ph/0511773
|
||||
|
||||
.. [4] Hawkins, et al.,
|
||||
"The 2dF Galaxy Redshift Survey: correlation functions,
|
||||
peculiar velocities and the matter density of the Universe",
|
||||
Monthly Notices of the Royal Astronomical Society, 2002,
|
||||
http://adsabs.harvard.edu/abs/2003MNRAS.346...78H
|
||||
|
||||
.. [5] https://github.com/scipy/scipy/pull/5647#issuecomment-168474926
|
||||
|
||||
Examples
|
||||
--------
|
||||
You can count neighbors number between two kd-trees within a distance:
|
||||
|
||||
>>> import numpy as np
|
||||
>>> from scipy.spatial import KDTree
|
||||
>>> rng = np.random.default_rng()
|
||||
>>> points1 = rng.random((5, 2))
|
||||
>>> points2 = rng.random((5, 2))
|
||||
>>> kd_tree1 = KDTree(points1)
|
||||
>>> kd_tree2 = KDTree(points2)
|
||||
>>> kd_tree1.count_neighbors(kd_tree2, 0.2)
|
||||
1
|
||||
|
||||
This number is same as the total pair number calculated by
|
||||
`query_ball_tree`:
|
||||
|
||||
>>> indexes = kd_tree1.query_ball_tree(kd_tree2, r=0.2)
|
||||
>>> sum([len(i) for i in indexes])
|
||||
1
|
||||
|
||||
"""
|
||||
return super().count_neighbors(other, r, p, weights, cumulative)
|
||||
|
||||
def sparse_distance_matrix(
|
||||
self, other, max_distance, p=2., output_type='dok_matrix'):
|
||||
"""Compute a sparse distance matrix.
|
||||
|
||||
Computes a distance matrix between two KDTrees, leaving as zero
|
||||
any distance greater than max_distance.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
other : KDTree
|
||||
|
||||
max_distance : positive float
|
||||
|
||||
p : float, 1<=p<=infinity
|
||||
Which Minkowski p-norm to use.
|
||||
A finite large p may cause a ValueError if overflow can occur.
|
||||
|
||||
output_type : string, optional
|
||||
Which container to use for output data. Options: 'dok_matrix',
|
||||
'coo_matrix', 'dict', or 'ndarray'. Default: 'dok_matrix'.
|
||||
|
||||
.. versionadded:: 1.6.0
|
||||
|
||||
Returns
|
||||
-------
|
||||
result : dok_matrix, coo_matrix, dict or ndarray
|
||||
Sparse matrix representing the results in "dictionary of keys"
|
||||
format. If a dict is returned the keys are (i,j) tuples of indices.
|
||||
If output_type is 'ndarray' a record array with fields 'i', 'j',
|
||||
and 'v' is returned,
|
||||
|
||||
Examples
|
||||
--------
|
||||
You can compute a sparse distance matrix between two kd-trees:
|
||||
|
||||
>>> import numpy as np
|
||||
>>> from scipy.spatial import KDTree
|
||||
>>> rng = np.random.default_rng()
|
||||
>>> points1 = rng.random((5, 2))
|
||||
>>> points2 = rng.random((5, 2))
|
||||
>>> kd_tree1 = KDTree(points1)
|
||||
>>> kd_tree2 = KDTree(points2)
|
||||
>>> sdm = kd_tree1.sparse_distance_matrix(kd_tree2, 0.3)
|
||||
>>> sdm.toarray()
|
||||
array([[0. , 0. , 0.12295571, 0. , 0. ],
|
||||
[0. , 0. , 0. , 0. , 0. ],
|
||||
[0.28942611, 0. , 0. , 0.2333084 , 0. ],
|
||||
[0. , 0. , 0. , 0. , 0. ],
|
||||
[0.24617575, 0.29571802, 0.26836782, 0. , 0. ]])
|
||||
|
||||
You can check distances above the `max_distance` are zeros:
|
||||
|
||||
>>> from scipy.spatial import distance_matrix
|
||||
>>> distance_matrix(points1, points2)
|
||||
array([[0.56906522, 0.39923701, 0.12295571, 0.8658745 , 0.79428925],
|
||||
[0.37327919, 0.7225693 , 0.87665969, 0.32580855, 0.75679479],
|
||||
[0.28942611, 0.30088013, 0.6395831 , 0.2333084 , 0.33630734],
|
||||
[0.31994999, 0.72658602, 0.71124834, 0.55396483, 0.90785663],
|
||||
[0.24617575, 0.29571802, 0.26836782, 0.57714465, 0.6473269 ]])
|
||||
|
||||
"""
|
||||
return super().sparse_distance_matrix(
|
||||
other, max_distance, p, output_type)
|
||||
|
||||
|
||||
def distance_matrix(x, y, p=2, threshold=1000000):
|
||||
"""Compute the distance matrix.
|
||||
|
||||
Returns the matrix of all pair-wise distances.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
x : (M, K) array_like
|
||||
Matrix of M vectors in K dimensions.
|
||||
y : (N, K) array_like
|
||||
Matrix of N vectors in K dimensions.
|
||||
p : float, 1 <= p <= infinity
|
||||
Which Minkowski p-norm to use.
|
||||
threshold : positive int
|
||||
If ``M * N * K`` > `threshold`, algorithm uses a Python loop instead
|
||||
of large temporary arrays.
|
||||
|
||||
Returns
|
||||
-------
|
||||
result : (M, N) ndarray
|
||||
Matrix containing the distance from every vector in `x` to every vector
|
||||
in `y`.
|
||||
|
||||
Examples
|
||||
--------
|
||||
>>> from scipy.spatial import distance_matrix
|
||||
>>> distance_matrix([[0,0],[0,1]], [[1,0],[1,1]])
|
||||
array([[ 1. , 1.41421356],
|
||||
[ 1.41421356, 1. ]])
|
||||
|
||||
"""
|
||||
|
||||
x = np.asarray(x)
|
||||
m, k = x.shape
|
||||
y = np.asarray(y)
|
||||
n, kk = y.shape
|
||||
|
||||
if k != kk:
|
||||
raise ValueError(f"x contains {k}-dimensional vectors but y contains "
|
||||
f"{kk}-dimensional vectors")
|
||||
|
||||
if m*n*k <= threshold:
|
||||
return minkowski_distance(x[:,np.newaxis,:],y[np.newaxis,:,:],p)
|
||||
else:
|
||||
result = np.empty((m,n),dtype=float) # FIXME: figure out the best dtype
|
||||
if m < n:
|
||||
for i in range(m):
|
||||
result[i,:] = minkowski_distance(x[i],y,p)
|
||||
else:
|
||||
for j in range(n):
|
||||
result[:,j] = minkowski_distance(x,y[j],p)
|
||||
return result
|
||||
274
venv/lib/python3.13/site-packages/scipy/spatial/_plotutils.py
Normal file
274
venv/lib/python3.13/site-packages/scipy/spatial/_plotutils.py
Normal file
|
|
@ -0,0 +1,274 @@
|
|||
import numpy as np
|
||||
from scipy._lib.decorator import decorator as _decorator
|
||||
|
||||
__all__ = ['delaunay_plot_2d', 'convex_hull_plot_2d', 'voronoi_plot_2d']
|
||||
|
||||
|
||||
@_decorator
|
||||
def _held_figure(func, obj, ax=None, **kw):
|
||||
import matplotlib.pyplot as plt
|
||||
|
||||
if ax is None:
|
||||
fig = plt.figure()
|
||||
ax = fig.gca()
|
||||
return func(obj, ax=ax, **kw)
|
||||
|
||||
# As of matplotlib 2.0, the "hold" mechanism is deprecated.
|
||||
# When matplotlib 1.x is no longer supported, this check can be removed.
|
||||
was_held = getattr(ax, 'ishold', lambda: True)()
|
||||
if was_held:
|
||||
return func(obj, ax=ax, **kw)
|
||||
try:
|
||||
ax.hold(True)
|
||||
return func(obj, ax=ax, **kw)
|
||||
finally:
|
||||
ax.hold(was_held)
|
||||
|
||||
|
||||
def _adjust_bounds(ax, points):
|
||||
margin = 0.1 * np.ptp(points, axis=0)
|
||||
xy_min = points.min(axis=0) - margin
|
||||
xy_max = points.max(axis=0) + margin
|
||||
ax.set_xlim(xy_min[0], xy_max[0])
|
||||
ax.set_ylim(xy_min[1], xy_max[1])
|
||||
|
||||
|
||||
@_held_figure
|
||||
def delaunay_plot_2d(tri, ax=None):
|
||||
"""
|
||||
Plot the given Delaunay triangulation in 2-D
|
||||
|
||||
Parameters
|
||||
----------
|
||||
tri : scipy.spatial.Delaunay instance
|
||||
Triangulation to plot
|
||||
ax : matplotlib.axes.Axes instance, optional
|
||||
Axes to plot on
|
||||
|
||||
Returns
|
||||
-------
|
||||
fig : matplotlib.figure.Figure instance
|
||||
Figure for the plot
|
||||
|
||||
See Also
|
||||
--------
|
||||
Delaunay
|
||||
matplotlib.pyplot.triplot
|
||||
|
||||
Notes
|
||||
-----
|
||||
Requires Matplotlib.
|
||||
|
||||
Examples
|
||||
--------
|
||||
|
||||
>>> import numpy as np
|
||||
>>> import matplotlib.pyplot as plt
|
||||
>>> from scipy.spatial import Delaunay, delaunay_plot_2d
|
||||
|
||||
The Delaunay triangulation of a set of random points:
|
||||
|
||||
>>> rng = np.random.default_rng()
|
||||
>>> points = rng.random((30, 2))
|
||||
>>> tri = Delaunay(points)
|
||||
|
||||
Plot it:
|
||||
|
||||
>>> _ = delaunay_plot_2d(tri)
|
||||
>>> plt.show()
|
||||
|
||||
"""
|
||||
if tri.points.shape[1] != 2:
|
||||
raise ValueError("Delaunay triangulation is not 2-D")
|
||||
|
||||
x, y = tri.points.T
|
||||
ax.plot(x, y, 'o')
|
||||
ax.triplot(x, y, tri.simplices.copy())
|
||||
|
||||
_adjust_bounds(ax, tri.points)
|
||||
|
||||
return ax.figure
|
||||
|
||||
|
||||
@_held_figure
|
||||
def convex_hull_plot_2d(hull, ax=None):
|
||||
"""
|
||||
Plot the given convex hull diagram in 2-D
|
||||
|
||||
Parameters
|
||||
----------
|
||||
hull : scipy.spatial.ConvexHull instance
|
||||
Convex hull to plot
|
||||
ax : matplotlib.axes.Axes instance, optional
|
||||
Axes to plot on
|
||||
|
||||
Returns
|
||||
-------
|
||||
fig : matplotlib.figure.Figure instance
|
||||
Figure for the plot
|
||||
|
||||
See Also
|
||||
--------
|
||||
ConvexHull
|
||||
|
||||
Notes
|
||||
-----
|
||||
Requires Matplotlib.
|
||||
|
||||
|
||||
Examples
|
||||
--------
|
||||
|
||||
>>> import numpy as np
|
||||
>>> import matplotlib.pyplot as plt
|
||||
>>> from scipy.spatial import ConvexHull, convex_hull_plot_2d
|
||||
|
||||
The convex hull of a random set of points:
|
||||
|
||||
>>> rng = np.random.default_rng()
|
||||
>>> points = rng.random((30, 2))
|
||||
>>> hull = ConvexHull(points)
|
||||
|
||||
Plot it:
|
||||
|
||||
>>> _ = convex_hull_plot_2d(hull)
|
||||
>>> plt.show()
|
||||
|
||||
"""
|
||||
from matplotlib.collections import LineCollection
|
||||
|
||||
if hull.points.shape[1] != 2:
|
||||
raise ValueError("Convex hull is not 2-D")
|
||||
|
||||
ax.plot(hull.points[:, 0], hull.points[:, 1], 'o')
|
||||
line_segments = [hull.points[simplex] for simplex in hull.simplices]
|
||||
ax.add_collection(LineCollection(line_segments,
|
||||
colors='k',
|
||||
linestyle='solid'))
|
||||
_adjust_bounds(ax, hull.points)
|
||||
|
||||
return ax.figure
|
||||
|
||||
|
||||
@_held_figure
|
||||
def voronoi_plot_2d(vor, ax=None, **kw):
|
||||
"""
|
||||
Plot the given Voronoi diagram in 2-D
|
||||
|
||||
Parameters
|
||||
----------
|
||||
vor : scipy.spatial.Voronoi instance
|
||||
Diagram to plot
|
||||
ax : matplotlib.axes.Axes instance, optional
|
||||
Axes to plot on
|
||||
show_points : bool, optional
|
||||
Add the Voronoi points to the plot.
|
||||
show_vertices : bool, optional
|
||||
Add the Voronoi vertices to the plot.
|
||||
line_colors : string, optional
|
||||
Specifies the line color for polygon boundaries
|
||||
line_width : float, optional
|
||||
Specifies the line width for polygon boundaries
|
||||
line_alpha : float, optional
|
||||
Specifies the line alpha for polygon boundaries
|
||||
point_size : float, optional
|
||||
Specifies the size of points
|
||||
|
||||
Returns
|
||||
-------
|
||||
fig : matplotlib.figure.Figure instance
|
||||
Figure for the plot
|
||||
|
||||
See Also
|
||||
--------
|
||||
Voronoi
|
||||
|
||||
Notes
|
||||
-----
|
||||
Requires Matplotlib. For degenerate input, including collinearity and
|
||||
other violations of general position, it may be preferable to
|
||||
calculate the Voronoi diagram with Qhull options ``QJ`` for random
|
||||
joggling, or ``Qt`` to enforce triangulated output. Otherwise, some
|
||||
Voronoi regions may not be visible.
|
||||
|
||||
Examples
|
||||
--------
|
||||
>>> import numpy as np
|
||||
>>> import matplotlib.pyplot as plt
|
||||
>>> from scipy.spatial import Voronoi, voronoi_plot_2d
|
||||
|
||||
Create a set of points for the example:
|
||||
|
||||
>>> rng = np.random.default_rng()
|
||||
>>> points = rng.random((10,2))
|
||||
|
||||
Generate the Voronoi diagram for the points:
|
||||
|
||||
>>> vor = Voronoi(points)
|
||||
|
||||
Use `voronoi_plot_2d` to plot the diagram:
|
||||
|
||||
>>> fig = voronoi_plot_2d(vor)
|
||||
|
||||
Use `voronoi_plot_2d` to plot the diagram again, with some settings
|
||||
customized:
|
||||
|
||||
>>> fig = voronoi_plot_2d(vor, show_vertices=False, line_colors='orange',
|
||||
... line_width=2, line_alpha=0.6, point_size=2)
|
||||
>>> plt.show()
|
||||
|
||||
"""
|
||||
from matplotlib.collections import LineCollection
|
||||
|
||||
if vor.points.shape[1] != 2:
|
||||
raise ValueError("Voronoi diagram is not 2-D")
|
||||
|
||||
if kw.get('show_points', True):
|
||||
point_size = kw.get('point_size', None)
|
||||
ax.plot(vor.points[:, 0], vor.points[:, 1], '.', markersize=point_size)
|
||||
if kw.get('show_vertices', True):
|
||||
ax.plot(vor.vertices[:, 0], vor.vertices[:, 1], 'o')
|
||||
|
||||
line_colors = kw.get('line_colors', 'k')
|
||||
line_width = kw.get('line_width', 1.0)
|
||||
line_alpha = kw.get('line_alpha', 1.0)
|
||||
|
||||
center = vor.points.mean(axis=0)
|
||||
ptp_bound = np.ptp(vor.points, axis=0)
|
||||
|
||||
finite_segments = []
|
||||
infinite_segments = []
|
||||
for pointidx, simplex in zip(vor.ridge_points, vor.ridge_vertices):
|
||||
simplex = np.asarray(simplex)
|
||||
if np.all(simplex >= 0):
|
||||
finite_segments.append(vor.vertices[simplex])
|
||||
else:
|
||||
i = simplex[simplex >= 0][0] # finite end Voronoi vertex
|
||||
|
||||
t = vor.points[pointidx[1]] - vor.points[pointidx[0]] # tangent
|
||||
t /= np.linalg.norm(t)
|
||||
n = np.array([-t[1], t[0]]) # normal
|
||||
|
||||
midpoint = vor.points[pointidx].mean(axis=0)
|
||||
direction = np.sign(np.dot(midpoint - center, n)) * n
|
||||
if (vor.furthest_site):
|
||||
direction = -direction
|
||||
aspect_factor = abs(ptp_bound.max() / ptp_bound.min())
|
||||
far_point = vor.vertices[i] + direction * ptp_bound.max() * aspect_factor
|
||||
|
||||
infinite_segments.append([vor.vertices[i], far_point])
|
||||
|
||||
ax.add_collection(LineCollection(finite_segments,
|
||||
colors=line_colors,
|
||||
lw=line_width,
|
||||
alpha=line_alpha,
|
||||
linestyle='solid'))
|
||||
ax.add_collection(LineCollection(infinite_segments,
|
||||
colors=line_colors,
|
||||
lw=line_width,
|
||||
alpha=line_alpha,
|
||||
linestyle='dashed'))
|
||||
|
||||
_adjust_bounds(ax, vor.points)
|
||||
|
||||
return ax.figure
|
||||
132
venv/lib/python3.13/site-packages/scipy/spatial/_procrustes.py
Normal file
132
venv/lib/python3.13/site-packages/scipy/spatial/_procrustes.py
Normal file
|
|
@ -0,0 +1,132 @@
|
|||
"""
|
||||
This module provides functions to perform full Procrustes analysis.
|
||||
|
||||
This code was originally written by Justin Kucynski and ported over from
|
||||
scikit-bio by Yoshiki Vazquez-Baeza.
|
||||
"""
|
||||
|
||||
import numpy as np
|
||||
from scipy.linalg import orthogonal_procrustes
|
||||
|
||||
|
||||
__all__ = ['procrustes']
|
||||
|
||||
|
||||
def procrustes(data1, data2):
|
||||
r"""Procrustes analysis, a similarity test for two data sets.
|
||||
|
||||
Each input matrix is a set of points or vectors (the rows of the matrix).
|
||||
The dimension of the space is the number of columns of each matrix. Given
|
||||
two identically sized matrices, procrustes standardizes both such that:
|
||||
|
||||
- :math:`tr(AA^{T}) = 1`.
|
||||
|
||||
- Both sets of points are centered around the origin.
|
||||
|
||||
Procrustes ([1]_, [2]_) then applies the optimal transform to the second
|
||||
matrix (including scaling/dilation, rotations, and reflections) to minimize
|
||||
:math:`M^{2}=\sum(data1-data2)^{2}`, or the sum of the squares of the
|
||||
pointwise differences between the two input datasets.
|
||||
|
||||
This function was not designed to handle datasets with different numbers of
|
||||
datapoints (rows). If two data sets have different dimensionality
|
||||
(different number of columns), simply add columns of zeros to the smaller
|
||||
of the two.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
data1 : array_like
|
||||
Matrix, n rows represent points in k (columns) space `data1` is the
|
||||
reference data, after it is standardised, the data from `data2` will be
|
||||
transformed to fit the pattern in `data1` (must have >1 unique points).
|
||||
data2 : array_like
|
||||
n rows of data in k space to be fit to `data1`. Must be the same
|
||||
shape ``(numrows, numcols)`` as data1 (must have >1 unique points).
|
||||
|
||||
Returns
|
||||
-------
|
||||
mtx1 : array_like
|
||||
A standardized version of `data1`.
|
||||
mtx2 : array_like
|
||||
The orientation of `data2` that best fits `data1`. Centered, but not
|
||||
necessarily :math:`tr(AA^{T}) = 1`.
|
||||
disparity : float
|
||||
:math:`M^{2}` as defined above.
|
||||
|
||||
Raises
|
||||
------
|
||||
ValueError
|
||||
If the input arrays are not two-dimensional.
|
||||
If the shape of the input arrays is different.
|
||||
If the input arrays have zero columns or zero rows.
|
||||
|
||||
See Also
|
||||
--------
|
||||
scipy.linalg.orthogonal_procrustes
|
||||
scipy.spatial.distance.directed_hausdorff : Another similarity test
|
||||
for two data sets
|
||||
|
||||
Notes
|
||||
-----
|
||||
- The disparity should not depend on the order of the input matrices, but
|
||||
the output matrices will, as only the first output matrix is guaranteed
|
||||
to be scaled such that :math:`tr(AA^{T}) = 1`.
|
||||
|
||||
- Duplicate data points are generally ok, duplicating a data point will
|
||||
increase its effect on the procrustes fit.
|
||||
|
||||
- The disparity scales as the number of points per input matrix.
|
||||
|
||||
References
|
||||
----------
|
||||
.. [1] Krzanowski, W. J. (2000). "Principles of Multivariate analysis".
|
||||
.. [2] Gower, J. C. (1975). "Generalized procrustes analysis".
|
||||
|
||||
Examples
|
||||
--------
|
||||
>>> import numpy as np
|
||||
>>> from scipy.spatial import procrustes
|
||||
|
||||
The matrix ``b`` is a rotated, shifted, scaled and mirrored version of
|
||||
``a`` here:
|
||||
|
||||
>>> a = np.array([[1, 3], [1, 2], [1, 1], [2, 1]], 'd')
|
||||
>>> b = np.array([[4, -2], [4, -4], [4, -6], [2, -6]], 'd')
|
||||
>>> mtx1, mtx2, disparity = procrustes(a, b)
|
||||
>>> round(disparity)
|
||||
0
|
||||
|
||||
"""
|
||||
mtx1 = np.array(data1, dtype=np.float64, copy=True)
|
||||
mtx2 = np.array(data2, dtype=np.float64, copy=True)
|
||||
|
||||
if mtx1.ndim != 2 or mtx2.ndim != 2:
|
||||
raise ValueError("Input matrices must be two-dimensional")
|
||||
if mtx1.shape != mtx2.shape:
|
||||
raise ValueError("Input matrices must be of same shape")
|
||||
if mtx1.size == 0:
|
||||
raise ValueError("Input matrices must be >0 rows and >0 cols")
|
||||
|
||||
# translate all the data to the origin
|
||||
mtx1 -= np.mean(mtx1, 0)
|
||||
mtx2 -= np.mean(mtx2, 0)
|
||||
|
||||
norm1 = np.linalg.norm(mtx1)
|
||||
norm2 = np.linalg.norm(mtx2)
|
||||
|
||||
if norm1 == 0 or norm2 == 0:
|
||||
raise ValueError("Input matrices must contain >1 unique points")
|
||||
|
||||
# change scaling of data (in rows) such that trace(mtx*mtx') = 1
|
||||
mtx1 /= norm1
|
||||
mtx2 /= norm2
|
||||
|
||||
# transform mtx2 to minimize disparity
|
||||
R, s = orthogonal_procrustes(mtx1, mtx2)
|
||||
mtx2 = np.dot(mtx2, R.T) * s
|
||||
|
||||
# measure the dissimilarity between the two datasets
|
||||
disparity = np.sum(np.square(mtx1 - mtx2))
|
||||
|
||||
return mtx1, mtx2, disparity
|
||||
|
||||
Binary file not shown.
213
venv/lib/python3.13/site-packages/scipy/spatial/_qhull.pyi
Normal file
213
venv/lib/python3.13/site-packages/scipy/spatial/_qhull.pyi
Normal file
|
|
@ -0,0 +1,213 @@
|
|||
'''
|
||||
Static type checking stub file for scipy/spatial/qhull.pyx
|
||||
'''
|
||||
|
||||
|
||||
import numpy as np
|
||||
from numpy.typing import ArrayLike, NDArray
|
||||
from typing_extensions import final
|
||||
|
||||
class QhullError(RuntimeError):
|
||||
...
|
||||
|
||||
@final
|
||||
class _Qhull:
|
||||
# Read-only cython attribute that behaves, more or less, like a property
|
||||
@property
|
||||
def ndim(self) -> int: ...
|
||||
mode_option: bytes
|
||||
options: bytes
|
||||
furthest_site: bool
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
mode_option: bytes,
|
||||
points: NDArray[np.float64],
|
||||
options: None | bytes = ...,
|
||||
required_options: None | bytes = ...,
|
||||
furthest_site: bool = ...,
|
||||
incremental: bool = ...,
|
||||
interior_point: None | NDArray[np.float64] = ...,
|
||||
) -> None: ...
|
||||
def check_active(self) -> None: ...
|
||||
def close(self) -> None: ...
|
||||
def get_points(self) -> NDArray[np.float64]: ...
|
||||
def add_points(
|
||||
self,
|
||||
points: ArrayLike,
|
||||
interior_point: ArrayLike = ...
|
||||
) -> None: ...
|
||||
def get_paraboloid_shift_scale(self) -> tuple[float, float]: ...
|
||||
def volume_area(self) -> tuple[float, float]: ...
|
||||
def triangulate(self) -> None: ...
|
||||
def get_simplex_facet_array(self) -> tuple[
|
||||
NDArray[np.intc],
|
||||
NDArray[np.intc],
|
||||
NDArray[np.float64],
|
||||
NDArray[np.intc],
|
||||
NDArray[np.intc],
|
||||
]: ...
|
||||
def get_hull_points(self) -> NDArray[np.float64]: ...
|
||||
def get_hull_facets(self) -> tuple[
|
||||
list[list[int]],
|
||||
NDArray[np.float64],
|
||||
]: ...
|
||||
def get_voronoi_diagram(self) -> tuple[
|
||||
NDArray[np.float64],
|
||||
NDArray[np.intc],
|
||||
list[list[int]],
|
||||
list[list[int]],
|
||||
NDArray[np.intp],
|
||||
]: ...
|
||||
def get_extremes_2d(self) -> NDArray[np.intc]: ...
|
||||
|
||||
def _get_barycentric_transforms(
|
||||
points: NDArray[np.float64],
|
||||
simplices: NDArray[np.intc],
|
||||
eps: float
|
||||
) -> NDArray[np.float64]: ...
|
||||
|
||||
class _QhullUser:
|
||||
ndim: int
|
||||
npoints: int
|
||||
min_bound: NDArray[np.float64]
|
||||
max_bound: NDArray[np.float64]
|
||||
|
||||
def __init__(self, qhull: _Qhull, incremental: bool = ...) -> None: ...
|
||||
def close(self) -> None: ...
|
||||
def _update(self, qhull: _Qhull) -> None: ...
|
||||
def _add_points(
|
||||
self,
|
||||
points: ArrayLike,
|
||||
restart: bool = ...,
|
||||
interior_point: ArrayLike = ...
|
||||
) -> None: ...
|
||||
|
||||
class Delaunay(_QhullUser):
|
||||
furthest_site: bool
|
||||
paraboloid_scale: float
|
||||
paraboloid_shift: float
|
||||
simplices: NDArray[np.intc]
|
||||
neighbors: NDArray[np.intc]
|
||||
equations: NDArray[np.float64]
|
||||
coplanar: NDArray[np.intc]
|
||||
good: NDArray[np.intc]
|
||||
nsimplex: int
|
||||
vertices: NDArray[np.intc]
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
points: ArrayLike,
|
||||
furthest_site: bool = ...,
|
||||
incremental: bool = ...,
|
||||
qhull_options: None | str = ...
|
||||
) -> None: ...
|
||||
def _update(self, qhull: _Qhull) -> None: ...
|
||||
def add_points(
|
||||
self,
|
||||
points: ArrayLike,
|
||||
restart: bool = ...
|
||||
) -> None: ...
|
||||
@property
|
||||
def points(self) -> NDArray[np.float64]: ...
|
||||
@property
|
||||
def transform(self) -> NDArray[np.float64]: ...
|
||||
@property
|
||||
def vertex_to_simplex(self) -> NDArray[np.intc]: ...
|
||||
@property
|
||||
def vertex_neighbor_vertices(self) -> tuple[
|
||||
NDArray[np.intc],
|
||||
NDArray[np.intc],
|
||||
]: ...
|
||||
@property
|
||||
def convex_hull(self) -> NDArray[np.intc]: ...
|
||||
def find_simplex(
|
||||
self,
|
||||
xi: ArrayLike,
|
||||
bruteforce: bool = ...,
|
||||
tol: float = ...
|
||||
) -> NDArray[np.intc]: ...
|
||||
def plane_distance(self, xi: ArrayLike) -> NDArray[np.float64]: ...
|
||||
def lift_points(self, x: ArrayLike) -> NDArray[np.float64]: ...
|
||||
|
||||
def tsearch(tri: Delaunay, xi: ArrayLike) -> NDArray[np.intc]: ...
|
||||
def _copy_docstr(dst: object, src: object) -> None: ...
|
||||
|
||||
class ConvexHull(_QhullUser):
|
||||
simplices: NDArray[np.intc]
|
||||
neighbors: NDArray[np.intc]
|
||||
equations: NDArray[np.float64]
|
||||
coplanar: NDArray[np.intc]
|
||||
good: None | NDArray[np.bool_]
|
||||
volume: float
|
||||
area: float
|
||||
nsimplex: int
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
points: ArrayLike,
|
||||
incremental: bool = ...,
|
||||
qhull_options: None | str = ...
|
||||
) -> None: ...
|
||||
def _update(self, qhull: _Qhull) -> None: ...
|
||||
def add_points(self, points: ArrayLike,
|
||||
restart: bool = ...) -> None: ...
|
||||
@property
|
||||
def points(self) -> NDArray[np.float64]: ...
|
||||
@property
|
||||
def vertices(self) -> NDArray[np.intc]: ...
|
||||
|
||||
class Voronoi(_QhullUser):
|
||||
vertices: NDArray[np.float64]
|
||||
ridge_points: NDArray[np.intc]
|
||||
ridge_vertices: list[list[int]]
|
||||
regions: list[list[int]]
|
||||
point_region: NDArray[np.intp]
|
||||
furthest_site: bool
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
points: ArrayLike,
|
||||
furthest_site: bool = ...,
|
||||
incremental: bool = ...,
|
||||
qhull_options: None | str = ...
|
||||
) -> None: ...
|
||||
def _update(self, qhull: _Qhull) -> None: ...
|
||||
def add_points(
|
||||
self,
|
||||
points: ArrayLike,
|
||||
restart: bool = ...
|
||||
) -> None: ...
|
||||
@property
|
||||
def points(self) -> NDArray[np.float64]: ...
|
||||
@property
|
||||
def ridge_dict(self) -> dict[tuple[int, int], list[int]]: ...
|
||||
|
||||
class HalfspaceIntersection(_QhullUser):
|
||||
interior_point: NDArray[np.float64]
|
||||
dual_facets: list[list[int]]
|
||||
dual_equations: NDArray[np.float64]
|
||||
dual_points: NDArray[np.float64]
|
||||
dual_volume: float
|
||||
dual_area: float
|
||||
intersections: NDArray[np.float64]
|
||||
ndim: int
|
||||
nineq: int
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
halfspaces: ArrayLike,
|
||||
interior_point: ArrayLike,
|
||||
incremental: bool = ...,
|
||||
qhull_options: None | str = ...
|
||||
) -> None: ...
|
||||
def _update(self, qhull: _Qhull) -> None: ...
|
||||
def add_halfspaces(
|
||||
self,
|
||||
halfspaces: ArrayLike,
|
||||
restart: bool = ...
|
||||
) -> None: ...
|
||||
@property
|
||||
def halfspaces(self) -> NDArray[np.float64]: ...
|
||||
@property
|
||||
def dual_vertices(self) -> NDArray[np.integer]: ...
|
||||
|
|
@ -0,0 +1,341 @@
|
|||
"""
|
||||
Spherical Voronoi Code
|
||||
|
||||
.. versionadded:: 0.18.0
|
||||
|
||||
"""
|
||||
#
|
||||
# Copyright (C) Tyler Reddy, Ross Hemsley, Edd Edmondson,
|
||||
# Nikolai Nowaczyk, Joe Pitt-Francis, 2015.
|
||||
#
|
||||
# Distributed under the same BSD license as SciPy.
|
||||
#
|
||||
|
||||
import numpy as np
|
||||
import scipy
|
||||
from . import _voronoi
|
||||
from scipy.spatial import cKDTree # type: ignore[attr-defined]
|
||||
|
||||
__all__ = ['SphericalVoronoi']
|
||||
|
||||
|
||||
def calculate_solid_angles(R):
|
||||
"""Calculates the solid angles of plane triangles. Implements the method of
|
||||
Van Oosterom and Strackee [VanOosterom]_ with some modifications. Assumes
|
||||
that input points have unit norm."""
|
||||
# Original method uses a triple product `R1 . (R2 x R3)` for the numerator.
|
||||
# This is equal to the determinant of the matrix [R1 R2 R3], which can be
|
||||
# computed with better stability.
|
||||
numerator = np.linalg.det(R)
|
||||
denominator = 1 + (np.einsum('ij,ij->i', R[:, 0], R[:, 1]) +
|
||||
np.einsum('ij,ij->i', R[:, 1], R[:, 2]) +
|
||||
np.einsum('ij,ij->i', R[:, 2], R[:, 0]))
|
||||
return np.abs(2 * np.arctan2(numerator, denominator))
|
||||
|
||||
|
||||
class SphericalVoronoi:
|
||||
""" Voronoi diagrams on the surface of a sphere.
|
||||
|
||||
.. versionadded:: 0.18.0
|
||||
|
||||
Parameters
|
||||
----------
|
||||
points : ndarray of floats, shape (npoints, ndim)
|
||||
Coordinates of points from which to construct a spherical
|
||||
Voronoi diagram.
|
||||
radius : float, optional
|
||||
Radius of the sphere (Default: 1)
|
||||
center : ndarray of floats, shape (ndim,)
|
||||
Center of sphere (Default: origin)
|
||||
threshold : float
|
||||
Threshold for detecting duplicate points and
|
||||
mismatches between points and sphere parameters.
|
||||
(Default: 1e-06)
|
||||
|
||||
Attributes
|
||||
----------
|
||||
points : double array of shape (npoints, ndim)
|
||||
the points in `ndim` dimensions to generate the Voronoi diagram from
|
||||
radius : double
|
||||
radius of the sphere
|
||||
center : double array of shape (ndim,)
|
||||
center of the sphere
|
||||
vertices : double array of shape (nvertices, ndim)
|
||||
Voronoi vertices corresponding to points
|
||||
regions : list of list of integers of shape (npoints, _ )
|
||||
the n-th entry is a list consisting of the indices
|
||||
of the vertices belonging to the n-th point in points
|
||||
|
||||
Methods
|
||||
-------
|
||||
calculate_areas
|
||||
Calculates the areas of the Voronoi regions. For 2D point sets, the
|
||||
regions are circular arcs. The sum of the areas is ``2 * pi * radius``.
|
||||
For 3D point sets, the regions are spherical polygons. The sum of the
|
||||
areas is ``4 * pi * radius**2``.
|
||||
|
||||
Raises
|
||||
------
|
||||
ValueError
|
||||
If there are duplicates in `points`.
|
||||
If the provided `radius` is not consistent with `points`.
|
||||
|
||||
Notes
|
||||
-----
|
||||
The spherical Voronoi diagram algorithm proceeds as follows. The Convex
|
||||
Hull of the input points (generators) is calculated, and is equivalent to
|
||||
their Delaunay triangulation on the surface of the sphere [Caroli]_.
|
||||
The Convex Hull neighbour information is then used to
|
||||
order the Voronoi region vertices around each generator. The latter
|
||||
approach is substantially less sensitive to floating point issues than
|
||||
angle-based methods of Voronoi region vertex sorting.
|
||||
|
||||
Empirical assessment of spherical Voronoi algorithm performance suggests
|
||||
quadratic time complexity (loglinear is optimal, but algorithms are more
|
||||
challenging to implement).
|
||||
|
||||
References
|
||||
----------
|
||||
.. [Caroli] Caroli et al. Robust and Efficient Delaunay triangulations of
|
||||
points on or close to a sphere. Research Report RR-7004, 2009.
|
||||
|
||||
.. [VanOosterom] Van Oosterom and Strackee. The solid angle of a plane
|
||||
triangle. IEEE Transactions on Biomedical Engineering,
|
||||
2, 1983, pp 125--126.
|
||||
|
||||
See Also
|
||||
--------
|
||||
Voronoi : Conventional Voronoi diagrams in N dimensions.
|
||||
|
||||
Examples
|
||||
--------
|
||||
Do some imports and take some points on a cube:
|
||||
|
||||
>>> import numpy as np
|
||||
>>> import matplotlib.pyplot as plt
|
||||
>>> from scipy.spatial import SphericalVoronoi, geometric_slerp
|
||||
>>> from mpl_toolkits.mplot3d import proj3d
|
||||
>>> # set input data
|
||||
>>> points = np.array([[0, 0, 1], [0, 0, -1], [1, 0, 0],
|
||||
... [0, 1, 0], [0, -1, 0], [-1, 0, 0], ])
|
||||
|
||||
Calculate the spherical Voronoi diagram:
|
||||
|
||||
>>> radius = 1
|
||||
>>> center = np.array([0, 0, 0])
|
||||
>>> sv = SphericalVoronoi(points, radius, center)
|
||||
|
||||
Generate plot:
|
||||
|
||||
>>> # sort vertices (optional, helpful for plotting)
|
||||
>>> sv.sort_vertices_of_regions()
|
||||
>>> t_vals = np.linspace(0, 1, 2000)
|
||||
>>> fig = plt.figure()
|
||||
>>> ax = fig.add_subplot(111, projection='3d')
|
||||
>>> # plot the unit sphere for reference (optional)
|
||||
>>> u = np.linspace(0, 2 * np.pi, 100)
|
||||
>>> v = np.linspace(0, np.pi, 100)
|
||||
>>> x = np.outer(np.cos(u), np.sin(v))
|
||||
>>> y = np.outer(np.sin(u), np.sin(v))
|
||||
>>> z = np.outer(np.ones(np.size(u)), np.cos(v))
|
||||
>>> ax.plot_surface(x, y, z, color='y', alpha=0.1)
|
||||
>>> # plot generator points
|
||||
>>> ax.scatter(points[:, 0], points[:, 1], points[:, 2], c='b')
|
||||
>>> # plot Voronoi vertices
|
||||
>>> ax.scatter(sv.vertices[:, 0], sv.vertices[:, 1], sv.vertices[:, 2],
|
||||
... c='g')
|
||||
>>> # indicate Voronoi regions (as Euclidean polygons)
|
||||
>>> for region in sv.regions:
|
||||
... n = len(region)
|
||||
... for i in range(n):
|
||||
... start = sv.vertices[region][i]
|
||||
... end = sv.vertices[region][(i + 1) % n]
|
||||
... result = geometric_slerp(start, end, t_vals)
|
||||
... ax.plot(result[..., 0],
|
||||
... result[..., 1],
|
||||
... result[..., 2],
|
||||
... c='k')
|
||||
>>> ax.azim = 10
|
||||
>>> ax.elev = 40
|
||||
>>> _ = ax.set_xticks([])
|
||||
>>> _ = ax.set_yticks([])
|
||||
>>> _ = ax.set_zticks([])
|
||||
>>> fig.set_size_inches(4, 4)
|
||||
>>> plt.show()
|
||||
|
||||
"""
|
||||
def __init__(self, points, radius=1, center=None, threshold=1e-06):
|
||||
|
||||
if radius is None:
|
||||
raise ValueError('`radius` is `None`. '
|
||||
'Please provide a floating point number '
|
||||
'(i.e. `radius=1`).')
|
||||
|
||||
self.radius = float(radius)
|
||||
self.points = np.array(points).astype(np.float64)
|
||||
self._dim = self.points.shape[1]
|
||||
if center is None:
|
||||
self.center = np.zeros(self._dim)
|
||||
else:
|
||||
self.center = np.array(center, dtype=float)
|
||||
|
||||
# test degenerate input
|
||||
self._rank = np.linalg.matrix_rank(self.points - self.points[0],
|
||||
tol=threshold * self.radius)
|
||||
if self._rank < self._dim:
|
||||
raise ValueError(f"Rank of input points must be at least {self._dim}")
|
||||
|
||||
if cKDTree(self.points).query_pairs(threshold * self.radius):
|
||||
raise ValueError("Duplicate generators present.")
|
||||
|
||||
radii = np.linalg.norm(self.points - self.center, axis=1)
|
||||
max_discrepancy = np.abs(radii - self.radius).max()
|
||||
if max_discrepancy >= threshold * self.radius:
|
||||
raise ValueError("Radius inconsistent with generators.")
|
||||
|
||||
self._calc_vertices_regions()
|
||||
|
||||
def _calc_vertices_regions(self):
|
||||
"""
|
||||
Calculates the Voronoi vertices and regions of the generators stored
|
||||
in self.points. The vertices will be stored in self.vertices and the
|
||||
regions in self.regions.
|
||||
|
||||
This algorithm was discussed at PyData London 2015 by
|
||||
Tyler Reddy, Ross Hemsley and Nikolai Nowaczyk
|
||||
"""
|
||||
# get Convex Hull
|
||||
conv = scipy.spatial.ConvexHull(self.points)
|
||||
# get circumcenters of Convex Hull triangles from facet equations
|
||||
# for 3D input circumcenters will have shape: (2N-4, 3)
|
||||
self.vertices = self.radius * conv.equations[:, :-1] + self.center
|
||||
self._simplices = conv.simplices
|
||||
# calculate regions from triangulation
|
||||
# for 3D input simplex_indices will have shape: (2N-4,)
|
||||
simplex_indices = np.arange(len(self._simplices))
|
||||
# for 3D input tri_indices will have shape: (6N-12,)
|
||||
tri_indices = np.column_stack([simplex_indices] * self._dim).ravel()
|
||||
# for 3D input point_indices will have shape: (6N-12,)
|
||||
point_indices = self._simplices.ravel()
|
||||
# for 3D input indices will have shape: (6N-12,)
|
||||
indices = np.argsort(point_indices, kind='mergesort')
|
||||
# for 3D input flattened_groups will have shape: (6N-12,)
|
||||
flattened_groups = tri_indices[indices].astype(np.intp)
|
||||
# intervals will have shape: (N+1,)
|
||||
intervals = np.cumsum(np.bincount(point_indices + 1))
|
||||
# split flattened groups to get nested list of unsorted regions
|
||||
groups = [list(flattened_groups[intervals[i]:intervals[i + 1]])
|
||||
for i in range(len(intervals) - 1)]
|
||||
self.regions = groups
|
||||
|
||||
def sort_vertices_of_regions(self):
|
||||
"""Sort indices of the vertices to be (counter-)clockwise ordered.
|
||||
|
||||
Raises
|
||||
------
|
||||
TypeError
|
||||
If the points are not three-dimensional.
|
||||
|
||||
Notes
|
||||
-----
|
||||
For each region in regions, it sorts the indices of the Voronoi
|
||||
vertices such that the resulting points are in a clockwise or
|
||||
counterclockwise order around the generator point.
|
||||
|
||||
This is done as follows: Recall that the n-th region in regions
|
||||
surrounds the n-th generator in points and that the k-th
|
||||
Voronoi vertex in vertices is the circumcenter of the k-th triangle
|
||||
in self._simplices. For each region n, we choose the first triangle
|
||||
(=Voronoi vertex) in self._simplices and a vertex of that triangle
|
||||
not equal to the center n. These determine a unique neighbor of that
|
||||
triangle, which is then chosen as the second triangle. The second
|
||||
triangle will have a unique vertex not equal to the current vertex or
|
||||
the center. This determines a unique neighbor of the second triangle,
|
||||
which is then chosen as the third triangle and so forth. We proceed
|
||||
through all the triangles (=Voronoi vertices) belonging to the
|
||||
generator in points and obtain a sorted version of the vertices
|
||||
of its surrounding region.
|
||||
"""
|
||||
if self._dim != 3:
|
||||
raise TypeError("Only supported for three-dimensional point sets")
|
||||
_voronoi.sort_vertices_of_regions(self._simplices, self.regions)
|
||||
|
||||
def _calculate_areas_3d(self):
|
||||
self.sort_vertices_of_regions()
|
||||
sizes = [len(region) for region in self.regions]
|
||||
csizes = np.cumsum(sizes)
|
||||
num_regions = csizes[-1]
|
||||
|
||||
# We create a set of triangles consisting of one point and two Voronoi
|
||||
# vertices. The vertices of each triangle are adjacent in the sorted
|
||||
# regions list.
|
||||
point_indices = [i for i, size in enumerate(sizes)
|
||||
for j in range(size)]
|
||||
|
||||
nbrs1 = np.array([r for region in self.regions for r in region])
|
||||
|
||||
# The calculation of nbrs2 is a vectorized version of:
|
||||
# np.array([r for region in self.regions for r in np.roll(region, 1)])
|
||||
nbrs2 = np.roll(nbrs1, 1)
|
||||
indices = np.roll(csizes, 1)
|
||||
indices[0] = 0
|
||||
nbrs2[indices] = nbrs1[csizes - 1]
|
||||
|
||||
# Normalize points and vertices.
|
||||
pnormalized = (self.points - self.center) / self.radius
|
||||
vnormalized = (self.vertices - self.center) / self.radius
|
||||
|
||||
# Create the complete set of triangles and calculate their solid angles
|
||||
triangles = np.hstack([pnormalized[point_indices],
|
||||
vnormalized[nbrs1],
|
||||
vnormalized[nbrs2]
|
||||
]).reshape((num_regions, 3, 3))
|
||||
triangle_solid_angles = calculate_solid_angles(triangles)
|
||||
|
||||
# Sum the solid angles of the triangles in each region
|
||||
solid_angles = np.cumsum(triangle_solid_angles)[csizes - 1]
|
||||
solid_angles[1:] -= solid_angles[:-1]
|
||||
|
||||
# Get polygon areas using A = omega * r**2
|
||||
return solid_angles * self.radius**2
|
||||
|
||||
def _calculate_areas_2d(self):
|
||||
# Find start and end points of arcs
|
||||
arcs = self.points[self._simplices] - self.center
|
||||
|
||||
# Calculate the angle subtended by arcs
|
||||
d = np.sum((arcs[:, 1] - arcs[:, 0]) ** 2, axis=1)
|
||||
theta = np.arccos(1 - (d / (2 * (self.radius ** 2))))
|
||||
|
||||
# Get areas using A = r * theta
|
||||
areas = self.radius * theta
|
||||
|
||||
# Correct arcs which go the wrong way (single-hemisphere inputs)
|
||||
signs = np.sign(np.einsum('ij,ij->i', arcs[:, 0],
|
||||
self.vertices - self.center))
|
||||
indices = np.where(signs < 0)
|
||||
areas[indices] = 2 * np.pi * self.radius - areas[indices]
|
||||
return areas
|
||||
|
||||
def calculate_areas(self):
|
||||
"""Calculates the areas of the Voronoi regions.
|
||||
|
||||
For 2D point sets, the regions are circular arcs. The sum of the areas
|
||||
is ``2 * pi * radius``.
|
||||
|
||||
For 3D point sets, the regions are spherical polygons. The sum of the
|
||||
areas is ``4 * pi * radius**2``.
|
||||
|
||||
.. versionadded:: 1.5.0
|
||||
|
||||
Returns
|
||||
-------
|
||||
areas : double array of shape (npoints,)
|
||||
The areas of the Voronoi regions.
|
||||
"""
|
||||
if self._dim == 2:
|
||||
return self._calculate_areas_2d()
|
||||
elif self._dim == 3:
|
||||
return self._calculate_areas_3d()
|
||||
else:
|
||||
raise TypeError("Only supported for 2D and 3D point sets")
|
||||
Binary file not shown.
|
|
@ -0,0 +1,4 @@
|
|||
|
||||
import numpy as np
|
||||
|
||||
def sort_vertices_of_regions(simplices: np.ndarray, regions: list[list[int]]) -> None: ... # noqa: E501
|
||||
18
venv/lib/python3.13/site-packages/scipy/spatial/ckdtree.py
Normal file
18
venv/lib/python3.13/site-packages/scipy/spatial/ckdtree.py
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
# This file is not meant for public use and will be removed in SciPy v2.0.0.
|
||||
# Use the `scipy.spatial` namespace for importing the functions
|
||||
# included below.
|
||||
|
||||
from scipy._lib.deprecation import _sub_module_deprecation
|
||||
|
||||
|
||||
__all__ = ["cKDTree"] # noqa: F822
|
||||
|
||||
|
||||
def __dir__():
|
||||
return __all__
|
||||
|
||||
|
||||
def __getattr__(name):
|
||||
return _sub_module_deprecation(sub_package="spatial", module="ckdtree",
|
||||
private_modules=["_ckdtree"], all=__all__,
|
||||
attribute=name)
|
||||
3147
venv/lib/python3.13/site-packages/scipy/spatial/distance.py
Normal file
3147
venv/lib/python3.13/site-packages/scipy/spatial/distance.py
Normal file
File diff suppressed because it is too large
Load diff
210
venv/lib/python3.13/site-packages/scipy/spatial/distance.pyi
Normal file
210
venv/lib/python3.13/site-packages/scipy/spatial/distance.pyi
Normal file
|
|
@ -0,0 +1,210 @@
|
|||
from typing import (overload, Any, SupportsFloat, Literal, Protocol, SupportsIndex)
|
||||
|
||||
import numpy as np
|
||||
from numpy.typing import ArrayLike, NDArray
|
||||
|
||||
# Anything that can be parsed by `np.float64.__init__` and is thus
|
||||
# compatible with `ndarray.__setitem__` (for a float64 array)
|
||||
_FloatValue = None | str | bytes | SupportsFloat | SupportsIndex
|
||||
|
||||
class _MetricCallback1(Protocol):
|
||||
def __call__(
|
||||
self, __XA: NDArray[Any], __XB: NDArray[Any]
|
||||
) -> _FloatValue: ...
|
||||
|
||||
class _MetricCallback2(Protocol):
|
||||
def __call__(
|
||||
self, __XA: NDArray[Any], __XB: NDArray[Any], **kwargs: Any
|
||||
) -> _FloatValue: ...
|
||||
|
||||
# TODO: Use a single protocol with a parameter specification variable
|
||||
# once available (PEP 612)
|
||||
_MetricCallback = _MetricCallback1 | _MetricCallback2
|
||||
|
||||
_MetricKind = Literal[
|
||||
'braycurtis',
|
||||
'canberra',
|
||||
'chebychev', 'chebyshev', 'cheby', 'cheb', 'ch',
|
||||
'cityblock', 'cblock', 'cb', 'c',
|
||||
'correlation', 'co',
|
||||
'cosine', 'cos',
|
||||
'dice',
|
||||
'euclidean', 'euclid', 'eu', 'e',
|
||||
'hamming', 'hamm', 'ha', 'h',
|
||||
'minkowski', 'mi', 'm', 'pnorm',
|
||||
'jaccard', 'jacc', 'ja', 'j',
|
||||
'jensenshannon', 'js',
|
||||
'kulczynski1',
|
||||
'mahalanobis', 'mahal', 'mah',
|
||||
'rogerstanimoto',
|
||||
'russellrao',
|
||||
'seuclidean', 'se', 's',
|
||||
'sokalmichener',
|
||||
'sokalsneath',
|
||||
'sqeuclidean', 'sqe', 'sqeuclid',
|
||||
'yule',
|
||||
]
|
||||
|
||||
# Function annotations
|
||||
|
||||
def braycurtis(
|
||||
u: ArrayLike, v: ArrayLike, w: ArrayLike | None = ...
|
||||
) -> np.float64: ...
|
||||
|
||||
def canberra(
|
||||
u: ArrayLike, v: ArrayLike, w: ArrayLike | None = ...
|
||||
) -> np.float64: ...
|
||||
|
||||
# TODO: Add `metric`-specific overloads
|
||||
# Returns a float64 or float128 array, depending on the input dtype
|
||||
@overload
|
||||
def cdist(
|
||||
XA: ArrayLike,
|
||||
XB: ArrayLike,
|
||||
metric: _MetricKind = ...,
|
||||
*,
|
||||
out: None | NDArray[np.floating[Any]] = ...,
|
||||
p: float = ...,
|
||||
w: ArrayLike | None = ...,
|
||||
V: ArrayLike | None = ...,
|
||||
VI: ArrayLike | None = ...,
|
||||
) -> NDArray[np.floating[Any]]: ...
|
||||
@overload
|
||||
def cdist(
|
||||
XA: ArrayLike,
|
||||
XB: ArrayLike,
|
||||
metric: _MetricCallback,
|
||||
*,
|
||||
out: None | NDArray[np.floating[Any]] = ...,
|
||||
**kwargs: Any,
|
||||
) -> NDArray[np.floating[Any]]: ...
|
||||
|
||||
# TODO: Wait for dtype support; the return type is
|
||||
# dependent on the input arrays dtype
|
||||
def chebyshev(
|
||||
u: ArrayLike, v: ArrayLike, w: ArrayLike | None = ...
|
||||
) -> Any: ...
|
||||
|
||||
# TODO: Wait for dtype support; the return type is
|
||||
# dependent on the input arrays dtype
|
||||
def cityblock(
|
||||
u: ArrayLike, v: ArrayLike, w: ArrayLike | None = ...
|
||||
) -> Any: ...
|
||||
|
||||
def correlation(
|
||||
u: ArrayLike, v: ArrayLike, w: ArrayLike | None = ..., centered: bool = ...
|
||||
) -> np.float64: ...
|
||||
|
||||
def cosine(
|
||||
u: ArrayLike, v: ArrayLike, w: ArrayLike | None = ...
|
||||
) -> np.float64: ...
|
||||
|
||||
def dice(
|
||||
u: ArrayLike, v: ArrayLike, w: ArrayLike | None = ...
|
||||
) -> float: ...
|
||||
|
||||
def directed_hausdorff(
|
||||
u: ArrayLike, v: ArrayLike, seed: int | None = ...
|
||||
) -> tuple[float, int, int]: ...
|
||||
|
||||
def euclidean(
|
||||
u: ArrayLike, v: ArrayLike, w: ArrayLike | None = ...
|
||||
) -> float: ...
|
||||
|
||||
def hamming(
|
||||
u: ArrayLike, v: ArrayLike, w: ArrayLike | None = ...
|
||||
) -> np.float64: ...
|
||||
|
||||
def is_valid_dm(
|
||||
D: ArrayLike,
|
||||
tol: float = ...,
|
||||
throw: bool = ...,
|
||||
name: str | None = ...,
|
||||
warning: bool = ...,
|
||||
) -> bool: ...
|
||||
|
||||
def is_valid_y(
|
||||
y: ArrayLike,
|
||||
warning: bool = ...,
|
||||
throw: bool = ...,
|
||||
name: str | None = ...,
|
||||
) -> bool: ...
|
||||
|
||||
def jaccard(
|
||||
u: ArrayLike, v: ArrayLike, w: ArrayLike | None = ...
|
||||
) -> np.float64: ...
|
||||
|
||||
def jensenshannon(
|
||||
p: ArrayLike, q: ArrayLike, base: float | None = ...
|
||||
) -> np.float64: ...
|
||||
|
||||
def kulczynski1(
|
||||
u: ArrayLike, v: ArrayLike, w: ArrayLike | None = ...
|
||||
) -> np.float64: ...
|
||||
|
||||
def mahalanobis(
|
||||
u: ArrayLike, v: ArrayLike, VI: ArrayLike
|
||||
) -> np.float64: ...
|
||||
|
||||
def minkowski(
|
||||
u: ArrayLike, v: ArrayLike, p: float = ..., w: ArrayLike | None = ...
|
||||
) -> float: ...
|
||||
|
||||
def num_obs_dm(d: ArrayLike) -> int: ...
|
||||
|
||||
def num_obs_y(Y: ArrayLike) -> int: ...
|
||||
|
||||
# TODO: Add `metric`-specific overloads
|
||||
@overload
|
||||
def pdist(
|
||||
X: ArrayLike,
|
||||
metric: _MetricKind = ...,
|
||||
*,
|
||||
out: None | NDArray[np.floating[Any]] = ...,
|
||||
p: float = ...,
|
||||
w: ArrayLike | None = ...,
|
||||
V: ArrayLike | None = ...,
|
||||
VI: ArrayLike | None = ...,
|
||||
) -> NDArray[np.floating[Any]]: ...
|
||||
@overload
|
||||
def pdist(
|
||||
X: ArrayLike,
|
||||
metric: _MetricCallback,
|
||||
*,
|
||||
out: None | NDArray[np.floating[Any]] = ...,
|
||||
**kwargs: Any,
|
||||
) -> NDArray[np.floating[Any]]: ...
|
||||
|
||||
def seuclidean(
|
||||
u: ArrayLike, v: ArrayLike, V: ArrayLike
|
||||
) -> float: ...
|
||||
|
||||
def sokalmichener(
|
||||
u: ArrayLike, v: ArrayLike, w: ArrayLike | None = ...
|
||||
) -> float: ...
|
||||
|
||||
def sokalsneath(
|
||||
u: ArrayLike, v: ArrayLike, w: ArrayLike | None = ...
|
||||
) -> np.float64: ...
|
||||
|
||||
def sqeuclidean(
|
||||
u: ArrayLike, v: ArrayLike, w: ArrayLike | None = ...
|
||||
) -> np.float64: ...
|
||||
|
||||
def squareform(
|
||||
X: ArrayLike,
|
||||
force: Literal["no", "tomatrix", "tovector"] = ...,
|
||||
checks: bool = ...,
|
||||
) -> NDArray[Any]: ...
|
||||
|
||||
def rogerstanimoto(
|
||||
u: ArrayLike, v: ArrayLike, w: ArrayLike | None = ...
|
||||
) -> float: ...
|
||||
|
||||
def russellrao(
|
||||
u: ArrayLike, v: ArrayLike, w: ArrayLike | None = ...
|
||||
) -> float: ...
|
||||
|
||||
def yule(
|
||||
u: ArrayLike, v: ArrayLike, w: ArrayLike | None = ...
|
||||
) -> float: ...
|
||||
25
venv/lib/python3.13/site-packages/scipy/spatial/kdtree.py
Normal file
25
venv/lib/python3.13/site-packages/scipy/spatial/kdtree.py
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
# This file is not meant for public use and will be removed in SciPy v2.0.0.
|
||||
# Use the `scipy.spatial` namespace for importing the functions
|
||||
# included below.
|
||||
|
||||
from scipy._lib.deprecation import _sub_module_deprecation
|
||||
|
||||
|
||||
__all__ = [ # noqa: F822
|
||||
'KDTree',
|
||||
'Rectangle',
|
||||
'cKDTree',
|
||||
'distance_matrix',
|
||||
'minkowski_distance',
|
||||
'minkowski_distance_p',
|
||||
]
|
||||
|
||||
|
||||
def __dir__():
|
||||
return __all__
|
||||
|
||||
|
||||
def __getattr__(name):
|
||||
return _sub_module_deprecation(sub_package="spatial", module="kdtree",
|
||||
private_modules=["_kdtree"], all=__all__,
|
||||
attribute=name)
|
||||
25
venv/lib/python3.13/site-packages/scipy/spatial/qhull.py
Normal file
25
venv/lib/python3.13/site-packages/scipy/spatial/qhull.py
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
# This file is not meant for public use and will be removed in SciPy v2.0.0.
|
||||
# Use the `scipy.spatial` namespace for importing the functions
|
||||
# included below.
|
||||
|
||||
from scipy._lib.deprecation import _sub_module_deprecation
|
||||
|
||||
|
||||
__all__ = [ # noqa: F822
|
||||
'ConvexHull',
|
||||
'Delaunay',
|
||||
'HalfspaceIntersection',
|
||||
'QhullError',
|
||||
'Voronoi',
|
||||
'tsearch',
|
||||
]
|
||||
|
||||
|
||||
def __dir__():
|
||||
return __all__
|
||||
|
||||
|
||||
def __getattr__(name):
|
||||
return _sub_module_deprecation(sub_package="spatial", module="qhull",
|
||||
private_modules=["_qhull"], all=__all__,
|
||||
attribute=name)
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -0,0 +1,10 @@
|
|||
1.147593763490969421e-01 8.926156143344999849e-01 1.437758624645746330e-02 1.803435962879929022e-02 5.533046214065578949e-01 5.554315640747428118e-01 4.497546637814608950e-02 4.438089247948049376e-01 7.984582810220538507e-01 2.752880789161644692e-01 1.344667112315823809e-01 9.230479561452992199e-01 6.040471462941819913e-01 3.797251652770228247e-01 4.316042735592399149e-01 5.312356915348823705e-01 4.348143005129563310e-01 3.111531488508799681e-01 9.531194313908697424e-04 8.212995023500069269e-02 6.689953269869852726e-01 9.914864535288493430e-01 8.037556036341153565e-01
|
||||
9.608925123801395074e-01 2.974451233678974127e-01 9.001110330654185088e-01 5.824163330415995654e-01 7.308574928293812834e-01 2.276154562412870952e-01 7.306791076039623745e-01 8.677244866905511333e-01 9.160806456176984192e-01 6.157216959991280714e-01 5.149053524695440531e-01 3.056427344890983999e-01 9.790557366933895223e-01 4.484995861076724877e-01 4.776550391081165747e-01 7.210436977670631187e-01 9.136399501661039979e-01 4.260275733550000776e-02 5.943900041968954717e-01 3.864571606342745991e-01 9.442027665110838131e-01 4.779949058608601309e-02 6.107551944250865228e-01
|
||||
3.297286578103622023e-01 5.980207401936733502e-01 3.673301293561567205e-01 2.585830520887681949e-01 4.660558746104259686e-01 6.083795956610364986e-01 4.535206368070313632e-01 6.873989778785424276e-01 5.130152688495458468e-01 7.665877846542720198e-01 3.444402973525138023e-01 3.583658123644906102e-02 7.924818220986856732e-01 8.746685720522412444e-01 3.010105569182431884e-01 6.012239357385538163e-01 6.233737362204671006e-01 4.830438698668915176e-01 2.317286885842551047e-02 7.585989958123050547e-01 7.108257632278830451e-01 1.551024884178199281e-01 2.665485998155288083e-01
|
||||
2.456278068903017253e-02 4.148739837711815648e-01 1.986372227934196655e-01 6.920408530298168825e-01 1.003067576685774398e-01 7.421560456480125190e-01 1.808453980608998313e-01 4.251297882537475870e-01 6.773002683522370004e-01 4.084108792570182445e-01 7.462888013191590897e-01 8.069930220529277776e-01 9.211110587681808903e-01 4.141491046181076108e-01 7.486318689260342829e-01 9.515405507589296263e-01 4.634288892577109742e-03 8.027593488166355762e-01 3.010346805217798405e-01 8.663248877242523127e-01 2.479968181181605447e-01 5.619851096054278017e-01 3.903886764590250857e-01
|
||||
7.122019976035700584e-01 6.188878051047785878e-01 7.290897087051201320e-01 6.334802157757637442e-01 5.523084734954342156e-01 5.614937129563645213e-01 2.496741051791574462e-01 5.972227939599233926e-01 1.786590597761109622e-01 2.609525984850900038e-01 7.210438943286010538e-01 2.211429064605652250e-01 9.140497572472672250e-02 1.430242193668443962e-01 7.856446942916397447e-01 4.635256358156553125e-01 5.278744289813760426e-01 3.702808015407184072e-01 5.527073830480792038e-01 6.370732917599846168e-01 9.953487928925482953e-01 3.021789770611936765e-01 3.354901923998221402e-02
|
||||
6.509638560895427695e-01 8.387598220902757751e-01 7.761375971745763103e-01 1.481627639227802717e-01 3.529474982902305324e-01 4.883093646287851586e-01 9.652923033658690199e-01 9.500680513565308294e-01 3.061885005078281985e-01 7.271902818906019750e-01 2.358962978196710303e-03 7.359889703223099211e-01 8.988893768074724955e-01 4.135279653937307121e-02 8.516441856688283796e-01 4.889597623270667270e-01 5.575909822114655245e-01 9.010853652261575641e-01 2.912844516556202246e-01 9.088759383368658629e-01 8.104351227460024898e-01 8.080695436776826890e-01 1.430530913253185155e-01
|
||||
8.048001196608134400e-01 3.066089444418462762e-02 9.021887554292090661e-01 6.154331491807940591e-02 1.378912575206647784e-02 5.775720193142440673e-01 1.219298963069791464e-01 1.883270243412101808e-01 5.569262398688379356e-02 8.964817777510125651e-02 7.977092785346929782e-01 4.878149375226197293e-01 4.511973131518809410e-02 1.858690046801604323e-01 6.947686471083162063e-01 5.884058794291086025e-01 8.638884676612634816e-01 3.855470871341656336e-01 3.495049047300468059e-01 2.767740932353948136e-01 4.731087031714035218e-01 6.679001673437914288e-01 7.502944200696660682e-01
|
||||
6.527328264244687261e-01 8.289483383553154505e-01 9.179741348282299818e-01 1.065639864466713105e-01 6.253616929058514184e-01 5.927750325266062381e-01 3.039157425463192563e-01 2.452766763359194302e-01 6.514027700704632107e-01 5.529218485487964463e-01 4.941158239308394151e-01 6.605306467722642516e-01 2.273688037050677346e-01 4.282616592244774534e-01 2.956128257930247250e-01 1.154803628237965896e-01 9.228220410235263849e-01 6.663525307676617659e-01 1.908852615936970087e-01 9.921383408926374159e-01 4.988716450388516188e-01 1.014900352736023414e-01 3.363930180244284474e-01
|
||||
2.914369076275757919e-01 5.196673601143533272e-01 7.420144907858341465e-01 1.768984185504740569e-01 5.296766993228564369e-01 5.922023566159900776e-01 5.965161262020234334e-01 3.810272333046110793e-01 8.368797246118340194e-01 7.896422363801189892e-01 9.655797561098209414e-01 4.430034032346981121e-01 2.780869795706976122e-01 3.047310845416009162e-01 8.051138863500326703e-01 6.731468634690835895e-01 4.743383036815584930e-01 9.530709614322225853e-01 7.753587619850917934e-01 2.801137109357491051e-01 6.182543660889736614e-01 5.005218857766725593e-01 9.071447804755052857e-01
|
||||
2.075071644012620453e-01 4.834950086973934802e-01 3.037011473860764532e-01 6.476084284887700937e-01 8.107195771564194020e-01 7.869075869075803364e-01 6.851234019375299633e-01 3.544187468104398331e-02 4.847673235908021017e-01 5.690262846164507726e-01 1.663354142616256803e-01 9.692796809752548537e-01 4.133441725866372485e-01 6.729167604487583665e-01 3.998813427407297283e-01 8.272617414104491695e-01 2.129248316324727774e-01 6.517004761357130249e-01 7.363013506605019520e-01 4.072375306356985636e-01 4.463336683526665238e-01 5.485059309728204102e-01 1.981745754527846071e-01
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
7.680465556300619667e-02 4.675022344069014180e-01 8.955498989131543963e-01 3.816236071436276411e-01 1.109030077070989329e-01 2.318928815459808668e-02 7.477394240984251983e-01 1.202289789304434864e-01 8.007290497575981769e-01 6.795195698871731027e-01 6.568225762396605605e-01 2.231475263228478445e-01 7.064624077661341151e-02 1.081656666815267176e-02 1.592069359090128033e-01 1.363392203645097389e-01 9.277020735447568667e-01 8.103136564528209407e-01 5.229467676276455812e-02 7.708020259874025504e-01 6.527954747473352359e-02 5.516397414886525796e-01 3.653371861367954443e-01
|
||||
8.144399106025798085e-01 7.731852525462976633e-01 6.909477620673205589e-01 9.696063817000286633e-01 4.297887511677249694e-01 6.989600553425188156e-01 7.310201335033380543e-01 3.135256147868910048e-01 5.715578037275241829e-01 3.935000744675094531e-01 2.057715781268398825e-01 5.892508589665171881e-01 8.512951599236765476e-01 9.569808799061578775e-01 6.164885878024699561e-01 4.714185430004367294e-01 6.128831737628155363e-01 6.641799309623502845e-01 6.001985185338730711e-01 4.231922889723856995e-01 7.605249308075449077e-01 1.064530958018087281e-01 6.306470691957204444e-01
|
||||
4.265470127256254518e-01 5.933766716280767239e-01 3.698589270536845053e-02 2.173799740537294412e-01 3.032679325475639009e-01 4.271831790058847611e-01 1.828944535901013690e-01 4.772333422710156592e-01 2.564773455194128138e-01 7.120329875362141347e-01 8.952243430110462530e-01 1.808777012183288013e-01 3.612151871458374464e-01 3.960999167923041631e-01 1.821669970670747318e-02 8.835474857189200559e-01 1.353104648821573663e-01 3.457291739160937016e-01 1.126467375304566199e-01 4.107293162402323450e-01 4.051719311053743056e-01 4.007382985250427243e-01 1.286905671428811848e-01
|
||||
2.910657003883979632e-01 9.616259180685315933e-03 2.033032441536681834e-01 1.096599110293863255e-01 4.191101704605176836e-01 5.462131536027151624e-01 8.393047907010142694e-01 9.046805198676335369e-01 7.009863472176891541e-01 2.508215985039629059e-01 6.754410796667598138e-01 6.740895474032024826e-01 1.358993708621679675e-01 8.219861775211464439e-01 6.322220445623235596e-01 2.766813559002430090e-01 6.575983861590951607e-01 9.515869708336625044e-01 8.654526462353933081e-01 3.450245117834797037e-01 5.649032890631299209e-01 4.717687914789682191e-01 3.296483580510030098e-01
|
||||
9.172477457635394016e-01 3.057396583041891436e-01 7.335332344225760082e-01 8.370236206345178509e-01 3.765464253115927695e-01 5.089680319287778199e-01 1.202325719268168003e-01 9.717771065272349240e-01 5.907820104019682050e-01 9.809211614977710880e-01 9.064285003671219698e-01 8.848841466121748489e-01 2.043407730734815297e-01 9.157600394927275511e-01 4.532260315147775831e-01 4.241077335005828397e-01 1.751730149568804240e-01 4.090412146081819911e-01 3.632197861847064058e-02 5.832539334970230360e-01 4.041848151536805434e-01 3.603643989086504629e-01 1.838411383882069261e-01
|
||||
2.508806403290032572e-01 4.381403985282813496e-01 4.694787405018008286e-02 6.353900562024634713e-01 1.200813444244532846e-01 6.072397042913001419e-01 9.937255904754030977e-01 4.916670237677555066e-01 3.473845913923001572e-01 3.526875922864345370e-01 5.448595548197197047e-01 2.245096010156972799e-01 9.003258279804994269e-01 3.534560469735994470e-01 2.989266066346342177e-01 4.621024982808636938e-01 9.626538866576676012e-01 9.791401720716153001e-01 7.138514287330390840e-01 9.832862333928654719e-01 3.233999591031431198e-01 5.406467224926423398e-01 9.581890295057201579e-01
|
||||
5.210583601680578436e-01 4.598159993059653949e-01 2.111497132057748027e-01 5.949977700916546652e-01 6.342618461422359077e-01 9.888228769705599275e-01 6.096770711536318998e-01 7.548431368960863974e-01 7.490858664860100546e-01 3.186213496546415058e-01 7.895687083231245351e-01 4.178326793268141159e-01 8.095818334534051752e-01 7.886271673523481684e-01 4.038905626506847923e-01 3.652649247094948981e-01 8.267205959224892542e-01 6.433617243328785262e-01 3.117681563249452559e-01 9.675995575054980868e-01 3.675673836358472890e-01 5.863757289184046151e-01 9.099029857959717305e-02
|
||||
4.024573981231733821e-01 3.578997554002771864e-01 3.519299868071553705e-01 7.417747693762357653e-01 2.963713903285800644e-01 9.602967989298948348e-01 3.811392331739601458e-01 5.493237898295448840e-01 6.835113342793640578e-01 2.304506220807415184e-01 3.727299857731285471e-01 5.450263991912108752e-01 6.951521210987908761e-01 6.474582745861203747e-01 6.316089475403589004e-01 5.672043967425510758e-02 9.034937506977609445e-01 2.332567550780038079e-01 1.096955741449157085e-02 8.870663813493575578e-01 4.384385452180562526e-01 7.100898998169548060e-01 3.245358176196319056e-01
|
||||
9.162009194452818139e-01 5.572224742426723498e-02 3.445910686865658601e-01 9.683564008127462097e-01 9.375063149031520604e-01 9.128188852869822956e-02 9.613605414326487075e-01 5.298598697556915482e-01 6.724799695520149445e-01 1.269103938571825019e-02 1.008406153387807480e-01 8.951105272379104028e-01 1.585460318853607609e-01 6.739986455059543413e-01 5.345419321702655768e-01 6.248843899572337213e-01 3.050288488994817859e-01 1.423645553465189284e-01 1.802121190541096096e-01 9.474646822694763326e-01 2.345716438587298613e-01 9.688281784764296578e-01 1.845165243240991515e-01
|
||||
2.548297646910531178e-01 2.580877375379494465e-01 1.355482532666937301e-01 6.478812986505504412e-01 9.971695982152032345e-01 2.606721082477282403e-01 5.483439686378906996e-01 4.409612606704470528e-01 4.396442074915688503e-01 7.414262832597111608e-01 7.308840725375539416e-01 8.072095530497225280e-02 6.829509968656330976e-01 5.700030854230387911e-01 3.801845336730320657e-01 2.481059916867158766e-01 3.977295094395927322e-03 5.749480512407895150e-01 4.112033136603401307e-01 8.676159710377848722e-01 9.062646588480167686e-01 3.326691167317923359e-01 8.498307982774666591e-01
|
||||
4.464338109330643345e-01 8.546516760817471914e-01 7.384800352329814466e-01 3.692485164984804502e-02 2.915662689505471583e-02 9.010049994217171898e-01 8.622900253010918892e-01 9.786230638032608065e-01 6.546824077297251909e-01 6.342297560006789903e-01 2.230339826582647955e-01 7.658846744185553446e-01 4.603043831539479491e-01 2.017100469861691225e-01 4.891590639893540482e-01 1.937140918314912419e-01 8.161582138652878626e-01 5.597293607114051106e-02 8.423261093326828153e-02 5.105392204475533990e-02 8.234193902673621057e-01 1.784268309975372002e-01 9.118997881986501408e-02
|
||||
8.588746913421980711e-01 1.479641118621310980e-02 1.375875301146138874e-01 7.533888774725254756e-01 5.782592791549248101e-01 9.128573037619659436e-01 1.831275762880391067e-01 3.471382864827737835e-01 4.859524740929310749e-02 8.955146541561730400e-01 4.787220791101074457e-01 4.222803577759057791e-01 8.469923964908064873e-01 6.300290047587608910e-02 1.020873237837905956e-01 3.585612487182909813e-02 6.320107119904569970e-01 5.891245970008752719e-01 1.104698053665007507e-01 4.233226558073774903e-01 4.432217054386708988e-01 2.864765416628194394e-01 2.489777211814803159e-02
|
||||
5.343810659756068615e-01 4.829076396403546578e-01 8.364480888953172988e-01 8.931374995414760321e-01 6.034161442354715188e-01 3.578336000768178593e-03 4.100579775972763574e-01 3.968667908067096128e-01 5.897163653686778861e-01 3.003241263928478899e-01 2.520935203143799264e-01 3.112129371563532310e-02 9.052865295974613646e-01 1.172285124002711010e-01 4.840001666149388315e-01 3.424620676348436588e-01 5.526057133826853818e-01 6.346139530261846184e-01 5.747945930485597321e-01 1.389915612177697879e-01 2.413801217666421417e-01 7.829900796662081497e-01 7.213528084845653998e-01
|
||||
9.384509283406079483e-01 6.303019601671526750e-01 1.787921522728125323e-01 1.556003868047917127e-02 5.662397078816850948e-01 3.437473614806091371e-01 8.615844972800188462e-01 7.624380237306396246e-01 1.096468347898514883e-01 1.276566836610887323e-01 8.479188493443535757e-01 3.634713454428405432e-01 7.478112314318967613e-01 9.856395696968375253e-01 6.250293654177319080e-02 1.919327272501809567e-01 1.415594476031050153e-01 7.224057351041784925e-01 8.452145259310355208e-01 5.434318833772002755e-01 5.177620959731277228e-02 3.358977598185840518e-01 2.542654881527960375e-01
|
||||
4.800909104006243489e-01 3.651345393613150137e-01 3.657093052788148446e-01 8.579662326651369408e-01 5.787694361240260932e-01 6.491966196891312268e-01 3.252508517294879775e-01 8.639694334693422961e-01 3.028097078756678551e-01 6.295814666338699350e-01 7.305627351548695803e-01 6.975931849120264872e-03 8.321205159004851915e-01 2.681809305821257761e-01 3.628869474597150591e-01 9.598981434716586936e-01 5.947913523332928332e-01 7.794864238003402779e-01 2.819511239444029149e-01 5.134200958476284882e-01 7.284684743064278045e-01 3.099571109539331903e-01 1.502222882866774967e-01
|
||||
2.463382654375219083e-01 4.465700737264240994e-01 7.180855317941433613e-01 5.056099420785193921e-01 6.182117344332578313e-01 2.370453793561340117e-01 9.831748018047525850e-01 6.397098184531551102e-01 8.260469782208745837e-02 7.474671691560941245e-01 9.963429983418570224e-02 5.450078811081275898e-01 5.370188678062637333e-02 2.774024442708808991e-01 2.082643088545442778e-01 2.704155352788065736e-01 7.225035580445194894e-01 4.866791976239246420e-01 1.357043111201584606e-01 7.911335827987711067e-01 7.278977102006007893e-01 6.880892094410231419e-01 1.029231496520791600e-01
|
||||
6.901796117735281566e-01 1.558248977395644275e-01 4.241818789360329855e-01 5.055658246392458199e-01 1.756288758075611467e-01 4.215083703818177652e-01 7.809231602323289945e-01 1.170053878686481141e-01 6.497026323614403243e-01 5.733120641440232479e-01 4.407703406152092551e-01 5.608677124532297498e-01 7.471045703286000039e-01 3.334604336022076732e-01 8.927208811415126011e-01 9.794565286182396191e-01 9.621542824973521313e-01 3.945825239405253981e-01 8.338963875792834157e-01 9.310552325082104286e-01 7.688283033784242271e-01 3.798823731047119567e-01 1.459993613028365278e-02
|
||||
7.848623555505630511e-01 2.681039365355797344e-03 7.833208051794043891e-01 8.184381915171493604e-01 4.682581645582317709e-01 2.391069309436419932e-01 1.765377537168698607e-01 9.863494676539893424e-01 4.378412300863872009e-01 7.494505491149090481e-01 1.942180356195394308e-01 9.981402467222395547e-01 7.992190944052800505e-01 1.350875702852057936e-01 4.950149186748543650e-01 7.243422481248201761e-01 3.544596746353472216e-01 8.320192561472177228e-01 9.776840296475269865e-01 7.733852731914863110e-01 2.305732998099923048e-01 9.746878189802981041e-01 7.747723331200035979e-01
|
||||
6.521099013127149568e-01 5.452399443648201505e-01 8.146707517183656710e-01 3.827256063695345656e-01 7.954832091744263867e-01 7.834427643148527132e-01 9.661317930643520402e-02 9.215673965718058636e-01 4.914305728788055383e-01 4.105628408027649501e-01 9.844647830893304974e-02 3.974831165301851987e-01 3.857608898053827007e-01 5.520210781401946321e-01 3.445787541654143915e-03 4.552922057017416702e-01 7.456544561760444223e-01 4.753985092154335845e-01 2.821385239833401615e-01 7.560136035104459973e-01 8.453142510471420845e-01 6.679627143276523071e-01 6.910882868284401459e-01
|
||||
8.526493480446283302e-01 1.183917973068240315e-01 6.163988861865119517e-01 5.751899460059114455e-01 1.638797964925038375e-01 8.214597298784013235e-01 5.424670654187370156e-01 1.806631819658732763e-01 9.268107278221827672e-01 4.127397378597359445e-01 7.529877485901653733e-01 1.714251090083847018e-01 2.601487784245806179e-01 2.028326156742237263e-01 5.299879450122358948e-01 7.587877062981395193e-01 4.070738595375062996e-01 3.546903049793261875e-01 8.695365138547607176e-01 1.447085661525142619e-01 3.193366245820845606e-01 8.797841086211429795e-01 2.666562188639977071e-01
|
||||
Binary file not shown.
|
|
@ -0,0 +1,150 @@
|
|||
5.099999999999999645e+00 3.500000000000000000e+00 1.399999999999999911e+00 2.000000000000000111e-01
|
||||
4.900000000000000355e+00 3.000000000000000000e+00 1.399999999999999911e+00 2.000000000000000111e-01
|
||||
4.700000000000000178e+00 3.200000000000000178e+00 1.300000000000000044e+00 2.000000000000000111e-01
|
||||
4.599999999999999645e+00 3.100000000000000089e+00 1.500000000000000000e+00 2.000000000000000111e-01
|
||||
5.000000000000000000e+00 3.600000000000000089e+00 1.399999999999999911e+00 2.000000000000000111e-01
|
||||
5.400000000000000355e+00 3.899999999999999911e+00 1.699999999999999956e+00 4.000000000000000222e-01
|
||||
4.599999999999999645e+00 3.399999999999999911e+00 1.399999999999999911e+00 2.999999999999999889e-01
|
||||
5.000000000000000000e+00 3.399999999999999911e+00 1.500000000000000000e+00 2.000000000000000111e-01
|
||||
4.400000000000000355e+00 2.899999999999999911e+00 1.399999999999999911e+00 2.000000000000000111e-01
|
||||
4.900000000000000355e+00 3.100000000000000089e+00 1.500000000000000000e+00 1.000000000000000056e-01
|
||||
5.400000000000000355e+00 3.700000000000000178e+00 1.500000000000000000e+00 2.000000000000000111e-01
|
||||
4.799999999999999822e+00 3.399999999999999911e+00 1.600000000000000089e+00 2.000000000000000111e-01
|
||||
4.799999999999999822e+00 3.000000000000000000e+00 1.399999999999999911e+00 1.000000000000000056e-01
|
||||
4.299999999999999822e+00 3.000000000000000000e+00 1.100000000000000089e+00 1.000000000000000056e-01
|
||||
5.799999999999999822e+00 4.000000000000000000e+00 1.199999999999999956e+00 2.000000000000000111e-01
|
||||
5.700000000000000178e+00 4.400000000000000355e+00 1.500000000000000000e+00 4.000000000000000222e-01
|
||||
5.400000000000000355e+00 3.899999999999999911e+00 1.300000000000000044e+00 4.000000000000000222e-01
|
||||
5.099999999999999645e+00 3.500000000000000000e+00 1.399999999999999911e+00 2.999999999999999889e-01
|
||||
5.700000000000000178e+00 3.799999999999999822e+00 1.699999999999999956e+00 2.999999999999999889e-01
|
||||
5.099999999999999645e+00 3.799999999999999822e+00 1.500000000000000000e+00 2.999999999999999889e-01
|
||||
5.400000000000000355e+00 3.399999999999999911e+00 1.699999999999999956e+00 2.000000000000000111e-01
|
||||
5.099999999999999645e+00 3.700000000000000178e+00 1.500000000000000000e+00 4.000000000000000222e-01
|
||||
4.599999999999999645e+00 3.600000000000000089e+00 1.000000000000000000e+00 2.000000000000000111e-01
|
||||
5.099999999999999645e+00 3.299999999999999822e+00 1.699999999999999956e+00 5.000000000000000000e-01
|
||||
4.799999999999999822e+00 3.399999999999999911e+00 1.899999999999999911e+00 2.000000000000000111e-01
|
||||
5.000000000000000000e+00 3.000000000000000000e+00 1.600000000000000089e+00 2.000000000000000111e-01
|
||||
5.000000000000000000e+00 3.399999999999999911e+00 1.600000000000000089e+00 4.000000000000000222e-01
|
||||
5.200000000000000178e+00 3.500000000000000000e+00 1.500000000000000000e+00 2.000000000000000111e-01
|
||||
5.200000000000000178e+00 3.399999999999999911e+00 1.399999999999999911e+00 2.000000000000000111e-01
|
||||
4.700000000000000178e+00 3.200000000000000178e+00 1.600000000000000089e+00 2.000000000000000111e-01
|
||||
4.799999999999999822e+00 3.100000000000000089e+00 1.600000000000000089e+00 2.000000000000000111e-01
|
||||
5.400000000000000355e+00 3.399999999999999911e+00 1.500000000000000000e+00 4.000000000000000222e-01
|
||||
5.200000000000000178e+00 4.099999999999999645e+00 1.500000000000000000e+00 1.000000000000000056e-01
|
||||
5.500000000000000000e+00 4.200000000000000178e+00 1.399999999999999911e+00 2.000000000000000111e-01
|
||||
4.900000000000000355e+00 3.100000000000000089e+00 1.500000000000000000e+00 1.000000000000000056e-01
|
||||
5.000000000000000000e+00 3.200000000000000178e+00 1.199999999999999956e+00 2.000000000000000111e-01
|
||||
5.500000000000000000e+00 3.500000000000000000e+00 1.300000000000000044e+00 2.000000000000000111e-01
|
||||
4.900000000000000355e+00 3.100000000000000089e+00 1.500000000000000000e+00 1.000000000000000056e-01
|
||||
4.400000000000000355e+00 3.000000000000000000e+00 1.300000000000000044e+00 2.000000000000000111e-01
|
||||
5.099999999999999645e+00 3.399999999999999911e+00 1.500000000000000000e+00 2.000000000000000111e-01
|
||||
5.000000000000000000e+00 3.500000000000000000e+00 1.300000000000000044e+00 2.999999999999999889e-01
|
||||
4.500000000000000000e+00 2.299999999999999822e+00 1.300000000000000044e+00 2.999999999999999889e-01
|
||||
4.400000000000000355e+00 3.200000000000000178e+00 1.300000000000000044e+00 2.000000000000000111e-01
|
||||
5.000000000000000000e+00 3.500000000000000000e+00 1.600000000000000089e+00 5.999999999999999778e-01
|
||||
5.099999999999999645e+00 3.799999999999999822e+00 1.899999999999999911e+00 4.000000000000000222e-01
|
||||
4.799999999999999822e+00 3.000000000000000000e+00 1.399999999999999911e+00 2.999999999999999889e-01
|
||||
5.099999999999999645e+00 3.799999999999999822e+00 1.600000000000000089e+00 2.000000000000000111e-01
|
||||
4.599999999999999645e+00 3.200000000000000178e+00 1.399999999999999911e+00 2.000000000000000111e-01
|
||||
5.299999999999999822e+00 3.700000000000000178e+00 1.500000000000000000e+00 2.000000000000000111e-01
|
||||
5.000000000000000000e+00 3.299999999999999822e+00 1.399999999999999911e+00 2.000000000000000111e-01
|
||||
7.000000000000000000e+00 3.200000000000000178e+00 4.700000000000000178e+00 1.399999999999999911e+00
|
||||
6.400000000000000355e+00 3.200000000000000178e+00 4.500000000000000000e+00 1.500000000000000000e+00
|
||||
6.900000000000000355e+00 3.100000000000000089e+00 4.900000000000000355e+00 1.500000000000000000e+00
|
||||
5.500000000000000000e+00 2.299999999999999822e+00 4.000000000000000000e+00 1.300000000000000044e+00
|
||||
6.500000000000000000e+00 2.799999999999999822e+00 4.599999999999999645e+00 1.500000000000000000e+00
|
||||
5.700000000000000178e+00 2.799999999999999822e+00 4.500000000000000000e+00 1.300000000000000044e+00
|
||||
6.299999999999999822e+00 3.299999999999999822e+00 4.700000000000000178e+00 1.600000000000000089e+00
|
||||
4.900000000000000355e+00 2.399999999999999911e+00 3.299999999999999822e+00 1.000000000000000000e+00
|
||||
6.599999999999999645e+00 2.899999999999999911e+00 4.599999999999999645e+00 1.300000000000000044e+00
|
||||
5.200000000000000178e+00 2.700000000000000178e+00 3.899999999999999911e+00 1.399999999999999911e+00
|
||||
5.000000000000000000e+00 2.000000000000000000e+00 3.500000000000000000e+00 1.000000000000000000e+00
|
||||
5.900000000000000355e+00 3.000000000000000000e+00 4.200000000000000178e+00 1.500000000000000000e+00
|
||||
6.000000000000000000e+00 2.200000000000000178e+00 4.000000000000000000e+00 1.000000000000000000e+00
|
||||
6.099999999999999645e+00 2.899999999999999911e+00 4.700000000000000178e+00 1.399999999999999911e+00
|
||||
5.599999999999999645e+00 2.899999999999999911e+00 3.600000000000000089e+00 1.300000000000000044e+00
|
||||
6.700000000000000178e+00 3.100000000000000089e+00 4.400000000000000355e+00 1.399999999999999911e+00
|
||||
5.599999999999999645e+00 3.000000000000000000e+00 4.500000000000000000e+00 1.500000000000000000e+00
|
||||
5.799999999999999822e+00 2.700000000000000178e+00 4.099999999999999645e+00 1.000000000000000000e+00
|
||||
6.200000000000000178e+00 2.200000000000000178e+00 4.500000000000000000e+00 1.500000000000000000e+00
|
||||
5.599999999999999645e+00 2.500000000000000000e+00 3.899999999999999911e+00 1.100000000000000089e+00
|
||||
5.900000000000000355e+00 3.200000000000000178e+00 4.799999999999999822e+00 1.800000000000000044e+00
|
||||
6.099999999999999645e+00 2.799999999999999822e+00 4.000000000000000000e+00 1.300000000000000044e+00
|
||||
6.299999999999999822e+00 2.500000000000000000e+00 4.900000000000000355e+00 1.500000000000000000e+00
|
||||
6.099999999999999645e+00 2.799999999999999822e+00 4.700000000000000178e+00 1.199999999999999956e+00
|
||||
6.400000000000000355e+00 2.899999999999999911e+00 4.299999999999999822e+00 1.300000000000000044e+00
|
||||
6.599999999999999645e+00 3.000000000000000000e+00 4.400000000000000355e+00 1.399999999999999911e+00
|
||||
6.799999999999999822e+00 2.799999999999999822e+00 4.799999999999999822e+00 1.399999999999999911e+00
|
||||
6.700000000000000178e+00 3.000000000000000000e+00 5.000000000000000000e+00 1.699999999999999956e+00
|
||||
6.000000000000000000e+00 2.899999999999999911e+00 4.500000000000000000e+00 1.500000000000000000e+00
|
||||
5.700000000000000178e+00 2.600000000000000089e+00 3.500000000000000000e+00 1.000000000000000000e+00
|
||||
5.500000000000000000e+00 2.399999999999999911e+00 3.799999999999999822e+00 1.100000000000000089e+00
|
||||
5.500000000000000000e+00 2.399999999999999911e+00 3.700000000000000178e+00 1.000000000000000000e+00
|
||||
5.799999999999999822e+00 2.700000000000000178e+00 3.899999999999999911e+00 1.199999999999999956e+00
|
||||
6.000000000000000000e+00 2.700000000000000178e+00 5.099999999999999645e+00 1.600000000000000089e+00
|
||||
5.400000000000000355e+00 3.000000000000000000e+00 4.500000000000000000e+00 1.500000000000000000e+00
|
||||
6.000000000000000000e+00 3.399999999999999911e+00 4.500000000000000000e+00 1.600000000000000089e+00
|
||||
6.700000000000000178e+00 3.100000000000000089e+00 4.700000000000000178e+00 1.500000000000000000e+00
|
||||
6.299999999999999822e+00 2.299999999999999822e+00 4.400000000000000355e+00 1.300000000000000044e+00
|
||||
5.599999999999999645e+00 3.000000000000000000e+00 4.099999999999999645e+00 1.300000000000000044e+00
|
||||
5.500000000000000000e+00 2.500000000000000000e+00 4.000000000000000000e+00 1.300000000000000044e+00
|
||||
5.500000000000000000e+00 2.600000000000000089e+00 4.400000000000000355e+00 1.199999999999999956e+00
|
||||
6.099999999999999645e+00 3.000000000000000000e+00 4.599999999999999645e+00 1.399999999999999911e+00
|
||||
5.799999999999999822e+00 2.600000000000000089e+00 4.000000000000000000e+00 1.199999999999999956e+00
|
||||
5.000000000000000000e+00 2.299999999999999822e+00 3.299999999999999822e+00 1.000000000000000000e+00
|
||||
5.599999999999999645e+00 2.700000000000000178e+00 4.200000000000000178e+00 1.300000000000000044e+00
|
||||
5.700000000000000178e+00 3.000000000000000000e+00 4.200000000000000178e+00 1.199999999999999956e+00
|
||||
5.700000000000000178e+00 2.899999999999999911e+00 4.200000000000000178e+00 1.300000000000000044e+00
|
||||
6.200000000000000178e+00 2.899999999999999911e+00 4.299999999999999822e+00 1.300000000000000044e+00
|
||||
5.099999999999999645e+00 2.500000000000000000e+00 3.000000000000000000e+00 1.100000000000000089e+00
|
||||
5.700000000000000178e+00 2.799999999999999822e+00 4.099999999999999645e+00 1.300000000000000044e+00
|
||||
6.299999999999999822e+00 3.299999999999999822e+00 6.000000000000000000e+00 2.500000000000000000e+00
|
||||
5.799999999999999822e+00 2.700000000000000178e+00 5.099999999999999645e+00 1.899999999999999911e+00
|
||||
7.099999999999999645e+00 3.000000000000000000e+00 5.900000000000000355e+00 2.100000000000000089e+00
|
||||
6.299999999999999822e+00 2.899999999999999911e+00 5.599999999999999645e+00 1.800000000000000044e+00
|
||||
6.500000000000000000e+00 3.000000000000000000e+00 5.799999999999999822e+00 2.200000000000000178e+00
|
||||
7.599999999999999645e+00 3.000000000000000000e+00 6.599999999999999645e+00 2.100000000000000089e+00
|
||||
4.900000000000000355e+00 2.500000000000000000e+00 4.500000000000000000e+00 1.699999999999999956e+00
|
||||
7.299999999999999822e+00 2.899999999999999911e+00 6.299999999999999822e+00 1.800000000000000044e+00
|
||||
6.700000000000000178e+00 2.500000000000000000e+00 5.799999999999999822e+00 1.800000000000000044e+00
|
||||
7.200000000000000178e+00 3.600000000000000089e+00 6.099999999999999645e+00 2.500000000000000000e+00
|
||||
6.500000000000000000e+00 3.200000000000000178e+00 5.099999999999999645e+00 2.000000000000000000e+00
|
||||
6.400000000000000355e+00 2.700000000000000178e+00 5.299999999999999822e+00 1.899999999999999911e+00
|
||||
6.799999999999999822e+00 3.000000000000000000e+00 5.500000000000000000e+00 2.100000000000000089e+00
|
||||
5.700000000000000178e+00 2.500000000000000000e+00 5.000000000000000000e+00 2.000000000000000000e+00
|
||||
5.799999999999999822e+00 2.799999999999999822e+00 5.099999999999999645e+00 2.399999999999999911e+00
|
||||
6.400000000000000355e+00 3.200000000000000178e+00 5.299999999999999822e+00 2.299999999999999822e+00
|
||||
6.500000000000000000e+00 3.000000000000000000e+00 5.500000000000000000e+00 1.800000000000000044e+00
|
||||
7.700000000000000178e+00 3.799999999999999822e+00 6.700000000000000178e+00 2.200000000000000178e+00
|
||||
7.700000000000000178e+00 2.600000000000000089e+00 6.900000000000000355e+00 2.299999999999999822e+00
|
||||
6.000000000000000000e+00 2.200000000000000178e+00 5.000000000000000000e+00 1.500000000000000000e+00
|
||||
6.900000000000000355e+00 3.200000000000000178e+00 5.700000000000000178e+00 2.299999999999999822e+00
|
||||
5.599999999999999645e+00 2.799999999999999822e+00 4.900000000000000355e+00 2.000000000000000000e+00
|
||||
7.700000000000000178e+00 2.799999999999999822e+00 6.700000000000000178e+00 2.000000000000000000e+00
|
||||
6.299999999999999822e+00 2.700000000000000178e+00 4.900000000000000355e+00 1.800000000000000044e+00
|
||||
6.700000000000000178e+00 3.299999999999999822e+00 5.700000000000000178e+00 2.100000000000000089e+00
|
||||
7.200000000000000178e+00 3.200000000000000178e+00 6.000000000000000000e+00 1.800000000000000044e+00
|
||||
6.200000000000000178e+00 2.799999999999999822e+00 4.799999999999999822e+00 1.800000000000000044e+00
|
||||
6.099999999999999645e+00 3.000000000000000000e+00 4.900000000000000355e+00 1.800000000000000044e+00
|
||||
6.400000000000000355e+00 2.799999999999999822e+00 5.599999999999999645e+00 2.100000000000000089e+00
|
||||
7.200000000000000178e+00 3.000000000000000000e+00 5.799999999999999822e+00 1.600000000000000089e+00
|
||||
7.400000000000000355e+00 2.799999999999999822e+00 6.099999999999999645e+00 1.899999999999999911e+00
|
||||
7.900000000000000355e+00 3.799999999999999822e+00 6.400000000000000355e+00 2.000000000000000000e+00
|
||||
6.400000000000000355e+00 2.799999999999999822e+00 5.599999999999999645e+00 2.200000000000000178e+00
|
||||
6.299999999999999822e+00 2.799999999999999822e+00 5.099999999999999645e+00 1.500000000000000000e+00
|
||||
6.099999999999999645e+00 2.600000000000000089e+00 5.599999999999999645e+00 1.399999999999999911e+00
|
||||
7.700000000000000178e+00 3.000000000000000000e+00 6.099999999999999645e+00 2.299999999999999822e+00
|
||||
6.299999999999999822e+00 3.399999999999999911e+00 5.599999999999999645e+00 2.399999999999999911e+00
|
||||
6.400000000000000355e+00 3.100000000000000089e+00 5.500000000000000000e+00 1.800000000000000044e+00
|
||||
6.000000000000000000e+00 3.000000000000000000e+00 4.799999999999999822e+00 1.800000000000000044e+00
|
||||
6.900000000000000355e+00 3.100000000000000089e+00 5.400000000000000355e+00 2.100000000000000089e+00
|
||||
6.700000000000000178e+00 3.100000000000000089e+00 5.599999999999999645e+00 2.399999999999999911e+00
|
||||
6.900000000000000355e+00 3.100000000000000089e+00 5.099999999999999645e+00 2.299999999999999822e+00
|
||||
5.799999999999999822e+00 2.700000000000000178e+00 5.099999999999999645e+00 1.899999999999999911e+00
|
||||
6.799999999999999822e+00 3.200000000000000178e+00 5.900000000000000355e+00 2.299999999999999822e+00
|
||||
6.700000000000000178e+00 3.299999999999999822e+00 5.700000000000000178e+00 2.500000000000000000e+00
|
||||
6.700000000000000178e+00 3.000000000000000000e+00 5.200000000000000178e+00 2.299999999999999822e+00
|
||||
6.299999999999999822e+00 2.500000000000000000e+00 5.000000000000000000e+00 1.899999999999999911e+00
|
||||
6.500000000000000000e+00 3.000000000000000000e+00 5.200000000000000178e+00 2.000000000000000000e+00
|
||||
6.200000000000000178e+00 3.399999999999999911e+00 5.400000000000000355e+00 2.299999999999999822e+00
|
||||
5.900000000000000355e+00 3.000000000000000000e+00 5.099999999999999645e+00 1.800000000000000044e+00
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00
|
||||
1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00
|
||||
1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00
|
||||
0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00
|
||||
1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00
|
||||
1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00
|
||||
1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00
|
||||
1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00
|
||||
1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00
|
||||
1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00
|
||||
0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00
|
||||
1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00
|
||||
1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00
|
||||
1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00
|
||||
0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00
|
||||
1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00
|
||||
1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00
|
||||
0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00
|
||||
1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00
|
||||
1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+00 0.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+00
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1 @@
|
|||
8.9084734e-01 9.3573853e-01 9.3507398e-01 9.6040691e-01 9.2918157e-01 9.6617342e-01 9.0430930e-01 9.5753424e-01 8.7106898e-01 9.2169905e-01 9.7401159e-01 8.9013416e-01 9.3956689e-01 9.0041896e-01 9.2588355e-01 9.3849417e-01 8.9713468e-01 9.1481804e-01 9.7500539e-01 9.0012586e-01 9.0962559e-01 8.5860091e-01 8.6981095e-01 8.9995771e-01 8.8070172e-01 9.1456657e-01 8.6711474e-01 9.2593917e-01 8.7560376e-01 8.5193121e-01 9.0898542e-01 8.7765302e-01 8.6555584e-01 8.6093485e-01 9.0447028e-01 8.7614405e-01 9.4803522e-01 8.4998062e-01 7.8398996e-01 8.9538612e-01 8.3902291e-01 9.9039470e-01 9.5480519e-01 8.9152195e-01 9.1623329e-01 7.9094921e-01 9.1777100e-01 9.8972335e-01 9.0429093e-01 8.7646362e-01 9.2136649e-01 9.7178177e-01 8.9610979e-01 9.4710327e-01 9.3612450e-01 9.0241499e-01 7.7992538e-01 8.7262126e-01 9.3325183e-01 8.5796531e-01 9.4267977e-01 6.7224167e-01 7.9568368e-01 8.6411267e-01 9.3311642e-01 9.0160114e-01 9.0698887e-01 8.5833256e-01 9.6902830e-01 9.5072298e-01 8.6808495e-01 9.7879599e-01 8.8060729e-01 8.2818573e-01 8.4366706e-01 8.4506700e-01 9.4532981e-01 9.1792306e-01 7.8917825e-01 9.8337805e-01 8.1751613e-01 9.3037855e-01 9.1618832e-01 8.6568874e-01 8.9751397e-01 8.7923710e-01 8.6814329e-01 9.0330164e-01 8.2426213e-01 9.4644643e-01 8.8431293e-01 8.8497426e-01 9.0633818e-01 9.5537161e-01 8.2167575e-01 8.7771053e-01 9.0681167e-01 8.7626143e-01 8.7463464e-01 9.8033940e-01 9.2920881e-01 9.5108549e-01 9.1287466e-01 8.0052218e-01 9.2409517e-01 8.8252650e-01 8.7873923e-01 9.2989402e-01 9.1985043e-01 9.6172646e-01 8.8223856e-01 9.4477822e-01 8.8310948e-01 9.4461306e-01 9.1875210e-01 9.1233363e-01 9.2124013e-01 9.5460897e-01 8.4640982e-01 9.0882657e-01 9.8169468e-01 9.7828355e-01 8.4150533e-01 8.6888923e-01 9.7138825e-01 8.7988144e-01 9.6720910e-01 8.9450147e-01 9.5331584e-01 8.8871809e-01 8.9736685e-01 8.6258146e-01 9.1331565e-01 9.0968870e-01 9.4833654e-01 9.0536967e-01 9.5099871e-01 8.0251958e-01 9.2526150e-01 9.8971957e-01 9.0340947e-01 9.4955892e-01 9.6838162e-01 8.7534901e-01 9.1178797e-01 9.2649154e-01 9.5260993e-01 9.3178143e-01 9.4943000e-01 8.7816171e-01 9.6506542e-01 8.3422958e-01 9.3443585e-01 9.3220084e-01 8.5706573e-01 8.4666325e-01 9.0474744e-01 9.1080644e-01 9.2406899e-01 8.7901768e-01 9.3265263e-01 9.5992829e-01 9.5696271e-01 9.1932272e-01 8.0937044e-01 9.0904917e-01 8.9516756e-01 9.4797906e-01 8.4159421e-01 9.6773901e-01 9.7099825e-01 9.6941820e-01 9.8174088e-01 9.7569951e-01 9.3655362e-01 8.4130333e-01 9.5994549e-01 8.4235414e-01 9.1429418e-01 9.3418117e-01 8.4600977e-01 8.8166496e-01 8.7594776e-01 8.8571112e-01 9.6308174e-01 9.5315927e-01 8.6997519e-01 8.9383032e-01 9.4686804e-01 9.4399596e-01
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1 @@
|
|||
3.2420590e+01 3.3246607e+01 3.0526910e+01 3.5166573e+01 3.1868301e+01 3.6025002e+01 3.2513623e+01 3.6557796e+01 3.3752212e+01 3.4422130e+01 3.2526018e+01 3.2581161e+01 3.3743555e+01 3.6960777e+01 3.4225270e+01 3.2965308e+01 3.4591031e+01 3.4204203e+01 3.4678123e+01 3.5728720e+01 3.0830047e+01 3.1550681e+01 3.3304790e+01 3.2676753e+01 3.2742330e+01 3.1684556e+01 3.2830915e+01 3.2956614e+01 2.7365639e+01 3.3207307e+01 3.3420925e+01 3.4357941e+01 2.8280126e+01 3.4523458e+01 3.2705274e+01 3.2455891e+01 3.1636060e+01 3.1594957e+01 3.1805202e+01 3.3886574e+01 3.3438829e+01 3.3330030e+01 3.4168514e+01 3.0637353e+01 4.2149167e+01 3.6340559e+01 2.9315308e+01 3.5778314e+01 3.7693050e+01 3.2598714e+01 3.2990836e+01 3.4967659e+01 3.9748920e+01 3.6745043e+01 2.7117550e+01 3.6014760e+01 2.9367558e+01 3.3845350e+01 3.5477339e+01 3.1513372e+01 3.2517953e+01 2.4755097e+01 3.0229897e+01 3.4799343e+01 3.3371710e+01 2.9600910e+01 3.3275088e+01 3.3567110e+01 3.4527016e+01 3.4942320e+01 3.2359383e+01 3.2607100e+01 3.1467914e+01 2.9032039e+01 3.3122878e+01 2.8496709e+01 2.9908448e+01 2.9962886e+01 3.0345299e+01 3.1737613e+01 2.8551485e+01 3.2610551e+01 3.3082660e+01 3.3719298e+01 3.6434018e+01 3.6589278e+01 3.3889586e+01 3.8036774e+01 3.1483497e+01 3.4196794e+01 3.5154035e+01 3.5488608e+01 3.6143183e+01 3.3473491e+01 3.4686446e+01 2.8687495e+01 3.5725742e+01 3.0188298e+01 3.3084534e+01 3.3538519e+01 3.6226849e+01 2.9052099e+01 3.6032733e+01 3.0811503e+01 3.2616190e+01 3.3888566e+01 3.3074570e+01 2.9683515e+01 3.0600771e+01 3.4345247e+01 3.6983843e+01 3.3692824e+01 3.3762461e+01 3.4024582e+01 3.3698854e+01 3.1238613e+01 3.4978833e+01 3.4991078e+01 3.4577741e+01 3.3749227e+01 3.4982272e+01 3.0487868e+01 3.2317632e+01 3.1125588e+01 3.4413791e+01 3.1881871e+01 3.1373821e+01 3.0416864e+01 3.2066187e+01 3.1128313e+01 3.0240249e+01 3.0125198e+01 3.1343454e+01 3.5479092e+01 3.4450767e+01 3.2953507e+01 3.4456795e+01 3.0136375e+01 3.3462150e+01 2.9894274e+01 3.1367432e+01 3.2839320e+01 3.1440398e+01 2.9400374e+01 3.1106338e+01 3.1242624e+01 3.5537892e+01 3.3056459e+01 2.8610281e+01 3.4296217e+01 3.5819772e+01 3.2503922e+01 3.0963029e+01 3.4762112e+01 3.4796284e+01 2.9645345e+01 3.4468088e+01 2.6975590e+01 3.3738555e+01 2.8825009e+01 3.2663999e+01 3.2547878e+01 3.2308091e+01 3.2489966e+01 3.0868597e+01 3.2974220e+01 3.0866111e+01 3.8197342e+01 3.0609568e+01 3.5478978e+01 2.9249184e+01 3.6185622e+01 3.1948258e+01 3.2649719e+01 3.3305650e+01 3.4643955e+01 3.6566241e+01 3.4968484e+01 3.2632218e+01 3.6741383e+01 3.5700008e+01 3.1962468e+01 3.1410623e+01 3.0412061e+01 3.3749077e+01 3.5649661e+01 3.7649263e+01 3.2832574e+01 3.1783914e+01 2.8264292e+01
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1 @@
|
|||
9.2507465e-01 9.6528566e-01 8.7255441e-01 1.1287379e+00 8.7318727e-01 1.0767102e+00 9.1419676e-01 1.1503304e+00 9.8074509e-01 1.0135025e+00 1.0495025e+00 9.4794536e-01 9.6829273e-01 1.1345767e+00 1.1048008e+00 9.2407796e-01 1.0228634e+00 9.3853195e-01 9.9377619e-01 1.0407662e+00 9.5048989e-01 9.0465688e-01 9.8056930e-01 8.9777156e-01 9.6357127e-01 9.3864452e-01 9.9754613e-01 9.7271356e-01 8.4383151e-01 9.6981983e-01 9.7510267e-01 1.0112663e+00 7.8730400e-01 1.0299498e+00 9.9307979e-01 9.0239520e-01 8.5428231e-01 8.8972742e-01 8.5933162e-01 9.6625934e-01 9.4175449e-01 9.9120729e-01 1.0503963e+00 8.8223053e-01 1.3261434e+00 1.1063209e+00 8.4058398e-01 1.0844267e+00 1.1153093e+00 1.0092643e+00 8.9585237e-01 1.0599818e+00 1.2321707e+00 1.1359624e+00 8.3503556e-01 1.1792243e+00 7.9159781e-01 1.0830419e+00 1.2181870e+00 9.9888500e-01 1.0227144e+00 6.8557277e-01 9.6836193e-01 1.1061227e+00 1.0883453e+00 9.5681974e-01 9.9436299e-01 1.0304323e+00 1.1273949e+00 1.0735563e+00 1.0582583e+00 9.6040272e-01 1.0032137e+00 8.4900547e-01 1.1035351e+00 8.7867480e-01 9.6433176e-01 9.1850122e-01 8.9337435e-01 1.0449390e+00 8.9639384e-01 9.6704971e-01 1.0084258e+00 1.0528587e+00 1.1764481e+00 1.0913280e+00 1.0136672e+00 1.2737156e+00 9.5130359e-01 1.0367909e+00 1.1983402e+00 1.1319901e+00 1.1117462e+00 1.0343695e+00 1.0838628e+00 7.5266057e-01 1.0763316e+00 8.8067924e-01 9.6734383e-01 9.8800551e-01 1.2265742e+00 7.8833055e-01 1.0338670e+00 8.6666625e-01 9.9039950e-01 9.7142684e-01 9.3138616e-01 8.5849977e-01 8.5486301e-01 1.0516028e+00 1.1105313e+00 9.5943505e-01 9.8845171e-01 1.0566288e+00 9.9712198e-01 9.5545756e-01 1.1817974e+00 9.9128482e-01 1.0117892e+00 1.0979115e+00 1.0493943e+00 9.1318848e-01 9.3157311e-01 8.7073304e-01 1.2459441e+00 9.3412689e-01 1.0482297e+00 9.4224032e-01 9.5134153e-01 9.0857493e-01 9.7264161e-01 8.2900820e-01 9.3140549e-01 1.1330242e+00 1.0333002e+00 1.0117861e+00 1.2053255e+00 8.5291396e-01 1.0148928e+00 8.6641379e-01 9.7080819e-01 9.5457159e-01 9.5207457e-01 9.3539674e-01 9.0769069e-01 9.5322590e-01 1.1181803e+00 9.9765614e-01 7.5370610e-01 1.0807114e+00 1.0804601e+00 9.0214124e-01 8.7101998e-01 1.0167435e+00 1.2045936e+00 8.7300539e-01 1.1054300e+00 7.9145574e-01 1.0279340e+00 8.7623462e-01 1.0034756e+00 1.0386933e+00 9.3910970e-01 1.0028455e+00 9.9868824e-01 9.8752945e-01 9.8319327e-01 1.3110209e+00 8.6180633e-01 1.0993856e+00 8.5912563e-01 1.1303979e+00 9.8690459e-01 9.6910090e-01 9.1456819e-01 1.1525339e+00 1.1064552e+00 1.1062255e+00 9.7226683e-01 1.1091447e+00 1.1072238e+00 9.6544444e-01 9.6681036e-01 9.3247685e-01 9.6854634e-01 1.1035119e+00 1.1317148e+00 9.5557793e-01 9.8908485e-01 7.4873648e-01
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1 @@
|
|||
2.5695885e-01 2.6882042e-01 2.3470353e-01 2.9299329e-01 2.2742702e-01 3.1253572e-01 2.4986352e-01 3.0770122e-01 2.5191977e-01 2.7931567e-01 2.8133743e-01 2.6316239e-01 2.6067201e-01 3.2982339e-01 2.8993002e-01 2.5506356e-01 2.8728051e-01 2.4952121e-01 2.8613379e-01 2.6894157e-01 2.3606353e-01 2.1670935e-01 2.3470242e-01 2.4294172e-01 2.4376454e-01 2.3228195e-01 2.3554918e-01 2.4851241e-01 2.0917546e-01 2.4971488e-01 2.4264224e-01 2.7405461e-01 1.9086415e-01 2.6346574e-01 2.5908801e-01 2.2138495e-01 2.2910721e-01 2.2169919e-01 2.0660065e-01 2.3207102e-01 2.5554688e-01 2.5153751e-01 2.6073682e-01 2.0919640e-01 3.3984433e-01 2.7503792e-01 2.1709889e-01 2.7068095e-01 3.0307041e-01 2.4529612e-01 2.2987015e-01 2.7736967e-01 3.0310708e-01 3.0544316e-01 1.9205388e-01 2.7098021e-01 2.0722466e-01 2.6387343e-01 2.8998308e-01 2.2633010e-01 2.5177075e-01 1.6347011e-01 2.4036389e-01 2.6485871e-01 2.8491965e-01 2.2273619e-01 2.4511873e-01 2.5930533e-01 2.6589995e-01 2.7797191e-01 2.3357373e-01 2.4279909e-01 2.3544532e-01 1.9447286e-01 2.3993534e-01 2.0856243e-01 2.2125251e-01 2.1988206e-01 2.0590152e-01 2.6441952e-01 2.0052739e-01 2.2978496e-01 2.4483670e-01 2.3879510e-01 2.9398425e-01 2.7541852e-01 2.3777469e-01 2.9151131e-01 2.0672752e-01 2.4584031e-01 2.7475025e-01 2.7064343e-01 2.5603684e-01 2.6165327e-01 2.4233155e-01 1.7892657e-01 2.6111203e-01 1.9965682e-01 2.4201634e-01 2.6281353e-01 3.1928221e-01 1.9731963e-01 2.7752862e-01 2.2633080e-01 2.6783167e-01 2.5447186e-01 2.6424243e-01 2.1960672e-01 2.2984242e-01 2.8788736e-01 2.8681630e-01 2.6949787e-01 2.3993685e-01 2.4440073e-01 2.5010397e-01 2.3230769e-01 2.9879682e-01 2.4200592e-01 2.6957748e-01 2.6073240e-01 2.6355347e-01 2.3403674e-01 2.2411413e-01 2.2956729e-01 2.8105976e-01 2.2913304e-01 2.4898608e-01 2.3304000e-01 2.2692988e-01 2.3728251e-01 2.2552243e-01 2.0364084e-01 2.3359511e-01 2.6619167e-01 2.6666588e-01 2.3666880e-01 2.7239113e-01 2.0146697e-01 2.3045559e-01 2.1695523e-01 2.1387991e-01 2.2366404e-01 2.2809635e-01 2.0901297e-01 2.2441100e-01 2.3418882e-01 2.8552218e-01 2.4609015e-01 2.0282492e-01 2.5940295e-01 2.7407006e-01 2.3344890e-01 2.1179142e-01 2.7047821e-01 2.9832768e-01 2.0859082e-01 2.8881331e-01 1.8384598e-01 2.5286491e-01 2.2012615e-01 2.3615775e-01 2.6845565e-01 2.3356355e-01 2.7164193e-01 2.4179380e-01 2.5247973e-01 2.5637548e-01 3.2126483e-01 2.3100774e-01 2.8832546e-01 2.0043257e-01 2.7918333e-01 2.4884522e-01 2.2904723e-01 2.3738940e-01 2.9461278e-01 2.9782005e-01 3.0332073e-01 2.5175971e-01 3.1203784e-01 2.6611535e-01 2.3713507e-01 2.2203585e-01 2.3602325e-01 2.5093670e-01 2.6860434e-01 3.0137874e-01 2.3759606e-01 2.6840346e-01 1.9200556e-01
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
8.278938049410748956e-01 9.035293984476246987e-01 1.862188994679486731e-01 8.921151312310462433e-01 2.061859119379583216e-02 3.440636727385729676e-01 1.533779912830328662e-01 5.701372300009802663e-01 5.510020730211558915e-01 1.792362258426003496e-01 8.086175120876580857e-01 6.115487184317183189e-01 1.233471787164852618e-02 1.441643531871039663e-03 4.044309209045688913e-01 3.561398959499905148e-01 1.281985712929750720e-01 8.663300833847481508e-01 8.696027786291581352e-01 3.611727370363766454e-01 5.283537658772616830e-01 1.440241088090119526e-01 3.112457227138950566e-01 6.031280796897889873e-01 9.230324792742518047e-01 2.332121881136874908e-01 3.192652267403439659e-02 3.466206294995559656e-01 2.988687728046366399e-01 5.116749542048093513e-02 2.584975830914494344e-01 4.302023478042227289e-01 8.003972751713522849e-01 9.364931911368097328e-01 9.737098649964673891e-01 4.718038453972229762e-01 4.526591686607864817e-01 1.056485678520797666e-01 5.883019714285405710e-01 3.846092237676981274e-01 6.461500053435473845e-01 1.013239729848824933e-01 1.216151561651189761e-01 5.159668929484659827e-01 8.452074473510227115e-01 9.885170962247968873e-01 7.623883073490128615e-01 2.291163243615434997e-02 5.775530980802381364e-01 7.820699896828091635e-01 8.239186345842965942e-01 3.391800105260227571e-01 9.546318451614538292e-01 3.789677917867695367e-01 4.526533399649290690e-02 8.366786473238587707e-01 3.082636811049858094e-01 1.173936820793450853e-01 7.631994969169442200e-02 2.997416650722183329e-01 5.795208655160232203e-01 3.942350892542011431e-01 1.175126383297261379e-01 4.928232513950027149e-01 9.421293996225950096e-01 8.365391053841342295e-02 6.868059693571844093e-01 3.589527962429440722e-01 7.592939427166059962e-01 5.623849466131448649e-01 2.110746828032050715e-01 9.824683704668600859e-01 2.661230142246236996e-01 6.162272315007123469e-01 5.023254536607497656e-01 5.202854476669782624e-02 5.835090668842095596e-01 7.864642118889143552e-01 2.504012386867506823e-01 6.728308641135989365e-01 4.610793534576096420e-01 4.820508770515909980e-01 9.720403251022265989e-01 3.100069285263498120e-01 7.681017126461753275e-01 7.956539306007082146e-02 2.593389637887737464e-01 1.137852590403054531e-01 3.885303073284454012e-01 8.599094660075957686e-01 5.215167875918280682e-02 1.620908248572288102e-01 1.859236090457663249e-01 6.247716512610480555e-01 3.415128495520775020e-01 7.034903368378029320e-01 6.037564640019568163e-01 2.338969434423310290e-01 1.002104885609900187e-02 7.866058403969036217e-01
|
||||
8.033694116033356369e-01 8.653264545544031572e-01 7.468340410754038539e-01 6.362430919910603278e-01 5.120006306625468628e-02 9.503348372633585450e-01 4.697732609626817935e-01 4.221305288459429317e-01 3.153452119838391354e-01 2.991014843442657556e-01 1.190667967280257811e-01 3.486567714509342109e-01 8.289493649885054660e-01 8.454811050800014049e-01 9.149673018211901265e-01 7.708707837193897738e-01 2.640157732122547785e-01 2.107897022189605396e-01 4.207633055054439408e-01 6.719500284654699174e-01 1.458031684893063007e-01 1.800412735886125493e-02 8.402733435220011149e-02 4.206760156883160295e-02 1.376933515041314227e-01 1.716717341022133692e-01 1.788220727652158892e-01 8.224310433402118869e-01 7.729093666867475898e-01 2.064223621025984556e-01 9.592092036227207741e-01 8.312490243754996344e-01 6.673289360369902834e-01 4.632847903690773261e-02 7.643954098358983762e-01 9.359341525615098023e-01 1.914966319163026176e-01 4.536590469402868031e-01 8.640836016538007147e-01 3.941529178175462444e-02 5.602101995205478469e-01 9.263806161941660067e-01 1.555995325944817820e-01 6.172208102950116348e-01 6.335576752812099866e-01 9.766975460368043649e-02 4.475795689539874278e-02 3.248842796104995934e-01 5.700377122149502540e-01 9.066962967256807504e-01 5.458460621505676347e-01 6.833401285581487405e-01 2.887244409544044155e-01 1.316338647016834784e-01 2.325673305245992140e-01 4.150121963188406760e-01 3.834845466366055833e-01 8.149365773968725302e-01 1.867003849450201702e-01 3.170322173543018707e-01 6.832093662682684476e-01 1.729728518929105618e-01 9.236557359702636250e-01 9.152941252150086360e-01 7.224879983096620384e-01 8.557920626598064517e-01 5.344883059251644974e-01 4.876873274449112783e-01 8.308277804506420949e-01 3.916624489322212410e-01 3.459695122273966916e-01 4.033512499027409604e-01 6.555726444913008155e-01 7.138452409380238173e-01 1.683937314599968094e-01 1.769382143486440961e-01 7.588683655178136700e-01 3.750589892880819010e-01 7.525176245126207197e-01 6.083961152538303052e-01 1.145972309907993258e-01 6.239614485809552580e-01 1.307655482065895880e-01 8.530458750670916190e-01 4.801602070124768584e-01 8.168122189863546989e-02 3.793139622744635675e-01 1.496986997776840189e-01 7.129023878302899186e-01 6.830979237438047358e-01 7.635375943876505644e-01 1.824004963251233402e-01 5.764695848992339444e-01 8.865113248731604223e-01 5.784337085544002388e-01 9.700026628755119562e-01 7.318207347905059112e-01 3.851401393936705331e-01 1.774291851193399161e-01 9.763423229242296220e-01
|
||||
9.287178470949695175e-01 1.748282433617460718e-01 9.238531711586964734e-01 8.291274445125006443e-01 9.513259272578692416e-01 7.486316801165745494e-01 6.257378457524477300e-01 2.062711693536473101e-01 3.970721244184766130e-01 2.738325225026445597e-01 8.735038948299954642e-01 5.415282140033768066e-01 5.176317904298315398e-01 5.347036264518250093e-01 7.482056965410627258e-01 4.140672582824351800e-01 8.709067272363142376e-01 9.499605569181273079e-01 5.380266748336398619e-01 4.369252161707162241e-01 8.235722216228258397e-03 4.308187193646527691e-01 6.030581482859224129e-01 7.316831195156517920e-01 5.540499846834291420e-01 2.044203040111662872e-01 8.645251782981867583e-01 1.816095717570278545e-01 9.639119168018674966e-01 3.572031072322333634e-01 5.580226816834680248e-01 5.586629875016585478e-01 7.213854320902782780e-01 8.513998260042524580e-01 6.308764347277173723e-02 4.299855362100638567e-01 8.789303907444128150e-01 9.178850359236285783e-01 2.275205845091231582e-01 1.899395443939643213e-01 7.103070862773533944e-01 9.450015289553428399e-01 1.691856364522159595e-01 7.368719616877857925e-01 9.600189536623833231e-01 5.128846522932454244e-01 6.209162727118655578e-02 7.992250598838029907e-01 9.141050280518014937e-01 1.471297785256820978e-01 7.466162372930541524e-01 4.656107650642931084e-01 6.399324135161845728e-01 2.023617619481610230e-01 1.019104648900100996e-01 4.390693688536728700e-02 9.822620353006089600e-01 2.881951852926285529e-01 6.191575015960482098e-02 8.989580763251467932e-01 4.635958631890454429e-01 1.781973138114967270e-02 7.906911683818984571e-02 6.525270776225711167e-02 3.620583622807886925e-01 2.651673718940715796e-01 5.829372395929610651e-01 2.118159824373908595e-01 5.900287159143694504e-01 9.405929925178391215e-01 9.262415619063500971e-01 5.639581506302312475e-01 4.529556154689695635e-02 2.873819210518682166e-01 5.718545934306838996e-01 9.877670791317306742e-01 4.120364488714320927e-01 9.896078045634184583e-01 3.796586997026456523e-01 1.178183652203194098e-01 6.641068305236120795e-01 4.045960610587706618e-03 2.262690437428437340e-01 7.839938005832693957e-01 7.695391333937223743e-01 3.713918392552509884e-01 4.245533341514018399e-01 1.475072494020331915e-01 6.011975181419888514e-01 5.158174017998343741e-01 1.788706151398071764e-01 8.880707130134481986e-01 6.463351030474082659e-01 6.499920635615744624e-01 8.570273676455353318e-01 6.055019270899113515e-01 2.123561211054603159e-02 2.027688787664126968e-01 1.930834215328548487e-01 5.131906052747271518e-01
|
||||
2.599990881903107010e-01 6.767857524909899336e-01 7.188217446352963558e-01 3.037178903357997672e-01 4.252381412838680541e-01 4.070924411439535984e-02 8.426710493038247485e-02 8.301517457289483426e-01 8.254603255702420705e-01 7.258533909453509514e-01 9.958706809470796451e-01 1.323408451651194584e-01 8.523995455245143571e-01 2.572405385832454705e-02 4.715363690065482727e-01 7.920130365690022378e-01 7.613745641534582775e-01 5.108305991695683002e-01 7.908714335912382376e-01 4.641131983754837043e-01 3.112627109831845873e-01 4.218013908715474436e-01 3.291577909008427394e-01 2.538715054071232213e-01 1.362470842487485401e-01 2.716429790290709745e-01 1.485325814161112534e-01 4.514539027544387517e-01 6.900835128673067365e-01 7.793407072946112457e-02 5.938024345270752624e-01 1.497853829906865553e-01 5.399567982652856424e-01 1.419209916759478496e-03 7.719776132867679497e-01 3.130795105576239523e-01 6.670071611167494030e-01 8.900596881158256979e-01 8.011158503301568645e-01 7.089295605187424520e-01 4.671116382997058114e-01 6.682965170673403899e-01 6.524835265739736823e-02 5.454288420771494783e-01 7.751910790556310049e-01 8.192595541387335256e-01 3.098855848167891835e-01 3.689971355659119601e-01 8.666507475054133769e-01 2.749042684253171220e-01 3.566565602478318775e-01 4.838173174723044978e-01 1.032975933616413489e-01 5.063065339610417492e-02 5.791168455729079900e-01 3.573337411289496668e-01 6.714098909652352898e-01 2.917057662433912846e-01 2.654964332620638467e-01 7.171804039048814694e-01 3.314488637898249657e-01 5.230399837442840649e-01 6.866534136026025692e-02 1.252966394621071178e-01 5.349397882659551184e-01 2.841423847455760709e-01 4.158473635710734362e-01 7.197062989831272128e-01 5.123869045047864113e-01 8.675622821594339840e-01 8.097441845042540054e-01 7.317178252133832439e-01 3.300847596465853462e-01 5.922311859141077273e-01 8.852619511417836318e-02 2.673412917259408994e-01 6.878259052441990651e-01 3.223000927116328462e-01 8.859387123976615319e-01 5.722722388300067742e-01 8.254877606669521750e-01 5.705299682290687624e-01 7.046478734972855262e-01 1.316324413616759559e-01 3.056358395675535800e-01 2.396516834600909140e-01 2.041201422493257311e-01 1.610755140653103989e-01 1.617012564641111538e-01 4.449920510036902144e-01 2.731012972755201274e-01 7.826874666257994662e-01 5.193612375350010746e-01 8.688804522977213729e-01 3.742157602758655610e-02 6.649628920608219307e-01 5.978149424619171315e-01 5.345645500553952711e-01 9.443202650415919441e-01 6.105837075491723498e-01
|
||||
6.387761328141735584e-01 4.210087412162694109e-01 3.777306694964789324e-01 3.576349403292201634e-01 7.272699618880260619e-01 9.173392803607671731e-02 1.212535698300880593e-01 3.871229381194544183e-01 7.735150198351389284e-01 4.687200483013695962e-01 5.161778571874678923e-01 9.839646447226980674e-01 8.626932748911960713e-01 9.618485576577924245e-01 2.997996427525421170e-01 3.955404657388794654e-01 8.480126027102616870e-01 8.194992325050480808e-01 2.800213436873294492e-01 7.188391466620779324e-01 2.289766105875049584e-01 3.838547514028287644e-01 1.363553401061209369e-01 2.131328253542326134e-01 2.666779468144075960e-02 3.252883844200405994e-01 4.207860197469600605e-01 2.991365385037647595e-01 9.180779845534067229e-01 8.787338732192649937e-01 5.404510999105649471e-01 1.735493827761729335e-01 7.405224640747264386e-01 3.927355563629583157e-01 3.957109873399460298e-01 1.313029813325972128e-01 6.434498219738993274e-01 7.162213694578050127e-01 6.454998257494671821e-01 3.808124530008022424e-01 2.027201015737234435e-01 6.667632842770417900e-01 1.609491052365198405e-01 1.192413785409307536e-02 4.546773323526854815e-01 7.733541911050207940e-01 3.902525737195561284e-01 4.006023779897505133e-01 5.156517815815246930e-01 6.135685498584592112e-01 7.062153114980724844e-01 5.505858882117883324e-01 3.541308807182554919e-01 5.237151122342533771e-01 5.230649229131387745e-01 1.973541027697351957e-01 7.940327858595511712e-01 9.998588700623055603e-01 3.878271015153827994e-01 4.455006584967207139e-01 8.376414508056347907e-01 3.310833863524501597e-01 8.020469097392601832e-01 1.890327633084128989e-01 3.830289472395409511e-01 8.605040171046141051e-02 9.978185524023941433e-01 8.333890591892906263e-01 4.509013468741837061e-01 6.355778557686052599e-01 1.422515991097305088e-01 9.549891485963732940e-01 7.535776302868563148e-01 9.306005301880662106e-01 2.444330347211679522e-01 5.828218427569508142e-01 1.261938242968304591e-01 2.829188731405173352e-01 8.100246952078660190e-01 2.032739130996042975e-01 3.997268448390065565e-01 3.882777703107541667e-01 1.102505652624736765e-01 5.826634725328041498e-01 6.508734477956333864e-01 1.777287661702166011e-01 4.857051012052149286e-02 6.850537712379254351e-01 5.012281307761055071e-01 3.329154880061502286e-01 5.006261767216675374e-01 4.542081454976160115e-01 6.777801995399822532e-01 4.271303586474960445e-01 7.820470659692947413e-01 5.143462618485082904e-01 4.071273891563575997e-02 8.503383643856671226e-01 6.877485768345151795e-01 6.498843855014626580e-01
|
||||
5.539512747016193117e-01 6.329206647391879548e-01 2.798533500321682688e-01 4.825977295850051307e-01 7.625297023172977751e-01 9.081309101427640362e-01 4.124792086535029600e-01 3.647019658319609059e-01 7.529595202332928228e-02 3.072404010876803593e-01 7.890673660964639957e-01 4.079781478915127657e-01 1.440519120695739064e-01 2.538968953804546791e-01 1.595028243568367143e-01 9.066545851872198636e-02 6.367601114674349416e-01 7.622263643880089479e-02 3.015728236404162654e-01 2.424070469873378375e-01 5.711440390241000475e-01 5.717001375511508998e-01 2.237853674032181939e-01 7.112101625753678436e-01 4.321054197012103026e-01 2.505322169010260058e-02 5.877307077139551916e-01 4.415771174397812304e-01 3.766022855145171322e-01 9.803490652619811785e-01 1.229258314111529860e-01 8.108351868714478439e-01 8.558595456964329662e-01 2.168217533833206589e-01 2.034022719386595623e-01 8.687457137579783772e-01 9.013327195854559104e-01 8.156766512673154779e-01 2.717576187546973943e-01 1.756417893371479133e-01 7.555856977566548505e-01 6.708809351312817748e-01 8.998789237886926085e-01 1.936367585946979775e-01 7.949724635465026390e-01 3.164799312763589834e-01 5.493048513173155456e-01 1.608917269168268493e-01 3.048667492191803330e-01 5.599401537727016764e-01 5.779501360842279611e-01 1.296714605309662316e-01 9.160752328055997706e-01 8.058674476110374574e-01 4.385508937505578908e-01 9.212419718012100356e-01 2.249887451242467140e-01 6.283927745352599903e-01 3.778992451536005159e-01 3.571958698867505611e-03 7.276526470528231760e-01 9.051678673805297892e-01 8.465837072484881931e-01 4.548317505393462135e-02 3.189318261926020748e-01 4.446388607398673587e-01 4.292356336344156365e-01 4.203980977718795309e-01 4.698059253071955599e-01 6.151991200848159203e-01 8.479986139404802614e-01 9.870993262459623052e-01 3.164206525899861955e-01 6.464672171639846976e-01 8.508781429592480183e-01 4.733667503354813677e-01 8.076014176740163863e-01 6.671443255679101458e-01 6.639213267047979761e-01 3.681688930741919830e-01 4.679870252651611162e-01 1.790041740686979521e-01 8.446070273663058847e-01 3.350737544979878191e-01 6.600272349677447359e-01 4.356083218487936115e-01 7.995134167346013010e-01 9.083660261041469619e-01 9.743975306734570241e-01 8.144839650654719376e-01 6.865011984586443239e-01 1.709747281999153268e-01 8.534933687161740945e-01 9.494753729726415070e-01 8.140124992294850426e-01 8.936241255316055287e-01 9.087976860818796077e-01 9.030687493451383663e-02 4.025785149840914734e-01 9.592005611533803711e-01
|
||||
5.714058727476275523e-01 7.913573761505965365e-02 9.301773447377043036e-01 4.302822433307075256e-01 4.618892554175407783e-01 1.882471300213742760e-01 6.231472878215863487e-01 2.350437450940777717e-01 8.483410480771292894e-01 8.580803842040533036e-01 4.246398783388435350e-01 5.667321565946502604e-01 7.247417018955526480e-02 5.373984417482219333e-01 8.794242091541510931e-01 9.699025554453030162e-01 8.254197752548814160e-01 7.739723972867470492e-01 6.365819416181199841e-01 3.451230687021222820e-02 1.829102490094791644e-02 9.179618383026147965e-01 4.481667270072077214e-01 4.771270250445739380e-01 1.588469404953456454e-01 3.766332499200618633e-01 5.057026248713025751e-02 9.125900914275182352e-01 8.438133644246305076e-01 3.282972411719701222e-01 6.042003956122835584e-01 7.423456085393266290e-01 1.389012737541106546e-02 3.674754266702850991e-02 2.126646727703802586e-01 3.085666164246750887e-01 4.303440338750976757e-01 1.749037978865556342e-01 2.177699993322510519e-01 6.675614739991906355e-01 1.926533336347433512e-01 8.032010572660308600e-01 4.611412981769049679e-01 9.907201268457492827e-01 8.973785930837320235e-01 6.286342392657409128e-01 8.111266245859546364e-01 1.154230969025437092e-01 8.382880466301794176e-01 1.053753927827069115e-01 9.921712862234919328e-01 9.041662667920956631e-01 3.626267376021269362e-01 2.262225368932846425e-02 8.669003741626111204e-01 7.597054897704164089e-01 4.700318514995387442e-01 4.338185014241978665e-01 1.205425463362067573e-01 2.413879270602589111e-01 5.483334840461459025e-01 2.042653841254596925e-01 5.452588940366013270e-01 3.164646091706100339e-01 1.878958248945691301e-01 2.188622304737641855e-01 2.970982599823450698e-01 5.952148400199362976e-01 9.614251220149501176e-01 5.446813400697393392e-01 5.900748097930779146e-01 2.653062526715309621e-01 5.459933097767216692e-01 3.174185404661935550e-01 1.412133354129242457e-01 1.487441669790685594e-01 3.953776242211952674e-01 5.274261039692862418e-01 1.756132307607755072e-01 4.481942852746899630e-01 6.390660088765629521e-01 2.860380430081067571e-01 5.866902519902850166e-03 3.026687645174785946e-02 1.952533570196290924e-01 2.154769096186736066e-01 8.920573593276575064e-01 5.644513191915436767e-01 5.551464696654353492e-01 4.378199413349500579e-01 8.685737643974280608e-01 7.493934764293597173e-02 9.556749726352036234e-01 6.386433482536227890e-01 8.714694524097754691e-02 1.722786161701279628e-01 6.526867532768643176e-01 8.950304705281527662e-01 6.158198776753203152e-01 9.587176904005377809e-01
|
||||
7.705718397401561948e-01 3.165816092999733655e-01 4.334200859975760878e-01 8.639807015515663657e-01 5.576514209532534849e-03 2.456745447057938625e-01 1.664686313299922338e-01 9.637084729617834133e-01 1.083448720752323569e-01 1.865218070380464388e-01 3.730358890475884426e-01 5.015351872138350542e-01 7.420710795841709562e-01 4.919420674769692248e-01 3.426558201886464872e-02 8.669984854934246199e-01 2.204243734202966376e-01 4.109792246853891662e-01 4.361732572946559472e-01 6.819306998053020763e-02 9.986304248057148447e-01 4.119289455392274313e-01 8.533050041845835487e-01 3.416914861912183632e-01 6.522191951039880697e-01 4.162803668786793088e-01 9.051674379917418189e-02 4.552378661306888397e-02 2.122677193466918633e-01 7.461518531655018105e-01 4.654688019259497489e-01 7.877564083548750373e-01 4.518328005682387127e-01 7.173857464237374248e-01 6.940056370290903498e-02 2.804574410412373764e-01 6.095681113112718652e-01 3.680596478602831123e-01 1.814569150719304025e-01 6.505055517979729807e-01 2.759585245701871026e-01 1.429501104786028431e-01 7.813891153083207808e-02 8.925314279991185540e-01 6.692056941902108091e-01 1.915141341107173822e-01 5.750233129581091562e-01 2.051961006251528108e-01 3.849013692629975614e-01 9.503788222043518807e-01 7.690419386411734282e-01 9.978147530014782607e-01 1.719584162437415298e-01 4.890758882401113894e-01 7.195660736040896399e-01 2.485818040997200828e-01 9.706486601870933928e-01 5.182604282071262558e-01 8.082072245463804983e-01 4.889961284821118248e-01 8.042893959057633158e-01 3.200685313413229593e-01 8.983245016887355661e-01 2.811495336955205371e-01 3.986095833814048417e-01 8.607229214132059436e-01 4.827620119717191960e-01 6.715610252037491623e-01 9.330824374137768329e-01 7.537710530085762750e-01 9.840804224010484269e-01 2.319352541177217564e-01 9.569114943157627229e-01 5.821928104654411351e-01 6.700479524814679788e-01 5.663434680086896211e-01 8.851091082101365526e-01 6.800562815862243315e-01 3.578475213752868589e-01 2.900164669281133367e-01 8.379170683569914235e-02 9.929972839740475177e-02 5.946248553621906741e-01 1.991332889320840405e-01 8.115065723822508792e-01 2.023388190440008616e-01 4.056545651129230823e-01 2.966825350250481552e-01 7.457176343507545546e-01 9.856015771246517954e-01 2.264338016147812160e-01 8.366528670045663141e-01 6.116829813603242849e-01 2.605933184296719274e-01 5.765962146558850643e-01 5.064075092266390188e-01 5.499615769589756287e-01 9.240234698632640020e-01 7.169900155229913530e-02 3.544181364560751168e-01
|
||||
8.154844535553099627e-01 4.797965609394789777e-01 7.476703385713100447e-01 9.086708404761600910e-01 3.191752505450355937e-01 7.611128630021511965e-01 6.246790343299296611e-01 1.942001426217137006e-01 2.789860414631386565e-01 3.236359785042408621e-02 3.178191288741717413e-01 8.372264298357038337e-01 8.872692914664047636e-01 9.589758852077276963e-01 3.123722260380168425e-01 8.980164015338999439e-01 7.260784140459818348e-01 6.567013512265649222e-01 1.028743505926521529e-01 6.821705410750319443e-01 6.889838995316139858e-01 5.587525493094736007e-02 6.921487028366646310e-01 3.616312929861494885e-01 1.673758008792780583e-01 6.626504595920326146e-01 9.125680913222075086e-01 1.424077784972291871e-01 6.508496429060767197e-01 6.615417385775157477e-01 9.654167310675311198e-01 5.536662974550183858e-01 7.092622144968085962e-03 6.694595400455760625e-01 1.828533619119211417e-01 3.421514408394116247e-01 1.242580151818144518e-01 9.888774797458224075e-01 9.777955172739735135e-01 4.271370765628749178e-01 1.211608384809655936e-01 1.580132417172936954e-01 3.242705395708289640e-01 3.268994391754735940e-01 5.213767653645562383e-03 4.475169480357120699e-01 9.593245219293577986e-01 6.994304536782350867e-01 7.063863152769014331e-01 8.381620829497931080e-01 2.760441799736219615e-01 3.755200946645842475e-01 3.627729621737311172e-01 9.518310606719182498e-01 3.577273025276901386e-01 3.991159901003488164e-01 4.187060513068554535e-01 7.422605403637314581e-01 6.697944269780702342e-01 6.020599837037767799e-01 1.571185850817550245e-01 7.519860911185742847e-01 6.635775704496444938e-01 9.487848173531471252e-01 7.900030232338028924e-01 4.143783957270819052e-01 5.618429740858444932e-01 3.737804619062014000e-01 6.179941187802344693e-01 6.553638605616040058e-01 1.009709416658691739e-01 4.935037098582963910e-01 5.485489972455533936e-01 1.024147956480448984e-01 1.195764707555347917e-01 4.910516327810896531e-01 3.551185778630389089e-01 3.857601645798814927e-01 2.074975219600547760e-01 2.084038664460790002e-01 5.268616653491025037e-01 6.948014877618717833e-01 6.179744044618615817e-01 7.063658085955483168e-01 7.925757227686872630e-01 6.199016959584816577e-01 1.163676037434490107e-01 7.425752264755586252e-01 5.403115665133301215e-01 2.546191951391015840e-01 6.961300925345208501e-01 4.003013072125547467e-01 5.906120962720950995e-02 5.879915846330325824e-01 1.213602408288709800e-01 3.801780679842765576e-01 1.731477742402802722e-01 4.624568816669496485e-01 3.304453744619206823e-01 8.810445876116090869e-02
|
||||
5.140190515373614932e-01 1.419225260054487459e-01 7.777845802285945354e-01 3.327562899409282071e-01 8.916875699762913943e-01 7.212852862736146564e-01 5.727327199433507321e-01 5.897820225918504189e-01 7.318614954542906892e-01 7.393985144455500480e-01 4.531340740296823100e-01 9.903061584426188224e-01 4.213350938331624773e-01 4.542342471963995987e-01 9.788786426453045530e-01 1.881707000343846303e-02 8.005433413647761176e-01 1.523502822273363755e-01 5.630164732287495921e-01 5.946603842470724599e-01 1.225547698678740582e-01 1.531136594724622491e-01 8.157973612638946825e-02 2.752046015644330490e-01 6.809045821946161370e-01 6.455289724528190387e-01 3.830356726830793646e-01 4.446144649678575034e-01 4.969038423960672191e-01 5.497873820641221432e-01 9.471879627821714331e-01 5.933046675329255448e-01 4.099233758501530378e-02 5.790409810134594659e-01 9.546095885251496549e-01 2.608616052375664074e-01 6.910160339170060562e-01 1.293709850476291168e-01 6.407264616302255078e-03 6.186037089828009261e-01 5.537861302543241049e-01 3.527421038298221845e-01 8.033232052121624944e-01 8.128114152830284711e-01 8.319982582278713235e-01 5.939566376046836460e-01 2.291090283499520597e-01 5.438101817725821130e-01 6.881146379117278888e-01 2.421968586304659166e-01 5.874047918543783275e-01 6.210102709484541794e-01 7.041387566450251212e-01 6.959223476278774134e-01 9.133877300988062498e-01 9.230647706207778525e-01 6.856884219815310155e-01 6.997988808693775820e-01 6.177944932528769417e-01 5.512902545683161515e-01 5.818280341729102911e-01 6.538267999985679646e-01 6.946673485935980219e-01 4.817938258357623571e-02 9.352008817207906333e-01 4.774162142215661042e-01 5.768063588692976529e-01 4.589648891483899540e-02 7.998946815651652997e-01 4.434260476954369201e-01 9.850053510925722566e-01 6.648626681529369309e-01 4.606293826856903140e-01 3.309042418210563774e-01 1.438901922508034614e-01 7.986559119276418484e-01 7.037818421334554042e-01 3.605119534240813772e-01 3.785959549258922641e-01 9.562491516841659100e-01 4.997955143590974147e-01 1.029540300938682762e-01 1.819017177001992502e-01 3.665425750262368831e-01 1.688063588370778412e-01 7.030735208313992901e-01 8.922375654244527610e-01 1.055706412056253152e-01 2.664739907746691561e-01 9.906029568647586325e-01 6.043845090140997911e-03 3.495786295043534775e-01 5.989441999519146131e-01 6.776147193866479679e-01 7.012991789852640601e-01 1.825838783477321536e-01 7.612293578749116385e-01 1.564769891240175292e-01 2.762157292905387251e-01 7.641900040015234818e-01
|
||||
4.746013333880729768e-01 7.609202966712714788e-01 2.537820854162747830e-01 1.709362234877408460e-01 1.886635378734374813e-01 2.439567014093724229e-02 7.640304718272151741e-01 3.483216170435471382e-01 7.744289278738043514e-01 4.190437573644867353e-01 5.319091476394965934e-02 8.580130976087452233e-01 6.259446446786639529e-01 8.793213970773006150e-01 2.441023074890465994e-01 7.753405549489799098e-01 8.760187573193888300e-01 5.946480724009295393e-02 2.873093046571124631e-01 8.710837851946537924e-01 9.103181731924696596e-01 6.534637257615111272e-01 4.128420398577182793e-01 4.905858108576378607e-01 6.178275806701372108e-02 6.368043900016381320e-01 2.865296941219959148e-01 6.371773028539067241e-01 4.924322796636745325e-01 1.709313290387282080e-01 1.856892551689268700e-01 9.592782603102242289e-01 5.402593764193130976e-02 7.287312244390512506e-01 5.679467572000697073e-01 6.255587794305905724e-02 3.069660218141317953e-01 1.089960430557104232e-01 5.550748245336984965e-01 2.555948886689661803e-01 4.140925514039996980e-01 1.180376445052062628e-01 8.832322629884041820e-01 7.784546946701487169e-02 3.177678935473182698e-01 6.681804863429485764e-02 7.047099396645268854e-01 4.133897376851528582e-01 5.600656990480865627e-01 3.883995683475501837e-01 4.459430113152932362e-01 4.214077227574740681e-01 4.763369230200156235e-01 2.701480661168440545e-01 4.296286564389811824e-01 9.601402258758658936e-01 6.326999441846863359e-01 2.442086919688498670e-01 8.407708423957936938e-01 3.626867985638081437e-01 3.641441713291436733e-01 7.932397565989488530e-01 8.902073520619256941e-01 1.929173010337000838e-01 7.309376779324568973e-01 7.305852858337777977e-01 6.510197444582447313e-01 9.512661608643838695e-01 8.461467164366111016e-01 9.245490147941206605e-01 2.658844813385705663e-01 9.538758859344749208e-01 8.215517204998477041e-01 8.217795540390903097e-01 7.569662091300560780e-01 6.262685322871274218e-01 5.597770510574888725e-01 8.155720175123675197e-01 8.545688745180864965e-01 8.986051518529034610e-01 2.477911506572628708e-01 8.462580108996445860e-01 6.065941220995090255e-01 6.500490804973033665e-01 1.120463882674053169e-01 9.299049132942927010e-02 1.388364074229719858e-02 5.901199124540731367e-01 2.795110110544174464e-02 1.644097083463245124e-01 5.341029647603202646e-01 5.276816677181681570e-01 5.439849107754858304e-01 5.371677986392331405e-02 4.515163125788429488e-01 5.036243367087100964e-01 5.721818679625961801e-01 5.271368612400184617e-03 7.720961020546839304e-01 9.015383457479009266e-01
|
||||
8.301526916287945701e-01 8.704609696144033348e-01 2.955689129581380303e-01 1.762209253489944727e-01 2.698172933050072553e-01 1.138095349991521399e-01 4.092588531860634760e-01 8.202978121681584467e-01 2.822241377079557356e-01 6.117376205659387223e-01 7.169923068016897938e-01 9.310256256264415331e-02 3.989664052931106708e-01 1.651874953308862803e-02 7.890202597932294282e-02 9.068686774810821305e-01 5.203866694486933842e-01 4.297748572844445336e-01 5.208786995443430712e-01 2.163224881365530816e-01 7.274307306357226111e-01 1.675784956180090823e-01 5.969822786565782691e-01 8.959750832846602453e-02 1.253794151891943764e-01 5.352628522116801291e-01 2.562706125890066300e-01 6.030433202137867044e-01 8.330717547440393833e-01 9.603613683422040914e-02 7.569714244468559450e-01 3.184801677796517128e-01 1.667069341164499896e-01 3.132470247801235619e-01 6.417752836394801097e-01 6.433909425912354152e-02 4.056860213146201710e-01 3.166772891331335327e-01 9.574059746098845247e-01 1.492907964460536974e-01 8.311513764927496162e-01 6.652928354977717396e-01 2.396804722185036374e-01 5.812361618600220270e-01 9.724228681350225445e-01 2.853983236378453414e-01 5.337719354896472979e-01 6.779446197712412081e-01 5.485102006140557540e-01 9.010109155962182648e-01 5.724439967467525037e-01 5.965540527411405947e-01 1.598667990086183321e-01 1.363934512727023041e-01 5.327536522697270405e-01 4.123866715061276222e-01 4.617251396918636841e-01 6.935944951381239898e-01 4.300337419593377453e-01 1.892407993760835128e-01 1.666936825594794724e-01 4.625634184864588772e-01 4.805197636774838355e-02 7.003542850133466224e-01 2.130226006716084974e-03 8.678863343041013367e-01 4.874478520451258623e-01 7.043560228741558848e-01 6.317719270475393722e-01 5.372392256296196766e-01 2.982649812986511995e-01 1.272558612133412037e-01 2.467337555730741983e-01 6.546893200021091097e-01 6.291921159383098150e-01 8.505920470407707379e-01 4.046520490181828578e-01 3.875732096593392795e-01 8.551517214319142024e-01 4.152602284179877090e-01 9.587779137989138611e-01 6.977437468944928112e-01 3.240620775541913634e-02 4.025873770391376061e-01 5.485549335619134270e-01 7.146066156157020455e-01 3.012702534568838519e-01 3.526414480395153594e-01 3.309707144485515284e-01 4.315687014460974913e-01 6.641934530697197747e-01 2.172886798352815507e-01 4.807480925564590057e-01 5.006795397998469177e-01 5.818100901154411586e-01 2.107716091585690732e-01 6.606606051140029301e-01 9.317629042790995797e-01 9.840326342340242061e-01 5.752000964817773898e-01
|
||||
9.843444595454536872e-01 1.339523968066913540e-02 6.082172659959028671e-03 7.828244785439336662e-01 5.069653703872761819e-01 2.804896494365415327e-01 2.112385836660957139e-02 6.016479440778699228e-02 7.457477935084961818e-01 3.445503949245375397e-01 4.063494277166557200e-01 8.630275274433116817e-01 5.948396018456146850e-01 1.400867933474212457e-01 6.997522422654076646e-01 5.766519767930851081e-01 5.419976500582250889e-01 7.474121304089603735e-01 2.951600193008566686e-01 7.980170422334191827e-01 1.829036799578199757e-01 6.317636496261300749e-01 2.812612231140887431e-02 5.464747656105657381e-01 3.909873503320924204e-01 4.940850205957293406e-01 8.157850130814222611e-01 5.111092739445756150e-01 9.336823640685747439e-01 7.157105167170837445e-01 7.778989455994214097e-01 1.398722535910470466e-01 5.642653936300449091e-01 3.218717164845980028e-01 9.717427501967056402e-01 3.665791984428700134e-01 3.874321311211759156e-02 9.437600858738082188e-02 5.679526822961932231e-01 5.141385991358327079e-01 7.497840799582222715e-02 5.736515309094968318e-01 1.928132849879083954e-01 6.924244068001785823e-01 1.748389677952593146e-01 4.469577663506929532e-01 1.738527450963387455e-01 7.195287763517190793e-01 8.861150811892871682e-01 1.058443750714600506e-01 1.941789362229970894e-01 9.188374820700584422e-02 7.706736301449305104e-01 6.718642548609364828e-01 5.981029087121966237e-01 4.832880127232569434e-01 3.073688779938709148e-01 5.156312334804930009e-01 1.777418420119527553e-01 8.885462205165685079e-01 4.486254681289014723e-02 1.345398129556140132e-01 7.467627984379916484e-01 4.384565546058830643e-01 7.217750080760946263e-01 3.949550352625393890e-01 4.307950907642028593e-01 6.087680934849041270e-01 3.294516167246774874e-01 1.316682090209408962e-01 1.824857738754404046e-01 5.332379826483617524e-01 3.567136182864261151e-02 1.976220743086236631e-01 5.849349042822560296e-01 1.133174406357483344e-01 7.711522754393199675e-01 8.557306786807005183e-01 3.038353471344266143e-01 4.422747047768413875e-01 2.537160404215925702e-01 2.372714099723788328e-01 5.906462765375103396e-01 4.849909323133470007e-01 2.692576210504484813e-01 4.540849506602829821e-01 9.664935719107857759e-01 2.044371576459835804e-01 4.505417469690352616e-01 7.110722322201217249e-01 3.051357995214963870e-01 8.978937034341526457e-01 6.090501112506481185e-01 6.595415779178889215e-01 6.565426836745864581e-01 6.565608489824376059e-01 2.679102664248229626e-01 3.819533138204529443e-01 6.609794961162380744e-01 2.289558446859882856e-01
|
||||
9.274935298374649140e-01 1.174096651033715855e-01 3.030761852629033637e-01 1.605508209527917174e-01 9.601854834873225775e-01 4.341959513718630648e-01 6.320768160802121560e-01 4.213429090614078110e-01 3.695553969042019160e-01 5.965457437116089556e-01 3.520335041155040479e-01 7.702703502247409961e-01 8.571112772962534709e-01 7.904077282532658844e-01 2.247339318352784554e-01 6.823720204503556097e-01 5.883435710582129996e-02 6.786037033312407596e-01 9.721137137641507886e-01 2.042576970668320557e-01 8.394085754806240862e-01 7.433082729552867862e-01 4.072614159870893147e-01 7.451483066617257123e-01 1.699472962789440045e-01 1.753052015584344314e-01 2.255269204788400428e-01 7.794755643807432799e-01 8.407732260470973662e-01 9.301182862857163558e-01 3.701995309382508648e-01 4.481909027604019657e-01 1.261889085033987001e-01 5.600591735875248833e-01 8.244692493969552061e-01 8.969188061645969601e-01 4.802217973423368313e-01 3.556164122713412201e-02 3.393317823164623270e-01 2.491242957582864292e-01 9.863253789366602797e-01 5.585415885291432625e-01 3.702350606362231344e-01 6.766101432620400535e-01 6.999259389475386284e-01 6.676108316872160220e-01 7.870681827507105544e-01 8.746765411259082024e-01 9.125268371282718727e-01 6.638849997061806452e-01 3.253268113800632522e-01 7.968625619248901337e-01 7.584122525443606211e-01 9.028886850768532701e-01 5.381622293189292083e-02 8.097562873320752752e-01 7.092942088208666895e-01 9.915538877968065323e-01 4.319294903327922652e-01 4.307127933969153721e-01 2.768507739641907772e-01 8.076253078288621046e-01 2.569233696442670967e-01 7.595893829724666979e-01 5.768081727897018673e-01 2.537536777625452045e-01 8.874419624636734616e-01 5.091705681832693342e-01 4.811826624992353585e-01 2.794462461940371290e-01 3.846927898276129021e-01 5.129562951959991679e-01 8.515004062224775794e-01 7.103144978683579858e-01 9.526388607201888847e-01 2.367905569592337889e-01 9.137336039323161740e-01 5.722969943101696710e-02 2.019723935481291255e-01 3.098764675203513619e-02 1.121146613918624357e-01 9.937693067724532314e-01 8.476717958861412772e-02 2.059652110343795917e-01 2.139791918759540446e-01 9.137860316709250919e-01 9.530862653366889425e-03 2.027843281683039400e-03 2.506229951837134484e-01 6.244523528392044165e-01 5.523937894075592325e-01 3.712168074031840792e-01 4.218847794299319665e-01 4.827576239387890711e-01 5.244634168840578425e-01 5.182241092381567604e-01 3.308639956263292881e-03 9.370528021570383448e-01 4.694554875029453012e-01 4.950447554541728135e-01
|
||||
1.525818111800841814e-01 4.708012184002630107e-02 3.899035965341954846e-01 3.928304521031263929e-01 5.602286661727436945e-01 9.738256658043862313e-01 9.404465779766183475e-01 5.750862754958349088e-01 9.547546956257608741e-01 2.750275291553152535e-01 1.682773435862793265e-01 5.865928471016079726e-04 8.543378154943809255e-01 3.547649971465383079e-01 5.058056647397523031e-01 9.116332486700751137e-02 7.534666421106954726e-01 3.082429494433007733e-01 4.527145111847344916e-01 5.456680635225539255e-01 2.504131242494785914e-01 2.509240770568589296e-01 3.949236999582302898e-01 8.782959620323271821e-03 2.474641132111736752e-01 8.229417958971670943e-01 3.444225768479134420e-01 4.000027489436257522e-01 4.247741954177396417e-01 2.497745404169693373e-02 4.325768602588443423e-01 7.336592463477830117e-01 7.667663267650381975e-02 4.179022553581047683e-01 8.745172741480690126e-01 9.417705509525042817e-02 2.807522782799587446e-01 8.212710101351362590e-01 2.211181944001613386e-01 4.319929503523877168e-01 1.858636923768219873e-02 6.737037795085246694e-01 7.997187114913413275e-01 2.976552505976116647e-01 3.272347030789168887e-01 5.550935453236346406e-01 9.224109746648162522e-01 3.192827922106745708e-01 3.500098324549234530e-01 7.821988386980260888e-01 4.478417135239194380e-01 1.580956175222456572e-01 5.300807813550156844e-01 5.806154798468634581e-01 9.456842911054151868e-01 7.688127895655872956e-01 8.456527833650537840e-01 1.784229089865225770e-01 8.114517450321339087e-01 8.062506298824222428e-01 2.113482500442499523e-01 2.629226789210241666e-01 6.478686221690072022e-01 6.006672861605766300e-02 7.013679843242253131e-01 8.784753961212666828e-01 3.487138165323044880e-02 4.928426758517070461e-01 5.976224683315064512e-01 7.629063997052759616e-01 2.761721278953045422e-01 7.240740503283805696e-01 6.131065729985127888e-01 1.630885615792579957e-01 8.473783868551159060e-01 8.347614542399306448e-02 8.137265626844719657e-01 8.512508664918938539e-01 2.777097816703766320e-01 1.729154355214796990e-01 2.203382750835449766e-01 6.134780912629795857e-01 3.524352564238901753e-01 5.370314860129862256e-01 8.013986113284543578e-02 2.555842138998117852e-01 6.553915758947851389e-01 9.679125599178584061e-01 2.549566319678178150e-01 4.008180804370896633e-01 9.145789951670967310e-01 2.787926039163850511e-01 8.599455912576436933e-02 9.637558000691170967e-02 8.274101203974880692e-01 1.803747268179315411e-01 2.175735407836230095e-01 7.825994939720237742e-01 7.928519890958951599e-02 8.707949373106749213e-01
|
||||
6.398420210047787160e-01 5.739624494012524059e-01 3.359672805578653998e-01 1.130399363175038641e-02 3.349439685346782269e-01 2.315484030880912147e-01 4.575228302577399875e-01 1.149494135594463229e-01 2.888244352925943836e-01 3.625470995156252485e-01 3.795973190611611203e-01 6.567047810450010736e-01 1.484039742710284715e-01 9.273251916560719676e-01 4.334256728976307871e-01 6.734771102219323513e-01 9.125080197222198430e-01 4.974393931097168542e-01 8.301481563280355136e-01 4.526450714147856047e-01 2.414236092573898151e-01 8.070129698367667359e-02 7.260400697427102923e-01 1.396509691839398215e-02 2.496450588391967429e-01 4.335741205447194435e-01 3.089314419194891803e-01 9.543503534526003307e-01 5.457977547458532364e-01 3.139663643587058406e-01 5.034762326753475792e-01 4.756788330475764104e-01 6.849334942793482428e-01 3.880666613022351052e-01 6.483446580176778218e-01 5.217503801099343530e-01 5.371145824070304720e-01 3.121260159429154468e-01 8.314121854062171968e-01 4.538695969561833410e-01 8.598896961203845724e-01 9.961993522734106099e-01 8.865717795946430613e-01 7.828987966783660379e-01 3.412415531643435695e-01 7.421170530151157685e-01 4.484104178639959359e-01 6.793217012099640462e-01 3.756179958191659951e-01 7.821287098222597933e-01 6.227726265188193722e-02 8.552983413221663112e-01 4.824668768009222619e-01 2.241531065858231031e-01 4.939536577599041856e-01 5.129566641128722182e-01 1.057984177672518511e-01 9.541452507300716146e-01 3.396646181755047511e-01 7.452588103611947901e-01 5.315559265659929311e-01 5.493475179850665358e-01 5.214824278139198466e-01 5.150075718147916204e-01 1.196075368500321146e-01 9.035665331176232495e-01 7.522653903639873185e-01 6.638708679914825384e-01 5.584174553800479446e-01 5.015819402508836511e-01 5.507698483308445248e-01 5.978677577011723976e-01 8.450418028759657529e-01 3.266677322748618995e-01 1.321610045897971819e-01 2.394354042746985600e-01 2.723972163557076831e-01 5.523301747352814539e-01 5.518043850608547185e-01 5.283968096837132755e-02 8.192733312104071297e-01 2.277106024970321219e-02 1.414998099027269252e-01 6.517281615256080851e-01 1.811694734825117781e-01 9.472370614713256920e-01 5.454497319021770485e-01 1.364119913158231556e-01 8.446142008509562871e-01 7.671725984742419069e-01 2.461161648406858804e-01 1.421724627107351369e-01 6.290652581179481118e-01 7.094144689448004248e-01 4.419656923472803367e-02 6.614741876652251440e-01 8.712193265403500586e-02 4.734931280852430202e-01 5.382037050480286133e-01 1.396459758005891283e-01
|
||||
9.709329844415439670e-01 8.998575745276288229e-01 9.151313462895852568e-01 6.920489275523904471e-01 2.892231405199537919e-01 6.750679746268205550e-01 5.515642485826798280e-01 1.065253097812824956e-01 2.957026803465776510e-01 8.937347659632134400e-01 9.800016515925590310e-01 7.745900896182087436e-01 1.570977683146633774e-01 1.482028765821026273e-01 2.111147779712029271e-01 9.683759902485811200e-01 6.550951580826911425e-01 8.728324682592377703e-01 5.044803166579884257e-01 8.285704754811143991e-01 1.693574499337324735e-02 6.032669995180495182e-02 1.687026879086964692e-01 7.701554026145973619e-01 1.429888016593102718e-01 5.881172815379975827e-02 9.704206919487038396e-01 4.450807650730836951e-01 1.597445784258376689e-01 9.849229394397314152e-01 4.220083573536804744e-01 9.357693600374825671e-01 2.313199262338369033e-01 4.556443403861323294e-01 2.590791012828855822e-01 8.438664994487065085e-01 5.519045677502344427e-01 4.702170125676508050e-01 6.814723205638187897e-01 7.418295483665861001e-01 3.684921032028853904e-01 1.501895844844561845e-01 4.214513377519605308e-01 8.600279963652578408e-01 6.625616611189292238e-01 5.200151456470966105e-01 7.881072743086801058e-01 2.771703241081423519e-01 9.034135930616548071e-01 5.848441705791300738e-01 8.341698181274771473e-01 1.966638677318299777e-01 7.059747894371543042e-01 7.013854316067694716e-01 1.828430942760242983e-01 4.745548949934464966e-01 6.306422394641082452e-01 7.760751707194470939e-01 9.813187212598396547e-01 2.293595795266353266e-01 7.749261876107090830e-01 2.384106107787011819e-01 9.721209688979495223e-01 2.715569353686980714e-01 2.915573577694993146e-01 3.579601509630966349e-01 3.085697512342830962e-01 4.070219981627976047e-01 1.989632411372218579e-01 7.330003339460906542e-01 5.397259604481572381e-01 6.931009942216573849e-01 1.385457419653816080e-01 1.140339999976658358e-01 3.980752590866034613e-01 9.471822621683767540e-01 5.476643721405823895e-01 6.824131903515884279e-02 5.844099130744569992e-01 2.346881692012994236e-01 9.436439228519653000e-01 4.855518260479008141e-02 8.157036123302675579e-01 1.169761256455048581e-01 5.532962903488753970e-01 1.100965596251435308e-01 9.789490602992410029e-01 8.433487462016989733e-01 1.272410782852178013e-01 2.885715258680641160e-01 7.990943955388217779e-01 1.565305358979097727e-01 9.160846960406943129e-02 8.521842244411678147e-01 4.474243106736998099e-01 3.843945818845087015e-01 4.710645906071458944e-01 2.398348154123419729e-01 6.435351435258193087e-01 7.656897921129046658e-01
|
||||
4.894328120406804539e-01 7.881019629214267574e-01 6.974585354155089512e-01 2.023858939857701156e-01 1.660984914264745926e-01 4.854517801734643534e-01 2.789848572630315715e-01 2.311636522410289718e-01 9.821076233980715608e-01 1.220641257408076052e-01 2.614036146663852866e-01 7.657560715165320220e-01 3.968360577545695378e-01 4.566023622802184434e-02 1.049701948619241598e-02 9.281162949127452766e-01 4.490137965769909201e-01 2.095846458383606725e-01 9.195504656719085679e-01 9.683515436855471004e-01 9.800174878114910060e-01 5.517610861380117804e-01 6.711570559348770670e-01 5.125258050287277989e-01 2.105581493613526423e-01 8.281813206544574868e-01 4.964783994807770995e-01 7.284974208756571645e-01 1.320629592816270348e-01 6.652194518096135045e-01 9.430156297917950958e-01 7.477263137894260003e-01 2.054087806450300979e-01 4.248209124837907247e-01 7.657518666018259257e-02 1.031614100713345028e-01 4.122242287567021712e-01 4.919658859336810686e-01 3.752650167259050651e-01 4.175771429986683270e-01 6.131376293448997927e-01 5.463797405837259591e-01 3.119918548921774004e-01 6.331762507678504459e-01 5.484632429281035559e-01 6.815448032785871302e-01 8.065695507425107991e-02 8.720129122297424207e-01 8.318188557125294480e-03 2.199323537180564170e-02 8.933872719887463454e-01 1.953120287872067706e-02 2.478721941404590234e-01 5.994061179859005994e-01 6.588362611693047155e-01 6.332808851020984564e-01 3.823849348043323326e-01 5.111091324899629251e-01 7.034808459110406531e-01 4.347681568463539481e-01 4.316973576672314961e-01 9.620411080123215664e-01 6.247837467655984467e-01 8.196961678222113301e-01 5.574601810887074294e-01 8.800635018469276094e-01 8.772255241161972528e-01 5.075275933138404527e-01 8.022583187266906224e-01 2.320670802521890286e-01 1.165626629103270195e-01 4.623759662685936744e-01 7.938327000737943617e-02 7.986374689793115378e-01 6.728842751465858862e-01 8.133909095059230765e-01 1.202639390769081329e-01 1.052937257108800262e-01 8.717600467040409473e-02 2.163819956545051104e-01 6.596483385763984852e-01 1.202843170392309258e-02 1.538789195854695091e-01 3.120247727263308901e-01 3.408168327248596308e-01 3.241861797851740556e-01 3.637074533655986208e-01 1.533669345890729119e-01 4.455921334699539660e-01 5.619140093874478437e-01 1.881731359879111887e-01 9.416670800570559052e-01 1.740018593664415247e-01 7.030242331869680505e-01 5.922055553954849172e-01 9.326211623391688077e-01 6.608322881013140027e-01 7.009721551241574478e-01 1.079126054675583202e-01 6.158176671761947940e-01
|
||||
5.185079639625639336e-01 9.613742991518259284e-01 5.555312825626229634e-01 2.647628827924735084e-01 6.003697207460141350e-01 5.392112376769145898e-01 6.781186965667050925e-01 9.908971748181496508e-01 4.124155872095397468e-01 9.814941401724619485e-02 2.684237785531295994e-02 1.774652505962848181e-01 1.707589529595294753e-01 4.640932098465534450e-01 2.882179883914587348e-01 7.276822905806898945e-01 6.145789546745269449e-01 1.100959863917608805e-01 6.798859723042820491e-01 9.096984032948918220e-01 3.971368455178179158e-01 2.959494950971321980e-01 3.742088799298171065e-02 1.960739526210202310e-01 7.536102695342027369e-01 6.680915510628401277e-01 4.136507204312135366e-01 3.613996339406737590e-01 3.605422038261204554e-01 7.098503555159476619e-01 8.093719147087541366e-01 6.344097009128880638e-01 3.990082448083617228e-01 2.805918009906902544e-01 7.078488167363675698e-01 9.969917259866583059e-01 9.442054998992396309e-01 1.329075240769165278e-01 6.810681350588387861e-02 8.503491437913293094e-01 8.347117439165431252e-01 2.381858201903953587e-01 7.884260706938626129e-01 7.109907917419661105e-01 6.390916681983604963e-02 6.174365227062991179e-01 5.085733343630816083e-01 1.716846139694149231e-01 9.065664924270055991e-02 5.625330757196970177e-01 3.539663480209681579e-01 8.937139525947165319e-01 3.981380511900556307e-02 7.403597927449541150e-01 3.803872284089604427e-02 6.729519695709765825e-01 5.306080908840085097e-01 2.091237680402112664e-01 5.902903662907804661e-01 2.094778612095482551e-01 7.323447855684165342e-01 3.644574495843493356e-01 2.006215478057034041e-01 3.737617545555030896e-01 5.253471759602216240e-01 4.287889547869583318e-01 7.086098806190446187e-01 4.510792335515292351e-01 6.383187180169215269e-01 8.779355722397681472e-01 4.221338898667141848e-01 6.375840144651815367e-01 8.683057298299173832e-01 6.093730356952498095e-01 9.297141161056151626e-01 7.770838342807246946e-01 6.549661287008456956e-02 2.835060738158660110e-01 4.474138867374952699e-01 8.530336387421445510e-01 3.160209657891883683e-01 8.301538680518486535e-01 6.646903097549101691e-01 7.187130118106234145e-01 1.651862041735395747e-01 9.578252676762609719e-01 6.490273812885494209e-02 9.777273484666341163e-01 8.930729829254262508e-01 9.851054752118463265e-01 4.094323402286751401e-01 1.139176240124337713e-01 7.612865863899589414e-01 2.266379302491570158e-01 6.998882496157835531e-01 9.945043379099228753e-01 7.111578056749194854e-01 7.806190603886183910e-01 3.410170920712443099e-01 9.446084168886822452e-01
|
||||
5.015172758330755931e-01 5.569527971282052237e-01 1.122406928736449094e-01 8.960352822124777461e-01 6.049568585854003810e-02 1.202196001338627918e-01 1.870314295763603196e-01 9.017590029396971296e-01 3.597904628087450485e-01 2.130941062746317671e-01 2.556281834629479111e-01 5.123669364829196438e-01 4.754061129282013409e-01 9.764470380372083369e-01 8.038663983900646848e-01 6.960491266420890666e-01 2.940135977911654264e-01 2.857282759910040326e-03 4.599343225832352999e-02 5.597554495210212977e-01 7.445266674304001908e-01 3.387528030535971180e-01 6.429542922125383031e-01 2.123331785532429627e-01 5.302332654117811739e-01 7.262555377662539557e-01 3.982425859900724507e-01 3.243388301740235402e-01 6.191064123738921898e-01 8.988047781373914580e-01 7.819700328765150088e-01 7.664269102804815992e-01 6.734095355422575757e-03 2.904762329148526945e-01 5.097537644843168625e-01 9.524734606001823423e-01 4.812869576591960463e-01 6.236868013640477493e-01 1.459170943214320726e-01 9.874505139403206844e-01 7.561708982837871407e-01 3.798591332432484924e-01 6.056633451375117438e-01 7.935708170258731764e-01 1.458141583518740569e-01 7.082511296391911237e-01 1.098798009731616343e-02 3.655618484905173160e-01 9.551862303858617009e-01 8.148959351152762487e-02 4.739306219219985294e-02 7.963357515359494876e-01 6.208332695202813944e-01 3.884182264923189409e-01 4.589167647950288531e-01 6.496652974138312775e-01 2.467528128074852889e-01 5.309593064844935206e-01 5.364606369543487574e-01 2.421352989851309756e-01 3.776834556696828660e-02 1.564861233558080267e-01 5.197231021782636740e-01 8.725375120634637494e-01 2.441225493455024820e-01 2.320363366041028330e-01 5.026358683423555185e-01 7.035766000474735771e-01 8.347805591467084563e-01 2.303229841813967393e-01 6.908373419683054850e-01 2.646662377366995056e-01 1.259467197942290007e-01 9.372770922994989595e-01 6.674216272867254940e-01 1.027944489143072238e-01 5.686267290346079806e-01 3.948222804451942958e-01 4.689706944496729868e-01 4.446117700449114807e-02 6.817992275557515081e-01 9.084821829413957106e-01 9.184021015315092518e-01 3.045815734169987632e-01 2.204958624923980537e-03 7.542672057172502553e-01 9.460844786545006269e-01 3.373139094575949848e-02 9.059565314915285494e-01 9.938525461318854504e-01 2.542072661725306437e-01 9.685734112479216229e-02 8.223629541824816203e-01 1.057429056898460118e-01 8.080679390260248063e-01 5.823014244609205914e-01 6.413551528031806725e-01 1.787341975438894170e-01 1.250471413912357388e-01 8.390281297596062782e-01
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1 @@
|
|||
4.0515260e+00 4.2121458e+00 3.7357405e+00 4.2313317e+00 3.9136009e+00 4.3843298e+00 3.9811426e+00 4.3624182e+00 4.0642508e+00 4.2105933e+00 4.0747226e+00 3.9068586e+00 4.1637004e+00 4.4303203e+00 4.1841564e+00 4.1063279e+00 4.1862390e+00 4.0719925e+00 4.2227579e+00 4.3173531e+00 3.8811067e+00 3.7577567e+00 4.0623722e+00 3.9882453e+00 4.0432671e+00 3.9085109e+00 4.0283414e+00 4.0846110e+00 3.6459235e+00 3.9544001e+00 4.1134244e+00 4.1805752e+00 3.5121011e+00 4.2747789e+00 4.1048323e+00 3.9269426e+00 3.8932032e+00 3.8281172e+00 3.7288430e+00 4.0863477e+00 4.1527428e+00 4.1646409e+00 4.2027433e+00 3.8441594e+00 4.8419117e+00 4.2455384e+00 3.7622220e+00 4.3967923e+00 4.4663183e+00 4.0435853e+00 4.0421692e+00 4.3124625e+00 4.6499961e+00 4.5595743e+00 3.4230430e+00 4.2612266e+00 3.5676603e+00 4.0866580e+00 4.2307103e+00 3.8521940e+00 3.9951183e+00 3.1022409e+00 3.7290193e+00 4.1931517e+00 4.1127027e+00 3.6633651e+00 4.0235815e+00 3.9729858e+00 4.1980132e+00 4.1579993e+00 3.9948955e+00 3.9081966e+00 3.9031152e+00 3.5069036e+00 4.0015727e+00 3.6763496e+00 3.6614339e+00 3.6227109e+00 3.7357992e+00 4.0170026e+00 3.5216829e+00 3.9322227e+00 3.9094621e+00 4.0170286e+00 4.3264246e+00 4.3435483e+00 4.0788635e+00 4.4761765e+00 3.8468186e+00 4.1490333e+00 4.2800007e+00 4.2260191e+00 4.3031858e+00 4.1897413e+00 4.0530244e+00 3.5893641e+00 4.2186615e+00 3.7979503e+00 4.0915473e+00 4.1343073e+00 4.5063851e+00 3.6394889e+00 4.2508448e+00 3.7160826e+00 4.0105262e+00 4.1578269e+00 4.0290590e+00 3.6971819e+00 3.9414087e+00 4.2522313e+00 4.4091714e+00 4.1542292e+00 3.9594691e+00 4.0923600e+00 4.0855497e+00 3.8253075e+00 4.3034717e+00 4.0976731e+00 4.1316523e+00 4.0872717e+00 4.2643353e+00 3.8887280e+00 3.9411273e+00 3.8848001e+00 4.3481996e+00 3.8716733e+00 3.9084684e+00 3.7546361e+00 3.9354816e+00 3.8293694e+00 3.7568515e+00 3.7184961e+00 3.8404278e+00 4.2570811e+00 4.1423777e+00 4.0291411e+00 4.2094682e+00 3.6127418e+00 4.0459839e+00 3.7737985e+00 3.7647653e+00 3.9762006e+00 3.8999512e+00 3.8509090e+00 3.8975941e+00 3.8432839e+00 4.2109046e+00 4.1339124e+00 3.5898873e+00 4.0794519e+00 4.3504966e+00 3.8862612e+00 3.8332931e+00 4.2190310e+00 4.1366595e+00 3.7220268e+00 4.1250795e+00 3.3169452e+00 4.0757181e+00 3.6487114e+00 3.9513724e+00 4.0735549e+00 3.9137880e+00 3.9656942e+00 3.7724953e+00 4.0505153e+00 3.9062302e+00 4.5671852e+00 3.7542175e+00 4.3731708e+00 3.6733907e+00 4.4667545e+00 4.1004635e+00 4.0530038e+00 4.0346958e+00 4.2145752e+00 4.4298637e+00 4.2982360e+00 4.0878239e+00 4.4061563e+00 4.2115971e+00 3.8263277e+00 3.8603258e+00 3.8572375e+00 4.1051910e+00 4.3787786e+00 4.5309659e+00 4.0047055e+00 4.1308854e+00 3.6283561e+00
|
||||
|
|
@ -0,0 +1 @@
|
|||
4.6000000e-01 4.3000000e-01 4.3000000e-01 5.4000000e-01 4.1000000e-01 5.3000000e-01 4.3000000e-01 5.9000000e-01 4.8000000e-01 4.7000000e-01 4.6000000e-01 4.9000000e-01 4.5000000e-01 5.5000000e-01 5.3000000e-01 4.5000000e-01 4.8000000e-01 4.7000000e-01 4.8000000e-01 5.1000000e-01 4.9000000e-01 4.4000000e-01 4.9000000e-01 4.7000000e-01 4.9000000e-01 4.7000000e-01 5.2000000e-01 4.7000000e-01 4.2000000e-01 4.9000000e-01 4.7000000e-01 5.5000000e-01 3.9000000e-01 5.5000000e-01 4.6000000e-01 4.5000000e-01 4.0000000e-01 4.8000000e-01 4.5000000e-01 4.8000000e-01 4.8000000e-01 5.0000000e-01 4.8000000e-01 4.5000000e-01 6.4000000e-01 5.7000000e-01 4.6000000e-01 5.4000000e-01 5.6000000e-01 4.8000000e-01 4.8000000e-01 5.3000000e-01 5.4000000e-01 5.3000000e-01 4.5000000e-01 5.8000000e-01 4.2000000e-01 5.4000000e-01 6.0000000e-01 5.1000000e-01 4.6000000e-01 4.1000000e-01 4.4000000e-01 5.6000000e-01 5.4000000e-01 4.8000000e-01 4.8000000e-01 5.1000000e-01 5.2000000e-01 5.5000000e-01 4.5000000e-01 4.3000000e-01 4.7000000e-01 4.7000000e-01 5.6000000e-01 4.9000000e-01 4.8000000e-01 4.5000000e-01 4.9000000e-01 4.7000000e-01 4.5000000e-01 4.5000000e-01 5.6000000e-01 4.9000000e-01 5.8000000e-01 5.4000000e-01 4.6000000e-01 5.8000000e-01 5.3000000e-01 5.4000000e-01 5.5000000e-01 5.0000000e-01 5.2000000e-01 4.8000000e-01 5.0000000e-01 3.8000000e-01 5.3000000e-01 4.8000000e-01 5.1000000e-01 4.8000000e-01 5.2000000e-01 4.7000000e-01 5.0000000e-01 4.3000000e-01 4.8000000e-01 5.2000000e-01 5.0000000e-01 4.2000000e-01 4.2000000e-01 4.7000000e-01 5.4000000e-01 5.1000000e-01 5.4000000e-01 5.1000000e-01 4.8000000e-01 4.7000000e-01 5.2000000e-01 5.2000000e-01 5.4000000e-01 5.4000000e-01 5.0000000e-01 4.5000000e-01 4.4000000e-01 4.1000000e-01 5.7000000e-01 4.6000000e-01 5.1000000e-01 5.2000000e-01 5.0000000e-01 4.8000000e-01 5.0000000e-01 4.4000000e-01 5.3000000e-01 5.2000000e-01 4.9000000e-01 5.7000000e-01 5.8000000e-01 4.9000000e-01 5.1000000e-01 4.5000000e-01 5.3000000e-01 4.5000000e-01 4.4000000e-01 3.5000000e-01 4.2000000e-01 5.3000000e-01 5.2000000e-01 5.0000000e-01 3.8000000e-01 5.2000000e-01 5.6000000e-01 4.7000000e-01 4.4000000e-01 5.1000000e-01 5.7000000e-01 4.5000000e-01 5.7000000e-01 4.3000000e-01 5.1000000e-01 3.8000000e-01 5.3000000e-01 4.8000000e-01 4.4000000e-01 5.0000000e-01 4.8000000e-01 5.0000000e-01 4.7000000e-01 6.4000000e-01 4.9000000e-01 5.2000000e-01 4.8000000e-01 5.6000000e-01 4.3000000e-01 4.8000000e-01 4.7000000e-01 6.0000000e-01 5.4000000e-01 5.5000000e-01 4.0000000e-01 5.5000000e-01 5.6000000e-01 4.9000000e-01 5.0000000e-01 4.3000000e-01 5.7000000e-01 5.0000000e-01 5.7000000e-01 4.9000000e-01 4.2000000e-01 3.9000000e-01
|
||||
|
|
@ -0,0 +1 @@
|
|||
6.5714286e-01 6.0563380e-01 6.3235294e-01 7.3972603e-01 6.0294118e-01 7.3611111e-01 6.4179104e-01 7.7631579e-01 6.4000000e-01 6.6197183e-01 6.6666667e-01 7.0000000e-01 6.4285714e-01 7.7464789e-01 7.1621622e-01 6.4285714e-01 6.8571429e-01 6.4383562e-01 6.6666667e-01 6.5384615e-01 6.6216216e-01 6.1971831e-01 6.5333333e-01 6.5277778e-01 6.7123288e-01 6.4383562e-01 6.5000000e-01 6.3513514e-01 6.0000000e-01 6.7123288e-01 6.3513514e-01 7.4324324e-01 5.5714286e-01 7.0512821e-01 6.3888889e-01 6.0000000e-01 5.6338028e-01 6.3157895e-01 6.0810811e-01 6.2337662e-01 6.4000000e-01 6.5789474e-01 6.3157895e-01 5.6962025e-01 7.5294118e-01 7.1250000e-01 6.2162162e-01 6.7500000e-01 7.2727273e-01 6.2337662e-01 6.2337662e-01 6.7948718e-01 6.5853659e-01 6.6250000e-01 6.3380282e-01 7.3417722e-01 6.0869565e-01 7.2000000e-01 7.5949367e-01 6.4556962e-01 6.3013699e-01 5.9420290e-01 6.2857143e-01 7.1794872e-01 7.3972603e-01 6.4864865e-01 6.4864865e-01 6.8918919e-01 6.6666667e-01 7.0512821e-01 6.2500000e-01 6.2318841e-01 6.6197183e-01 6.5277778e-01 6.9135802e-01 6.6216216e-01 6.6666667e-01 6.4285714e-01 6.6216216e-01 6.8115942e-01 6.2500000e-01 6.2500000e-01 7.3684211e-01 6.4473684e-01 7.3417722e-01 7.1052632e-01 6.3888889e-01 7.3417722e-01 6.5432099e-01 6.9230769e-01 7.1428571e-01 6.7567568e-01 6.7532468e-01 6.7605634e-01 6.5789474e-01 5.4285714e-01 6.9736842e-01 6.2337662e-01 6.6233766e-01 6.7605634e-01 7.0270270e-01 6.1842105e-01 6.7567568e-01 6.2318841e-01 6.7605634e-01 6.9333333e-01 7.1428571e-01 6.0000000e-01 6.0000000e-01 6.6197183e-01 6.9230769e-01 6.8000000e-01 7.2000000e-01 6.5384615e-01 6.5753425e-01 6.6197183e-01 7.1232877e-01 6.9333333e-01 7.5000000e-01 7.1052632e-01 6.7567568e-01 6.4285714e-01 6.0273973e-01 5.8571429e-01 6.9512195e-01 6.3013699e-01 6.8918919e-01 7.0270270e-01 6.6666667e-01 6.8571429e-01 6.6666667e-01 6.1111111e-01 7.0666667e-01 6.6666667e-01 6.5333333e-01 6.8674699e-01 7.0731707e-01 6.3636364e-01 6.3750000e-01 6.1643836e-01 6.5432099e-01 5.8441558e-01 5.8666667e-01 4.7297297e-01 5.5263158e-01 6.9736842e-01 6.9333333e-01 6.5789474e-01 5.7575758e-01 6.7532468e-01 7.0886076e-01 6.4383562e-01 5.8666667e-01 6.6233766e-01 7.5000000e-01 6.2500000e-01 7.7027027e-01 6.0563380e-01 6.8000000e-01 5.6716418e-01 6.7948718e-01 6.4864865e-01 6.1971831e-01 7.1428571e-01 6.5753425e-01 6.7567568e-01 6.6197183e-01 7.7108434e-01 6.6216216e-01 7.1232877e-01 6.4000000e-01 7.0886076e-01 6.0563380e-01 6.2337662e-01 6.2666667e-01 7.7922078e-01 7.2972973e-01 7.5342466e-01 5.7971014e-01 7.3333333e-01 7.0886076e-01 6.6216216e-01 6.4102564e-01 5.8904110e-01 7.3076923e-01 6.4102564e-01 7.1250000e-01 6.4473684e-01 5.9154930e-01 5.3424658e-01
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1 @@
|
|||
0.320369972991 0.338972466 0.308199372323 0.3452431902 0.310024768313 0.357115225615 0.311131096357 0.357391534414 0.329718053755 0.347365921475 0.335272625287 0.336451560653 0.33015370606 0.369628769749 0.344499490029 0.321622508707 0.345377707016 0.321007207534 0.350728979121 0.32809430086 0.30207071308 0.291663252492 0.30760470102 0.315976639534 0.308132467187 0.313014586878 0.310463895925 0.321091616502 0.290044394125 0.322213459935 0.315509196522 0.3331114403 0.281071919202 0.320854431887 0.332190658438 0.299342730178 0.313528775154 0.310049073937 0.288821516545 0.307662081954 0.328387688508 0.317185603454 0.332046170365 0.291912213887 0.37870970117 0.336080073379 0.304593343921 0.330138983604 0.355071759299 0.311946140607 0.302025400768 0.330940761586 0.351140062502 0.354772884287 0.272605322053 0.327957349848 0.28871110366 0.320821172951 0.340976919806 0.30757488831 0.320975346884 0.252776262329 0.314549731907 0.326876483 0.337684418756 0.296520013735 0.31493077245 0.327721982167 0.325802862624 0.341908184107 0.300481749419 0.312499767894 0.301061762121 0.27665157989 0.3082566692 0.287466396145 0.288313694552 0.296629698731 0.283556095025 0.322489360684 0.280765581604 0.297958166613 0.313189657041 0.303470399659 0.348652898212 0.331594734387 0.299446687464 0.339047458559 0.286979246044 0.316326095312 0.321618884109 0.330065896317 0.324500638067 0.328300795872 0.309002568222 0.262587468469 0.31974123777 0.286316182293 0.321162329165 0.328160620315 0.356618051635 0.289733970648 0.344507756538 0.301485561986 0.335785898715 0.322635066518 0.331480718646 0.297897604494 0.306942928189 0.350843442517 0.342585296966 0.341311053315 0.306780105123 0.313401804298 0.319978145568 0.302460397612 0.346105758567 0.312802351189 0.331552275517 0.321624157344 0.318798118247 0.301906095501 0.301585920138 0.314556178985 0.333215221158 0.306929663844 0.317083256901 0.309667679181 0.306529028004 0.30865993751 0.296031907986 0.28742420979 0.311584483038 0.319043629504 0.330278008622 0.314466433681 0.327937382021 0.296448162218 0.307033121385 0.296391953011 0.292691206116 0.297146209653 0.307929858983 0.291863681454 0.307300188104 0.306597817799 0.34718100163 0.317436210259 0.29952626739 0.330762834707 0.334951064852 0.323806678898 0.296203706701 0.33398466797 0.344931265559 0.293948734727 0.332764639313 0.272651853935 0.317324315923 0.300493570867 0.307008231016 0.333263322802 0.31390648462 0.332416491248 0.314766869708 0.321015549211 0.322909289307 0.356882966656 0.310596945263 0.343939748528 0.286269629586 0.33173459898 0.323848483719 0.305841388975 0.319266258167 0.34012363898 0.3443280395 0.353885654057 0.320544729867 0.353280499623 0.315621795536 0.312176062734 0.301562130879 0.312061680573 0.312642847966 0.326222109701 0.357417912858 0.313083593142 0.334033412713 0.295630506074
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1 @@
|
|||
2.0215050e+00 2.0988154e+00 1.8614681e+00 2.0510161e+00 1.9210911e+00 2.1323516e+00 1.9565454e+00 2.1029889e+00 1.9617871e+00 2.0544792e+00 2.0357408e+00 1.8811414e+00 2.0694693e+00 2.1245977e+00 2.0632165e+00 2.0452823e+00 2.0249330e+00 1.9635489e+00 2.0508580e+00 2.0838578e+00 1.9324052e+00 1.8224609e+00 1.9795343e+00 1.9536534e+00 1.9694910e+00 1.9075569e+00 1.9590397e+00 2.0022087e+00 1.8814000e+00 1.8884208e+00 1.9961121e+00 2.0215351e+00 1.7515769e+00 2.0756437e+00 2.0109476e+00 1.9234849e+00 1.9160076e+00 1.8550862e+00 1.7733640e+00 2.0071906e+00 2.0209542e+00 2.0616569e+00 2.0565503e+00 1.9083573e+00 2.2732431e+00 1.9975503e+00 1.9080072e+00 2.1437809e+00 2.1296295e+00 1.9739085e+00 1.9834166e+00 2.1078664e+00 2.2016840e+00 2.2080962e+00 1.7340579e+00 2.0549287e+00 1.7331748e+00 1.9559688e+00 2.0343364e+00 1.8736929e+00 1.9730416e+00 1.5308944e+00 1.8421831e+00 2.0174240e+00 2.0137378e+00 1.7956151e+00 1.9606596e+00 1.9074857e+00 2.0413879e+00 2.0070305e+00 1.9584677e+00 1.8977851e+00 1.9176239e+00 1.7067419e+00 1.9461927e+00 1.8431700e+00 1.8284576e+00 1.7778704e+00 1.8350329e+00 2.0175415e+00 1.7459063e+00 1.9242505e+00 1.8757370e+00 1.9312506e+00 2.0574808e+00 2.0894636e+00 1.9780203e+00 2.1374036e+00 1.8900436e+00 2.0273032e+00 2.0681953e+00 2.0234699e+00 2.0666449e+00 2.0663485e+00 1.9281402e+00 1.7846314e+00 2.0372479e+00 1.8831230e+00 2.0186015e+00 2.0193231e+00 2.2022665e+00 1.8145737e+00 2.0466545e+00 1.8092421e+00 1.9600687e+00 2.0322961e+00 1.9556364e+00 1.8266422e+00 1.9950345e+00 2.1038429e+00 2.1164145e+00 2.0188062e+00 1.8863331e+00 2.0006971e+00 1.9971068e+00 1.8771862e+00 2.1148855e+00 1.9570638e+00 1.9859615e+00 2.0030854e+00 2.0737344e+00 1.9739259e+00 1.9266524e+00 1.9200535e+00 2.1376689e+00 1.8944425e+00 1.9330553e+00 1.8561590e+00 1.9422954e+00 1.8874178e+00 1.8624808e+00 1.8265563e+00 1.8840519e+00 2.0515092e+00 2.0174226e+00 1.9771196e+00 2.0635988e+00 1.7334466e+00 1.9912604e+00 1.8915711e+00 1.8262636e+00 1.9369173e+00 1.9560446e+00 1.9549934e+00 1.9279230e+00 1.9021073e+00 2.0113391e+00 2.0305786e+00 1.8066806e+00 1.9656739e+00 2.1219217e+00 1.8820250e+00 1.8936826e+00 2.0565131e+00 1.9839441e+00 1.8553479e+00 1.9923760e+00 1.6393276e+00 1.9786440e+00 1.8274394e+00 1.9322611e+00 2.0404318e+00 1.9216532e+00 1.9361171e+00 1.8401373e+00 1.9908059e+00 1.9495117e+00 2.1975655e+00 1.8413913e+00 2.1528773e+00 1.8434374e+00 2.1668863e+00 2.0429273e+00 1.9980016e+00 1.9790129e+00 2.0264829e+00 2.1478843e+00 2.0899600e+00 2.0280670e+00 2.1210881e+00 1.9993891e+00 1.8646871e+00 1.9099983e+00 1.9263353e+00 2.0042495e+00 2.1365919e+00 2.1830279e+00 1.9631961e+00 2.0880004e+00 1.8348369e+00
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1 @@
|
|||
1.4330520e+01 1.4635426e+01 1.3450855e+01 1.4761140e+01 1.3508642e+01 1.5434417e+01 1.3887693e+01 1.5166776e+01 1.3966038e+01 1.4950451e+01 1.4564587e+01 1.3834201e+01 1.4347008e+01 1.5641962e+01 1.4689053e+01 1.4418720e+01 1.4545856e+01 1.4151822e+01 1.4669017e+01 1.5150750e+01 1.3770166e+01 1.3288969e+01 1.4048191e+01 1.4049959e+01 1.4164158e+01 1.3727834e+01 1.4074687e+01 1.4321303e+01 1.2497330e+01 1.3820273e+01 1.4441030e+01 1.4780222e+01 1.2504339e+01 1.5022245e+01 1.4263650e+01 1.3704507e+01 1.3694385e+01 1.3667517e+01 1.3177468e+01 1.4391931e+01 1.4893903e+01 1.4475753e+01 1.4440707e+01 1.3603096e+01 1.6889651e+01 1.4731174e+01 1.3337775e+01 1.5187532e+01 1.5667271e+01 1.4226037e+01 1.4203554e+01 1.5272898e+01 1.6031460e+01 1.5991549e+01 1.1855060e+01 1.4844776e+01 1.2475182e+01 1.4408126e+01 1.4836870e+01 1.3472986e+01 1.4089281e+01 1.1018298e+01 1.3183296e+01 1.4590802e+01 1.4404230e+01 1.2717623e+01 1.3983283e+01 1.4017133e+01 1.4608005e+01 1.4402553e+01 1.3977803e+01 1.4091040e+01 1.3977459e+01 1.2630449e+01 1.4160109e+01 1.3029417e+01 1.2654432e+01 1.2794946e+01 1.3194978e+01 1.4378745e+01 1.2431908e+01 1.3852651e+01 1.3748358e+01 1.4003568e+01 1.5066681e+01 1.5192826e+01 1.4370013e+01 1.5792545e+01 1.3547546e+01 1.4411543e+01 1.4794215e+01 1.4924312e+01 1.4789153e+01 1.4875055e+01 1.4208537e+01 1.2786148e+01 1.4882476e+01 1.3302010e+01 1.4354774e+01 1.4542129e+01 1.5889633e+01 1.2928185e+01 1.4877868e+01 1.2890902e+01 1.4406165e+01 1.4498123e+01 1.4303273e+01 1.3207002e+01 1.3954732e+01 1.4841248e+01 1.5427799e+01 1.4363463e+01 1.3976277e+01 1.4284878e+01 1.4457991e+01 1.3369469e+01 1.5246610e+01 1.4487573e+01 1.4525176e+01 1.4505865e+01 1.5037347e+01 1.3834927e+01 1.3758988e+01 1.3424987e+01 1.4914766e+01 1.3783923e+01 1.3434291e+01 1.2895927e+01 1.3870360e+01 1.3342977e+01 1.3094322e+01 1.3057847e+01 1.3322375e+01 1.4940650e+01 1.4476829e+01 1.4197503e+01 1.4597035e+01 1.2963234e+01 1.4011414e+01 1.3181409e+01 1.3339615e+01 1.3928735e+01 1.3508015e+01 1.3170749e+01 1.3529133e+01 1.3454724e+01 1.4883437e+01 1.4564565e+01 1.2474313e+01 1.4435790e+01 1.5285703e+01 1.3701736e+01 1.3578312e+01 1.4807311e+01 1.4281072e+01 1.2920213e+01 1.4427803e+01 1.1408611e+01 1.4097334e+01 1.2868115e+01 1.3903683e+01 1.3800332e+01 1.3439339e+01 1.4062651e+01 1.3242107e+01 1.4400424e+01 1.3826132e+01 1.5991146e+01 1.3118258e+01 1.5377390e+01 1.2858378e+01 1.5249567e+01 1.4081585e+01 1.4458052e+01 1.4175623e+01 1.4850069e+01 1.5506668e+01 1.5014770e+01 1.4337030e+01 1.5214705e+01 1.4803729e+01 1.3188675e+01 1.3437739e+01 1.3409394e+01 1.4607386e+01 1.5394271e+01 1.5946451e+01 1.3769364e+01 1.4181208e+01 1.2551765e+01
|
||||
|
|
@ -0,0 +1 @@
|
|||
9.3540954e-01 9.7904590e-01 8.6703870e-01 1.1569997e+00 8.7174317e-01 1.0627183e+00 9.1272727e-01 1.1593999e+00 9.7573357e-01 1.0072127e+00 1.0536814e+00 9.6276028e-01 9.7700570e-01 1.1513951e+00 1.0719592e+00 9.2178818e-01 1.0004680e+00 9.3689769e-01 9.8205821e-01 1.0332673e+00 9.4517852e-01 8.9437744e-01 9.7556556e-01 9.0460246e-01 9.7210921e-01 9.2230423e-01 9.9605161e-01 9.6852085e-01 8.4162016e-01 9.6667267e-01 9.7759376e-01 9.9757576e-01 7.6992499e-01 1.0151695e+00 9.8691869e-01 9.0325833e-01 8.6665467e-01 8.8844884e-01 8.4553255e-01 9.7700570e-01 9.5159916e-01 9.8906691e-01 1.0551935e+00 9.1973597e-01 1.3266247e+00 1.0982778e+00 8.4531653e-01 1.0887369e+00 1.0984938e+00 9.9851185e-01 9.0701470e-01 1.0639304e+00 1.2392919e+00 1.1422502e+00 8.1725773e-01 1.1844944e+00 7.8219022e-01 1.0817162e+00 1.2196100e+00 1.0003120e+00 1.0164536e+00 7.0724272e-01 9.7981398e-01 1.1134953e+00 1.0671107e+00 9.3600960e-01 9.9984398e-01 1.0356916e+00 1.1248005e+00 1.0696310e+00 1.0634263e+00 9.6472847e-01 9.9365137e-01 8.5724572e-01 1.1257846e+00 8.9930993e-01 9.4903090e-01 9.0667867e-01 9.1231923e-01 1.0573777e+00 9.0105011e-01 9.5255926e-01 1.0177978e+00 1.0606901e+00 1.1966997e+00 1.0891929e+00 1.0085089e+00 1.2640264e+00 9.3246925e-01 1.0198020e+00 1.2055806e+00 1.1237924e+00 1.1060666e+00 1.0517252e+00 1.0684668e+00 7.6844884e-01 1.0572697e+00 8.7373537e-01 9.6283228e-01 9.9350735e-01 1.2412601e+00 7.6322832e-01 1.0298950e+00 8.6148215e-01 1.0042724e+00 9.7012901e-01 9.3712571e-01 8.5845785e-01 8.5862586e-01 1.0336634e+00 1.0955536e+00 9.5302730e-01 9.8696670e-01 1.0633063e+00 1.0026643e+00 9.6380438e-01 1.1711251e+00 9.9273927e-01 1.0260906e+00 1.0863966e+00 1.0482808e+00 9.0361836e-01 9.2358836e-01 8.7794779e-01 1.2461206e+00 9.2985299e-01 1.0418962e+00 9.4660666e-01 9.5636364e-01 9.0646265e-01 9.9113111e-01 8.3027903e-01 9.3341734e-01 1.1378938e+00 1.0548215e+00 1.0086889e+00 1.1998920e+00 8.6063006e-01 1.0255506e+00 8.4786079e-01 1.0090729e+00 9.2542454e-01 9.5176718e-01 9.3477348e-01 9.0091809e-01 9.6404440e-01 1.1158716e+00 9.9614761e-01 7.7682568e-01 1.0605461e+00 1.0895650e+00 9.0065407e-01 8.7173117e-01 9.9821182e-01 1.2165617e+00 8.6127813e-01 1.1111071e+00 7.9015902e-01 1.0433843e+00 8.6510651e-01 1.0019202e+00 1.0154815e+00 9.4381038e-01 9.8646265e-01 1.0062526e+00 9.7426943e-01 9.8191419e-01 1.3038944e+00 8.6277828e-01 1.0830243e+00 8.6851485e-01 1.1192559e+00 9.9120312e-01 9.6540054e-01 9.1072307e-01 1.1775698e+00 1.1139154e+00 1.1083468e+00 9.9593159e-01 1.0825923e+00 1.1115032e+00 9.7430543e-01 9.5605161e-01 9.2800480e-01 9.4369037e-01 1.1136034e+00 1.1382898e+00 9.5937594e-01 9.8843084e-01 7.4563456e-01
|
||||
|
|
@ -0,0 +1,100 @@
|
|||
0 1 1 0 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0 1 1
|
||||
1 1 1 1 1 1 1 0 0 1 1 1 0 0 0 0 1 0 1 0 1 1 1 0 1 0 1 1 1 1
|
||||
0 1 0 1 1 0 0 1 1 1 1 0 1 0 0 1 1 0 1 1 1 0 1 1 0 1 1 1 0 1
|
||||
1 1 1 0 0 1 1 0 0 1 1 1 0 0 1 1 0 1 1 1 0 1 1 0 0 0 0 1 0 0
|
||||
1 0 0 0 0 1 1 0 1 1 0 1 0 0 0 0 1 0 0 1 0 1 0 0 1 1 1 1 0 0
|
||||
1 0 1 1 0 0 0 1 1 1 1 1 0 1 1 0 1 0 1 0 1 0 0 0 0 0 0 0 1 1
|
||||
0 1 0 0 1 0 0 0 1 0 0 1 1 0 0 0 0 1 1 0 0 1 0 1 1 1 1 0 1 0
|
||||
1 0 1 1 1 0 0 0 0 1 1 0 0 0 0 1 0 1 0 0 0 1 1 1 0 1 0 0 1 0
|
||||
1 1 1 0 0 1 1 0 0 1 0 0 1 0 0 1 0 1 1 0 1 1 0 1 1 1 0 0 1 1
|
||||
1 1 0 1 0 0 1 1 1 1 1 1 1 0 1 0 1 1 1 1 0 0 0 0 0 0 1 1 0 0
|
||||
1 0 1 0 1 1 0 1 1 0 1 1 0 1 1 1 1 0 0 1 1 0 0 0 0 1 0 0 0 0
|
||||
1 1 1 1 0 1 0 0 0 0 0 1 0 1 1 1 1 0 1 1 1 1 1 1 0 1 0 1 1 1
|
||||
1 1 1 1 1 1 1 1 1 0 1 1 0 0 1 0 1 0 1 0 1 0 0 0 1 0 0 1 0 1
|
||||
0 1 1 0 0 1 1 0 0 0 0 1 0 1 1 0 1 0 1 0 1 1 0 1 0 0 1 1 1 1
|
||||
1 0 0 1 0 0 1 0 1 0 0 1 0 0 0 1 1 0 0 0 1 0 1 0 0 1 1 0 1 1
|
||||
1 0 0 1 1 0 0 1 1 0 0 1 1 1 1 1 1 1 1 0 1 1 1 1 0 1 1 1 0 0
|
||||
1 1 0 0 1 0 0 0 1 0 0 1 0 1 0 0 1 0 1 1 0 1 0 0 0 1 1 1 1 1
|
||||
0 0 0 1 1 1 1 1 0 1 0 1 1 1 1 0 0 1 1 1 1 1 0 0 1 0 1 0 0 0
|
||||
1 0 1 1 0 1 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 1 1 1 0 1 1 0 1 1
|
||||
0 0 0 0 1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 1 1
|
||||
0 1 0 0 1 1 0 0 1 1 1 0 0 0 1 0 0 0 0 1 1 0 0 1 0 1 1 0 1 0
|
||||
1 0 1 0 1 1 1 0 0 0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 1 1 1 0 1 1
|
||||
0 0 1 0 0 0 0 0 1 1 0 0 1 1 1 1 1 1 1 1 0 1 0 0 0 0 0 0 1 0
|
||||
0 1 0 1 1 1 0 1 1 1 0 1 0 1 1 1 0 0 0 0 1 1 1 0 0 1 1 0 0 1
|
||||
0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 1 1 0 1 1 0 0
|
||||
1 0 0 0 1 0 1 0 0 1 0 1 1 0 1 0 1 0 1 0 1 1 1 0 0 0 1 1 1 0
|
||||
1 0 0 0 1 1 1 0 0 1 0 1 1 1 0 0 0 1 1 1 0 0 0 0 1 0 0 0 1 1
|
||||
0 1 0 0 0 1 1 1 0 1 1 1 0 1 0 0 1 1 1 1 0 1 0 1 0 1 1 0 1 1
|
||||
0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 1 0 0 0 1 0 1 0 1 0 1 0 1
|
||||
0 0 1 0 1 0 1 1 1 1 0 0 1 1 1 1 0 0 1 1 1 1 0 0 1 0 1 0 1 0
|
||||
1 1 0 1 1 1 1 1 0 1 0 0 0 1 1 1 0 1 0 0 0 1 1 0 1 0 0 0 0 1
|
||||
0 1 0 0 0 1 0 1 1 0 0 1 0 0 0 1 1 1 0 0 1 1 0 1 1 0 0 1 0 1
|
||||
1 1 0 0 0 0 0 1 1 0 1 1 0 0 1 0 1 1 0 0 0 1 0 1 0 1 0 1 0 1
|
||||
1 1 1 0 1 0 0 1 1 0 1 1 1 0 1 0 1 1 0 0 0 1 1 0 0 1 1 1 1 1
|
||||
0 1 0 0 1 1 0 0 1 1 1 1 0 1 0 1 0 1 1 1 0 1 1 0 1 1 0 0 1 0
|
||||
1 1 1 1 0 1 0 1 0 1 1 1 1 0 1 0 1 0 1 0 1 1 0 0 1 0 1 0 0 0
|
||||
0 0 0 0 1 1 1 0 1 1 0 0 1 1 1 1 0 1 0 1 1 1 1 1 1 0 0 0 0 0
|
||||
0 1 1 1 0 0 0 1 1 1 0 1 0 0 1 1 1 1 1 0 1 0 0 1 0 0 0 0 1 1
|
||||
0 1 0 0 1 1 1 1 0 0 1 0 1 0 1 1 0 0 1 0 0 1 1 0 0 0 0 1 0 0
|
||||
1 1 0 1 0 0 1 1 0 0 1 1 1 0 0 1 1 1 0 0 0 0 1 1 1 0 1 0 0 1
|
||||
0 1 1 0 1 0 1 1 0 0 0 1 1 0 0 0 0 0 0 1 0 0 1 1 0 1 0 0 1 1
|
||||
0 0 1 1 1 0 1 0 0 1 1 0 0 0 1 1 1 0 1 0 0 0 0 1 1 0 1 1 0 0
|
||||
1 0 1 1 1 1 1 1 1 1 0 1 0 0 0 1 0 1 0 0 0 1 1 0 0 1 0 0 0 0
|
||||
1 0 1 1 1 0 1 1 1 1 0 0 1 0 1 1 1 0 0 0 0 1 1 1 1 1 0 1 0 0
|
||||
1 0 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 0 1 0 1 1 1 0 0 0 1
|
||||
1 0 1 0 1 0 0 0 1 0 0 1 1 0 1 1 0 0 0 1 0 1 1 0 1 0 0 1 0 0
|
||||
0 1 1 0 1 0 1 1 1 1 1 0 0 0 0 1 0 1 0 0 1 1 1 1 0 1 0 1 1 1
|
||||
0 1 0 1 1 0 1 0 0 1 0 0 1 0 0 1 1 0 1 0 0 0 1 1 1 0 0 1 0 1
|
||||
1 0 1 1 1 0 1 0 1 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1
|
||||
1 1 1 1 1 1 1 1 1 1 0 0 1 0 0 1 0 0 1 1 0 0 1 1 1 1 0 1 0 1
|
||||
1 1 1 1 0 0 0 1 0 1 1 0 0 0 1 1 0 0 1 1 1 1 0 0 0 1 0 1 0 0
|
||||
1 0 1 0 0 1 1 1 1 0 1 1 0 0 1 0 0 1 1 0 1 1 1 1 1 1 0 0 0 0
|
||||
0 1 1 0 0 1 0 0 0 0 0 1 0 1 0 0 1 1 0 1 0 1 0 0 0 1 0 0 1 0
|
||||
0 0 0 1 0 0 0 1 1 1 1 1 0 0 0 1 1 0 0 0 1 1 1 0 1 0 1 1 1 0
|
||||
1 1 0 0 0 0 1 1 1 0 1 0 1 1 1 0 0 1 0 0 0 0 0 0 1 1 1 0 0 0
|
||||
1 0 1 1 1 0 1 0 1 0 0 1 1 1 1 1 0 0 1 1 0 1 1 1 1 0 0 0 0 1
|
||||
0 0 1 1 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 1 1 1 0 0 1 0 0
|
||||
0 0 1 1 1 1 1 0 1 0 1 0 0 1 1 1 1 0 0 0 1 0 1 1 0 1 1 1 0 0
|
||||
0 0 0 0 0 1 0 0 1 1 0 1 1 0 0 0 0 1 0 1 1 0 0 1 0 0 1 0 1 0
|
||||
1 0 0 1 0 1 1 1 0 1 0 1 1 0 0 1 1 0 1 1 1 0 1 0 0 0 1 1 1 1
|
||||
0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 1 1 0 0 1 1 0 0 0
|
||||
1 0 0 1 1 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 1 0 1 1 0 0 1 0 1 0
|
||||
0 1 0 1 1 1 1 1 0 1 0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 0 0 0 1
|
||||
1 0 1 1 1 0 0 0 1 0 0 1 0 0 0 1 0 1 1 1 0 0 1 1 1 1 0 0 0 1
|
||||
0 1 0 0 1 1 1 1 1 1 0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 0 1 1 0 1
|
||||
0 0 1 0 1 1 1 0 0 0 1 0 1 0 1 1 0 0 1 1 0 1 0 1 1 0 0 1 0 1
|
||||
0 1 1 1 1 1 0 0 0 0 0 1 0 1 1 1 1 1 0 1 1 1 0 0 1 0 0 1 1 1
|
||||
1 1 1 1 0 1 1 1 1 1 1 0 0 1 1 0 1 1 0 1 0 1 0 1 0 1 1 0 0 0
|
||||
1 0 0 0 1 0 1 0 0 0 1 0 1 0 0 1 0 1 1 1 1 1 0 0 1 1 1 1 1 0
|
||||
0 0 0 0 1 1 1 0 1 0 0 1 1 0 0 1 1 1 1 0 0 1 0 1 0 0 0 1 0 0
|
||||
1 1 1 1 1 0 0 0 1 1 0 0 1 1 1 1 0 1 0 1 0 0 0 0 1 1 0 1 1 0
|
||||
1 0 1 1 0 1 0 1 0 1 1 0 1 1 1 0 0 1 0 0 1 1 0 0 1 1 0 1 0 1
|
||||
1 1 1 1 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 1 1
|
||||
0 1 1 0 0 1 0 0 0 0 0 0 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 1 1
|
||||
1 1 1 0 1 1 1 1 1 0 0 0 0 1 0 0 1 0 1 0 1 1 1 0 0 1 0 0 1 1
|
||||
1 1 0 1 0 1 0 1 0 0 1 0 0 0 1 0 1 1 0 1 1 0 1 0 0 1 0 0 1 0
|
||||
1 0 1 1 0 0 1 1 0 0 1 1 0 0 0 1 1 0 0 1 0 0 0 0 0 1 0 1 1 0
|
||||
1 1 1 1 1 0 0 1 0 0 1 1 1 0 1 0 0 1 1 1 0 1 1 1 1 1 1 1 1 1
|
||||
1 0 1 1 0 0 1 1 0 1 1 1 0 0 0 1 0 1 0 0 0 1 1 1 1 1 0 0 1 0
|
||||
0 0 0 0 0 1 1 1 0 0 0 0 0 1 1 1 1 1 0 0 1 1 0 0 1 0 0 1 0 0
|
||||
1 1 1 0 0 0 0 1 0 1 1 1 1 1 1 1 0 1 0 1 1 1 1 0 1 1 1 0 1 0
|
||||
1 0 0 1 0 1 0 0 0 0 0 0 1 0 1 0 1 1 0 1 0 1 1 0 0 1 0 1 0 1
|
||||
1 0 0 0 1 0 1 1 0 1 0 0 0 1 0 1 0 0 0 0 1 1 1 0 1 0 1 1 0 1
|
||||
0 1 0 0 0 0 1 0 1 1 1 0 1 1 0 1 0 1 0 1 1 0 0 0 0 0 0 1 1 1
|
||||
0 1 0 0 1 0 1 1 0 0 0 0 1 1 0 1 1 1 0 0 1 1 0 0 1 0 1 0 0 0
|
||||
0 1 0 1 1 1 1 1 1 1 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0
|
||||
0 0 0 1 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0
|
||||
1 0 0 0 1 0 1 1 1 1 1 1 1 0 1 0 1 1 1 0 0 1 0 1 0 1 0 1 0 0
|
||||
1 0 0 0 1 0 1 0 0 0 1 1 0 0 0 1 1 0 0 1 1 1 1 1 1 0 1 1 1 0
|
||||
0 0 0 1 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 1 1 1 0 1 0 0 0 1 1 0
|
||||
1 0 0 0 0 0 1 0 1 0 1 0 0 1 1 1 0 1 1 1 0 0 1 0 1 1 1 0 1 0
|
||||
0 1 0 0 1 1 1 0 0 1 0 0 0 1 0 1 0 0 0 1 0 0 1 0 0 1 1 1 0 1
|
||||
0 0 0 1 1 0 1 0 1 0 1 0 0 0 1 1 1 0 1 1 0 0 0 1 1 0 0 1 0 1
|
||||
1 1 1 1 1 1 1 1 0 0 1 1 0 0 0 1 0 1 0 1 0 0 0 1 1 0 1 0 1 0
|
||||
0 1 1 0 0 0 1 1 0 0 1 1 0 1 1 1 1 1 0 1 0 0 0 0 1 0 1 0 0 0
|
||||
1 1 1 0 1 1 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 1 0 1 1 0 0 1
|
||||
0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 1 1 1 1 1 1 1 0 1 0 0 0 1 1 0
|
||||
1 1 1 0 1 1 0 1 1 0 1 1 0 1 0 0 1 0 0 0 1 1 1 1 0 1 1 0 1 1
|
||||
0 0 1 1 1 0 0 0 0 1 1 0 0 1 1 0 1 0 1 0 0 1 0 0 0 1 1 0 0 1
|
||||
0 0 0 1 0 0 1 1 1 1 1 1 0 0 1 0 0 1 0 0 0 0 1 1 1 1 1 1 0 0
|
||||
|
|
@ -0,0 +1,100 @@
|
|||
1.172993630434470589e+02 1.905532343119886605e+02 2.613653823499444115e+02 1.570270816248337269e+02 2.373767637129340642e+02 2.175366144750510671e+02 2.609909144757107242e+02 2.086671686166440622e+02 2.674986450118991002e+02 1.395992762090408235e+02 1.115453060949917159e+02 1.531034842395609701e+02 2.621042034264289668e+02 2.958729454449504033e+02 2.137960368830719062e+02 2.606436280968571282e+02 2.492136530687155869e+02 2.770806237064748530e+02 2.667325121892417883e+02 2.909243437665674037e+02 1.570328417294508085e+02 1.738762543815240917e+02 1.514157955792608163e+02 2.264748814818163396e+02 1.911869834397498380e+02 2.083706054660671043e+02 2.778115921852293013e+02 1.330374814391803397e+02 2.988697222234711717e+02 2.534167825404447001e+02
|
||||
2.090964891529778242e+02 1.322006104643973003e+02 1.443415945355371832e+02 2.991388772264980389e+02 1.649302344777914868e+02 2.839528641910463875e+02 1.677159709681393736e+02 2.597553832458208944e+02 2.861055547321268477e+02 1.866431671806918189e+02 2.131812134614140177e+02 1.881465139477683124e+02 1.271865139985419262e+02 1.821608865941132649e+02 2.793653846657656459e+02 1.745982981552271838e+02 2.440893905635109888e+02 1.926469151980868446e+02 2.752453852984189098e+02 1.333479229516146347e+02 1.756311805755703404e+02 2.039367615619088383e+02 2.441861159155101575e+02 2.136111324500645594e+02 2.893808960992043922e+02 2.723220466017930335e+02 2.367879096909125565e+02 2.831541206793258425e+02 2.017643187924728068e+02 1.293072046241175030e+02
|
||||
2.311242818257193221e+02 2.180694109009666306e+02 2.728791416531455525e+02 1.239345918565636993e+02 2.885729762050686418e+02 2.082619393005260804e+02 2.331416004257805525e+02 1.003112528445347778e+02 2.796331120515330895e+02 2.804679740148056339e+02 2.466936828597247597e+02 1.422398585800914361e+02 1.312115029632765015e+02 1.324417143647877708e+02 2.161716508991076466e+02 1.791489656100356171e+02 2.239038785146145472e+02 2.456511993086799919e+02 2.885023077068626662e+02 2.127338775308419940e+02 2.468090724782538246e+02 2.704135008577740109e+02 1.144148504575758665e+02 1.641571759150080538e+02 2.473349551308716343e+02 2.366620528761779667e+02 1.208143167141831498e+02 1.403705034199327599e+02 2.061073908129479548e+02 1.482034962693051057e+02
|
||||
1.938319500339997035e+02 2.000523826243218650e+02 1.356134735235139317e+02 1.224357428573656250e+02 1.262840705282213918e+02 1.112797762573139977e+02 1.727826315738305993e+02 2.199559683100150664e+02 1.817290208723558180e+02 2.185579898773881951e+02 1.772844462934412491e+02 1.589145011846130728e+02 1.017520743541414703e+02 2.836990856171782980e+02 1.265544072638776640e+02 2.503473341476423855e+02 2.178539278172635534e+02 2.063574432066289432e+02 1.473169457524925861e+02 1.112719632489760784e+02 1.195996070145015722e+02 1.345099678548529312e+02 2.992645259487585463e+02 2.692242364540683752e+02 2.139649193607747861e+02 2.313659165106297451e+02 2.524185025119667785e+02 2.678714004815313388e+02 1.111457754393238702e+02 1.296443575800298902e+02
|
||||
1.183944097426736306e+02 2.750477277868330930e+02 1.688558971333346790e+02 1.432283295687057034e+02 2.226043174503911359e+02 1.825124733235978169e+02 1.806485153578007612e+02 2.270256019866706936e+02 2.852913053786990076e+02 2.867562520175486043e+02 2.795056496733417362e+02 1.142488895870292822e+02 1.502985045661773427e+02 2.246907359526948937e+02 2.051158858061974115e+02 2.663351441156772808e+02 2.864853431806749882e+02 2.276548949573071070e+02 2.678087640355958001e+02 2.266463576941352187e+02 1.886763304826383774e+02 1.150603609957262563e+02 1.596187994714221929e+02 1.844565420383776484e+02 1.730173420200940768e+02 1.427940137102308995e+02 1.774757620992130001e+02 2.563086691508434001e+02 1.666317348809653822e+02 1.878143419608473437e+02
|
||||
1.642344698640436036e+02 1.591648429561690818e+02 1.561851029939521140e+02 1.854367091922420059e+02 1.494951311500319093e+02 2.443780767043579942e+02 2.741090240793212160e+02 1.519200656263381006e+02 1.391711947382712538e+02 1.482414334940778815e+02 2.574425018646875287e+02 1.455120022089010945e+02 1.620904376421240727e+02 2.098493186451893848e+02 2.377904829227144887e+02 2.881187570801528750e+02 1.785609418793050054e+02 1.500483139796714340e+02 1.697371065898091729e+02 1.824143324642365087e+02 2.329862749140337712e+02 1.372006180078979298e+02 2.250666134242961789e+02 1.760894707637434067e+02 1.874161150869196035e+02 2.860410495381969440e+02 1.539271628213176086e+02 1.051658254213322152e+02 1.501619097950496666e+02 1.205717364486104515e+02
|
||||
1.275638286377957371e+02 2.620802183565458563e+02 2.290828196339760723e+02 2.591630015014513333e+02 2.102568650793322149e+02 2.385080320420775593e+02 2.683788150825365619e+02 1.808700201925492763e+02 1.972184450648797451e+02 2.382313686117472287e+02 1.733526990293641177e+02 2.369802981553972074e+02 1.835652530901061823e+02 1.274084560526275141e+02 2.403488205519001326e+02 2.713515297463850402e+02 1.455311801633137065e+02 1.889430214806582171e+02 1.676324321357484735e+02 2.327799977696781184e+02 2.846419393176552148e+02 1.510702433968490936e+02 1.361559014852734606e+02 1.732199851325496525e+02 2.451323003571785364e+02 1.833444866660036894e+02 2.451280287301300405e+02 1.669088211440060832e+02 2.768492228383354359e+02 2.445882168033535038e+02
|
||||
2.905092787520428601e+02 2.948076984760371033e+02 1.731080208454208673e+02 2.825532355845657548e+02 1.108820315678514845e+02 2.862013985457700755e+02 2.111453776876104769e+02 2.614428154999528147e+02 1.461523265575596042e+02 2.304914832379158156e+02 2.502987607420118934e+02 2.474276046141548875e+02 1.739607960146905725e+02 2.098700376203710789e+02 2.373226438948917121e+02 1.258493219462072119e+02 2.692932028872633055e+02 2.819145908444669999e+02 1.941653933285864468e+02 1.666395497972145847e+02 2.371919109091950588e+02 1.978302896313488191e+02 1.951483674191611613e+02 2.694357972099330141e+02 2.387068160427941450e+02 2.826084316255729618e+02 1.350954172043159929e+02 1.414479610501084039e+02 1.407657276334374501e+02 2.725513503737778365e+02
|
||||
2.055761393809777360e+02 1.070553196069381556e+02 1.045726024365074096e+02 1.611577217417760153e+02 1.258091705742062629e+02 1.038769334534844120e+02 2.956016304760584035e+02 1.586570076132481972e+02 1.636816353299032585e+02 2.375674325770941095e+02 2.085436646116971531e+02 2.088922128397473443e+02 2.316234644183506930e+02 2.623581653234684268e+02 1.714245300492981698e+02 2.844387943099641234e+02 1.469270259610659650e+02 1.157700922187784727e+02 2.367694595159086361e+02 1.548671738744121740e+02 2.013687686570863207e+02 1.860374943080277887e+02 1.733446602950305930e+02 2.488507085609763010e+02 2.929099979257852056e+02 1.825615338506695480e+02 1.338575452835397925e+02 1.491478381149757979e+02 1.116052925520655066e+02 2.341983606431906537e+02
|
||||
1.014445800974648222e+02 2.539987638010908597e+02 1.871788778457793399e+02 1.454231386314719998e+02 2.284640297096368045e+02 1.174773591296971915e+02 1.395683165851895637e+02 1.137193571402578414e+02 2.370662356797280950e+02 1.767292649815032064e+02 2.688513591587910696e+02 2.913902923086397436e+02 1.122392290694582897e+02 1.366157623619356229e+02 2.667409125457835444e+02 1.834435599491967537e+02 1.437174343391732236e+02 1.130622879516462120e+02 2.898543289046954214e+02 1.559795378531963479e+02 1.765577834073310157e+02 2.422955620302867885e+02 2.384835032255701321e+02 1.708163174135501094e+02 2.012159081107001839e+02 2.825663186839160517e+02 2.627299211659199045e+02 2.173916205317264883e+02 1.878835852278120910e+02 2.578733373077019451e+02
|
||||
2.843897417914848802e+02 2.685865547709703378e+02 2.810255710736182664e+02 2.572690897085278152e+02 2.416998564827035523e+02 1.770932574976374099e+02 2.021652319180342943e+02 1.414744641219446351e+02 1.464677002516696405e+02 1.831165552459343644e+02 1.157177632931430651e+02 2.625289386264841482e+02 2.972225480003540952e+02 1.024156386789293265e+02 2.305099741095138768e+02 2.241903749843916671e+02 1.157222019118702292e+02 1.533205318359311775e+02 1.179505454242311799e+02 2.666741766563739020e+02 2.792728900733587238e+02 1.222170248460037811e+02 2.573772727215269924e+02 1.535874607134987286e+02 1.231830862844115728e+02 2.584552954023608891e+02 2.541883057030129862e+02 1.001259630352790566e+02 2.332879439260797767e+02 2.240027888381033563e+02
|
||||
1.537092645679641123e+02 1.737278083620151392e+02 1.736358049797527201e+02 2.251608985235982630e+02 1.812387130195175473e+02 1.605621432944637377e+02 1.880655312831545700e+02 2.234500385148787700e+02 1.156918728696038272e+02 2.243685096423413654e+02 1.934342626327970720e+02 1.850952349553267027e+02 2.629944548485545965e+02 1.410418270562070973e+02 1.442479234012843960e+02 2.244518961458842909e+02 1.350755563946989923e+02 1.207094763037939913e+02 1.849900977633715797e+02 1.712315707730903398e+02 1.136025349108833495e+02 2.266901327137990734e+02 2.049289406654929735e+02 2.168279721613268407e+02 2.802488024880154285e+02 2.288593244920211873e+02 2.512942787545493957e+02 1.605416563468323261e+02 1.449848598254574483e+02 1.444073785399158396e+02
|
||||
1.576600406756634243e+02 1.316580100950168912e+02 2.530050469343043460e+02 1.319013133578224028e+02 2.708693079386434306e+02 1.256852413190491689e+02 1.471714019119002046e+02 1.119112141125198576e+02 1.482405279774543772e+02 2.151504825709631064e+02 1.449998801809978488e+02 2.163638771503673581e+02 1.272949254250747657e+02 2.476027791419436141e+02 2.891208457332292028e+02 2.642744540427622724e+02 1.972643066216432999e+02 2.480891057982425423e+02 1.265454595896786003e+02 2.957735252703171227e+02 1.831389323451852533e+02 2.674516147697771657e+02 1.404389674972707667e+02 1.350952754772052913e+02 2.169062951790871807e+02 2.445227715623778408e+02 1.771545655819627427e+02 2.729961759152714649e+02 2.655105689521545855e+02 1.887977700062222084e+02
|
||||
1.336462666694000632e+02 1.333709897858500995e+02 2.263366393511863350e+02 1.847175439991091821e+02 1.121699721143812383e+02 1.985314153845103533e+02 2.097626398761568396e+02 1.994292542548276970e+02 2.119822099620050722e+02 1.121578896112172430e+02 2.285640262135607372e+02 1.530452060058861719e+02 2.280757825791220625e+02 1.002584314437652893e+02 1.549763597162410349e+02 1.962603185897801836e+02 1.520023734031539107e+02 2.188357004065238129e+02 2.078620274892635678e+02 2.253215106546470281e+02 1.707542413836397373e+02 2.818584030117174279e+02 2.256862624833151472e+02 1.123882683852972377e+02 2.188298604829752776e+02 1.623779544769217296e+02 2.272253780943444212e+02 1.236449568833132560e+02 1.456708971140968174e+02 2.173334506159979753e+02
|
||||
1.355111076933105210e+02 2.882277378633141325e+02 1.458332953325788139e+02 2.038461345794760007e+02 2.077052275373579278e+02 2.430957456359013804e+02 2.398926697516154150e+02 1.861334604823129553e+02 1.056851094080089695e+02 1.250491536199931772e+02 1.475324860190441427e+02 2.446126161547439324e+02 2.283994822545897705e+02 1.411463500178549850e+02 1.017206978570942510e+02 2.805514386584911790e+02 1.128847993259780083e+02 2.326583828053989862e+02 1.968387029218569069e+02 2.013375618903088480e+02 2.981010702857409456e+02 1.018614681114941902e+02 1.799507821883679526e+02 1.133741465580100396e+02 1.235533581072856038e+02 1.980629645203880500e+02 2.289642287691829097e+02 1.596082722591768288e+02 1.905110471998515322e+02 1.789448781159623820e+02
|
||||
2.588286452268601465e+02 1.978130463173739599e+02 1.052689337312009599e+02 1.316763830509305251e+02 2.659236586726388509e+02 1.637014132384438767e+02 1.416031833329826668e+02 2.638665530652568236e+02 1.007257384115875425e+02 1.143900271701907769e+02 2.977834670475828602e+02 1.589765734727692745e+02 1.903975572290986520e+02 2.371635535037608804e+02 1.840341975670916668e+02 2.047003785265828242e+02 2.798969769773281655e+02 2.731706896262927557e+02 1.266878907904394254e+02 1.882415083052244427e+02 2.273996647906652129e+02 1.051754139634791869e+02 1.949647447346334843e+02 2.153583447980240919e+02 2.763468452623635585e+02 1.126493843527773322e+02 1.566047572050934491e+02 1.655928523150526246e+02 1.733528322945315949e+02 1.292815908595541146e+02
|
||||
1.453195062153936874e+02 1.443849872704900008e+02 2.393030362110915519e+02 2.203850914291498668e+02 2.628192548589183275e+02 1.142161203389242132e+02 2.954875947743198594e+02 1.914138981839176950e+02 1.956478457154231023e+02 1.282875398486639824e+02 2.801001077571227142e+02 2.478095646281364566e+02 2.467477848581343949e+02 2.819656424464902784e+02 2.951823714077539194e+02 1.777239847229775478e+02 1.197979896746704185e+02 1.481181033052623661e+02 1.906710229153984528e+02 2.142395628283543658e+02 2.300980272040501973e+02 2.228884003748859186e+02 2.473330601440014220e+02 1.391193242835927322e+02 2.836257563055140736e+02 1.510096324299383923e+02 2.202302141125946946e+02 1.931468179284185851e+02 1.332427495686727639e+02 2.591048546650930575e+02
|
||||
1.878681542531208208e+02 1.576240359584147654e+02 2.653849736815447500e+02 2.963544993865212973e+02 2.044592436730770828e+02 2.022626486161902903e+02 2.692262675681025144e+02 2.660999355751699227e+02 2.275843495473382347e+02 1.090849337992742818e+02 2.095602584555617227e+02 1.896271059113536808e+02 1.103822849104477513e+02 2.916911739044173260e+02 1.131212278363718582e+02 2.998892666268029643e+02 2.476782245756396605e+02 2.259689579913920738e+02 1.853942231198421950e+02 1.358270117521841200e+02 1.538630682720535674e+02 1.002148317174243601e+02 2.538393939061405433e+02 1.631649956267838206e+02 2.086654853664906000e+02 2.065167771482954322e+02 2.184161808630845485e+02 2.204789814939956045e+02 2.876785893506615821e+02 2.415299687386639675e+02
|
||||
2.578989465605797591e+02 2.309888943086805853e+02 2.139372792253111584e+02 1.438019921733897775e+02 2.686852572045135616e+02 1.347038004304963579e+02 2.662658866335509060e+02 2.378358170108797367e+02 2.901455078003721155e+02 2.653867524737770509e+02 1.011162296015096302e+02 1.236447329941733528e+02 2.440241295351771669e+02 1.285889645706482725e+02 1.234088480316093808e+02 2.765916670935633874e+02 1.132915304101479421e+02 2.967043774237617413e+02 2.960414394814537786e+02 1.923965028192617410e+02 2.177448618307050765e+02 2.328047369831131732e+02 1.702256773965170282e+02 2.320080409490440729e+02 2.962065584958517093e+02 1.421971909775941185e+02 1.416181340866144183e+02 2.318260414882616374e+02 1.990521696869427046e+02 1.291045564046920333e+02
|
||||
1.562042774178686386e+02 1.004265446278790392e+02 2.987714610921041185e+02 1.843637355858842284e+02 1.975513718825063165e+02 2.869996482942455032e+02 1.598134132589713943e+02 1.814921031876193638e+02 2.433389905907341983e+02 2.220363745053336970e+02 1.548306942100590504e+02 2.274512269554506361e+02 2.173006200058655963e+02 2.139515436667214772e+02 1.820439741095771353e+02 2.954110718222074183e+02 2.706126458816278273e+02 2.546812106115172583e+02 1.499899738326257363e+02 1.498010641912065921e+02 1.897725780579399668e+02 2.531561160917130167e+02 2.568891780637028432e+02 2.223136077092870551e+02 1.518604819103856585e+02 1.610422120589223027e+02 1.090455809489133259e+02 1.950503873748027388e+02 1.235704160644129388e+02 2.711492093024702967e+02
|
||||
2.039597038432034424e+02 2.026680584622021684e+02 1.365818873512059213e+02 2.909476552420245525e+02 1.721994194158640425e+02 1.854386667051114443e+02 2.287109571295530372e+02 1.912591665763447963e+02 1.607322994166321450e+02 2.949516230628389053e+02 2.522065912002103403e+02 1.869433122585654701e+02 1.235797649248940644e+02 1.522422059501078024e+02 2.738245135411146975e+02 1.059681837441489307e+02 1.013027238331489173e+02 1.660100598156148237e+02 2.454471731623151243e+02 2.467503196183328100e+02 2.584564749953993896e+02 2.079587352810677316e+02 1.650926041957846451e+02 2.269719270682073784e+02 2.376254891983122093e+02 1.510146656008620596e+02 2.672848371954185041e+02 2.692845974117340688e+02 2.180714754246087921e+02 2.186797802447831884e+02
|
||||
1.704231257711912519e+02 1.993416036368699906e+02 2.293703655438095268e+02 1.494582642918422266e+02 1.988970317734676030e+02 2.329763291241497711e+02 2.594871448385057420e+02 2.168089936885102134e+02 1.825320854593447280e+02 1.816754553181755796e+02 2.164740515812325725e+02 2.676208645391697019e+02 1.298365075936954725e+02 1.802664596093496243e+02 1.015344620621038132e+02 1.955048336384612639e+02 1.938953913674110083e+02 2.716932071347151805e+02 2.391085978949223829e+02 1.852300387899809380e+02 2.933293185307651356e+02 2.502753353909542966e+02 1.326128348575908262e+02 1.132638325194699433e+02 1.382024010322260494e+02 1.899310337488860796e+02 2.577639546186944699e+02 2.130234590296898887e+02 2.056292296528304746e+02 2.070746044453983927e+02
|
||||
2.712524956603344890e+02 1.103212761114690750e+02 1.501201791543782917e+02 1.588084859702673555e+02 1.780379814134324192e+02 1.938691258391782810e+02 1.322057441019641146e+02 1.105823874551086590e+02 2.879365916037821194e+02 2.457617763012990224e+02 1.036189749330240488e+02 1.682919366264929124e+02 2.271749409116763161e+02 2.468308259697249127e+02 2.530034131464132088e+02 2.481420904342841709e+02 1.546080547019561209e+02 1.278414739842506265e+02 2.234886960240669111e+02 2.535365186455997843e+02 1.599130733896959669e+02 1.151371295028686035e+02 2.378656188176093451e+02 2.901072209563180877e+02 2.524076257924749882e+02 2.849501171254129304e+02 1.802791659856764568e+02 1.527418387706650833e+02 2.578820596338672431e+02 1.208856989199291263e+02
|
||||
1.884906470590645711e+02 2.304295185581007672e+02 1.035923344330140736e+02 1.647061655195892627e+02 1.910201770870304472e+02 1.752788518438422614e+02 2.763014227316762117e+02 2.545709641405486252e+02 1.642694881393259152e+02 1.850698110761380804e+02 2.423689469305483328e+02 2.821007056776016384e+02 1.440765548977453250e+02 1.082195827231368952e+02 1.292487205530619008e+02 2.136496853657876613e+02 2.268509220579896635e+02 2.999629735037570981e+02 2.135306905316524535e+02 2.807718279523737692e+02 1.079256111018183759e+02 2.233050677333321801e+02 1.960571416898615951e+02 2.930642308139058514e+02 1.350490077967585307e+02 2.626074042719769750e+02 2.812196827814445328e+02 2.812753678081913336e+02 1.893738913514469004e+02 1.237248675858835725e+02
|
||||
2.024005284879252144e+02 2.663611407988397559e+02 2.687079844301063076e+02 1.583164038086077312e+02 1.451019436850150441e+02 1.100558451420041450e+02 2.083655450975085159e+02 2.034012033819327598e+02 2.745375932717230398e+02 1.454718097055225599e+02 1.519068131933423729e+02 2.522666952972969625e+02 2.409340029943109300e+02 1.697386944425205115e+02 1.092659514648129289e+02 2.785598218078254149e+02 1.404092026094307357e+02 2.152301424167146990e+02 1.170396027347833723e+02 2.495323893679063474e+02 2.070836095469416591e+02 2.187978925167305135e+02 1.478606128149070855e+02 1.189323178954538207e+02 2.012925160284665651e+02 2.080878545398990127e+02 1.510128433840351647e+02 1.657302151838663065e+02 2.177026636795220043e+02 1.221198981216710422e+02
|
||||
1.411258561955272341e+02 1.419717097672817374e+02 2.247481951315160984e+02 2.805973971111802712e+02 2.755562061324142178e+02 2.039769327420251557e+02 2.994080883760036045e+02 2.417843309736466040e+02 1.023751441731232319e+02 1.491356884971497152e+02 2.542464200475323821e+02 1.496044144381669128e+02 2.829129207809560285e+02 2.479316882407134699e+02 2.441205876677642550e+02 2.045492313770996020e+02 2.855582203360229414e+02 2.884005586284110336e+02 2.039668453101600676e+02 1.690279206477617890e+02 2.136822090795746760e+02 1.254275901194574772e+02 1.084851042192170922e+02 1.656011685190305229e+02 1.415195951026897774e+02 1.578115814760412263e+02 2.619737257057257693e+02 1.492347147839753347e+02 1.627213988646173561e+02 1.343297485726322691e+02
|
||||
2.544675070683062756e+02 1.367461330002975899e+02 2.928364121110963652e+02 2.024865028281971036e+02 2.758937379397792142e+02 1.293527538914390220e+02 1.003170531204512059e+02 1.514803620238746760e+02 2.603616046431354789e+02 1.790387290949859960e+02 1.954717187769221027e+02 1.325226280128280223e+02 1.522166198122710625e+02 1.162911821325583048e+02 2.798489406348742250e+02 2.521718932296424498e+02 2.622327475379161115e+02 1.027798265388270949e+02 2.437256510683693023e+02 1.911771820917219884e+02 2.722604457055863350e+02 2.850557929858495640e+02 1.953760157441756746e+02 2.473572905253965644e+02 1.891404804097296051e+02 1.514672503279451803e+02 2.213565012031598940e+02 2.253356064978207769e+02 2.044629345029305227e+02 2.805872739342098612e+02
|
||||
2.859142434488251183e+02 1.016009480575973356e+02 1.779351649172412522e+02 2.205171340775500539e+02 2.104472905774927369e+02 1.755755724600441567e+02 2.751836189782782185e+02 2.820692049982218350e+02 1.337557428916256015e+02 1.569761138230965969e+02 1.991757527032745543e+02 2.615974376894962461e+02 1.944849272958306017e+02 1.868411694165790777e+02 2.994394032068257729e+02 2.802783326794233290e+02 2.693871918204162625e+02 1.750293298802730249e+02 1.468161278725061720e+02 1.272003326865558108e+02 2.233103517167062932e+02 2.103066399402185027e+02 2.720825853079193735e+02 2.728915492341989193e+02 2.160004538807991992e+02 1.325145501710478015e+02 2.549827549782140466e+02 2.921469675413995901e+02 1.846231529604695822e+02 1.391152989663993651e+02
|
||||
2.538717579982014456e+02 1.450483481068324352e+02 2.720200816305956550e+02 1.120834821105324011e+02 1.703801876168104741e+02 1.091293661435919233e+02 1.410263490040598526e+02 1.910022197757120352e+02 2.505223413771657022e+02 2.069613533172621374e+02 1.367200764291426935e+02 1.269156762039037574e+02 1.459486945063737267e+02 1.585863332989725905e+02 1.433846106215619329e+02 2.893202513225785424e+02 1.754070497414596730e+02 1.678900237854272746e+02 2.363821059303507752e+02 1.088858921730617908e+02 1.962435837543239927e+02 2.151311182954276831e+02 1.943029551670006754e+02 1.670799798236046172e+02 1.348235227224938910e+02 2.005836112104490212e+02 2.601588534628079969e+02 1.194827586439497935e+02 2.131891535893303740e+02 1.835674362703964277e+02
|
||||
2.872207377280434457e+02 1.680389491751975299e+02 2.268072198735419533e+02 1.324343035526375729e+02 2.746241572770433095e+02 2.142161570690199710e+02 1.852290440736100550e+02 1.772431485621305285e+02 1.144750125154023266e+02 2.162070901557998468e+02 1.490690769171257557e+02 2.904041493178549445e+02 2.673617561413327621e+02 2.904362235840736730e+02 1.438791831406123833e+02 2.596893065528289526e+02 2.617155941751458386e+02 2.388486986717779246e+02 2.718819501315180105e+02 1.265484539827731680e+02 2.508989305854047700e+02 1.677208481362706323e+02 1.527665277518251230e+02 2.069026506407369084e+02 2.223100964495413336e+02 2.859845330217733022e+02 1.430291068893224349e+02 1.186508486537613436e+02 2.043257492072551713e+02 2.909823892985461953e+02
|
||||
2.385945641230763670e+02 2.011887933217761031e+02 1.622448188725907983e+02 1.738874847453056987e+02 1.669498482708885376e+02 1.853462372214463016e+02 1.514500885098960907e+02 1.569159134451362547e+02 2.521399095730983504e+02 1.246878140446721659e+02 1.758330561641313352e+02 2.722601647479554003e+02 1.679012078705679869e+02 1.710944469563905272e+02 2.012619557548435978e+02 2.130692925302264200e+02 2.489118511754019778e+02 1.553758318484749452e+02 2.531318516516165857e+02 1.895498740333992487e+02 2.010265603399928409e+02 1.805605111948569856e+02 2.471772127430102159e+02 2.822665908577009759e+02 1.256656757093761314e+02 1.218957078832023626e+02 2.851942693987446660e+02 2.434079459678487751e+02 2.183256665756584312e+02 1.881473862468819220e+02
|
||||
2.878274557836845133e+02 1.654481949983921254e+02 1.215681808546938214e+02 2.567820905945674781e+02 2.104106688330284101e+02 2.960796083414018085e+02 2.020680111052573693e+02 2.328934707961639106e+02 1.081575190462602336e+02 1.003340046261853189e+02 2.009697278729638299e+02 2.231963192062537757e+02 1.203849639323555323e+02 1.187994179134823156e+02 2.211937485225296030e+02 1.667300587261732119e+02 1.727379541915926211e+02 2.085029285798690353e+02 2.440827389167183981e+02 2.864522928573259151e+02 2.974890568790378893e+02 2.102945085846974393e+02 1.972598274048171447e+02 1.762889209976547136e+02 1.346946323322499666e+02 1.554434255958064170e+02 2.915634104756007901e+02 1.434053307556222876e+02 1.055800565037633163e+02 2.043924431141962259e+02
|
||||
1.494596010135965116e+02 1.369114048625681335e+02 1.414146701131132886e+02 1.383970135097982848e+02 1.734304788623498155e+02 1.594301265610334610e+02 1.040146208229407137e+02 2.208381597698417806e+02 2.904998286250861383e+02 1.300157615397056929e+02 2.667076669416877621e+02 1.062418844419948556e+02 2.717657999079561364e+02 1.054097765488278640e+02 2.401074677516734823e+02 1.045408432466875297e+02 1.330046749931937882e+02 2.297648034226271534e+02 1.488059718063634307e+02 1.725671935994615183e+02 1.330818497812682608e+02 2.341687919103425770e+02 2.983144736799429211e+02 2.798846823197050071e+02 2.218705077010061473e+02 2.681931695329894865e+02 2.339384973461015420e+02 2.893058480095726281e+02 1.539801301873031321e+02 2.746688360458649640e+02
|
||||
1.330701439354522222e+02 1.727884450558678395e+02 2.309082669627648272e+02 2.027633892073664299e+02 2.725503026364725656e+02 1.999882667367585896e+02 1.904108867169430255e+02 2.952458047945178805e+02 2.903769421220866320e+02 1.593020200554085477e+02 1.236139458806368623e+02 2.670862420061573062e+02 2.910830183895285472e+02 1.860711175093342149e+02 2.161724988935532963e+02 2.564488756979296795e+02 1.231566645138573648e+02 1.554206254375235403e+02 1.148558104746345521e+02 1.512714227454516163e+02 1.953024826710307025e+02 1.296022137194406127e+02 1.500450396815122076e+02 2.611742573447975246e+02 1.601671705158374550e+02 2.391666762859087214e+02 2.566415095930981352e+02 1.923304801412870404e+02 1.194174883996373353e+02 1.970722090829630986e+02
|
||||
1.912113734453868688e+02 1.498407015577022605e+02 2.038188614169363007e+02 1.315017316695561647e+02 2.564290419741012101e+02 1.890015309531812022e+02 2.451565642315005960e+02 2.794356592632736920e+02 2.286941218755985972e+02 1.959549984609147941e+02 1.183834182035568716e+02 2.102820643179567242e+02 1.748108698585573393e+02 1.534379248653211221e+02 1.919662859034699522e+02 1.273611408042816464e+02 1.848163823983119585e+02 1.719445827292381637e+02 1.098466009889928898e+02 2.781108902268393877e+02 2.089286134506138524e+02 2.324518337977864348e+02 1.983840049195213169e+02 1.897881971862217370e+02 1.057077761008814605e+02 2.693629461665184408e+02 1.359710117509105487e+02 2.191184409971657487e+02 1.295811391257115304e+02 1.272165218667991553e+02
|
||||
1.987244486959793903e+02 1.516360617950651317e+02 2.198509518241761498e+02 2.494181713303175911e+02 2.903223989223247372e+02 2.847249789220907132e+02 1.747037051964282171e+02 1.610307305098726829e+02 1.866621867053561061e+02 1.016530888490581503e+02 2.606194448419089440e+02 1.820037020201941402e+02 2.650669443765450524e+02 1.137210849453726098e+02 1.329244106101075715e+02 1.741312140090854257e+02 2.301425980066611885e+02 1.051708772384664030e+02 1.994040172335078864e+02 1.874773290907829733e+02 2.745616984783777070e+02 2.354781865911449756e+02 1.598287033335407159e+02 2.650689470710170212e+02 1.643692352330562017e+02 2.991199217036622713e+02 2.713535332162406348e+02 2.516280148665988463e+02 1.124367393830256532e+02 1.725070309959049837e+02
|
||||
1.637875882282461077e+02 1.407642428016634426e+02 2.759741260511348173e+02 1.982469453863400304e+02 2.966736241669494802e+02 2.756530253528777052e+02 1.426661371226006167e+02 1.585144634205103102e+02 2.836415355000413001e+02 2.468213340046699784e+02 2.898204535963063790e+02 1.711408259966125343e+02 1.900542569026269177e+02 1.112151031999617032e+02 2.679918109779015936e+02 2.737346364036235400e+02 2.597479311885246602e+02 1.719445390286030886e+02 2.361360157374418236e+02 1.123330408578339785e+02 1.214203690485689719e+02 2.552722899309185891e+02 2.436705678248840456e+02 1.596697357728296254e+02 2.533254006866929444e+02 2.066863222258713790e+02 1.194370826184286329e+02 2.943584774485435673e+02 1.636272134478143130e+02 1.191267138602315185e+02
|
||||
2.350924626651462006e+02 2.263138093076711357e+02 2.206572605284771385e+02 1.704171521239532296e+02 2.000250897638135257e+02 2.966317084215347109e+02 1.350543763227695138e+02 1.248113195978286285e+02 1.480602782771696297e+02 2.391913401309390679e+02 1.908758915801345779e+02 2.476074601271855045e+02 2.408834383325319095e+02 1.009169451940341560e+02 2.567526834523320645e+02 1.791854948779896688e+02 1.412277552146151152e+02 2.660711025781407670e+02 2.073940326990519054e+02 2.509760072499196610e+02 1.358593750308925223e+02 2.127422683140523532e+02 1.874643773621423293e+02 2.844455725631112273e+02 2.197223292953194118e+02 2.049519862750077266e+02 1.674367936692717365e+02 2.806316262053937294e+02 2.040091003350897836e+02 2.675290975004411962e+02
|
||||
1.483513543637005796e+02 2.384008274111940011e+02 2.834409911154408519e+02 1.344593118283445392e+02 2.346883831968173979e+02 1.381882879805813218e+02 1.241165074750676638e+02 2.186327911062819567e+02 2.466602279029802673e+02 1.573094529523951906e+02 1.568918412618390903e+02 2.289205163045023710e+02 1.170165333644822283e+02 1.742406104080407658e+02 2.082974381484526702e+02 1.600869123712819260e+02 2.399160913983472199e+02 2.877189278027444743e+02 2.845252294036096146e+02 2.342337907657317544e+02 1.496264758341107779e+02 2.905797831387872066e+02 2.824703799011629144e+02 1.047015685176013307e+02 1.056531628249932169e+02 2.778559625738202499e+02 1.693549799118289343e+02 1.654193764711911570e+02 1.062077606699500762e+02 1.159643419206647792e+02
|
||||
2.694780377267857716e+02 2.229138360502907403e+02 2.407432883969363218e+02 1.240072643521201741e+02 2.128611568148922970e+02 2.114050669978733481e+02 1.042337934877265297e+02 1.044783539591350490e+02 2.706611056394938259e+02 1.972285130309975898e+02 1.959046941044780681e+02 2.915493579522836853e+02 1.131994346897827342e+02 1.197362406389762839e+02 2.877593780027675621e+02 1.089470964294721824e+02 1.996015695685267417e+02 2.185569019121031999e+02 2.102686704320404374e+02 2.955299037924150980e+02 2.987478446256551479e+02 2.517129931888254646e+02 1.552463625479420557e+02 2.295020326441428153e+02 2.886454895961533111e+02 1.869792800456660871e+02 2.703426621835664037e+02 1.873514421416134326e+02 2.714620374401066556e+02 1.623625260081516331e+02
|
||||
1.457420078291350194e+02 1.926195242081234369e+02 1.841639049563959247e+02 1.397830290030836125e+02 1.287503203163068406e+02 1.684614546803193775e+02 2.820658047345126533e+02 2.986548244924653090e+02 2.631399932039782925e+02 2.870930868530864473e+02 1.141938207690214426e+02 2.868552010662050407e+02 2.019110175402121286e+02 2.840219745246005232e+02 2.848478851173646262e+02 1.902287203163165259e+02 2.696968940302964484e+02 1.690355482825476656e+02 2.171695948786692725e+02 1.960363641465239652e+02 2.930566891688549731e+02 1.380341365242818483e+02 1.769912313914243214e+02 1.164985277343077996e+02 2.079184380436491324e+02 2.871364788135472850e+02 1.796231479741346391e+02 1.115892945700443875e+02 1.922852518794877028e+02 1.851500906627327083e+02
|
||||
2.894943401361737187e+02 1.972990286414578804e+02 2.801948561309920933e+02 1.993490085147259947e+02 2.539099743775018112e+02 2.972486389690005240e+02 1.162404922698449354e+02 1.801898545246462504e+02 1.283416456049016858e+02 2.289248555429664407e+02 2.419505668531598985e+02 2.755101537543703216e+02 2.786083442131507013e+02 2.461931811431258552e+02 2.699066237266536064e+02 1.088542193903703179e+02 2.302113104476973149e+02 2.158136503417114227e+02 2.797451432348925096e+02 2.832754349673875822e+02 2.207567008139471909e+02 2.920947868166995249e+02 1.300092217647513735e+02 2.953259288980694350e+02 2.539624465668687492e+02 1.304833679125420645e+02 1.051395153781939484e+02 1.855592224876973830e+02 2.160289702497469477e+02 1.227895712666205981e+02
|
||||
1.029685235386965587e+02 1.410297052380113882e+02 1.832105986621241982e+02 1.016727951098498579e+02 2.130361696974732126e+02 1.817578553203918830e+02 2.644724203174304193e+02 1.713346250427240420e+02 1.297164370175517547e+02 1.072810924841072193e+02 1.083932811014470161e+02 2.860684171745337494e+02 2.893854146138399983e+02 1.677808320623732925e+02 2.343535290724524600e+02 1.209564642240636090e+02 1.329537830609780542e+02 2.924542956964438645e+02 2.733376468658280487e+02 1.397146179999238598e+02 1.103570089598620285e+02 2.231457082965310690e+02 1.056672424832338635e+02 2.887779644840117612e+02 1.127167878193751704e+02 1.387640376146708263e+02 1.791595456124304633e+02 2.709107895779202408e+02 2.238624693992912569e+02 1.773395240564728397e+02
|
||||
2.317578772498348769e+02 1.294950944138938667e+02 1.126253428029936572e+02 1.371351849575549693e+02 1.785990678455200964e+02 1.021081186758702444e+02 1.471984209931611360e+02 2.907355141803875540e+02 1.881128962816476644e+02 2.776434621780599628e+02 2.231668573818950279e+02 1.905362514139340817e+02 1.921875823712000226e+02 1.027725913116546792e+02 2.939602582690168902e+02 1.776540079128602656e+02 2.761214484196684111e+02 1.042033722248946646e+02 1.812858538041361385e+02 1.739774673118114663e+02 2.626640185867897799e+02 1.702975408841979288e+02 2.558138050153142729e+02 1.733257751657050392e+02 2.918973111180089859e+02 2.499103812623473857e+02 1.210050998380505973e+02 2.819910650801346605e+02 1.887952629909842699e+02 1.910084514453274380e+02
|
||||
2.212539479167726029e+02 2.774434360961662378e+02 2.337566454731646104e+02 2.345785537275947661e+02 2.365459264006348405e+02 1.983982238092833086e+02 2.030822332599765332e+02 1.995891111618029186e+02 2.834365683300363798e+02 1.036872616932399609e+02 2.192093181482490252e+02 2.601252995545215754e+02 2.498786393235831724e+02 2.102914196276636858e+02 1.344974807588668000e+02 2.319076536245909210e+02 2.769341510052834110e+02 2.705990780330756138e+02 1.679097240924248240e+02 2.394521666103182724e+02 2.042111123157340842e+02 1.679545908808316028e+02 1.638112120198904051e+02 2.498667640522866407e+02 1.298749690282424183e+02 2.953546510122243944e+02 2.420377599473625025e+02 1.972281420856064642e+02 1.511153679243939223e+02 1.785899871179086063e+02
|
||||
2.568297621323404201e+02 2.469847896802298237e+02 2.766623631158322496e+02 2.476135901735717937e+02 1.788596740963971570e+02 1.849716544556056874e+02 2.568516536462929594e+02 1.692762419184084877e+02 1.468834240718183537e+02 2.716053370235183593e+02 1.674083895790932957e+02 2.340636951853666687e+02 1.637725360284847227e+02 1.316562872243186177e+02 2.850086566701365882e+02 2.066513343106022944e+02 2.990778363456342390e+02 1.780020440519503495e+02 2.906711993591478631e+02 2.149926413975278479e+02 2.151504627144789765e+02 1.458362697904619836e+02 2.339644011324822657e+02 1.740513991402896181e+02 1.804876886135730842e+02 1.706585538790989176e+02 1.113370339871644603e+02 2.032819788543359039e+02 1.225434838619497526e+02 1.558188197132453183e+02
|
||||
2.752385657001058803e+02 1.704994416021052643e+02 1.607090409105587696e+02 2.031247490318933444e+02 1.333383797740430339e+02 1.922643047184382112e+02 2.665685682619526915e+02 2.611043497447243453e+02 2.444450591022788615e+02 1.012899678037660181e+02 2.236752860048796947e+02 1.164606756896235993e+02 1.768812782093617955e+02 2.532808672341815850e+02 1.308823477633827395e+02 1.683394957344131626e+02 1.787390150786144716e+02 1.962681762314343530e+02 1.178176219749694980e+02 2.151624908275416885e+02 2.951256579216935734e+02 2.058583926262361388e+02 2.348769662163374790e+02 2.500118096543036472e+02 2.065978549387351109e+02 1.732426267043477139e+02 2.575950640438621804e+02 1.826939497339359946e+02 1.586062531006688801e+02 1.141086110094916819e+02
|
||||
2.107478059550890066e+02 1.212326460542207940e+02 2.154852140069355073e+02 2.624147598788578648e+02 1.169795422214265699e+02 1.682202484364929660e+02 2.987700686247625299e+02 2.259973608163532504e+02 1.912690930240648015e+02 1.896338093439390775e+02 2.747727757049322008e+02 2.388804299971102978e+02 2.538821160842531128e+02 1.839990833334872491e+02 2.839611350159472067e+02 2.953225980324958755e+02 1.674336071760058076e+02 1.609172697163818953e+02 2.902596210806400450e+02 1.513824951234124114e+02 1.873458283487339600e+02 1.695960935104061491e+02 2.116215526550050470e+02 1.849422962892989233e+02 1.434256749723924713e+02 1.304784783123307079e+02 2.632948417544853328e+02 1.656472047377057777e+02 2.303125851744007377e+02 1.681993961373014486e+02
|
||||
1.104191565760665128e+02 1.750924257030650040e+02 1.242494131306669090e+02 1.541741282893887899e+02 2.585460716706878657e+02 2.286423505464783261e+02 1.890990979891397501e+02 2.707781238779197679e+02 2.619171833457787670e+02 2.695823002806438353e+02 1.941989480397771786e+02 1.389058748786196134e+02 1.283479072532797431e+02 2.347481590897206729e+02 1.518985431591505630e+02 1.757095590143896402e+02 2.225334593093496096e+02 2.231309387578290568e+02 1.039310896134069395e+02 2.614149485334186238e+02 2.212890027388380076e+02 1.425609106790709859e+02 1.376620423520403733e+02 2.403640719649376933e+02 1.152284694789922526e+02 2.108068210397188409e+02 2.526640691383259991e+02 2.323633859683563969e+02 2.720522122905912283e+02 2.498034621012949685e+02
|
||||
2.223449436042899947e+02 2.823923482876032267e+02 1.728419664392092727e+02 1.542710015610415724e+02 2.699062389875002737e+02 1.776741825057288793e+02 1.800001384193664080e+02 1.819433000632012636e+02 1.436484983468620840e+02 2.344086094824976954e+02 2.824459866922626361e+02 1.860318500101035681e+02 1.749968777772715498e+02 2.792448396035428004e+02 2.134719239619671498e+02 2.649346822194891047e+02 2.535109715864082602e+02 1.651109960016319178e+02 2.407385671793928736e+02 2.276937454871455770e+02 2.965404491761371446e+02 1.771850291606413634e+02 2.317902380753697855e+02 2.233400563607936817e+02 2.471010629200553694e+02 2.999085009765063319e+02 1.263611681933084725e+02 2.954593528043474180e+02 2.279026703099021915e+02 2.630592311905735414e+02
|
||||
1.662671322607742752e+02 1.600442354914371208e+02 2.476541290397616137e+02 1.471310870365195740e+02 2.302232198157895198e+02 2.833854716762933776e+02 1.464787719165046553e+02 1.913553080525503560e+02 1.014594285276723156e+02 2.182963956218923158e+02 1.629807715448000636e+02 2.692152036144454428e+02 2.287521686048013976e+02 2.982465613581407524e+02 1.646080094271899839e+02 1.685350412843276899e+02 2.638506951547767585e+02 2.931520510309920837e+02 1.395453733045734168e+02 2.192750645467382355e+02 1.118562057344099543e+02 2.210439168983162972e+02 1.977199388190010438e+02 2.248771354041466566e+02 2.967583759675493411e+02 1.144799677712354793e+02 2.877369511761256149e+02 2.831237961244747225e+02 2.909105411130262269e+02 2.550977837950437390e+02
|
||||
1.519738194711488006e+02 1.042788193386050608e+02 1.298121344332743377e+02 1.827398187867084971e+02 2.371985543371917800e+02 1.647119082252074236e+02 2.792046599520904238e+02 1.737333830141970452e+02 2.019611337599129968e+02 2.402390448779260623e+02 2.107045415433176174e+02 2.447101973248666411e+02 1.584507446746840174e+02 2.877533155913679366e+02 1.209142860803932251e+02 1.903846717728129931e+02 1.485923447895592631e+02 1.040627746119376695e+02 2.329784390325348795e+02 1.136264746597146882e+02 1.019818146651219024e+02 2.395077159260278847e+02 2.571474008697522322e+02 2.507839876514990465e+02 2.649762964978717719e+02 1.398370322453145889e+02 1.116668292809188614e+02 1.262068209877756289e+02 2.561228606182183967e+02 1.019925993853918413e+02
|
||||
2.525550526067758881e+02 2.649927164229666232e+02 1.457764901336312846e+02 1.519121804298574148e+02 1.112983565335166247e+02 2.979018464293943680e+02 2.517559946611144142e+02 1.257251989750113239e+02 2.377842966816966737e+02 2.692916709774201536e+02 1.558791612193160745e+02 2.988101508442036334e+02 1.264682305510686575e+02 2.586186621657187743e+02 2.397705732393993969e+02 1.799773948514575750e+02 2.289212202830902072e+02 2.551439950194432242e+02 2.270410183155361210e+02 2.624250216967006395e+02 2.894508375480465361e+02 1.106681053253299183e+02 1.696755343387707171e+02 2.302155275158106917e+02 1.445113211107399138e+02 1.886794441144848236e+02 2.129906512422033131e+02 2.340704769023953986e+02 1.082933010325512981e+02 1.977265970892881626e+02
|
||||
2.874406426475449052e+02 1.913451373833616742e+02 2.647704607931181044e+02 1.881279366057496532e+02 2.840067538093052804e+02 2.179159896935567247e+02 1.839859875309309132e+02 1.189702187115672132e+02 2.794517441847542614e+02 2.815599370853284427e+02 1.258259904677427699e+02 1.428483537633051412e+02 2.541426109645265967e+02 1.338781623221585164e+02 2.877181693280556374e+02 2.041742222547631513e+02 2.429167887622087392e+02 1.861891141000048435e+02 2.815058357304060337e+02 2.932279451804108703e+02 1.428092602118218792e+02 1.129541128601477595e+02 1.104970415865426503e+02 1.361068733124779726e+02 1.702082770497633533e+02 1.583852379729134157e+02 1.614070717213254511e+02 1.054529192214523476e+02 1.116913943762218366e+02 1.806474879921846366e+02
|
||||
1.904583320230821926e+02 1.477903225290235980e+02 2.926623631581093150e+02 2.267002240281469199e+02 1.643763662729302268e+02 2.199235242233247902e+02 1.853923849032223359e+02 2.941726936508506469e+02 2.665966841434134835e+02 1.199566433868006357e+02 2.951991052054676175e+02 1.594510101065885124e+02 1.458298791153635534e+02 1.532145001211049475e+02 1.411023254500616133e+02 2.140513226665028128e+02 1.678784758049908419e+02 1.708308530430679184e+02 2.099440033407245778e+02 2.664570659333852518e+02 2.959905162222905801e+02 2.829445582187913715e+02 2.588706049990775000e+02 1.722199615074994483e+02 2.869184560072056343e+02 1.681559218785307053e+02 1.503240659973911306e+02 2.588597461006905291e+02 2.678295026364270939e+02 2.154561503934444886e+02
|
||||
2.071927904539387839e+02 2.171736003654224305e+02 1.593735315924418785e+02 2.947356579175152547e+02 1.742775794491871011e+02 2.184611101357660914e+02 2.225198306238390842e+02 2.168369296352294668e+02 1.755672175076374231e+02 2.252214925755263835e+02 1.563369877784152209e+02 2.085332604119019209e+02 2.572482649031854862e+02 2.951800051631508950e+02 1.079183556031880329e+02 1.218838648771928774e+02 2.685371616407055626e+02 2.419162624723466877e+02 1.022244855205179022e+02 1.101224552326326602e+02 2.597819405832950679e+02 1.134555412120959517e+02 2.870491931154815575e+02 1.374365654160442318e+02 2.645641258978021142e+02 2.531141673781916666e+02 2.361747183362105886e+02 1.893108861581111171e+02 1.539026912190118139e+02 2.501170032332128415e+02
|
||||
2.547888423116186232e+02 1.853670755857669974e+02 1.389074705955763420e+02 2.709929622842061008e+02 1.228800068832790515e+02 2.778321736112652616e+02 1.309641642706778555e+02 1.156980811627219055e+02 1.431313378740429982e+02 1.646591400066212714e+02 1.920182917083556049e+02 2.178001706163468043e+02 2.235489712948179886e+02 1.079088316874027242e+02 2.447091545393394370e+02 2.320303973549428065e+02 2.359105911115680101e+02 2.382951907588607128e+02 1.062067779247245483e+02 2.905379355334102911e+02 2.023335418134440715e+02 2.128348219019524095e+02 2.865957710750057004e+02 1.782427960783044796e+02 2.856139874187100531e+02 1.139905905655008098e+02 2.264676166669663360e+02 2.479179013019825675e+02 1.746165350218777803e+02 2.255842464851874070e+02
|
||||
1.883869033800616819e+02 1.965817072065136699e+02 1.890868666652849015e+02 1.898737766004000491e+02 2.779218373710688184e+02 2.134628932560298722e+02 1.100835458783813436e+02 2.768750976313177148e+02 2.547073561014202880e+02 2.728160162818061281e+02 1.733645011505617504e+02 1.625036971255624394e+02 2.977754324167240156e+02 1.632372616873928450e+02 2.174045665187836107e+02 2.606964806055048030e+02 1.625508452643421720e+02 1.715067940576683441e+02 1.218481476549646629e+02 2.842560845538128547e+02 1.928678337146606623e+02 2.708765321293922739e+02 2.077020047066411621e+02 2.923591890868326004e+02 2.230876482822842206e+02 2.689925468225608256e+02 1.036588336737814586e+02 2.052618530546818363e+02 2.648220111560104897e+02 1.868396012623422280e+02
|
||||
1.785937212608853315e+02 2.973454718025594161e+02 2.368986004504845084e+02 1.146953890760472348e+02 1.265905165006724644e+02 2.255973396401841455e+02 2.163675674740596264e+02 1.527913853500098185e+02 2.283358642424602465e+02 2.759303134283557597e+02 2.876072117803540777e+02 2.029362495845153944e+02 1.212425121544320490e+02 1.100001317370093830e+02 2.335268996183764330e+02 2.375268130741384027e+02 2.336339660612213436e+02 2.462747325703657282e+02 2.841981652294566061e+02 1.081959034831858446e+02 1.291296469376330833e+02 2.602425849072438950e+02 2.575669438145553727e+02 2.135342654708205714e+02 2.294373105308322067e+02 2.706502840281193016e+02 2.928412927772634475e+02 1.330151104176747765e+02 1.533759962548247131e+02 2.744006234275867655e+02
|
||||
2.257735103076358882e+02 2.728385269717355186e+02 2.290872800510813363e+02 2.330934692803050154e+02 1.037274604992595215e+02 2.674079561164307961e+02 1.195755645916240866e+02 1.402804464035359047e+02 2.170516922702277611e+02 2.744725918691634661e+02 2.930458735600458908e+02 1.496408395971007224e+02 1.595562419103408729e+02 2.835538666488008630e+02 1.780163567793609332e+02 2.906408145890961237e+02 1.133853019218590248e+02 1.494630592331960770e+02 1.214592101712915451e+02 2.263015460193574881e+02 2.598100406717117608e+02 1.963383361449393192e+02 2.235083985338561376e+02 2.946475410923074492e+02 1.758055989844200724e+02 2.637780439251395137e+02 2.875400021086666698e+02 1.577781508415756662e+02 2.146553072676672684e+02 1.798181279868336446e+02
|
||||
2.620574340171276617e+02 2.153711882285265915e+02 2.245961661539886904e+02 2.054509343172356921e+02 2.926008719008261210e+02 2.432564531143420652e+02 2.303655720936658611e+02 1.615953803481287991e+02 2.918921003884012748e+02 2.760746977013722017e+02 1.909442200188182710e+02 1.596536528765051060e+02 2.491411570718119037e+02 2.924629085319008936e+02 2.587604848561293807e+02 1.524605619386706792e+02 2.737599884275671798e+02 2.090365453766356723e+02 1.610548024559351461e+02 1.018774121963877803e+02 2.410901898572944049e+02 1.875862586601133444e+02 2.588626077539996686e+02 2.579873618626863845e+02 2.838744453525392828e+02 2.580071516854936817e+02 2.114887112935771256e+02 2.675506009048368696e+02 1.260391751775616029e+02 1.858866479221875920e+02
|
||||
1.963224789638335892e+02 2.444908535968891954e+02 1.962779352478895589e+02 1.553096436749702889e+02 2.483662294276224429e+02 1.067992874414757978e+02 2.633849667942634483e+02 2.454321751613854588e+02 1.854433418739394028e+02 2.562889653665436072e+02 2.506342746416453622e+02 1.900819942764665598e+02 1.704565979131312474e+02 2.916979173024495822e+02 1.898592592817412310e+02 2.687872145548625440e+02 1.525347862509104004e+02 2.786582104923993484e+02 2.310813531087783872e+02 1.166208530157265386e+02 2.602471623613457723e+02 2.102772607982462034e+02 2.183751071150112466e+02 1.065011561509572999e+02 2.813176394708128782e+02 1.792292558016025623e+02 2.804083600455996361e+02 1.557890480883644102e+02 2.439522159916458861e+02 2.652201783594097719e+02
|
||||
1.425266334964659904e+02 2.075049705342416928e+02 1.704914602333145126e+02 1.886474594627911756e+02 1.252313163849750595e+02 2.836097447326676502e+02 1.406399617929505439e+02 2.414245225193989768e+02 2.576349788827002385e+02 1.486724691707949262e+02 1.092388214497626961e+02 1.685935770192617724e+02 2.033388664740227227e+02 1.390809359458484948e+02 1.056188661648174758e+02 2.350581131530574055e+02 1.964295662906907012e+02 2.578831766420791496e+02 1.109952979966328144e+02 2.027546721440710940e+02 2.501377690830167637e+02 2.111868593440530617e+02 2.324728205186171692e+02 2.453971856382445935e+02 1.723822394524685819e+02 2.872924628066301693e+02 1.140766727214026446e+02 2.221345013854892159e+02 1.728173248741775296e+02 2.676400838220500873e+02
|
||||
1.711571121866394947e+02 1.085759247733173396e+02 2.001753766691515750e+02 2.760446855018309407e+02 2.056587091496190567e+02 1.121827347031253197e+02 2.274644480946081444e+02 2.571858980756533128e+02 2.945439217283808375e+02 1.913312305877045674e+02 1.500446430731354894e+02 1.650397772114545489e+02 2.581660073502400792e+02 2.094009769144933273e+02 1.731816092302842094e+02 2.727903589313663133e+02 2.606648610353666982e+02 1.460656197586831695e+02 2.016951883706858268e+02 1.247477859691891240e+02 1.732157361502286221e+02 1.195560196858487245e+02 1.253893910664414904e+02 2.455457677441618216e+02 1.778732818035962850e+02 2.490436815297808266e+02 1.487573988963908960e+02 1.937302250034929898e+02 1.502426775501600389e+02 1.110841009912817583e+02
|
||||
2.382535443835092508e+02 1.972031918916456732e+02 2.576267295349729807e+02 1.730194312205534288e+02 1.301593684828995094e+02 1.624008376323430127e+02 2.060036399923972681e+02 1.233366573394677630e+02 2.194763391620297739e+02 1.701495187616251314e+02 1.223397596968992218e+02 1.987622577877627350e+02 2.511738650001373117e+02 2.130204435763062634e+02 1.993899817227978133e+02 1.597764561560970265e+02 1.205224890815559604e+02 2.184250491898233690e+02 1.755709834516516139e+02 2.741081010321077542e+02 2.104755291992826187e+02 2.698148014221883386e+02 1.299106544858947814e+02 2.008369880697999292e+02 2.938716155581552130e+02 2.671516623028076083e+02 1.332347035771324215e+02 1.291435420390463378e+02 1.835021202063177554e+02 2.002866194329941720e+02
|
||||
2.554906544300547182e+02 2.365682876454178540e+02 2.924004211094360244e+02 1.662852505275750730e+02 1.123350814405425808e+02 1.910015128879867632e+02 1.341551373493250594e+02 1.313122940860927770e+02 2.397311819484906152e+02 1.559268654058377024e+02 1.407120959783594003e+02 2.371419051640040152e+02 2.217591327496910480e+02 1.881187811266301537e+02 1.632462641154496907e+02 2.970940639140721373e+02 2.422917505999918433e+02 1.356966040631749593e+02 1.702398486895437486e+02 2.608644720933497183e+02 2.783751927848827563e+02 2.951746624002826138e+02 1.720706565846523688e+02 1.275268866601749096e+02 1.880990845238362681e+02 1.129502795714700625e+02 2.919985401845127626e+02 2.747497807112307555e+02 2.667734033775608395e+02 1.373740617490475699e+02
|
||||
2.115416415080857746e+02 1.431719947715498336e+02 1.718744824503889674e+02 1.075365968452523902e+02 2.220100335193473029e+02 1.965127222891928795e+02 1.062726056237197838e+02 2.631794488147562561e+02 1.658640190278337627e+02 1.169182569761068464e+02 1.645780782039788619e+02 2.940728738870184316e+02 2.979920277570993790e+02 2.125849825405138631e+02 1.533327700316632161e+02 2.655551337415409421e+02 1.329075684859120088e+02 2.686536376777100941e+02 2.299223677315555676e+02 2.123135030200585334e+02 1.474417961566917654e+02 2.899688778344954017e+02 1.439992490259426461e+02 1.606165457016644780e+02 2.854253601360321682e+02 2.837928223954166924e+02 1.868865943198568402e+02 1.809928275876523571e+02 1.583918020284682484e+02 2.384217495701244331e+02
|
||||
1.181670050605631417e+02 1.525653020190297582e+02 2.615084872177121724e+02 1.755024420886775829e+02 2.989795566898581001e+02 1.573585789513378188e+02 1.903575226478752711e+02 1.641861715477102166e+02 2.943146494922903003e+02 2.038802368327418719e+02 2.581560000437879694e+02 1.504995935930718076e+02 1.095655891680627008e+02 2.628623226127134558e+02 1.069018430130149255e+02 2.750818506761686422e+02 1.121786007219489818e+02 1.106710601660877415e+02 1.217291564359016149e+02 2.915199334459504144e+02 1.325859381653097557e+02 1.737237090326784141e+02 1.036075961875061751e+02 2.392327113385031510e+02 2.486092083099548233e+02 1.259492139939950306e+02 2.665249241620523435e+02 2.103119814995928039e+02 2.718465347096271216e+02 2.018653364759854298e+02
|
||||
2.085808638159350608e+02 2.977621083099649582e+02 1.394173606621695285e+02 2.232898484647512873e+02 1.347812725162832521e+02 1.574683348766579627e+02 1.827258429860655724e+02 2.827887224427595356e+02 2.608349632236463549e+02 2.370910079389979046e+02 2.033290260845359398e+02 1.566531500677691042e+02 2.982287288081304837e+02 2.998057140577807900e+02 1.906108269451214596e+02 2.023344526730545851e+02 1.717672594576409040e+02 2.093320563180507747e+02 2.649028095061802333e+02 2.840422446800275793e+02 2.111868958418739908e+02 1.803076798272542760e+02 2.311954915496957312e+02 1.563425451766251513e+02 2.610066662710300989e+02 1.855286443040786537e+02 1.478912573842241045e+02 2.544380211258828410e+02 2.799416317427427430e+02 2.238937193404353252e+02
|
||||
1.269470316997365131e+02 1.895539822645488357e+02 2.443421824114378467e+02 2.632321641240823737e+02 2.164919638664115951e+02 1.042697198382110884e+02 2.896061632271033659e+02 2.068164163046922681e+02 2.059671371408958294e+02 2.352532326493898722e+02 1.046233655847859296e+02 2.755187319279126541e+02 2.344641322699609987e+02 1.434858288567621969e+02 1.255438908126368176e+02 2.548141480364848803e+02 1.466719626681152704e+02 2.020892715394597872e+02 1.195107046056347713e+02 2.012968701954913797e+02 1.996902768982717191e+02 1.560547951636197013e+02 2.162555170020900164e+02 1.483278604161245084e+02 2.615607136845001151e+02 2.424344777210258997e+02 2.524090919470299070e+02 1.726167614603126026e+02 2.199373130240069258e+02 2.318614758097714912e+02
|
||||
1.590143031424979370e+02 1.933970326403360502e+02 1.227042846200323112e+02 2.107086401017011781e+02 2.844049872407889552e+02 1.420899421875644464e+02 1.736571760246831673e+02 1.130876049831349661e+02 1.470306210908964317e+02 2.959723384067232246e+02 1.438030965279091049e+02 1.685928342779160403e+02 1.351720793691902713e+02 1.909711091249450590e+02 1.477005416416634205e+02 1.010528808923594681e+02 2.205493627613245167e+02 2.367352422049318079e+02 1.224997665062844305e+02 1.620949451166091251e+02 1.270634404764108467e+02 2.673321646154778932e+02 1.618882934467209225e+02 1.208967331765591524e+02 2.073956586593529607e+02 1.223277950209799059e+02 2.625820210851194361e+02 2.262632377752408672e+02 2.222881433937307349e+02 1.716205611551696961e+02
|
||||
2.376094214038359667e+02 2.287867757784330820e+02 2.035778067022395703e+02 2.546588007138803391e+02 1.514832565507949198e+02 1.736683542684334327e+02 1.991020520349750598e+02 1.873563480883249213e+02 1.589186331386689801e+02 1.042563150975229149e+02 2.019924784676414902e+02 1.136537158101241971e+02 1.091264020137841158e+02 1.352770409719844054e+02 2.178414513482917414e+02 1.831380105899948489e+02 1.114225947990316570e+02 1.736029819106907439e+02 1.354612112967272424e+02 1.996055424300992627e+02 2.905125217944571432e+02 2.980326934372309893e+02 1.560898949881966473e+02 1.943286005606112212e+02 2.429797193518882636e+02 2.652714760000731076e+02 2.863852813340179182e+02 1.838252831614893239e+02 1.814799327205894315e+02 2.338290144642930954e+02
|
||||
2.526381992552952340e+02 2.089745531365245483e+02 1.869938021147821701e+02 2.864405091884094645e+02 1.736924996547539877e+02 1.479914815134324613e+02 2.132537252074255321e+02 1.830098172980584934e+02 2.476607236946428827e+02 1.066503395377639265e+02 1.405219898965278276e+02 2.743866427972425299e+02 2.269305408710248173e+02 2.791638036143738191e+02 1.824422387811073634e+02 1.852994662516045423e+02 2.777032940597408128e+02 2.109153407914434126e+02 2.214759900082639490e+02 1.857033490029854761e+02 1.302118293337227328e+02 1.889562709124264188e+02 1.844813915245081546e+02 2.875482403705134402e+02 2.022892465111445404e+02 2.230217175841083872e+02 2.843056043891419904e+02 2.350834055358549222e+02 2.080929758762673032e+02 2.770814576487081240e+02
|
||||
2.389430507965955428e+02 2.463651891862864147e+02 2.369578462650186452e+02 1.902366989508459199e+02 2.003468797600664004e+02 2.681735461841141728e+02 2.362787745532336601e+02 2.323782975776413480e+02 2.525302892415198812e+02 2.828059530799229151e+02 2.840327053185673662e+02 1.223941816187275435e+02 1.056255174412387134e+02 1.386503050117574105e+02 1.384325506562210535e+02 1.176641636239777426e+02 1.670688688422628161e+02 2.506322552784647826e+02 1.181229702988334083e+02 2.607048520072489737e+02 1.667476448166365515e+02 1.310085831735554223e+02 1.553111545647699927e+02 2.907454039462255651e+02 2.844644695877585718e+02 1.989933906493695019e+02 2.662036190025202131e+02 1.792754658114438371e+02 1.073664330563030944e+02 2.793141822468826376e+02
|
||||
2.640306978448612654e+02 2.458161373226257069e+02 1.015510894380497575e+02 1.527048938693112916e+02 2.893334394723561900e+02 2.994916089563248534e+02 1.054055716033572452e+02 2.278819528330843127e+02 1.890909183007994443e+02 2.134436011261824433e+02 2.654189934957544210e+02 1.780852604264427725e+02 2.222277079756825628e+02 2.689688042831336361e+02 2.232046857529678050e+02 1.778434593737022169e+02 1.336418515516146783e+02 2.739064893378349552e+02 2.065065746675076355e+02 1.329712924393647313e+02 2.176938186185978736e+02 1.918043587714230114e+02 2.280421349429639122e+02 1.182282112372680842e+02 1.370131137248831692e+02 1.716251366233928195e+02 2.412427837766657888e+02 2.738208811966829899e+02 1.471415247536169488e+02 1.638288393831292353e+02
|
||||
2.669085627842696908e+02 2.477147782526785136e+02 1.718200513884793565e+02 2.299346472745743597e+02 2.016242169414389309e+02 1.631378839470685307e+02 1.859938403107781255e+02 1.609729169019194330e+02 1.536303039404505171e+02 2.234728543554556950e+02 1.953401084257108096e+02 2.920381588589057174e+02 2.034966688752892310e+02 1.019427894404581139e+02 2.980736970140829953e+02 1.738263823108001418e+02 1.531314323312329293e+02 1.400030133312995702e+02 1.802287961283190043e+02 1.719909696301723443e+02 1.974918793689569725e+02 1.666882741246514001e+02 2.879569025675030502e+02 1.334044307903087088e+02 1.016937569869423896e+02 1.660343944328368764e+02 2.214967229035601974e+02 2.539424882366704992e+02 1.211914878013190133e+02 2.835892388637473687e+02
|
||||
1.704109091340931741e+02 1.337843054639438378e+02 1.570106251098002588e+02 2.123587857442842335e+02 2.788290802167920219e+02 2.795601449888932848e+02 1.220747715539721696e+02 1.179984498565524405e+02 1.552783750686872963e+02 1.257256444039083192e+02 2.312614004137946893e+02 1.971625968209403084e+02 1.208837070227885135e+02 2.231693789143681386e+02 2.332576722664892941e+02 1.659208209363902711e+02 1.979623049620595907e+02 2.497459328714609512e+02 2.540243570817084446e+02 1.309045902221261599e+02 2.376613837929333499e+02 2.140333351750954023e+02 2.231625169053620539e+02 2.869160136215916737e+02 1.282002159167354023e+02 1.029173927424986488e+02 2.432034421383394545e+02 1.495648010251883306e+02 1.971910657968611247e+02 1.358409247687675361e+02
|
||||
1.833826243837603442e+02 2.960483510370855811e+02 2.343723986770386318e+02 1.560358896543934293e+02 2.499669478251469172e+02 1.762005778153444169e+02 1.918050503412152921e+02 2.089352602085182866e+02 2.770127170480132008e+02 1.268157216157417224e+02 2.670673189640755822e+02 1.547628252866769287e+02 2.602514896343354849e+02 1.557532905756793866e+02 2.574076233589491949e+02 2.646855654359934533e+02 1.749681240869035719e+02 2.465698370051858035e+02 1.076897610845538082e+02 2.337637497458482301e+02 1.791847918196868932e+02 1.967068388721293104e+02 2.340964493346380095e+02 2.762770912600988140e+02 1.174465260954359564e+02 2.950490567997024982e+02 1.354710376622284116e+02 2.342233227246520642e+02 1.617966271393036379e+02 2.107879984327653915e+02
|
||||
2.493754578342164336e+02 2.275093847135933061e+02 1.466148442335522191e+02 2.261697123059220189e+02 1.213252451599347950e+02 1.628949300801819504e+02 2.100466501082228206e+02 1.508908296808102989e+02 1.488199564735201079e+02 1.727131563468088302e+02 2.306747713688439205e+02 2.570279850661015644e+02 2.309125192178541113e+02 2.422081718543400370e+02 1.769407234272878782e+02 2.688532243604371956e+02 2.276780878660686085e+02 1.065345319601523641e+02 1.535069430280279050e+02 1.717902253122074967e+02 2.876755354986605084e+02 1.683056100689713332e+02 1.120105413679224569e+02 1.755508096146901664e+02 2.095863991316655870e+02 1.523590730880595174e+02 2.944635547123552897e+02 1.444697311944634066e+02 2.165062978405008494e+02 1.410128743297030098e+02
|
||||
1.434402193906418006e+02 2.368914090178307106e+02 1.963465933374949941e+02 1.914557752364961516e+02 2.870767419320768568e+02 2.044699144835463187e+02 1.223520556576680036e+02 2.352284247043744472e+02 2.917945011866975165e+02 2.225925999946875322e+02 2.240309397680480288e+02 2.048455962243571093e+02 1.188048963943729035e+02 2.200553599997707579e+02 1.885605934416515765e+02 2.863412817843446874e+02 2.913876692311304737e+02 2.446563674684449552e+02 2.981153955140326843e+02 1.111775924383378253e+02 2.239868361016714857e+02 2.540473271011064469e+02 1.343930974769885438e+02 2.368686732696482409e+02 1.175691554116390591e+02 1.014879352562223715e+02 1.330784448687188046e+02 2.045426156006566885e+02 1.168174380391246245e+02 1.704438548713551995e+02
|
||||
2.696784010384477597e+02 2.991318545155386346e+02 2.120364825583467336e+02 1.950895785161033018e+02 1.216112431291165592e+02 2.438998438799096391e+02 1.588292735755803733e+02 2.347670069791354024e+02 1.862846309471772770e+02 2.258642611266068343e+02 1.423367506635381119e+02 2.692888471853933083e+02 2.950212092401994255e+02 2.331327670110776467e+02 1.542291422318579635e+02 2.809064569107727038e+02 2.358857646534314654e+02 2.378124255062788563e+02 2.664164586086786812e+02 1.387157904298663880e+02 2.297158046581682243e+02 2.386372312695162634e+02 1.246509391338716171e+02 2.338956320284196408e+02 1.820257170558419944e+02 1.957425768708682767e+02 1.680974560138464540e+02 1.288235048549348676e+02 1.483029350020115089e+02 1.744880718659300669e+02
|
||||
2.512494238114035738e+02 1.112846425403449615e+02 2.472643304237797395e+02 1.241745840646870818e+02 1.808849124644312099e+02 2.524760780760417731e+02 1.836118621524309447e+02 1.408362492891266982e+02 1.099623406752946693e+02 2.383967522197594064e+02 2.436606913384966049e+02 2.770699525768120566e+02 2.597573569531676867e+02 2.935649366424795517e+02 2.702790297508025219e+02 2.563597369995835606e+02 2.279477293752616447e+02 2.477470305460766440e+02 1.962131167814513333e+02 2.859744526791636190e+02 2.703401534622389590e+02 2.763052603711840902e+02 2.934416645125817809e+02 2.193475948646207030e+02 2.822891098008749395e+02 1.085391177109117820e+02 1.782208012387337703e+02 2.335496863699061976e+02 1.715066387390946829e+02 1.948062204233656303e+02
|
||||
2.879262290016004613e+02 1.676743911135137068e+02 1.403503828589753937e+02 2.744454339345198832e+02 2.935124358491533485e+02 2.920282649929100671e+02 1.390240222956847447e+02 2.426642861805074745e+02 1.217336684570653489e+02 1.311823750440439085e+02 1.647679902066092836e+02 2.962811279981685288e+02 2.945746172932865647e+02 2.005257587949587332e+02 2.072045953580022228e+02 2.893049469033056766e+02 1.913962360581630833e+02 1.823675529874825543e+02 1.830342103129283373e+02 1.222396004373517400e+02 2.248239872372262482e+02 1.170253438297526429e+02 2.853825568202013301e+02 2.214973458763422514e+02 2.563932510909227176e+02 2.144837192650675206e+02 1.793062298958048473e+02 2.920176466690815005e+02 1.515607839109829627e+02 1.981203765908239802e+02
|
||||
1.733053660232129403e+02 1.312183264386245583e+02 1.276233157677672807e+02 2.020942572504836789e+02 2.314817368496994732e+02 2.242589617101967008e+02 2.160504620978007893e+02 2.360595788588375399e+02 2.952977074031120992e+02 2.334652590044975682e+02 1.243453875174208747e+02 1.916144242306085630e+02 1.092365115042800596e+02 1.478765005471206280e+02 2.191946613400726278e+02 2.879274886834762697e+02 2.733443652356662597e+02 1.858481832262083344e+02 2.193747651131673706e+02 2.695165737089945424e+02 2.960753121523491700e+02 1.890691006834304631e+02 2.638343907584013550e+02 1.510492177865631334e+02 1.878288206285384661e+02 2.726561149875388992e+02 1.704246795027074199e+02 1.006381753343381718e+02 2.153734239260733148e+02 2.551451126036402854e+02
|
||||
1.591849792872858984e+02 1.304671215023752779e+02 1.427456440770346831e+02 2.882324895344759170e+02 1.680635293254793510e+02 1.205800311663507642e+02 2.861305963205076637e+02 1.219224106654408928e+02 2.467003871618023538e+02 2.830287806498602095e+02 1.445950870572595193e+02 2.496562286252286640e+02 1.464987579205844099e+02 2.848280464142704318e+02 2.785616857190397013e+02 1.837468579783306950e+02 1.246964377230690673e+02 1.251791080124520050e+02 1.496399061799681363e+02 1.375936265087168522e+02 2.547928467777094852e+02 2.554856419260690927e+02 1.285559318166884850e+02 2.092144446410586909e+02 2.868951534942014518e+02 1.178319347908447270e+02 1.347784205269015274e+02 2.851299399919766984e+02 1.754694686670390809e+02 1.016886128619324694e+02
|
||||
2.606618423405234353e+02 2.125366732076933545e+02 2.822772640751277322e+02 1.096405633955119185e+02 2.437561663288932721e+02 2.129146561548243994e+02 1.148823764090175530e+02 1.516868774610028368e+02 2.090025176018670265e+02 1.817684320186263562e+02 1.584667226055155709e+02 1.501973711988126468e+02 2.530199923706828713e+02 1.847948752811591930e+02 1.778871618489498303e+02 1.664551902511519188e+02 1.100020157933824265e+02 1.352000835393275509e+02 1.710981737682794801e+02 1.530513645967782566e+02 2.588476693974693035e+02 1.775587245068043956e+02 2.006331886716666588e+02 1.389709403689849694e+02 2.489553638298030194e+02 1.673604491791948021e+02 1.991154502489720812e+02 2.423848982654565418e+02 2.882603768001737308e+02 1.620650086718309240e+02
|
||||
2.723642490909132903e+02 1.680927290528325670e+02 1.005734627393615455e+02 1.598916606218045047e+02 1.672547346703738071e+02 2.361420151042074451e+02 2.741857058408131707e+02 2.533004150866734392e+02 2.036092771261417340e+02 1.091915011443997230e+02 1.145604210422382323e+02 1.209982156413156247e+02 2.749595368914399387e+02 2.177794513808643160e+02 2.054163746311436967e+02 2.185860861470465579e+02 1.504022045473846845e+02 1.713704456854883347e+02 2.175221629008602804e+02 1.230663148243889253e+02 2.419648244223723168e+02 1.383010418990747326e+02 2.040260833828849059e+02 2.966316994044250919e+02 1.630596872908637351e+02 2.562534082821714492e+02 2.549425872735235998e+02 1.983522705781282127e+02 1.524860865223137694e+02 2.736848821358530586e+02
|
||||
1.277021385004174192e+02 2.448445434866889343e+02 1.296687360965440803e+02 1.874271582575348702e+02 1.145742775945452792e+02 1.884744688522491742e+02 1.336298647132909423e+02 1.523816963142488419e+02 2.658270705367647224e+02 1.781637174983711134e+02 1.154610011723892171e+02 2.005342781476718415e+02 1.303166615041172918e+02 2.397284110571510496e+02 1.612912854182502542e+02 2.821645080329541315e+02 2.544831471501324813e+02 2.622237400581972224e+02 1.417212269902922230e+02 2.054005404298748658e+02 1.092142219674599062e+02 1.652051184306486107e+02 2.825679563619778492e+02 2.056286073102957630e+02 1.772062144904277545e+02 1.163520479257007310e+02 1.006186351926139366e+02 1.734025793931427586e+02 1.446958902579306709e+02 2.025820689614877779e+02
|
||||
1.798382687901162740e+02 1.604629760861514001e+02 2.668981169240885265e+02 2.763242846779806996e+02 1.318105471716862098e+02 2.191362245125996537e+02 2.770758446308884686e+02 2.308910816293108326e+02 2.956895796828827656e+02 1.566426856848869988e+02 2.326210561246332418e+02 1.206555816723871715e+02 2.603144096756907970e+02 1.172571782204154829e+02 2.219493974369055991e+02 2.385109304229506790e+02 2.599678734377965839e+02 2.850516346518521686e+02 1.472948582444382168e+02 2.234296740595885922e+02 1.427895312415343199e+02 2.848238578369252423e+02 2.260232767550441508e+02 1.544648385858973541e+02 1.163971462755376791e+02 1.762731012775239492e+02 1.089523563056807660e+02 1.663966154222005116e+02 1.342495772836978745e+02 2.922401077696804350e+02
|
||||
2.806557294060240224e+02 1.077657131130299604e+02 1.622983596366119059e+02 1.723469481204717795e+02 2.678046848873893850e+02 1.442059922525422451e+02 2.629931208031973711e+02 2.741083495447689415e+02 1.194142462414748707e+02 1.688961325073638022e+02 2.967954354880449728e+02 1.822107331135221671e+02 1.292333403080546645e+02 1.856814508383810391e+02 2.103923137448445573e+02 2.517859299913771451e+02 2.551152596962431574e+02 2.077883190793959898e+02 2.986930461834413677e+02 1.196764061335889551e+02 2.378823960447958257e+02 1.692017967083341432e+02 1.471250494556689432e+02 2.608355254883699672e+02 1.757172426071724942e+02 2.629426236813185369e+02 1.040244734248400533e+02 1.533558690719498827e+02 2.011860465194789072e+02 1.720545334339216765e+02
|
||||
2.966488050331527688e+02 1.809989340563203086e+02 1.871527370563514978e+02 2.315558973515319394e+02 2.657682292004950000e+02 2.237816732699509998e+02 2.282045922056215090e+02 1.846236325909775928e+02 1.644827554373339353e+02 2.760250360653360531e+02 2.492622345937652995e+02 1.483432536002697191e+02 1.527550390024584601e+02 1.573429964258168070e+02 2.090721206423400247e+02 2.535819867756219708e+02 2.420536340362719159e+02 1.691914404667937788e+02 2.388696721384086459e+02 2.593840245957078423e+02 1.331872961625781500e+02 1.116342264469163581e+02 1.680964276125217793e+02 1.555020753508222526e+02 2.422052215908822177e+02 2.626184375196450560e+02 2.674230788003709449e+02 1.948146659156083729e+02 2.663681889818526543e+02 2.795342087705012659e+02
|
||||
1.674728956867265310e+02 2.635505920196726493e+02 1.395353777027027604e+02 1.883233466008314565e+02 1.249441512057495913e+02 2.512189370435067417e+02 2.719913755602378842e+02 1.237326636617429614e+02 2.939951219495833357e+02 1.686366002602222807e+02 1.800181056076297068e+02 2.288525977776352818e+02 2.717306800175948638e+02 1.565292507387619594e+02 1.445460932655216766e+02 2.092313282690445249e+02 2.370375511382032698e+02 2.880525812713749474e+02 1.172567175017127141e+02 1.112412797274302250e+02 2.246954385922853135e+02 2.812359340959551446e+02 1.004168603505609241e+02 1.005387863078678805e+02 1.815971195408835683e+02 2.811251817522295937e+02 2.605765849402707772e+02 2.298114360271968621e+02 2.557293814584297706e+02 2.542416589790913122e+02
|
||||
2.943583269632734414e+02 1.442274778682184717e+02 2.700917391987959491e+02 2.527420049761408904e+02 1.527279900348522688e+02 1.841979337126335281e+02 2.902442440856567600e+02 2.889101481258517765e+02 1.828125218264408716e+02 1.133179379993730862e+02 1.484787634874768116e+02 2.676352293304336740e+02 1.452118425579454311e+02 2.636966617786087568e+02 1.313546620759107100e+02 1.834019443937838787e+02 2.892465421328221282e+02 2.575015388377624959e+02 1.970702343003932242e+02 2.507528167727347181e+02 1.724897096143170074e+02 2.664268628760375464e+02 1.365257050051324370e+02 1.198011035974838308e+02 1.176831988053894520e+02 1.070946883963453899e+02 1.964638491125322446e+02 2.570844982939356100e+02 1.593905150913052466e+02 1.202569936867807598e+02
|
||||
2.734271498156417692e+02 2.352133531486530842e+02 2.590835237087205769e+02 2.260994493040042528e+02 1.805421354394846105e+02 2.728408805160995598e+02 2.367263522625478913e+02 2.580210451062748689e+02 1.204524877415260562e+02 2.946465680607327613e+02 1.547220269335912803e+02 1.186203172746691337e+02 1.923878728892914864e+02 1.094127410697402354e+02 2.222837240826847278e+02 1.529333599077602628e+02 1.861450256630199647e+02 2.125583079944122176e+02 1.527591657960447264e+02 2.694001797345342766e+02 1.986063989766776388e+02 2.192493126389772442e+02 2.986827335637019587e+02 2.790660387254000625e+02 2.781487003899754313e+02 2.564198676846006606e+02 2.597551240338123648e+02 2.358970425952163907e+02 1.951628676328612357e+02 1.078208269500064347e+02
|
||||
1.190762776130697205e+02 2.951075493308472346e+02 1.091043363430719069e+02 2.824365312299846664e+02 2.445811468414383398e+02 2.538090805786315514e+02 1.230092364266577363e+02 2.633887649939744051e+02 1.865216093980499181e+02 1.540388898662323243e+02 2.047343894245035756e+02 1.431412534309083640e+02 2.857794001060171922e+02 1.492366175285521592e+02 1.380934567887849198e+02 1.331831467466375898e+02 1.149412013934811796e+02 2.205070844660474734e+02 2.939252657951740844e+02 2.049464694042562769e+02 2.047902832862141054e+02 1.810793422252176015e+02 2.005356992447976836e+02 1.381400138775680375e+02 2.582445444487385657e+02 1.698212931623984616e+02 2.252085951830697468e+02 1.808378144669676999e+02 1.307311344108444473e+02 1.050024101356033697e+02
|
||||
1.722314120162143354e+02 2.530014253763471856e+02 1.298340795948372772e+02 2.948664870226410812e+02 2.383106068289312702e+02 1.822969205106659558e+02 2.285226769051377005e+02 2.759417691711663565e+02 2.120970517474504220e+02 2.831046044310812704e+02 2.320579821788242612e+02 1.286125039667014960e+02 1.609837368065715282e+02 2.931112965353385107e+02 1.441758663366052531e+02 2.810263276191118962e+02 1.239857273771131077e+02 2.399447548605567988e+02 1.460208836055017514e+02 1.205325462037979491e+02 2.112513935912650993e+02 1.036793750016967692e+02 1.113202625217208777e+02 1.646612561683649574e+02 1.018350908838390581e+02 1.263835026124204859e+02 2.766683711501553944e+02 1.682407929561517506e+02 2.677103056024840271e+02 2.147294480454548307e+02
|
||||
2.763536852866382105e+02 1.511976958084401872e+02 1.026794659371155944e+02 1.805990415690671398e+02 2.442493962549426385e+02 1.881796213041043018e+02 1.028768312506858535e+02 2.787706953534510603e+02 2.589640601731795755e+02 1.730107396932538677e+02 2.218419822849910190e+02 2.651646152747807719e+02 1.476149140151474342e+02 1.986450675254654072e+02 1.050693447352362853e+02 1.819666738706916931e+02 2.873544952103893593e+02 1.472060704631180954e+02 1.297023844405691761e+02 2.824778443572924971e+02 2.918073394139615289e+02 2.128134400148996974e+02 2.223096450508596149e+02 2.761940547406351811e+02 1.348708672340777639e+02 1.857009592938832441e+02 1.062906640064134649e+02 2.104442283262811202e+02 2.812954268214299418e+02 2.739038950945439979e+02
|
||||
1.837264129055918147e+02 2.399207190527903322e+02 2.843910623120511900e+02 1.773207161532972975e+02 2.056581469496123873e+02 1.558029517788254168e+02 1.458438122541016924e+02 1.893030782939712253e+02 1.139027557376393673e+02 2.228775749423569437e+02 1.367670384452707140e+02 2.854480456674787092e+02 2.424985140340279202e+02 2.940521113211518696e+02 1.330693282221190259e+02 1.212599008475133076e+02 2.754747741586869552e+02 1.062856492128348549e+02 1.212724485003486166e+02 2.100514698158626743e+02 2.547262582240854272e+02 1.999488755181088777e+02 2.578561029518564283e+02 2.784200494851090752e+02 2.728829168298310606e+02 2.071711407548560544e+02 1.708729380756020362e+02 2.726254883308487251e+02 1.104364015278258364e+02 1.175773277008901090e+02
|
||||
2.554381337818412305e+02 1.634513906120204183e+02 2.309962436793083214e+02 2.460443770945291249e+02 1.618890365991254896e+02 1.046310291743186980e+02 2.772116654811295575e+02 2.098555252827713957e+02 2.309383801112169863e+02 2.845300950466865402e+02 1.268119123926061320e+02 1.697885006171669602e+02 1.901887742560337529e+02 2.605757830463372215e+02 2.755463791239279772e+02 1.771647294768940810e+02 2.403902735905423356e+02 1.774352552408031443e+02 1.796883744424403631e+02 2.736192366006921475e+02 2.118505050785533967e+02 1.873353967662169453e+02 1.802980863638028950e+02 1.869858546159753132e+02 1.200946851663063342e+02 2.350811068219035178e+02 2.018941614745772313e+02 1.010158706413519525e+02 1.661546933057649937e+02 2.570882207683835077e+02
|
||||
2.856134023048114159e+02 1.356279054667102741e+02 1.225310201562991494e+02 1.529777144242077327e+02 2.936506440162480658e+02 2.589580133771784176e+02 1.864782805190425279e+02 1.931182124516369640e+02 2.913608028278327993e+02 1.555662042949096531e+02 1.173676742008071301e+02 2.242990267171766732e+02 2.651338851871976203e+02 1.128980005738893482e+02 1.283582653966309408e+02 2.071495534530326097e+02 1.241509031508031740e+02 2.393403040292282640e+02 2.829812266966206380e+02 2.294799861563923287e+02 2.129576840814710295e+02 2.165539860914115877e+02 1.357366103660294243e+02 2.396252028023287153e+02 1.395106368224716107e+02 1.700689743264745744e+02 1.253435651632085950e+02 1.508112259783626428e+02 2.310267786371028933e+02 2.311667616985857876e+02
|
||||
|
|
@ -0,0 +1,100 @@
|
|||
-67 65 82 64 51 1 -12 2 -84 -52 12 82 -45 -84 -41 31 -49 36 -70 40 -74 -99 32 64 -6 43 -53 -43 43 96
|
||||
-58 20 25 99 -25 78 -6 59 -23 30 36 25 -8 83 -43 -7 -8 42 -90 96 46 88 31 12 68 -21 -6 7 78 -19
|
||||
-66 -51 0 13 42 -43 -30 -29 20 10 -24 -5 -42 38 -56 6 1 -80 -65 -91 89 64 -21 49 -84 41 6 -78 71 -2
|
||||
-50 -84 -50 -66 46 -88 -10 -28 -25 6 -7 10 -35 86 41 -17 72 -67 13 -67 -76 -84 -15 35 67 40 90 38 -1 -47
|
||||
-51 27 -48 26 -73 -46 -68 -56 -38 -4 49 -64 57 -86 -80 70 50 34 84 97 -76 3 -54 -89 -7 -53 15 36 -28 85
|
||||
2 -59 4 30 70 -42 -26 -1 27 -90 -18 95 -10 -36 43 24 86 -8 -100 92 80 -40 17 -93 -81 54 -8 84 -53 38
|
||||
-80 0 -71 -41 -33 9 -61 0 26 80 64 67 74 68 -72 78 -72 -52 -19 37 -33 -24 -11 -71 -53 -16 25 56 -74 0
|
||||
71 -23 49 -36 -43 -70 82 69 -100 -27 50 20 30 84 -33 90 49 39 -52 -51 -86 -76 -72 -88 12 91 -96 -61 -87 -47
|
||||
21 39 1 78 68 -80 -54 71 17 -94 34 -20 14 -5 -24 55 -84 -50 -90 -24 -79 -81 53 -50 22 -13 -92 78 -22 -50
|
||||
-47 -73 77 -93 -20 51 -37 -14 -37 -18 -8 -14 -71 29 -27 -5 54 77 -7 -2 15 -23 98 -34 -65 -78 -77 -90 -5 -35
|
||||
92 -33 71 24 43 -19 50 -40 -48 -33 -51 -14 23 40 -78 -14 -76 1 52 69 93 5 -13 30 -60 -20 -54 49 -52 93
|
||||
32 -86 21 -41 -86 -38 97 -35 -37 -89 -15 -18 -46 -37 8 63 -63 -61 57 50 43 -27 -45 98 -56 -81 16 -38 -25 -28
|
||||
-18 19 -52 -86 92 -72 23 35 20 57 69 -22 52 -66 -74 -29 -1 -10 -97 22 -97 -93 -70 87 85 -31 42 -29 -10 -36
|
||||
78 80 -93 68 41 84 -37 -62 38 -9 99 -60 90 47 -33 -40 -59 97 -28 9 35 -6 -60 -83 -39 -97 -25 -78 95 40
|
||||
79 -35 -45 -46 69 10 29 -88 98 -44 66 11 45 -58 -11 -25 51 -44 54 30 59 98 35 -28 93 86 99 19 -27 -83
|
||||
80 77 -72 57 -35 -27 86 -67 11 77 -28 -89 -30 -31 -72 64 -95 -75 92 -32 -96 -14 6 -83 -66 -58 71 -17 58 -53
|
||||
-1 17 -72 82 -57 -48 -7 -44 -80 85 -99 -9 27 -11 24 13 86 18 67 -9 12 77 98 49 49 12 -82 45 31 -68
|
||||
-13 -75 -26 17 91 12 -95 -62 -54 -60 22 50 86 58 -11 -11 -21 31 16 -15 67 90 1 80 -57 -98 35 -54 51 91
|
||||
28 -75 -31 49 0 73 75 -66 50 -77 -20 82 -40 -90 -28 32 -44 89 -75 -33 -11 -19 -55 79 18 2 -39 -49 78 -72
|
||||
14 56 78 69 -40 -20 -39 71 99 -89 60 -82 -1 -77 -42 94 -41 35 72 11 -13 89 -52 -41 -93 43 -39 -61 68 -4
|
||||
88 18 -90 -75 -49 46 -28 -48 -69 -64 77 -8 91 -65 62 -27 -19 34 10 78 82 49 -34 63 78 -88 -17 -37 -85 91
|
||||
4 36 -77 -75 -12 70 42 8 7 -31 -69 -74 -65 18 85 -92 91 16 -15 24 -74 -56 71 -70 -90 20 13 73 -68 -65
|
||||
92 22 -31 -73 -59 -78 -20 -11 -61 36 -40 34 -96 -12 51 -45 -12 12 -3 -42 -71 68 -8 -91 50 -73 -96 -46 -38 -4
|
||||
-87 44 -58 -83 70 -81 32 29 -79 45 -64 -52 57 73 -80 69 7 -22 31 -71 -34 -33 47 79 -17 6 -77 -89 3 50
|
||||
85 2 73 -88 -99 -13 -76 1 -90 51 30 -52 75 -2 -8 10 -83 -40 -5 -79 82 19 79 94 49 4 66 -76 6 -48
|
||||
29 -34 66 -93 45 -1 -98 92 -92 29 -10 64 -23 -81 -73 -62 -18 37 -29 -50 -52 90 -28 24 -4 -67 -33 25 -78 93
|
||||
57 -46 36 -16 34 -59 -96 -86 64 2 28 42 -32 6 -17 37 38 -40 -92 55 -22 -42 11 -77 12 81 -89 -39 -30 -39
|
||||
-72 -68 -41 -5 93 55 24 -6 84 77 30 33 -51 -62 6 -5 -83 60 -1 -64 7 -7 -92 31 5 -21 -34 -14 21 -33
|
||||
26 -75 -36 -54 -21 -38 -49 -20 82 73 -84 -5 -69 84 -87 12 7 -67 -40 -50 -35 -65 80 -83 -2 1 34 -16 91 82
|
||||
61 -21 1 -64 -56 -61 74 16 0 38 51 34 -35 37 -28 -52 -14 61 14 58 50 27 -43 -27 14 56 -16 -78 50 -89
|
||||
45 -47 -61 68 -41 -70 14 -51 49 -84 64 -65 88 -39 -88 28 -55 -18 81 -2 -1 -45 65 -6 62 16 71 71 -1 47
|
||||
47 60 22 -42 -5 -74 12 66 89 -82 -85 65 74 0 -18 56 -39 84 -65 -42 -33 -60 23 33 -8 -72 3 -64 -3 -25
|
||||
-70 11 -19 -12 -1 -50 -89 -61 78 28 55 92 -17 86 -17 -45 -31 68 -24 -99 -59 27 79 -2 21 -80 54 9 14 -70
|
||||
-38 52 -99 50 -46 -63 -74 -41 -43 -62 -81 38 -99 17 -94 -6 44 -20 -13 -30 71 -43 43 -28 -8 57 -93 98 4 42
|
||||
-17 -27 -60 -22 86 -49 39 -83 72 -16 82 74 73 -29 16 -59 81 -60 -96 51 -62 -55 -79 -31 -15 -67 -18 -83 -61 -86
|
||||
28 37 -44 7 -17 -10 -65 8 -78 -17 -46 -5 -35 -86 13 -16 27 24 60 -12 -48 -45 16 -33 70 -45 -63 -60 21 70
|
||||
-75 -89 -93 -93 62 -44 -39 46 31 57 72 30 -65 29 66 -53 2 -2 71 -90 -73 -40 -63 32 68 30 25 98 38 92
|
||||
88 3 5 73 -2 -61 -94 79 99 94 71 -83 -40 80 -79 -14 -34 -99 -52 27 23 13 13 -35 -74 13 43 -19 2 -62
|
||||
92 -47 -27 9 -68 -86 -57 43 9 -81 -9 69 52 -28 80 -13 -6 -44 -81 -89 -10 30 -64 86 -76 -11 -100 15 12 -62
|
||||
76 -42 39 70 74 79 84 -52 18 -58 78 53 89 58 -32 20 -51 35 12 37 -70 -21 5 97 67 -25 -25 -10 2 30
|
||||
-84 26 -60 -34 11 -27 47 85 -89 29 54 -53 66 -9 12 4 92 70 2 -12 -55 72 -62 -79 -8 68 -19 12 -8 -100
|
||||
78 -97 -76 86 -47 42 99 -3 9 49 -84 86 26 43 -26 90 23 -66 -37 -35 25 -12 -42 -12 96 -15 48 87 -95 -12
|
||||
-60 57 -30 -4 -84 24 -82 -5 34 56 76 81 -64 23 32 34 -41 -48 -6 77 -42 64 87 92 82 59 9 -71 -56 -45
|
||||
-74 -90 -27 93 33 15 -35 -73 78 23 17 -28 9 63 9 35 15 32 0 -4 -32 54 -76 14 -14 -8 16 -43 -81 57
|
||||
-2 22 85 -33 -48 74 64 -59 -27 17 -65 27 -50 -81 41 -69 -26 -29 -83 48 -81 51 58 -62 -63 -55 -63 39 32 -34
|
||||
98 -99 13 25 -10 43 -62 50 82 -90 -51 40 -71 82 27 -73 19 -62 37 10 -21 45 -94 -45 -41 -3 44 86 -2 27
|
||||
-80 -89 -57 87 -42 19 32 -49 37 -4 -30 54 46 -3 -92 89 60 37 -86 38 61 93 45 -45 -86 54 21 45 50 -53
|
||||
7 -68 71 -6 41 -72 67 45 15 46 85 59 82 19 65 75 -62 -35 47 -51 23 41 -54 27 -99 14 9 69 60 62
|
||||
99 -51 83 -47 -19 -57 -22 51 -52 52 92 80 69 1 -31 0 -19 -54 73 -5 3 82 -86 -84 -95 -83 -92 -52 -90 -79
|
||||
43 -75 62 99 66 -43 -38 -21 23 35 -63 -61 -46 5 3 -90 -28 55 87 89 -29 -46 23 -61 -5 10 -70 -63 50 -14
|
||||
39 38 10 66 -24 -45 55 -33 31 29 44 31 73 44 6 69 -21 -58 -3 93 -51 86 -16 -88 88 -30 75 78 -20 -12
|
||||
-11 11 -19 40 82 6 10 22 90 -78 -88 -49 72 69 -62 42 -23 22 -38 -98 0 -3 -43 20 9 18 -67 -7 22 21
|
||||
99 80 -55 74 43 -31 60 -26 -29 -6 75 60 92 -42 85 18 1 1 -74 -44 -12 72 -57 -98 99 62 45 -40 -39 -75
|
||||
50 30 -18 -29 -80 -59 -96 46 -99 -76 -13 -75 -93 -95 -45 62 -37 53 -96 57 -40 3 14 -45 -84 58 75 16 37 -6
|
||||
1 -47 87 -99 -22 -22 -20 71 -91 13 35 -80 75 65 -87 16 -37 99 -60 49 52 18 55 -11 18 24 -65 -80 8 -79
|
||||
-8 -87 86 -9 -64 -76 59 -52 -89 18 13 70 44 93 99 62 39 49 83 28 72 -71 -13 -71 -22 44 -87 73 -68 80
|
||||
41 -26 44 -63 -26 -83 -44 63 -51 -48 52 -8 55 73 -45 84 40 45 32 -34 -78 -46 -79 57 -40 11 34 -75 -20 91
|
||||
94 9 -35 -5 3 59 -63 2 -7 -72 -34 -70 78 99 -29 37 11 91 61 29 85 -15 59 79 47 41 19 -18 -92 47
|
||||
-59 -89 57 -72 -79 88 -85 18 -35 -96 -57 33 83 70 -55 -16 -21 72 -53 89 -44 -86 9 -44 -26 78 2 -93 -75 6
|
||||
55 73 89 80 -69 -93 -39 -88 62 49 91 -68 87 -26 40 16 -49 -53 -57 23 -97 39 -78 44 -15 1 60 -87 43 -42
|
||||
-2 -23 -74 -80 -59 52 -58 68 64 97 -86 -41 -88 35 49 3 -40 90 34 -2 3 13 -95 8 -1 6 75 92 19 -31
|
||||
57 76 65 3 37 -72 -43 57 64 -23 41 87 26 76 -18 -32 28 47 11 47 -33 -12 4 81 -92 -47 -81 43 -2 5
|
||||
68 74 66 -89 -95 -40 -78 -58 -54 -20 2 20 94 -35 58 -20 41 77 0 95 39 14 36 -40 -85 -60 -63 82 0 58
|
||||
-61 -99 61 10 -2 -31 -70 37 -77 -10 85 95 -28 70 -81 -78 -68 -33 -77 77 -6 42 -100 -68 -59 -86 -42 -74 35 -32
|
||||
64 -1 -1 -64 51 11 -65 47 -87 -8 5 58 22 -80 68 -25 24 59 -25 -75 95 -22 -73 27 86 -39 -98 -1 -17 -32
|
||||
94 -50 -53 -62 -53 46 50 38 -95 -77 40 -38 -23 -14 -68 -20 -47 23 -8 -12 -92 -69 -97 30 94 -45 47 -81 82 -60
|
||||
28 67 -48 4 74 27 -30 12 -32 35 91 -83 30 -55 -7 79 97 11 93 -45 -79 31 78 65 84 -23 -26 17 -61 43
|
||||
44 60 -88 72 31 98 55 -4 66 -14 10 -81 -40 66 -15 21 69 -98 34 3 75 18 98 -6 47 -39 31 -19 30 -51
|
||||
-6 18 -93 31 51 -20 -16 -33 -38 -19 71 4 -53 23 97 1 -28 -72 -44 -48 45 33 -76 86 64 49 -45 -34 -9 -76
|
||||
-19 8 28 -27 -51 -58 -36 63 -92 -95 70 41 -38 -49 -95 -100 43 97 -60 -5 -56 45 -13 -3 20 -10 -21 -85 -5 63
|
||||
-74 -74 -74 -39 -57 -12 51 11 -11 -22 -26 -54 71 24 -37 77 -90 77 75 86 -53 3 69 -99 -82 -59 30 81 -21 -86
|
||||
67 63 87 -15 60 -82 87 51 -39 -49 -16 74 51 17 6 47 98 89 -20 -98 97 -61 18 34 37 -36 37 -96 90 44
|
||||
53 -8 37 -76 -61 70 -77 -11 98 -80 12 -80 6 -89 8 -59 -69 -100 -52 -30 95 -58 61 29 52 -64 -51 10 16 -58
|
||||
54 -10 49 62 76 -25 80 36 13 5 59 -65 14 41 26 -78 23 -45 -51 -85 91 -43 -61 -37 94 27 -11 49 98 48
|
||||
53 -51 27 34 28 -53 18 17 31 -31 59 71 -34 25 54 -84 -34 -24 76 38 -36 15 -1 56 2 -12 0 26 -38 -62
|
||||
4 -94 -63 -21 -95 -42 -12 86 14 -86 -1 80 -48 62 -47 -52 3 91 -86 11 79 32 -24 -33 -54 19 -17 28 -33 -97
|
||||
-18 41 84 1 -83 48 -99 -64 26 -52 3 -64 68 -98 93 -79 -97 11 88 74 41 -31 -42 -35 -66 18 97 -30 19 -93
|
||||
-19 42 61 -91 -20 59 -11 -64 -60 85 -6 -71 33 -52 46 51 -86 -77 74 -4 74 -81 1 -39 -30 12 -12 20 66 60
|
||||
86 1 -67 -91 -92 -22 91 -90 -45 26 53 -6 99 46 -29 -40 -99 57 -45 -47 -3 -86 90 -78 -33 73 90 -51 -75 2
|
||||
88 -34 -2 30 -18 35 -23 90 99 -49 90 -79 94 -38 48 67 -35 -58 81 -24 18 -54 83 65 -58 -12 13 89 -59 57
|
||||
92 -99 94 -73 97 -78 -93 98 -78 95 -21 -17 -11 -92 69 -60 86 9 -36 -18 -33 -39 -65 74 -65 37 -49 87 -28 -81
|
||||
-95 2 -18 20 93 54 86 -63 -5 -89 17 -9 75 -66 -64 -82 -46 -48 82 5 -89 19 -32 -45 53 -47 21 -9 40 34
|
||||
86 87 55 -41 49 -10 -6 -7 -99 23 90 -50 -9 -81 77 65 29 -21 22 -82 19 48 -24 -72 75 -66 -69 -17 72 6
|
||||
13 37 96 31 -65 -54 -91 -27 84 52 -9 -28 85 96 14 63 -34 -29 -85 78 -75 -44 -30 -5 4 72 -45 6 13 71
|
||||
96 -69 67 59 69 46 80 42 81 30 89 -45 -10 -44 25 31 89 16 -36 86 31 92 1 5 -2 92 -11 77 20 40
|
||||
-48 98 -100 30 54 9 84 -88 5 48 93 56 -94 -89 81 33 44 -30 -95 -98 29 -33 13 -26 -59 -80 -68 -40 12 11
|
||||
82 -63 -30 -67 54 -68 50 -63 -91 -68 -45 -66 -58 16 -25 9 -50 -59 -55 4 -2 0 -63 67 30 -21 -8 55 21 -68
|
||||
9 -8 56 -6 84 81 -63 -35 81 56 -50 -54 96 -51 86 0 66 -4 -18 65 -26 -57 8 78 -54 17 18 86 21 68
|
||||
9 38 33 16 3 86 -57 28 -6 -44 -42 -2 3 -71 -86 23 34 -29 33 -30 67 63 -11 76 -65 92 30 -66 61 1
|
||||
-72 -85 -1 64 -79 -78 -1 15 -35 -32 80 33 -36 -82 24 -65 -23 29 38 -31 87 55 -18 -52 -77 -22 -11 54 62 -48
|
||||
65 -77 50 16 41 -94 -21 16 85 24 60 86 -78 -13 69 46 55 5 -27 -18 -6 -1 59 -62 -58 -99 -49 -84 89 18
|
||||
-21 -15 -55 60 78 98 67 94 58 -5 -36 42 36 73 13 72 -78 -68 41 -37 -33 -46 -80 40 13 -44 -71 -8 15 -77
|
||||
16 -93 -42 -10 14 57 -54 -3 -44 -21 30 -93 71 25 -60 -94 93 5 -94 -84 -72 1 -50 -34 23 -15 15 18 72 -29
|
||||
-22 -82 -30 -87 -88 -25 46 32 -30 -55 -79 -85 71 -89 -57 -88 21 53 -100 -64 -92 -97 56 -51 -17 -34 -31 6 -68 84
|
||||
-53 -51 90 -38 -61 57 -63 67 22 22 70 44 43 97 20 -62 -74 72 83 -32 35 -66 -29 5 -88 55 -94 94 -19 55
|
||||
57 51 29 -42 -21 63 -57 7 -48 -87 -60 -55 -77 -53 -1 -85 64 60 53 71 41 59 -61 -73 -12 86 90 10 -60 -38
|
||||
2 -9 14 67 -2 70 11 -78 26 -55 -86 -25 99 66 63 64 46 59 66 -37 -78 -70 63 1 -20 2 46 50 34 19
|
||||
-87 -40 75 -11 -88 -80 -95 -20 -92 -28 83 24 88 -39 83 -36 -61 56 99 -73 -59 -85 -49 -10 91 12 -79 -18 -15 6
|
||||
35 -74 -4 -15 40 -87 81 -22 -12 -46 14 9 98 -35 -2 -12 57 -74 -52 71 70 -70 -61 -47 89 44 33 -100 54 42
|
||||
-4 -34 80 -12 -15 -9 -8 -29 89 -55 -33 89 16 -33 -73 -82 98 27 88 59 48 20 -67 -21 -86 11 -50 46 64 -8
|
||||
|
|
@ -0,0 +1,100 @@
|
|||
52 34 59 34 64 20 89 69 26 93 95 32 17 93 77 49 51 60 51 27 60 10 61 2 16 30 41 68 65 0
|
||||
43 74 11 37 32 61 72 29 47 21 7 47 68 58 22 33 29 37 14 45 71 1 67 79 69 9 6 6 95 78
|
||||
86 20 68 67 43 5 77 70 96 37 79 71 35 30 22 4 56 28 33 50 97 17 85 52 21 5 57 19 35 97
|
||||
15 21 99 4 54 39 15 29 68 21 50 76 64 51 79 0 24 5 65 95 90 51 99 82 9 80 61 32 2 38
|
||||
46 97 53 96 51 84 18 42 30 52 82 77 72 59 1 67 72 16 14 63 70 94 20 27 38 70 86 95 41 75
|
||||
2 35 45 63 92 76 81 60 62 72 90 46 47 33 1 30 54 22 50 85 63 61 22 79 45 53 45 33 8 28
|
||||
43 41 14 79 2 77 95 16 74 19 17 78 47 12 68 55 3 2 77 10 35 86 52 33 47 26 98 42 48 86
|
||||
18 32 85 4 91 10 69 68 15 42 58 77 88 64 91 43 56 30 92 11 52 23 43 92 65 50 68 8 80 81
|
||||
20 57 38 44 62 10 80 25 32 11 70 32 13 50 41 55 44 0 28 83 5 1 34 94 55 52 56 24 76 21
|
||||
36 43 59 28 10 59 4 41 64 98 54 66 44 3 37 41 67 10 85 23 58 35 58 34 35 79 46 18 1 51
|
||||
72 63 85 51 23 91 3 56 35 72 38 26 91 0 68 98 27 10 12 71 30 1 14 47 47 88 17 68 78 46
|
||||
53 47 1 89 95 53 11 45 46 6 91 20 57 35 58 79 60 3 21 45 4 18 59 96 36 12 13 83 52 46
|
||||
33 91 82 24 97 28 50 43 65 22 14 44 32 57 33 10 34 77 58 6 27 90 26 77 62 81 87 96 0 32
|
||||
96 44 59 3 47 18 0 91 83 68 48 26 67 82 39 18 88 47 80 0 57 40 30 7 57 74 49 37 57 65
|
||||
18 44 0 46 47 30 65 79 53 8 26 42 80 76 30 61 82 93 78 25 89 49 55 15 86 63 35 74 41 11
|
||||
18 14 40 90 91 79 80 36 33 72 25 56 73 28 65 27 62 17 60 84 23 70 32 26 77 97 47 94 72 1
|
||||
82 36 68 10 83 83 40 42 51 55 82 6 37 69 93 82 64 13 54 30 45 36 87 59 1 80 39 93 11 61
|
||||
78 34 53 39 64 52 52 22 33 69 71 82 57 37 78 52 62 31 87 68 70 5 85 94 41 75 38 45 84 22
|
||||
36 23 51 15 61 76 88 85 36 96 21 60 34 61 72 60 69 81 5 17 16 82 30 61 39 96 40 70 42 71
|
||||
45 30 60 50 78 90 36 40 11 85 42 14 61 3 66 53 68 14 41 30 97 74 79 91 64 8 1 53 52 33
|
||||
55 24 35 4 49 51 44 70 93 78 25 65 1 29 96 12 93 94 13 65 4 47 84 10 90 12 36 48 21 36
|
||||
17 74 61 54 21 83 35 97 47 90 57 11 16 39 95 78 23 40 23 55 17 51 20 73 98 93 50 32 58 4
|
||||
84 76 78 33 50 29 11 20 5 93 63 22 91 92 44 85 62 25 63 92 36 26 57 33 8 74 69 64 78 91
|
||||
58 34 91 71 37 84 28 90 28 37 97 7 26 44 59 18 58 64 31 83 16 17 50 36 65 81 19 63 66 64
|
||||
20 71 1 35 87 5 47 27 6 95 86 75 74 9 94 93 26 5 61 3 97 88 0 57 21 64 46 24 86 12
|
||||
23 53 31 39 37 77 29 51 85 10 41 91 67 82 50 91 53 72 75 81 50 63 52 92 83 49 92 50 26 9
|
||||
38 43 13 87 11 45 28 16 27 61 70 52 77 9 57 42 73 22 32 95 23 91 93 63 16 44 26 9 93 83
|
||||
77 68 21 96 44 45 9 2 14 2 67 90 55 82 67 21 18 64 31 16 2 27 86 42 34 72 22 98 91 33
|
||||
89 66 87 76 0 32 81 39 55 76 23 56 51 53 75 79 30 86 1 66 64 14 46 84 92 19 95 47 77 97
|
||||
88 79 61 26 66 92 54 22 15 25 26 0 76 27 17 59 48 4 42 61 65 91 0 62 55 79 29 88 10 11
|
||||
24 89 91 39 56 36 16 86 41 31 14 35 7 71 77 74 33 11 49 7 96 83 31 63 90 49 96 22 58 86
|
||||
45 7 93 44 50 54 83 80 3 36 11 38 14 17 10 84 96 94 26 34 26 75 72 0 41 89 96 47 39 88
|
||||
0 95 2 22 68 38 0 3 51 6 13 10 14 49 75 69 25 39 63 67 12 80 37 77 10 90 60 35 84 37
|
||||
98 56 99 75 49 66 3 33 65 86 1 79 91 23 69 98 91 73 95 45 64 26 99 75 49 77 71 55 42 18
|
||||
80 39 26 94 85 42 91 27 14 57 36 34 10 44 38 77 23 39 54 25 32 5 17 9 66 3 67 94 20 11
|
||||
88 80 30 77 72 67 16 75 84 87 60 89 21 94 24 11 63 8 79 89 37 18 6 82 76 70 81 95 67 95
|
||||
92 36 55 55 43 18 76 94 30 74 95 38 45 95 54 87 22 57 4 65 15 90 90 38 73 24 67 24 36 25
|
||||
98 30 34 68 11 48 42 38 80 23 12 91 77 22 65 2 88 31 70 12 46 63 17 63 27 76 21 71 70 7
|
||||
76 29 56 12 41 66 22 96 8 6 7 13 27 10 77 90 2 76 30 24 81 88 19 16 93 13 30 24 98 96
|
||||
45 94 89 41 52 14 71 88 80 74 7 85 44 69 65 88 4 15 84 97 86 5 53 15 39 34 9 10 45 20
|
||||
95 47 45 96 71 10 36 10 90 49 7 68 14 46 97 89 82 58 69 34 93 77 90 9 27 91 29 27 22 17
|
||||
80 6 29 26 34 59 10 55 32 53 18 72 39 40 29 35 52 64 2 64 38 83 16 46 53 20 19 8 10 67
|
||||
47 44 79 32 58 82 26 69 0 26 4 73 95 98 61 96 20 38 3 92 6 5 25 24 42 49 15 92 80 16
|
||||
74 37 86 84 47 15 56 36 43 59 72 72 74 73 49 54 26 5 40 80 78 48 4 65 31 70 14 91 88 72
|
||||
91 45 73 62 83 40 49 3 27 79 80 90 3 3 58 44 7 66 77 42 37 25 20 91 47 63 71 7 72 22
|
||||
51 3 36 90 45 84 18 55 75 78 42 62 86 63 65 67 46 75 1 79 2 85 85 60 36 92 34 89 66 99
|
||||
36 99 0 63 89 65 54 58 52 28 98 27 67 1 45 71 35 52 55 55 44 23 46 89 83 37 8 2 92 75
|
||||
51 13 71 2 9 95 23 60 24 98 86 43 32 16 75 70 92 78 26 84 29 14 35 55 61 89 73 59 76 44
|
||||
59 57 28 92 33 50 70 94 89 67 70 38 53 16 35 70 35 92 39 78 88 80 71 1 93 21 87 64 49 84
|
||||
29 6 17 45 38 65 41 48 81 69 34 12 2 14 41 71 16 92 69 27 61 74 58 20 75 19 39 66 57 82
|
||||
12 8 14 85 97 31 58 31 20 76 6 42 29 95 60 94 15 84 86 69 73 52 73 57 12 66 89 65 60 84
|
||||
20 74 96 34 83 41 8 37 22 36 30 25 20 8 58 73 9 75 76 73 84 38 16 24 95 95 68 66 43 19
|
||||
33 15 25 80 48 69 63 39 16 45 6 77 14 46 38 15 64 85 49 5 59 28 9 4 23 68 59 26 1 75
|
||||
35 45 3 6 34 59 55 51 81 59 59 93 18 41 8 44 88 7 86 4 88 90 24 54 73 62 89 13 44 92
|
||||
72 60 68 83 39 32 30 15 98 92 69 94 51 48 9 0 4 1 30 92 40 1 61 82 66 4 39 10 93 87
|
||||
12 20 34 72 33 31 67 71 67 47 98 76 53 29 17 17 13 31 43 76 25 37 8 39 9 5 96 41 87 66
|
||||
96 30 2 57 57 10 14 17 86 76 35 94 42 54 18 24 19 34 12 42 18 11 83 65 86 38 45 17 60 70
|
||||
19 62 71 99 35 60 96 30 44 80 78 15 14 5 32 43 10 26 81 72 41 98 30 87 75 8 53 33 25 95
|
||||
22 0 38 57 88 7 47 83 49 41 52 1 14 93 41 3 18 42 15 57 28 74 97 2 18 48 64 25 77 69
|
||||
36 95 65 81 44 41 6 74 62 16 72 81 15 72 31 5 22 17 19 6 7 15 82 10 31 93 11 45 41 11
|
||||
22 76 14 62 34 65 82 5 57 51 51 5 1 6 17 43 28 31 90 99 48 14 96 49 95 40 87 85 40 51
|
||||
95 13 99 46 52 80 4 18 95 94 0 46 10 80 3 34 60 15 86 10 28 59 6 35 14 93 18 8 3 65
|
||||
57 37 6 31 45 85 42 34 47 92 48 40 7 17 5 74 67 62 0 74 58 21 23 3 5 24 50 54 99 19
|
||||
24 14 10 4 36 33 88 51 40 66 40 56 65 23 43 13 82 62 27 88 89 91 36 37 19 11 50 39 96 68
|
||||
82 7 39 80 52 90 57 17 61 15 51 71 82 15 21 44 4 46 75 50 78 18 63 75 98 45 6 16 57 25
|
||||
0 26 56 74 62 84 71 42 25 86 68 10 73 0 71 6 15 99 1 51 45 42 5 49 3 35 84 29 15 36
|
||||
60 78 76 3 95 73 36 57 35 44 50 42 85 57 18 69 37 42 75 79 15 12 74 72 51 36 79 3 58 71
|
||||
69 24 16 96 17 25 21 94 71 78 74 39 7 96 3 12 13 16 7 99 65 72 12 28 75 44 55 8 75 67
|
||||
3 13 92 9 92 83 69 91 65 92 29 63 46 1 4 62 29 85 47 93 81 3 15 23 63 50 17 9 13 13
|
||||
9 18 46 53 0 86 10 41 87 89 24 25 70 73 8 23 27 76 66 46 58 39 28 1 99 64 59 13 7 68
|
||||
72 57 90 50 47 57 34 27 94 39 23 31 74 77 45 74 18 49 96 8 95 50 20 81 73 55 72 2 32 15
|
||||
87 77 74 5 99 86 5 65 97 39 17 74 48 87 20 66 28 2 18 58 49 22 79 23 36 30 64 20 71 32
|
||||
35 43 66 96 63 77 18 90 47 86 94 19 88 79 23 12 38 4 56 42 36 2 77 1 3 17 64 52 31 24
|
||||
80 2 4 39 61 60 74 83 28 28 61 10 71 82 44 29 55 30 1 58 81 79 34 41 85 82 84 55 22 12
|
||||
76 77 58 92 90 0 54 28 77 68 58 12 1 81 37 28 19 60 71 59 25 83 8 49 52 11 28 65 59 70
|
||||
14 1 92 90 5 48 28 78 1 42 54 43 60 83 72 19 28 33 12 52 18 15 56 95 39 33 37 70 53 23
|
||||
53 76 26 31 18 81 83 79 25 1 82 43 50 24 63 49 5 23 66 37 80 41 63 77 2 28 15 21 32 93
|
||||
80 41 81 7 37 95 19 42 57 30 12 25 29 34 41 45 87 8 20 95 63 16 99 55 16 61 16 36 81 25
|
||||
32 30 2 81 23 25 88 30 37 76 52 77 79 58 21 58 10 0 13 32 72 80 3 75 75 25 21 9 79 18
|
||||
26 13 36 63 43 2 50 41 65 18 88 44 82 75 73 24 1 30 54 68 15 18 22 50 41 99 27 96 51 53
|
||||
22 4 76 11 85 88 28 75 1 2 92 66 63 3 58 43 53 5 1 24 99 90 87 87 41 1 85 37 98 92
|
||||
16 39 13 88 60 55 35 11 34 23 23 85 79 41 79 87 65 78 47 83 88 78 35 84 30 61 37 58 25 55
|
||||
27 33 15 76 82 79 73 92 93 78 18 38 22 96 63 92 41 9 50 96 14 55 8 60 15 61 97 56 43 22
|
||||
42 34 94 11 35 70 50 49 36 34 59 14 87 84 88 83 4 69 29 99 35 24 2 18 97 97 74 88 91 49
|
||||
33 25 71 12 60 2 48 22 81 33 27 95 54 25 53 14 20 43 26 96 98 37 64 27 72 33 78 45 22 61
|
||||
61 21 91 38 92 47 26 90 78 96 58 41 21 72 81 61 55 9 55 60 28 25 25 74 73 81 64 16 49 39
|
||||
90 89 12 93 91 23 82 36 63 58 73 81 49 32 60 39 4 84 73 16 18 26 58 85 46 28 82 91 72 7
|
||||
79 41 28 76 33 70 47 6 18 64 40 54 45 61 28 63 87 83 38 9 65 68 62 45 80 63 89 29 20 40
|
||||
20 59 58 23 61 79 35 19 78 2 26 48 90 34 69 31 31 42 92 33 18 74 28 47 45 52 36 89 19 40
|
||||
58 13 72 24 31 26 73 72 84 29 85 99 20 32 54 92 8 80 86 58 23 80 59 21 76 75 90 76 92 57
|
||||
74 53 80 51 8 88 84 63 82 99 97 77 38 9 51 61 37 20 68 47 65 21 53 82 85 96 62 65 35 4
|
||||
71 82 14 18 88 79 38 76 66 27 10 10 62 54 80 21 6 57 83 33 52 10 97 37 6 38 12 51 0 84
|
||||
95 30 75 92 84 30 55 57 32 44 53 24 77 81 34 84 69 85 91 33 50 72 62 79 62 12 59 75 99 81
|
||||
38 42 47 1 11 34 27 77 70 85 89 84 79 15 14 54 78 93 72 68 63 39 98 72 55 32 93 0 13 21
|
||||
3 15 10 15 3 31 84 89 53 5 60 41 66 77 45 12 68 68 50 68 99 64 46 54 30 56 2 90 99 78
|
||||
66 10 27 89 42 16 9 98 16 2 68 51 0 22 73 60 69 96 37 69 30 36 20 21 51 26 65 13 74 86
|
||||
94 58 34 97 77 88 90 75 47 30 6 36 89 66 48 9 20 6 52 45 0 37 99 46 11 53 53 72 94 40
|
||||
5 71 50 96 89 71 80 43 27 95 49 9 74 28 62 65 64 97 2 55 58 11 69 0 31 22 73 20 66 11
|
||||
63 39 84 62 64 5 56 92 26 86 19 20 56 85 42 48 56 51 54 29 26 95 72 38 70 61 16 54 57 19
|
||||
76 97 40 99 73 68 98 92 97 62 73 1 29 72 18 70 90 4 98 95 70 36 65 45 86 36 88 38 64 54
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
# The facets of a self-dual 4-dim regular polytope
|
||||
# with 24 octahedron facets. Taken from cddlib.
|
||||
# Format b + Ax >= 0
|
||||
1 1 1 1 1
|
||||
1 1 1 1 -1
|
||||
1 1 1 -1 1
|
||||
1 1 1 -1 -1
|
||||
1 1 -1 1 1
|
||||
1 1 -1 1 -1
|
||||
1 1 -1 -1 1
|
||||
1 1 -1 -1 -1
|
||||
1 -1 1 1 1
|
||||
1 -1 1 1 -1
|
||||
1 -1 1 -1 1
|
||||
1 -1 1 -1 -1
|
||||
1 -1 -1 1 1
|
||||
1 -1 -1 1 -1
|
||||
1 -1 -1 -1 1
|
||||
1 -1 -1 -1 -1
|
||||
1 2 0 0 0
|
||||
1 0 2 0 0
|
||||
1 0 0 2 0
|
||||
1 0 0 0 2
|
||||
1 -2 0 0 0
|
||||
1 0 -2 0 0
|
||||
1 0 0 -2 0
|
||||
1 0 0 0 -2
|
||||
|
|
@ -0,0 +1,91 @@
|
|||
import pytest
|
||||
import numpy as np
|
||||
from numpy.testing import assert_, assert_array_equal, assert_allclose
|
||||
|
||||
try:
|
||||
import matplotlib
|
||||
matplotlib.rcParams['backend'] = 'Agg'
|
||||
import matplotlib.pyplot as plt
|
||||
has_matplotlib = True
|
||||
except Exception:
|
||||
has_matplotlib = False
|
||||
|
||||
from scipy.spatial import \
|
||||
delaunay_plot_2d, voronoi_plot_2d, convex_hull_plot_2d, \
|
||||
Delaunay, Voronoi, ConvexHull
|
||||
|
||||
|
||||
@pytest.mark.skipif(not has_matplotlib, reason="Matplotlib not available")
|
||||
class TestPlotting:
|
||||
points = [(0,0), (0,1), (1,0), (1,1)]
|
||||
|
||||
def test_delaunay(self):
|
||||
# Smoke test
|
||||
fig = plt.figure()
|
||||
obj = Delaunay(self.points)
|
||||
s_before = obj.simplices.copy()
|
||||
r = delaunay_plot_2d(obj, ax=fig.gca())
|
||||
assert_array_equal(obj.simplices, s_before) # shouldn't modify
|
||||
assert_(r is fig)
|
||||
delaunay_plot_2d(obj, ax=fig.gca())
|
||||
|
||||
def test_voronoi(self):
|
||||
# Smoke test
|
||||
fig = plt.figure()
|
||||
obj = Voronoi(self.points)
|
||||
r = voronoi_plot_2d(obj, ax=fig.gca())
|
||||
assert_(r is fig)
|
||||
voronoi_plot_2d(obj)
|
||||
voronoi_plot_2d(obj, show_vertices=False)
|
||||
|
||||
def test_convex_hull(self):
|
||||
# Smoke test
|
||||
fig = plt.figure()
|
||||
tri = ConvexHull(self.points)
|
||||
r = convex_hull_plot_2d(tri, ax=fig.gca())
|
||||
assert_(r is fig)
|
||||
convex_hull_plot_2d(tri)
|
||||
|
||||
def test_gh_19653(self):
|
||||
# aspect ratio sensitivity of voronoi_plot_2d
|
||||
# infinite Voronoi edges
|
||||
points = np.array([[245.059986986012, 10.971011721360075],
|
||||
[320.49044143557785, 10.970258360366753],
|
||||
[239.79023081978914, 13.108487516946218],
|
||||
[263.38325791238833, 12.93241352743668],
|
||||
[219.53334398353175, 13.346107628161008]])
|
||||
vor = Voronoi(points)
|
||||
fig = voronoi_plot_2d(vor)
|
||||
ax = fig.gca()
|
||||
infinite_segments = ax.collections[1].get_segments()
|
||||
expected_segments = np.array([[[282.77256, -254.76904],
|
||||
[282.729714, -4544.744698]],
|
||||
[[282.77256014, -254.76904029],
|
||||
[430.08561382, 4032.67658742]],
|
||||
[[229.26733285, -20.39957514],
|
||||
[-168.17167404, -4291.92545966]],
|
||||
[[289.93433364, 5151.40412217],
|
||||
[330.40553385, 9441.18887532]]])
|
||||
assert_allclose(infinite_segments, expected_segments)
|
||||
|
||||
def test_gh_19653_smaller_aspect(self):
|
||||
# reasonable behavior for less extreme aspect
|
||||
# ratio
|
||||
points = np.array([[24.059986986012, 10.971011721360075],
|
||||
[32.49044143557785, 10.970258360366753],
|
||||
[23.79023081978914, 13.108487516946218],
|
||||
[26.38325791238833, 12.93241352743668],
|
||||
[21.53334398353175, 13.346107628161008]])
|
||||
vor = Voronoi(points)
|
||||
fig = voronoi_plot_2d(vor)
|
||||
ax = fig.gca()
|
||||
infinite_segments = ax.collections[1].get_segments()
|
||||
expected_segments = np.array([[[28.274979, 8.335027],
|
||||
[28.270463, -42.19763338]],
|
||||
[[28.27497869, 8.33502697],
|
||||
[43.73223829, 56.44555501]],
|
||||
[[22.51805823, 11.8621754],
|
||||
[-12.09266506, -24.95694485]],
|
||||
[[29.53092448, 78.46952378],
|
||||
[33.82572726, 128.81934455]]])
|
||||
assert_allclose(infinite_segments, expected_segments)
|
||||
|
|
@ -0,0 +1,116 @@
|
|||
import numpy as np
|
||||
from numpy.testing import assert_allclose, assert_equal, assert_almost_equal
|
||||
from pytest import raises as assert_raises
|
||||
|
||||
from scipy.spatial import procrustes
|
||||
|
||||
|
||||
class TestProcrustes:
|
||||
def setup_method(self):
|
||||
"""creates inputs"""
|
||||
# an L
|
||||
self.data1 = np.array([[1, 3], [1, 2], [1, 1], [2, 1]], 'd')
|
||||
|
||||
# a larger, shifted, mirrored L
|
||||
self.data2 = np.array([[4, -2], [4, -4], [4, -6], [2, -6]], 'd')
|
||||
|
||||
# an L shifted up 1, right 1, and with point 4 shifted an extra .5
|
||||
# to the right
|
||||
# pointwise distance disparity with data1: 3*(2) + (1 + 1.5^2)
|
||||
self.data3 = np.array([[2, 4], [2, 3], [2, 2], [3, 2.5]], 'd')
|
||||
|
||||
# data4, data5 are standardized (trace(A*A') = 1).
|
||||
# procrustes should return an identical copy if they are used
|
||||
# as the first matrix argument.
|
||||
shiftangle = np.pi / 8
|
||||
self.data4 = np.array([[1, 0], [0, 1], [-1, 0],
|
||||
[0, -1]], 'd') / np.sqrt(4)
|
||||
self.data5 = np.array([[np.cos(shiftangle), np.sin(shiftangle)],
|
||||
[np.cos(np.pi / 2 - shiftangle),
|
||||
np.sin(np.pi / 2 - shiftangle)],
|
||||
[-np.cos(shiftangle),
|
||||
-np.sin(shiftangle)],
|
||||
[-np.cos(np.pi / 2 - shiftangle),
|
||||
-np.sin(np.pi / 2 - shiftangle)]],
|
||||
'd') / np.sqrt(4)
|
||||
|
||||
def test_procrustes(self):
|
||||
# tests procrustes' ability to match two matrices.
|
||||
#
|
||||
# the second matrix is a rotated, shifted, scaled, and mirrored version
|
||||
# of the first, in two dimensions only
|
||||
#
|
||||
# can shift, mirror, and scale an 'L'?
|
||||
a, b, disparity = procrustes(self.data1, self.data2)
|
||||
assert_allclose(b, a)
|
||||
assert_almost_equal(disparity, 0.)
|
||||
|
||||
# if first mtx is standardized, leaves first mtx unchanged?
|
||||
m4, m5, disp45 = procrustes(self.data4, self.data5)
|
||||
assert_equal(m4, self.data4)
|
||||
|
||||
# at worst, data3 is an 'L' with one point off by .5
|
||||
m1, m3, disp13 = procrustes(self.data1, self.data3)
|
||||
#assert_(disp13 < 0.5 ** 2)
|
||||
|
||||
def test_procrustes2(self):
|
||||
# procrustes disparity should not depend on order of matrices
|
||||
m1, m3, disp13 = procrustes(self.data1, self.data3)
|
||||
m3_2, m1_2, disp31 = procrustes(self.data3, self.data1)
|
||||
assert_almost_equal(disp13, disp31)
|
||||
|
||||
# try with 3d, 8 pts per
|
||||
rand1 = np.array([[2.61955202, 0.30522265, 0.55515826],
|
||||
[0.41124708, -0.03966978, -0.31854548],
|
||||
[0.91910318, 1.39451809, -0.15295084],
|
||||
[2.00452023, 0.50150048, 0.29485268],
|
||||
[0.09453595, 0.67528885, 0.03283872],
|
||||
[0.07015232, 2.18892599, -1.67266852],
|
||||
[0.65029688, 1.60551637, 0.80013549],
|
||||
[-0.6607528, 0.53644208, 0.17033891]])
|
||||
|
||||
rand3 = np.array([[0.0809969, 0.09731461, -0.173442],
|
||||
[-1.84888465, -0.92589646, -1.29335743],
|
||||
[0.67031855, -1.35957463, 0.41938621],
|
||||
[0.73967209, -0.20230757, 0.52418027],
|
||||
[0.17752796, 0.09065607, 0.29827466],
|
||||
[0.47999368, -0.88455717, -0.57547934],
|
||||
[-0.11486344, -0.12608506, -0.3395779],
|
||||
[-0.86106154, -0.28687488, 0.9644429]])
|
||||
res1, res3, disp13 = procrustes(rand1, rand3)
|
||||
res3_2, res1_2, disp31 = procrustes(rand3, rand1)
|
||||
assert_almost_equal(disp13, disp31)
|
||||
|
||||
def test_procrustes_shape_mismatch(self):
|
||||
assert_raises(ValueError, procrustes,
|
||||
np.array([[1, 2], [3, 4]]),
|
||||
np.array([[5, 6, 7], [8, 9, 10]]))
|
||||
|
||||
def test_procrustes_empty_rows_or_cols(self):
|
||||
empty = np.array([[]])
|
||||
assert_raises(ValueError, procrustes, empty, empty)
|
||||
|
||||
def test_procrustes_no_variation(self):
|
||||
assert_raises(ValueError, procrustes,
|
||||
np.array([[42, 42], [42, 42]]),
|
||||
np.array([[45, 45], [45, 45]]))
|
||||
|
||||
def test_procrustes_bad_number_of_dimensions(self):
|
||||
# fewer dimensions in one dataset
|
||||
assert_raises(ValueError, procrustes,
|
||||
np.array([1, 1, 2, 3, 5, 8]),
|
||||
np.array([[1, 2], [3, 4]]))
|
||||
|
||||
# fewer dimensions in both datasets
|
||||
assert_raises(ValueError, procrustes,
|
||||
np.array([1, 1, 2, 3, 5, 8]),
|
||||
np.array([1, 1, 2, 3, 5, 8]))
|
||||
|
||||
# zero dimensions
|
||||
assert_raises(ValueError, procrustes, np.array(7), np.array(11))
|
||||
|
||||
# extra dimensions
|
||||
assert_raises(ValueError, procrustes,
|
||||
np.array([[[11], [7]]]),
|
||||
np.array([[[5, 13]]]))
|
||||
|
||||
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,199 @@
|
|||
import numpy as np
|
||||
from numpy.testing import (assert_allclose,
|
||||
assert_array_equal,
|
||||
assert_equal)
|
||||
import pytest
|
||||
from scipy.spatial.distance import directed_hausdorff
|
||||
from scipy.spatial import distance
|
||||
from scipy._lib._util import check_random_state
|
||||
|
||||
|
||||
class TestHausdorff:
|
||||
# Test various properties of the directed Hausdorff code.
|
||||
|
||||
def setup_method(self):
|
||||
np.random.seed(1234)
|
||||
random_angles = np.random.random(100) * np.pi * 2
|
||||
random_columns = np.column_stack(
|
||||
(random_angles, random_angles, np.zeros(100)))
|
||||
random_columns[..., 0] = np.cos(random_columns[..., 0])
|
||||
random_columns[..., 1] = np.sin(random_columns[..., 1])
|
||||
random_columns_2 = np.column_stack(
|
||||
(random_angles, random_angles, np.zeros(100)))
|
||||
random_columns_2[1:, 0] = np.cos(random_columns_2[1:, 0]) * 2.0
|
||||
random_columns_2[1:, 1] = np.sin(random_columns_2[1:, 1]) * 2.0
|
||||
# move one point farther out so we don't have two perfect circles
|
||||
random_columns_2[0, 0] = np.cos(random_columns_2[0, 0]) * 3.3
|
||||
random_columns_2[0, 1] = np.sin(random_columns_2[0, 1]) * 3.3
|
||||
self.path_1 = random_columns
|
||||
self.path_2 = random_columns_2
|
||||
self.path_1_4d = np.insert(self.path_1, 3, 5, axis=1)
|
||||
self.path_2_4d = np.insert(self.path_2, 3, 27, axis=1)
|
||||
|
||||
def test_symmetry(self):
|
||||
# Ensure that the directed (asymmetric) Hausdorff distance is
|
||||
# actually asymmetric
|
||||
|
||||
forward = directed_hausdorff(self.path_1, self.path_2)[0]
|
||||
reverse = directed_hausdorff(self.path_2, self.path_1)[0]
|
||||
assert forward != reverse
|
||||
|
||||
def test_brute_force_comparison_forward(self):
|
||||
# Ensure that the algorithm for directed_hausdorff gives the
|
||||
# same result as the simple / brute force approach in the
|
||||
# forward direction.
|
||||
actual = directed_hausdorff(self.path_1, self.path_2)[0]
|
||||
# brute force over rows:
|
||||
expected = max(np.amin(distance.cdist(self.path_1, self.path_2),
|
||||
axis=1))
|
||||
assert_allclose(actual, expected)
|
||||
|
||||
def test_brute_force_comparison_reverse(self):
|
||||
# Ensure that the algorithm for directed_hausdorff gives the
|
||||
# same result as the simple / brute force approach in the
|
||||
# reverse direction.
|
||||
actual = directed_hausdorff(self.path_2, self.path_1)[0]
|
||||
# brute force over columns:
|
||||
expected = max(np.amin(distance.cdist(self.path_1, self.path_2),
|
||||
axis=0))
|
||||
assert_allclose(actual, expected)
|
||||
|
||||
def test_degenerate_case(self):
|
||||
# The directed Hausdorff distance must be zero if both input
|
||||
# data arrays match.
|
||||
actual = directed_hausdorff(self.path_1, self.path_1)[0]
|
||||
assert_allclose(actual, 0.0)
|
||||
|
||||
def test_2d_data_forward(self):
|
||||
# Ensure that 2D data is handled properly for a simple case
|
||||
# relative to brute force approach.
|
||||
actual = directed_hausdorff(self.path_1[..., :2],
|
||||
self.path_2[..., :2])[0]
|
||||
expected = max(np.amin(distance.cdist(self.path_1[..., :2],
|
||||
self.path_2[..., :2]),
|
||||
axis=1))
|
||||
assert_allclose(actual, expected)
|
||||
|
||||
def test_4d_data_reverse(self):
|
||||
# Ensure that 4D data is handled properly for a simple case
|
||||
# relative to brute force approach.
|
||||
actual = directed_hausdorff(self.path_2_4d, self.path_1_4d)[0]
|
||||
# brute force over columns:
|
||||
expected = max(np.amin(distance.cdist(self.path_1_4d, self.path_2_4d),
|
||||
axis=0))
|
||||
assert_allclose(actual, expected)
|
||||
|
||||
def test_indices(self):
|
||||
# Ensure that correct point indices are returned -- they should
|
||||
# correspond to the Hausdorff pair
|
||||
path_simple_1 = np.array([[-1,-12],[0,0], [1,1], [3,7], [1,2]])
|
||||
path_simple_2 = np.array([[0,0], [1,1], [4,100], [10,9]])
|
||||
actual = directed_hausdorff(path_simple_2, path_simple_1)[1:]
|
||||
expected = (2, 3)
|
||||
assert_array_equal(actual, expected)
|
||||
|
||||
def test_random_state(self):
|
||||
# ensure that the global random state is not modified because
|
||||
# the directed Hausdorff algorithm uses randomization
|
||||
rs = check_random_state(None)
|
||||
old_global_state = rs.get_state()
|
||||
directed_hausdorff(self.path_1, self.path_2)
|
||||
rs2 = check_random_state(None)
|
||||
new_global_state = rs2.get_state()
|
||||
assert_equal(new_global_state, old_global_state)
|
||||
|
||||
@pytest.mark.parametrize("seed", [None, 27870671, np.random.default_rng(177)])
|
||||
def test_random_state_None_int(self, seed):
|
||||
# check that seed values of None or int do not alter global
|
||||
# random state
|
||||
rs = check_random_state(None)
|
||||
old_global_state = rs.get_state()
|
||||
directed_hausdorff(self.path_1, self.path_2, seed)
|
||||
rs2 = check_random_state(None)
|
||||
new_global_state = rs2.get_state()
|
||||
assert_equal(new_global_state, old_global_state)
|
||||
|
||||
def test_invalid_dimensions(self):
|
||||
# Ensure that a ValueError is raised when the number of columns
|
||||
# is not the same
|
||||
rng = np.random.default_rng(189048172503940875434364128139223470523)
|
||||
A = rng.random((3, 2))
|
||||
B = rng.random((3, 5))
|
||||
msg = r"need to have the same number of columns"
|
||||
with pytest.raises(ValueError, match=msg):
|
||||
directed_hausdorff(A, B)
|
||||
|
||||
# preserve use of legacy keyword `seed` during SPEC 7 transition
|
||||
@pytest.mark.parametrize("A, B, seed, expected", [
|
||||
# the two cases from gh-11332
|
||||
([(0,0)],
|
||||
[(0,1), (0,0)],
|
||||
np.int64(0),
|
||||
(0.0, 0, 1)),
|
||||
([(0,0)],
|
||||
[(0,1), (0,0)],
|
||||
1,
|
||||
(0.0, 0, 1)),
|
||||
# gh-11332 cases with a Generator
|
||||
([(0,0)],
|
||||
[(0,1), (0,0)],
|
||||
np.random.default_rng(0),
|
||||
(0.0, 0, 1)),
|
||||
([(0,0)],
|
||||
[(0,1), (0,0)],
|
||||
np.random.default_rng(1),
|
||||
(0.0, 0, 1)),
|
||||
# slightly more complex case
|
||||
([(-5, 3), (0,0)],
|
||||
[(0,1), (0,0), (-5, 3)],
|
||||
77098,
|
||||
# the maximum minimum distance will
|
||||
# be the last one found, but a unique
|
||||
# solution is not guaranteed more broadly
|
||||
(0.0, 1, 1)),
|
||||
# repeated with Generator seeding
|
||||
([(-5, 3), (0,0)],
|
||||
[(0,1), (0,0), (-5, 3)],
|
||||
np.random.default_rng(77098),
|
||||
# NOTE: using a Generator changes the
|
||||
# indices but not the distance (unique solution
|
||||
# not guaranteed)
|
||||
(0.0, 0, 2)),
|
||||
])
|
||||
def test_subsets(self, A, B, seed, expected, num_parallel_threads):
|
||||
# verify fix for gh-11332
|
||||
actual = directed_hausdorff(u=A, v=B, seed=seed)
|
||||
# check distance
|
||||
assert_allclose(actual[0], expected[0])
|
||||
starting_seed = seed
|
||||
if hasattr(seed, 'bit_generator'):
|
||||
starting_seed = seed.bit_generator._seed_seq.entropy
|
||||
# check indices
|
||||
if num_parallel_threads == 1 or starting_seed != 77098:
|
||||
assert actual[1:] == expected[1:]
|
||||
|
||||
if not isinstance(seed, np.random.RandomState):
|
||||
# Check that new `rng` keyword is also accepted
|
||||
actual = directed_hausdorff(u=A, v=B, rng=seed)
|
||||
assert_allclose(actual[0], expected[0])
|
||||
|
||||
|
||||
@pytest.mark.xslow
|
||||
def test_massive_arr_overflow():
|
||||
# on 64-bit systems we should be able to
|
||||
# handle arrays that exceed the indexing
|
||||
# size of a 32-bit signed integer
|
||||
try:
|
||||
import psutil
|
||||
except ModuleNotFoundError:
|
||||
pytest.skip("psutil required to check available memory")
|
||||
if psutil.virtual_memory().available < 80*2**30:
|
||||
# Don't run the test if there is less than 80 gig of RAM available.
|
||||
pytest.skip('insufficient memory available to run this test')
|
||||
size = int(3e9)
|
||||
arr1 = np.zeros(shape=(size, 2))
|
||||
arr2 = np.zeros(shape=(3, 2))
|
||||
arr1[size - 1] = [5, 5]
|
||||
actual = directed_hausdorff(u=arr1, v=arr2)
|
||||
assert_allclose(actual[0], 7.0710678118654755)
|
||||
assert_allclose(actual[1], size - 1)
|
||||
1536
venv/lib/python3.13/site-packages/scipy/spatial/tests/test_kdtree.py
Normal file
1536
venv/lib/python3.13/site-packages/scipy/spatial/tests/test_kdtree.py
Normal file
File diff suppressed because it is too large
Load diff
1313
venv/lib/python3.13/site-packages/scipy/spatial/tests/test_qhull.py
Normal file
1313
venv/lib/python3.13/site-packages/scipy/spatial/tests/test_qhull.py
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,417 @@
|
|||
import numpy as np
|
||||
from numpy.testing import assert_allclose
|
||||
|
||||
import pytest
|
||||
from scipy.spatial import geometric_slerp
|
||||
|
||||
|
||||
def _generate_spherical_points(ndim=3, n_pts=2):
|
||||
# generate uniform points on sphere
|
||||
# see: https://stackoverflow.com/a/23785326
|
||||
# tentatively extended to arbitrary dims
|
||||
# for 0-sphere it will always produce antipodes
|
||||
np.random.seed(123)
|
||||
points = np.random.normal(size=(n_pts, ndim))
|
||||
points /= np.linalg.norm(points, axis=1)[:, np.newaxis]
|
||||
return points[0], points[1]
|
||||
|
||||
|
||||
class TestGeometricSlerp:
|
||||
# Test various properties of the geometric slerp code
|
||||
|
||||
@pytest.mark.parametrize("n_dims", [2, 3, 5, 7, 9])
|
||||
@pytest.mark.parametrize("n_pts", [0, 3, 17])
|
||||
def test_shape_property(self, n_dims, n_pts):
|
||||
# geometric_slerp output shape should match
|
||||
# input dimensionality & requested number
|
||||
# of interpolation points
|
||||
start, end = _generate_spherical_points(n_dims, 2)
|
||||
|
||||
actual = geometric_slerp(start=start,
|
||||
end=end,
|
||||
t=np.linspace(0, 1, n_pts))
|
||||
|
||||
assert actual.shape == (n_pts, n_dims)
|
||||
|
||||
@pytest.mark.parametrize("n_dims", [2, 3, 5, 7, 9])
|
||||
@pytest.mark.parametrize("n_pts", [3, 17])
|
||||
def test_include_ends(self, n_dims, n_pts):
|
||||
# geometric_slerp should return a data structure
|
||||
# that includes the start and end coordinates
|
||||
# when t includes 0 and 1 ends
|
||||
# this is convenient for plotting surfaces represented
|
||||
# by interpolations for example
|
||||
|
||||
# the generator doesn't work so well for the unit
|
||||
# sphere (it always produces antipodes), so use
|
||||
# custom values there
|
||||
start, end = _generate_spherical_points(n_dims, 2)
|
||||
|
||||
actual = geometric_slerp(start=start,
|
||||
end=end,
|
||||
t=np.linspace(0, 1, n_pts))
|
||||
|
||||
assert_allclose(actual[0], start)
|
||||
assert_allclose(actual[-1], end)
|
||||
|
||||
@pytest.mark.parametrize("start, end", [
|
||||
# both arrays are not flat
|
||||
(np.zeros((1, 3)), np.ones((1, 3))),
|
||||
# only start array is not flat
|
||||
(np.zeros((1, 3)), np.ones(3)),
|
||||
# only end array is not flat
|
||||
(np.zeros(1), np.ones((3, 1))),
|
||||
])
|
||||
def test_input_shape_flat(self, start, end):
|
||||
# geometric_slerp should handle input arrays that are
|
||||
# not flat appropriately
|
||||
with pytest.raises(ValueError, match='one-dimensional'):
|
||||
geometric_slerp(start=start,
|
||||
end=end,
|
||||
t=np.linspace(0, 1, 10))
|
||||
|
||||
@pytest.mark.parametrize("start, end", [
|
||||
# 7-D and 3-D ends
|
||||
(np.zeros(7), np.ones(3)),
|
||||
# 2-D and 1-D ends
|
||||
(np.zeros(2), np.ones(1)),
|
||||
# empty, "3D" will also get caught this way
|
||||
(np.array([]), np.ones(3)),
|
||||
])
|
||||
def test_input_dim_mismatch(self, start, end):
|
||||
# geometric_slerp must appropriately handle cases where
|
||||
# an interpolation is attempted across two different
|
||||
# dimensionalities
|
||||
with pytest.raises(ValueError, match='dimensions'):
|
||||
geometric_slerp(start=start,
|
||||
end=end,
|
||||
t=np.linspace(0, 1, 10))
|
||||
|
||||
@pytest.mark.parametrize("start, end", [
|
||||
# both empty
|
||||
(np.array([]), np.array([])),
|
||||
])
|
||||
def test_input_at_least1d(self, start, end):
|
||||
# empty inputs to geometric_slerp must
|
||||
# be handled appropriately when not detected
|
||||
# by mismatch
|
||||
with pytest.raises(ValueError, match='at least two-dim'):
|
||||
geometric_slerp(start=start,
|
||||
end=end,
|
||||
t=np.linspace(0, 1, 10))
|
||||
|
||||
@pytest.mark.thread_unsafe
|
||||
@pytest.mark.parametrize("start, end, expected", [
|
||||
# North and South Poles are definitely antipodes
|
||||
# but should be handled gracefully now
|
||||
(np.array([0, 0, 1.0]), np.array([0, 0, -1.0]), "warning"),
|
||||
# this case will issue a warning & be handled
|
||||
# gracefully as well;
|
||||
# North Pole was rotated very slightly
|
||||
# using r = R.from_euler('x', 0.035, degrees=True)
|
||||
# to achieve Euclidean distance offset from diameter by
|
||||
# 9.328908379124812e-08, within the default tol
|
||||
(np.array([0.00000000e+00,
|
||||
-6.10865200e-04,
|
||||
9.99999813e-01]), np.array([0, 0, -1.0]), "warning"),
|
||||
# this case should succeed without warning because a
|
||||
# sufficiently large
|
||||
# rotation was applied to North Pole point to shift it
|
||||
# to a Euclidean distance of 2.3036691931821451e-07
|
||||
# from South Pole, which is larger than tol
|
||||
(np.array([0.00000000e+00,
|
||||
-9.59930941e-04,
|
||||
9.99999539e-01]), np.array([0, 0, -1.0]), "success"),
|
||||
])
|
||||
def test_handle_antipodes(self, start, end, expected):
|
||||
# antipodal points must be handled appropriately;
|
||||
# there are an infinite number of possible geodesic
|
||||
# interpolations between them in higher dims
|
||||
if expected == "warning":
|
||||
with pytest.warns(UserWarning, match='antipodes'):
|
||||
res = geometric_slerp(start=start,
|
||||
end=end,
|
||||
t=np.linspace(0, 1, 10))
|
||||
else:
|
||||
res = geometric_slerp(start=start,
|
||||
end=end,
|
||||
t=np.linspace(0, 1, 10))
|
||||
|
||||
# antipodes or near-antipodes should still produce
|
||||
# slerp paths on the surface of the sphere (but they
|
||||
# may be ambiguous):
|
||||
assert_allclose(np.linalg.norm(res, axis=1), 1.0)
|
||||
|
||||
@pytest.mark.parametrize("start, end, expected", [
|
||||
# 2-D with n_pts=4 (two new interpolation points)
|
||||
# this is an actual circle
|
||||
(np.array([1, 0]),
|
||||
np.array([0, 1]),
|
||||
np.array([[1, 0],
|
||||
[np.sqrt(3) / 2, 0.5], # 30 deg on unit circle
|
||||
[0.5, np.sqrt(3) / 2], # 60 deg on unit circle
|
||||
[0, 1]])),
|
||||
# likewise for 3-D (add z = 0 plane)
|
||||
# this is an ordinary sphere
|
||||
(np.array([1, 0, 0]),
|
||||
np.array([0, 1, 0]),
|
||||
np.array([[1, 0, 0],
|
||||
[np.sqrt(3) / 2, 0.5, 0],
|
||||
[0.5, np.sqrt(3) / 2, 0],
|
||||
[0, 1, 0]])),
|
||||
# for 5-D, pad more columns with constants
|
||||
# zeros are easiest--non-zero values on unit
|
||||
# circle are more difficult to reason about
|
||||
# at higher dims
|
||||
(np.array([1, 0, 0, 0, 0]),
|
||||
np.array([0, 1, 0, 0, 0]),
|
||||
np.array([[1, 0, 0, 0, 0],
|
||||
[np.sqrt(3) / 2, 0.5, 0, 0, 0],
|
||||
[0.5, np.sqrt(3) / 2, 0, 0, 0],
|
||||
[0, 1, 0, 0, 0]])),
|
||||
|
||||
])
|
||||
def test_straightforward_examples(self, start, end, expected):
|
||||
# some straightforward interpolation tests, sufficiently
|
||||
# simple to use the unit circle to deduce expected values;
|
||||
# for larger dimensions, pad with constants so that the
|
||||
# data is N-D but simpler to reason about
|
||||
actual = geometric_slerp(start=start,
|
||||
end=end,
|
||||
t=np.linspace(0, 1, 4))
|
||||
assert_allclose(actual, expected, atol=1e-16)
|
||||
|
||||
@pytest.mark.parametrize("t", [
|
||||
# both interval ends clearly violate limits
|
||||
np.linspace(-20, 20, 300),
|
||||
# only one interval end violating limit slightly
|
||||
np.linspace(-0.0001, 0.0001, 17),
|
||||
])
|
||||
def test_t_values_limits(self, t):
|
||||
# geometric_slerp() should appropriately handle
|
||||
# interpolation parameters < 0 and > 1
|
||||
with pytest.raises(ValueError, match='interpolation parameter'):
|
||||
_ = geometric_slerp(start=np.array([1, 0]),
|
||||
end=np.array([0, 1]),
|
||||
t=t)
|
||||
|
||||
@pytest.mark.parametrize("start, end", [
|
||||
(np.array([1]),
|
||||
np.array([0])),
|
||||
(np.array([0]),
|
||||
np.array([1])),
|
||||
(np.array([-17.7]),
|
||||
np.array([165.9])),
|
||||
])
|
||||
def test_0_sphere_handling(self, start, end):
|
||||
# it does not make sense to interpolate the set of
|
||||
# two points that is the 0-sphere
|
||||
with pytest.raises(ValueError, match='at least two-dim'):
|
||||
_ = geometric_slerp(start=start,
|
||||
end=end,
|
||||
t=np.linspace(0, 1, 4))
|
||||
|
||||
@pytest.mark.parametrize("tol", [
|
||||
# an integer currently raises
|
||||
5,
|
||||
# string raises
|
||||
"7",
|
||||
# list and arrays also raise
|
||||
[5, 6, 7], np.array(9.0),
|
||||
])
|
||||
def test_tol_type(self, tol):
|
||||
# geometric_slerp() should raise if tol is not
|
||||
# a suitable float type
|
||||
with pytest.raises(ValueError, match='must be a float'):
|
||||
_ = geometric_slerp(start=np.array([1, 0]),
|
||||
end=np.array([0, 1]),
|
||||
t=np.linspace(0, 1, 5),
|
||||
tol=tol)
|
||||
|
||||
@pytest.mark.parametrize("tol", [
|
||||
-5e-6,
|
||||
-7e-10,
|
||||
])
|
||||
def test_tol_sign(self, tol):
|
||||
# geometric_slerp() currently handles negative
|
||||
# tol values, as long as they are floats
|
||||
_ = geometric_slerp(start=np.array([1, 0]),
|
||||
end=np.array([0, 1]),
|
||||
t=np.linspace(0, 1, 5),
|
||||
tol=tol)
|
||||
|
||||
@pytest.mark.parametrize("start, end", [
|
||||
# 1-sphere (circle) with one point at origin
|
||||
# and the other on the circle
|
||||
(np.array([1, 0]), np.array([0, 0])),
|
||||
# 2-sphere (normal sphere) with both points
|
||||
# just slightly off sphere by the same amount
|
||||
# in different directions
|
||||
(np.array([1 + 1e-6, 0, 0]),
|
||||
np.array([0, 1 - 1e-6, 0])),
|
||||
# same thing in 4-D
|
||||
(np.array([1 + 1e-6, 0, 0, 0]),
|
||||
np.array([0, 1 - 1e-6, 0, 0])),
|
||||
])
|
||||
def test_unit_sphere_enforcement(self, start, end):
|
||||
# geometric_slerp() should raise on input that clearly
|
||||
# cannot be on an n-sphere of radius 1
|
||||
with pytest.raises(ValueError, match='unit n-sphere'):
|
||||
geometric_slerp(start=start,
|
||||
end=end,
|
||||
t=np.linspace(0, 1, 5))
|
||||
|
||||
@pytest.mark.parametrize("start, end", [
|
||||
# 1-sphere 45 degree case
|
||||
(np.array([1, 0]),
|
||||
np.array([np.sqrt(2) / 2.,
|
||||
np.sqrt(2) / 2.])),
|
||||
# 2-sphere 135 degree case
|
||||
(np.array([1, 0]),
|
||||
np.array([-np.sqrt(2) / 2.,
|
||||
np.sqrt(2) / 2.])),
|
||||
])
|
||||
@pytest.mark.parametrize("t_func", [
|
||||
np.linspace, np.logspace])
|
||||
def test_order_handling(self, start, end, t_func):
|
||||
# geometric_slerp() should handle scenarios with
|
||||
# ascending and descending t value arrays gracefully;
|
||||
# results should simply be reversed
|
||||
|
||||
# for scrambled / unsorted parameters, the same values
|
||||
# should be returned, just in scrambled order
|
||||
|
||||
num_t_vals = 20
|
||||
np.random.seed(789)
|
||||
forward_t_vals = t_func(0, 10, num_t_vals)
|
||||
# normalize to max of 1
|
||||
forward_t_vals /= forward_t_vals.max()
|
||||
reverse_t_vals = np.flipud(forward_t_vals)
|
||||
shuffled_indices = np.arange(num_t_vals)
|
||||
np.random.shuffle(shuffled_indices)
|
||||
scramble_t_vals = forward_t_vals.copy()[shuffled_indices]
|
||||
|
||||
forward_results = geometric_slerp(start=start,
|
||||
end=end,
|
||||
t=forward_t_vals)
|
||||
reverse_results = geometric_slerp(start=start,
|
||||
end=end,
|
||||
t=reverse_t_vals)
|
||||
scrambled_results = geometric_slerp(start=start,
|
||||
end=end,
|
||||
t=scramble_t_vals)
|
||||
|
||||
# check fidelity to input order
|
||||
assert_allclose(forward_results, np.flipud(reverse_results))
|
||||
assert_allclose(forward_results[shuffled_indices],
|
||||
scrambled_results)
|
||||
|
||||
@pytest.mark.parametrize("t", [
|
||||
# string:
|
||||
"15, 5, 7",
|
||||
# complex numbers currently produce a warning
|
||||
# but not sure we need to worry about it too much:
|
||||
# [3 + 1j, 5 + 2j],
|
||||
])
|
||||
def test_t_values_conversion(self, t):
|
||||
with pytest.raises(ValueError):
|
||||
_ = geometric_slerp(start=np.array([1]),
|
||||
end=np.array([0]),
|
||||
t=t)
|
||||
|
||||
def test_accept_arraylike(self):
|
||||
# array-like support requested by reviewer
|
||||
# in gh-10380
|
||||
actual = geometric_slerp([1, 0], [0, 1], [0, 1/3, 0.5, 2/3, 1])
|
||||
|
||||
# expected values are based on visual inspection
|
||||
# of the unit circle for the progressions along
|
||||
# the circumference provided in t
|
||||
expected = np.array([[1, 0],
|
||||
[np.sqrt(3) / 2, 0.5],
|
||||
[np.sqrt(2) / 2,
|
||||
np.sqrt(2) / 2],
|
||||
[0.5, np.sqrt(3) / 2],
|
||||
[0, 1]], dtype=np.float64)
|
||||
# Tyler's original Cython implementation of geometric_slerp
|
||||
# can pass at atol=0 here, but on balance we will accept
|
||||
# 1e-16 for an implementation that avoids Cython and
|
||||
# makes up accuracy ground elsewhere
|
||||
assert_allclose(actual, expected, atol=1e-16)
|
||||
|
||||
def test_scalar_t(self):
|
||||
# when t is a scalar, return value is a single
|
||||
# interpolated point of the appropriate dimensionality
|
||||
# requested by reviewer in gh-10380
|
||||
actual = geometric_slerp([1, 0], [0, 1], 0.5)
|
||||
expected = np.array([np.sqrt(2) / 2,
|
||||
np.sqrt(2) / 2], dtype=np.float64)
|
||||
assert actual.shape == (2,)
|
||||
assert_allclose(actual, expected)
|
||||
|
||||
@pytest.mark.parametrize('start', [
|
||||
np.array([1, 0, 0]),
|
||||
np.array([0, 1]),
|
||||
])
|
||||
@pytest.mark.parametrize('t', [
|
||||
np.array(1),
|
||||
np.array([1]),
|
||||
np.array([[1]]),
|
||||
np.array([[[1]]]),
|
||||
np.array([]),
|
||||
np.linspace(0, 1, 5),
|
||||
])
|
||||
def test_degenerate_input(self, start, t):
|
||||
if np.asarray(t).ndim > 1:
|
||||
with pytest.raises(ValueError):
|
||||
geometric_slerp(start=start, end=start, t=t)
|
||||
else:
|
||||
|
||||
shape = (t.size,) + start.shape
|
||||
expected = np.full(shape, start)
|
||||
|
||||
actual = geometric_slerp(start=start, end=start, t=t)
|
||||
assert_allclose(actual, expected)
|
||||
|
||||
# Check that degenerate and non-degenerate
|
||||
# inputs yield the same size
|
||||
non_degenerate = geometric_slerp(start=start, end=start[::-1], t=t)
|
||||
assert actual.size == non_degenerate.size
|
||||
|
||||
@pytest.mark.parametrize('k', np.logspace(-10, -1, 10))
|
||||
def test_numerical_stability_pi(self, k):
|
||||
# geometric_slerp should have excellent numerical
|
||||
# stability for angles approaching pi between
|
||||
# the start and end points
|
||||
angle = np.pi - k
|
||||
ts = np.linspace(0, 1, 100)
|
||||
P = np.array([1, 0, 0, 0])
|
||||
Q = np.array([np.cos(angle), np.sin(angle), 0, 0])
|
||||
# the test should only be enforced for cases where
|
||||
# geometric_slerp determines that the input is actually
|
||||
# on the unit sphere
|
||||
with np.testing.suppress_warnings() as sup:
|
||||
sup.filter(UserWarning)
|
||||
result = geometric_slerp(P, Q, ts, 1e-18)
|
||||
norms = np.linalg.norm(result, axis=1)
|
||||
error = np.max(np.abs(norms - 1))
|
||||
assert error < 4e-15
|
||||
|
||||
@pytest.mark.parametrize('t', [
|
||||
[[0, 0.5]],
|
||||
[[[[[[[[[0, 0.5]]]]]]]]],
|
||||
])
|
||||
def test_interpolation_param_ndim(self, t):
|
||||
# regression test for gh-14465
|
||||
arr1 = np.array([0, 1])
|
||||
arr2 = np.array([1, 0])
|
||||
|
||||
with pytest.raises(ValueError):
|
||||
geometric_slerp(start=arr1,
|
||||
end=arr2,
|
||||
t=t)
|
||||
|
||||
with pytest.raises(ValueError):
|
||||
geometric_slerp(start=arr1,
|
||||
end=arr1,
|
||||
t=t)
|
||||
|
|
@ -0,0 +1,358 @@
|
|||
import numpy as np
|
||||
import itertools
|
||||
from numpy.testing import (assert_equal,
|
||||
assert_almost_equal,
|
||||
assert_array_equal,
|
||||
assert_array_almost_equal)
|
||||
import pytest
|
||||
from pytest import raises as assert_raises
|
||||
from scipy.spatial import SphericalVoronoi, distance
|
||||
from scipy.optimize import linear_sum_assignment
|
||||
from scipy.constants import golden as phi
|
||||
from scipy.special import gamma
|
||||
|
||||
|
||||
TOL = 1E-10
|
||||
|
||||
|
||||
def _generate_tetrahedron():
|
||||
return np.array([[1, 1, 1], [1, -1, -1], [-1, 1, -1], [-1, -1, 1]])
|
||||
|
||||
|
||||
def _generate_cube():
|
||||
return np.array(list(itertools.product([-1, 1.], repeat=3)))
|
||||
|
||||
|
||||
def _generate_octahedron():
|
||||
return np.array([[-1, 0, 0], [+1, 0, 0], [0, -1, 0],
|
||||
[0, +1, 0], [0, 0, -1], [0, 0, +1]])
|
||||
|
||||
|
||||
def _generate_dodecahedron():
|
||||
|
||||
x1 = _generate_cube()
|
||||
x2 = np.array([[0, -phi, -1 / phi],
|
||||
[0, -phi, +1 / phi],
|
||||
[0, +phi, -1 / phi],
|
||||
[0, +phi, +1 / phi]])
|
||||
x3 = np.array([[-1 / phi, 0, -phi],
|
||||
[+1 / phi, 0, -phi],
|
||||
[-1 / phi, 0, +phi],
|
||||
[+1 / phi, 0, +phi]])
|
||||
x4 = np.array([[-phi, -1 / phi, 0],
|
||||
[-phi, +1 / phi, 0],
|
||||
[+phi, -1 / phi, 0],
|
||||
[+phi, +1 / phi, 0]])
|
||||
return np.concatenate((x1, x2, x3, x4))
|
||||
|
||||
|
||||
def _generate_icosahedron():
|
||||
x = np.array([[0, -1, -phi],
|
||||
[0, -1, +phi],
|
||||
[0, +1, -phi],
|
||||
[0, +1, +phi]])
|
||||
return np.concatenate([np.roll(x, i, axis=1) for i in range(3)])
|
||||
|
||||
|
||||
def _generate_polytope(name):
|
||||
polygons = ["triangle", "square", "pentagon", "hexagon", "heptagon",
|
||||
"octagon", "nonagon", "decagon", "undecagon", "dodecagon"]
|
||||
polyhedra = ["tetrahedron", "cube", "octahedron", "dodecahedron",
|
||||
"icosahedron"]
|
||||
if name not in polygons and name not in polyhedra:
|
||||
raise ValueError("unrecognized polytope")
|
||||
|
||||
if name in polygons:
|
||||
n = polygons.index(name) + 3
|
||||
thetas = np.linspace(0, 2 * np.pi, n, endpoint=False)
|
||||
p = np.vstack([np.cos(thetas), np.sin(thetas)]).T
|
||||
elif name == "tetrahedron":
|
||||
p = _generate_tetrahedron()
|
||||
elif name == "cube":
|
||||
p = _generate_cube()
|
||||
elif name == "octahedron":
|
||||
p = _generate_octahedron()
|
||||
elif name == "dodecahedron":
|
||||
p = _generate_dodecahedron()
|
||||
elif name == "icosahedron":
|
||||
p = _generate_icosahedron()
|
||||
|
||||
return p / np.linalg.norm(p, axis=1, keepdims=True)
|
||||
|
||||
|
||||
def _hypersphere_area(dim, radius):
|
||||
# https://en.wikipedia.org/wiki/N-sphere#Closed_forms
|
||||
return 2 * np.pi**(dim / 2) / gamma(dim / 2) * radius**(dim - 1)
|
||||
|
||||
|
||||
def _sample_sphere(n, dim, seed=None):
|
||||
# Sample points uniformly at random from the hypersphere
|
||||
rng = np.random.RandomState(seed=seed)
|
||||
points = rng.randn(n, dim)
|
||||
points /= np.linalg.norm(points, axis=1, keepdims=True)
|
||||
return points
|
||||
|
||||
|
||||
class TestSphericalVoronoi:
|
||||
|
||||
def setup_method(self):
|
||||
self.points = np.array([
|
||||
[-0.78928481, -0.16341094, 0.59188373],
|
||||
[-0.66839141, 0.73309634, 0.12578818],
|
||||
[0.32535778, -0.92476944, -0.19734181],
|
||||
[-0.90177102, -0.03785291, -0.43055335],
|
||||
[0.71781344, 0.68428936, 0.12842096],
|
||||
[-0.96064876, 0.23492353, -0.14820556],
|
||||
[0.73181537, -0.22025898, -0.6449281],
|
||||
[0.79979205, 0.54555747, 0.25039913]]
|
||||
)
|
||||
|
||||
def test_constructor(self):
|
||||
center = np.array([1, 2, 3])
|
||||
radius = 2
|
||||
s1 = SphericalVoronoi(self.points)
|
||||
# user input checks in SphericalVoronoi now require
|
||||
# the radius / center to match the generators so adjust
|
||||
# accordingly here
|
||||
s2 = SphericalVoronoi(self.points * radius, radius)
|
||||
s3 = SphericalVoronoi(self.points + center, center=center)
|
||||
s4 = SphericalVoronoi(self.points * radius + center, radius, center)
|
||||
assert_array_equal(s1.center, np.array([0, 0, 0]))
|
||||
assert_equal(s1.radius, 1)
|
||||
assert_array_equal(s2.center, np.array([0, 0, 0]))
|
||||
assert_equal(s2.radius, 2)
|
||||
assert_array_equal(s3.center, center)
|
||||
assert_equal(s3.radius, 1)
|
||||
assert_array_equal(s4.center, center)
|
||||
assert_equal(s4.radius, radius)
|
||||
|
||||
# Test a non-sequence/-ndarray based array-like
|
||||
s5 = SphericalVoronoi(memoryview(self.points)) # type: ignore[arg-type]
|
||||
assert_array_equal(s5.center, np.array([0, 0, 0]))
|
||||
assert_equal(s5.radius, 1)
|
||||
|
||||
def test_vertices_regions_translation_invariance(self):
|
||||
sv_origin = SphericalVoronoi(self.points)
|
||||
center = np.array([1, 1, 1])
|
||||
sv_translated = SphericalVoronoi(self.points + center, center=center)
|
||||
assert_equal(sv_origin.regions, sv_translated.regions)
|
||||
assert_array_almost_equal(sv_origin.vertices + center,
|
||||
sv_translated.vertices)
|
||||
|
||||
def test_vertices_regions_scaling_invariance(self):
|
||||
sv_unit = SphericalVoronoi(self.points)
|
||||
sv_scaled = SphericalVoronoi(self.points * 2, 2)
|
||||
assert_equal(sv_unit.regions, sv_scaled.regions)
|
||||
assert_array_almost_equal(sv_unit.vertices * 2,
|
||||
sv_scaled.vertices)
|
||||
|
||||
def test_old_radius_api_error(self):
|
||||
with pytest.raises(ValueError, match='`radius` is `None`. *'):
|
||||
SphericalVoronoi(self.points, radius=None)
|
||||
|
||||
def test_sort_vertices_of_regions(self):
|
||||
sv = SphericalVoronoi(self.points)
|
||||
unsorted_regions = sv.regions
|
||||
sv.sort_vertices_of_regions()
|
||||
assert_equal(sorted(sv.regions), sorted(unsorted_regions))
|
||||
|
||||
def test_sort_vertices_of_regions_flattened(self):
|
||||
expected = sorted([[0, 6, 5, 2, 3], [2, 3, 10, 11, 8, 7], [0, 6, 4, 1],
|
||||
[4, 8, 7, 5, 6], [9, 11, 10], [2, 7, 5],
|
||||
[1, 4, 8, 11, 9], [0, 3, 10, 9, 1]])
|
||||
expected = list(itertools.chain(*sorted(expected))) # type: ignore
|
||||
sv = SphericalVoronoi(self.points)
|
||||
sv.sort_vertices_of_regions()
|
||||
actual = list(itertools.chain(*sorted(sv.regions)))
|
||||
assert_array_equal(actual, expected)
|
||||
|
||||
def test_sort_vertices_of_regions_dimensionality(self):
|
||||
points = np.array([[1, 0, 0, 0],
|
||||
[0, 1, 0, 0],
|
||||
[0, 0, 1, 0],
|
||||
[0, 0, 0, 1],
|
||||
[0.5, 0.5, 0.5, 0.5]])
|
||||
with pytest.raises(TypeError, match="three-dimensional"):
|
||||
sv = SphericalVoronoi(points)
|
||||
sv.sort_vertices_of_regions()
|
||||
|
||||
def test_num_vertices(self):
|
||||
# for any n >= 3, a spherical Voronoi diagram has 2n - 4
|
||||
# vertices; this is a direct consequence of Euler's formula
|
||||
# as explained by Dinis and Mamede (2010) Proceedings of the
|
||||
# 2010 International Symposium on Voronoi Diagrams in Science
|
||||
# and Engineering
|
||||
sv = SphericalVoronoi(self.points)
|
||||
expected = self.points.shape[0] * 2 - 4
|
||||
actual = sv.vertices.shape[0]
|
||||
assert_equal(actual, expected)
|
||||
|
||||
def test_voronoi_circles(self):
|
||||
sv = SphericalVoronoi(self.points)
|
||||
for vertex in sv.vertices:
|
||||
distances = distance.cdist(sv.points, np.array([vertex]))
|
||||
closest = np.array(sorted(distances)[0:3])
|
||||
assert_almost_equal(closest[0], closest[1], 7, str(vertex))
|
||||
assert_almost_equal(closest[0], closest[2], 7, str(vertex))
|
||||
|
||||
def test_duplicate_point_handling(self):
|
||||
# an exception should be raised for degenerate generators
|
||||
# related to Issue# 7046
|
||||
self.degenerate = np.concatenate((self.points, self.points))
|
||||
with assert_raises(ValueError):
|
||||
SphericalVoronoi(self.degenerate)
|
||||
|
||||
def test_incorrect_radius_handling(self):
|
||||
# an exception should be raised if the radius provided
|
||||
# cannot possibly match the input generators
|
||||
with assert_raises(ValueError):
|
||||
SphericalVoronoi(self.points, radius=0.98)
|
||||
|
||||
def test_incorrect_center_handling(self):
|
||||
# an exception should be raised if the center provided
|
||||
# cannot possibly match the input generators
|
||||
with assert_raises(ValueError):
|
||||
SphericalVoronoi(self.points, center=[0.1, 0, 0])
|
||||
|
||||
@pytest.mark.parametrize("dim", range(2, 6))
|
||||
@pytest.mark.parametrize("shift", [False, True])
|
||||
def test_single_hemisphere_handling(self, dim, shift):
|
||||
n = 10
|
||||
points = _sample_sphere(n, dim, seed=0)
|
||||
points[:, 0] = np.abs(points[:, 0])
|
||||
center = (np.arange(dim) + 1) * shift
|
||||
sv = SphericalVoronoi(points + center, center=center)
|
||||
dots = np.einsum('ij,ij->i', sv.vertices - center,
|
||||
sv.points[sv._simplices[:, 0]] - center)
|
||||
circumradii = np.arccos(np.clip(dots, -1, 1))
|
||||
assert np.max(circumradii) > np.pi / 2
|
||||
|
||||
@pytest.mark.parametrize("n", [1, 2, 10])
|
||||
@pytest.mark.parametrize("dim", range(2, 6))
|
||||
@pytest.mark.parametrize("shift", [False, True])
|
||||
def test_rank_deficient(self, n, dim, shift):
|
||||
center = (np.arange(dim) + 1) * shift
|
||||
points = _sample_sphere(n, dim - 1, seed=0)
|
||||
points = np.hstack([points, np.zeros((n, 1))])
|
||||
with pytest.raises(ValueError, match="Rank of input points"):
|
||||
SphericalVoronoi(points + center, center=center)
|
||||
|
||||
@pytest.mark.parametrize("dim", range(2, 6))
|
||||
def test_higher_dimensions(self, dim):
|
||||
n = 100
|
||||
points = _sample_sphere(n, dim, seed=0)
|
||||
sv = SphericalVoronoi(points)
|
||||
assert sv.vertices.shape[1] == dim
|
||||
assert len(sv.regions) == n
|
||||
|
||||
# verify Euler characteristic
|
||||
cell_counts = []
|
||||
simplices = np.sort(sv._simplices)
|
||||
for i in range(1, dim + 1):
|
||||
cells = []
|
||||
for indices in itertools.combinations(range(dim), i):
|
||||
cells.append(simplices[:, list(indices)])
|
||||
cells = np.unique(np.concatenate(cells), axis=0)
|
||||
cell_counts.append(len(cells))
|
||||
expected_euler = 1 + (-1)**(dim-1)
|
||||
actual_euler = sum([(-1)**i * e for i, e in enumerate(cell_counts)])
|
||||
assert expected_euler == actual_euler
|
||||
|
||||
@pytest.mark.parametrize("dim", range(2, 6))
|
||||
def test_cross_polytope_regions(self, dim):
|
||||
# The hypercube is the dual of the cross-polytope, so the voronoi
|
||||
# vertices of the cross-polytope lie on the points of the hypercube.
|
||||
|
||||
# generate points of the cross-polytope
|
||||
points = np.concatenate((-np.eye(dim), np.eye(dim)))
|
||||
sv = SphericalVoronoi(points)
|
||||
assert all([len(e) == 2**(dim - 1) for e in sv.regions])
|
||||
|
||||
# generate points of the hypercube
|
||||
expected = np.vstack(list(itertools.product([-1, 1], repeat=dim)))
|
||||
expected = expected.astype(np.float64) / np.sqrt(dim)
|
||||
|
||||
# test that Voronoi vertices are correctly placed
|
||||
dist = distance.cdist(sv.vertices, expected)
|
||||
res = linear_sum_assignment(dist)
|
||||
assert dist[res].sum() < TOL
|
||||
|
||||
@pytest.mark.parametrize("dim", range(2, 6))
|
||||
def test_hypercube_regions(self, dim):
|
||||
# The cross-polytope is the dual of the hypercube, so the voronoi
|
||||
# vertices of the hypercube lie on the points of the cross-polytope.
|
||||
|
||||
# generate points of the hypercube
|
||||
points = np.vstack(list(itertools.product([-1, 1], repeat=dim)))
|
||||
points = points.astype(np.float64) / np.sqrt(dim)
|
||||
sv = SphericalVoronoi(points)
|
||||
|
||||
# generate points of the cross-polytope
|
||||
expected = np.concatenate((-np.eye(dim), np.eye(dim)))
|
||||
|
||||
# test that Voronoi vertices are correctly placed
|
||||
dist = distance.cdist(sv.vertices, expected)
|
||||
res = linear_sum_assignment(dist)
|
||||
assert dist[res].sum() < TOL
|
||||
|
||||
@pytest.mark.parametrize("n", [10, 500])
|
||||
@pytest.mark.parametrize("dim", [2, 3])
|
||||
@pytest.mark.parametrize("radius", [0.5, 1, 2])
|
||||
@pytest.mark.parametrize("shift", [False, True])
|
||||
@pytest.mark.parametrize("single_hemisphere", [False, True])
|
||||
def test_area_reconstitution(self, n, dim, radius, shift,
|
||||
single_hemisphere):
|
||||
points = _sample_sphere(n, dim, seed=0)
|
||||
|
||||
# move all points to one side of the sphere for single-hemisphere test
|
||||
if single_hemisphere:
|
||||
points[:, 0] = np.abs(points[:, 0])
|
||||
|
||||
center = (np.arange(dim) + 1) * shift
|
||||
points = radius * points + center
|
||||
|
||||
sv = SphericalVoronoi(points, radius=radius, center=center)
|
||||
areas = sv.calculate_areas()
|
||||
assert_almost_equal(areas.sum(), _hypersphere_area(dim, radius))
|
||||
|
||||
@pytest.mark.parametrize("poly", ["triangle", "dodecagon",
|
||||
"tetrahedron", "cube", "octahedron",
|
||||
"dodecahedron", "icosahedron"])
|
||||
def test_equal_area_reconstitution(self, poly):
|
||||
points = _generate_polytope(poly)
|
||||
n, dim = points.shape
|
||||
sv = SphericalVoronoi(points)
|
||||
areas = sv.calculate_areas()
|
||||
assert_almost_equal(areas, _hypersphere_area(dim, 1) / n)
|
||||
|
||||
def test_area_unsupported_dimension(self):
|
||||
dim = 4
|
||||
points = np.concatenate((-np.eye(dim), np.eye(dim)))
|
||||
sv = SphericalVoronoi(points)
|
||||
with pytest.raises(TypeError, match="Only supported"):
|
||||
sv.calculate_areas()
|
||||
|
||||
@pytest.mark.parametrize("radius", [1, 1.])
|
||||
@pytest.mark.parametrize("center", [None, (1, 2, 3), (1., 2., 3.)])
|
||||
def test_attribute_types(self, radius, center):
|
||||
points = radius * self.points
|
||||
if center is not None:
|
||||
points += center
|
||||
|
||||
sv = SphericalVoronoi(points, radius=radius, center=center)
|
||||
assert sv.points.dtype is np.dtype(np.float64)
|
||||
assert sv.center.dtype is np.dtype(np.float64)
|
||||
assert isinstance(sv.radius, float)
|
||||
|
||||
def test_region_types(self):
|
||||
# Tests that region integer type does not change
|
||||
# See Issue #13412
|
||||
sv = SphericalVoronoi(self.points)
|
||||
dtype = type(sv.regions[0][0])
|
||||
# also enforce nested list type per gh-19177
|
||||
for region in sv.regions:
|
||||
assert isinstance(region, list)
|
||||
sv.sort_vertices_of_regions()
|
||||
assert isinstance(sv.regions[0][0], dtype)
|
||||
sv.sort_vertices_of_regions()
|
||||
assert isinstance(sv.regions[0][0], dtype)
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
"""
|
||||
Spatial Transformations (:mod:`scipy.spatial.transform`)
|
||||
========================================================
|
||||
|
||||
.. currentmodule:: scipy.spatial.transform
|
||||
|
||||
This package implements various spatial transformations. For now, rotations
|
||||
and rigid transforms (rotations and translations) are supported.
|
||||
|
||||
Rotations in 3 dimensions
|
||||
-------------------------
|
||||
.. autosummary::
|
||||
:toctree: generated/
|
||||
|
||||
RigidTransform
|
||||
Rotation
|
||||
Slerp
|
||||
RotationSpline
|
||||
"""
|
||||
from ._rigid_transform import RigidTransform
|
||||
from ._rotation import Rotation, Slerp
|
||||
from ._rotation_spline import RotationSpline
|
||||
|
||||
# Deprecated namespaces, to be removed in v2.0.0
|
||||
from . import rotation
|
||||
|
||||
__all__ = ['Rotation', 'Slerp', 'RotationSpline', 'RigidTransform']
|
||||
|
||||
from scipy._lib._testutils import PytestTester
|
||||
test = PytestTester(__name__)
|
||||
del PytestTester
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -0,0 +1,140 @@
|
|||
import numpy as np
|
||||
from scipy.constants import golden as phi
|
||||
|
||||
|
||||
def icosahedral(cls):
|
||||
g1 = tetrahedral(cls).as_quat()
|
||||
a = 0.5
|
||||
b = 0.5 / phi
|
||||
c = phi / 2
|
||||
g2 = np.array([[+a, +b, +c, 0],
|
||||
[+a, +b, -c, 0],
|
||||
[+a, +c, 0, +b],
|
||||
[+a, +c, 0, -b],
|
||||
[+a, -b, +c, 0],
|
||||
[+a, -b, -c, 0],
|
||||
[+a, -c, 0, +b],
|
||||
[+a, -c, 0, -b],
|
||||
[+a, 0, +b, +c],
|
||||
[+a, 0, +b, -c],
|
||||
[+a, 0, -b, +c],
|
||||
[+a, 0, -b, -c],
|
||||
[+b, +a, 0, +c],
|
||||
[+b, +a, 0, -c],
|
||||
[+b, +c, +a, 0],
|
||||
[+b, +c, -a, 0],
|
||||
[+b, -a, 0, +c],
|
||||
[+b, -a, 0, -c],
|
||||
[+b, -c, +a, 0],
|
||||
[+b, -c, -a, 0],
|
||||
[+b, 0, +c, +a],
|
||||
[+b, 0, +c, -a],
|
||||
[+b, 0, -c, +a],
|
||||
[+b, 0, -c, -a],
|
||||
[+c, +a, +b, 0],
|
||||
[+c, +a, -b, 0],
|
||||
[+c, +b, 0, +a],
|
||||
[+c, +b, 0, -a],
|
||||
[+c, -a, +b, 0],
|
||||
[+c, -a, -b, 0],
|
||||
[+c, -b, 0, +a],
|
||||
[+c, -b, 0, -a],
|
||||
[+c, 0, +a, +b],
|
||||
[+c, 0, +a, -b],
|
||||
[+c, 0, -a, +b],
|
||||
[+c, 0, -a, -b],
|
||||
[0, +a, +c, +b],
|
||||
[0, +a, +c, -b],
|
||||
[0, +a, -c, +b],
|
||||
[0, +a, -c, -b],
|
||||
[0, +b, +a, +c],
|
||||
[0, +b, +a, -c],
|
||||
[0, +b, -a, +c],
|
||||
[0, +b, -a, -c],
|
||||
[0, +c, +b, +a],
|
||||
[0, +c, +b, -a],
|
||||
[0, +c, -b, +a],
|
||||
[0, +c, -b, -a]])
|
||||
return cls.from_quat(np.concatenate((g1, g2)))
|
||||
|
||||
|
||||
def octahedral(cls):
|
||||
g1 = tetrahedral(cls).as_quat()
|
||||
c = np.sqrt(2) / 2
|
||||
g2 = np.array([[+c, 0, 0, +c],
|
||||
[0, +c, 0, +c],
|
||||
[0, 0, +c, +c],
|
||||
[0, 0, -c, +c],
|
||||
[0, -c, 0, +c],
|
||||
[-c, 0, 0, +c],
|
||||
[0, +c, +c, 0],
|
||||
[0, -c, +c, 0],
|
||||
[+c, 0, +c, 0],
|
||||
[-c, 0, +c, 0],
|
||||
[+c, +c, 0, 0],
|
||||
[-c, +c, 0, 0]])
|
||||
return cls.from_quat(np.concatenate((g1, g2)))
|
||||
|
||||
|
||||
def tetrahedral(cls):
|
||||
g1 = np.eye(4)
|
||||
c = 0.5
|
||||
g2 = np.array([[c, -c, -c, +c],
|
||||
[c, -c, +c, +c],
|
||||
[c, +c, -c, +c],
|
||||
[c, +c, +c, +c],
|
||||
[c, -c, -c, -c],
|
||||
[c, -c, +c, -c],
|
||||
[c, +c, -c, -c],
|
||||
[c, +c, +c, -c]])
|
||||
return cls.from_quat(np.concatenate((g1, g2)))
|
||||
|
||||
|
||||
def dicyclic(cls, n, axis=2):
|
||||
g1 = cyclic(cls, n, axis).as_rotvec()
|
||||
|
||||
thetas = np.linspace(0, np.pi, n, endpoint=False)
|
||||
rv = np.pi * np.vstack([np.zeros(n), np.cos(thetas), np.sin(thetas)]).T
|
||||
g2 = np.roll(rv, axis, axis=1)
|
||||
return cls.from_rotvec(np.concatenate((g1, g2)))
|
||||
|
||||
|
||||
def cyclic(cls, n, axis=2):
|
||||
thetas = np.linspace(0, 2 * np.pi, n, endpoint=False)
|
||||
rv = np.vstack([thetas, np.zeros(n), np.zeros(n)]).T
|
||||
return cls.from_rotvec(np.roll(rv, axis, axis=1))
|
||||
|
||||
|
||||
def create_group(cls, group, axis='Z'):
|
||||
if not isinstance(group, str):
|
||||
raise ValueError("`group` argument must be a string")
|
||||
|
||||
permitted_axes = ['x', 'y', 'z', 'X', 'Y', 'Z']
|
||||
if axis not in permitted_axes:
|
||||
raise ValueError("`axis` must be one of " + ", ".join(permitted_axes))
|
||||
|
||||
if group in ['I', 'O', 'T']:
|
||||
symbol = group
|
||||
order = 1
|
||||
elif group[:1] in ['C', 'D'] and group[1:].isdigit():
|
||||
symbol = group[:1]
|
||||
order = int(group[1:])
|
||||
else:
|
||||
raise ValueError("`group` must be one of 'I', 'O', 'T', 'Dn', 'Cn'")
|
||||
|
||||
if order < 1:
|
||||
raise ValueError("Group order must be positive")
|
||||
|
||||
axis = 'xyz'.index(axis.lower())
|
||||
if symbol == 'I':
|
||||
return icosahedral(cls)
|
||||
elif symbol == 'O':
|
||||
return octahedral(cls)
|
||||
elif symbol == 'T':
|
||||
return tetrahedral(cls)
|
||||
elif symbol == 'D':
|
||||
return dicyclic(cls, order, axis=axis)
|
||||
elif symbol == 'C':
|
||||
return cyclic(cls, order, axis=axis)
|
||||
else:
|
||||
assert False
|
||||
|
|
@ -0,0 +1,460 @@
|
|||
import numpy as np
|
||||
from scipy.linalg import solve_banded
|
||||
from ._rotation import Rotation
|
||||
|
||||
|
||||
def _create_skew_matrix(x):
|
||||
"""Create skew-symmetric matrices corresponding to vectors.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
x : ndarray, shape (n, 3)
|
||||
Set of vectors.
|
||||
|
||||
Returns
|
||||
-------
|
||||
ndarray, shape (n, 3, 3)
|
||||
"""
|
||||
result = np.zeros((len(x), 3, 3))
|
||||
result[:, 0, 1] = -x[:, 2]
|
||||
result[:, 0, 2] = x[:, 1]
|
||||
result[:, 1, 0] = x[:, 2]
|
||||
result[:, 1, 2] = -x[:, 0]
|
||||
result[:, 2, 0] = -x[:, 1]
|
||||
result[:, 2, 1] = x[:, 0]
|
||||
return result
|
||||
|
||||
|
||||
def _matrix_vector_product_of_stacks(A, b):
|
||||
"""Compute the product of stack of matrices and vectors."""
|
||||
return np.einsum("ijk,ik->ij", A, b)
|
||||
|
||||
|
||||
def _angular_rate_to_rotvec_dot_matrix(rotvecs):
|
||||
"""Compute matrices to transform angular rates to rot. vector derivatives.
|
||||
|
||||
The matrices depend on the current attitude represented as a rotation
|
||||
vector.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
rotvecs : ndarray, shape (n, 3)
|
||||
Set of rotation vectors.
|
||||
|
||||
Returns
|
||||
-------
|
||||
ndarray, shape (n, 3, 3)
|
||||
"""
|
||||
norm = np.linalg.norm(rotvecs, axis=1)
|
||||
k = np.empty_like(norm)
|
||||
|
||||
mask = norm > 1e-4
|
||||
nm = norm[mask]
|
||||
k[mask] = (1 - 0.5 * nm / np.tan(0.5 * nm)) / nm**2
|
||||
mask = ~mask
|
||||
nm = norm[mask]
|
||||
k[mask] = 1/12 + 1/720 * nm**2
|
||||
|
||||
skew = _create_skew_matrix(rotvecs)
|
||||
|
||||
result = np.empty((len(rotvecs), 3, 3))
|
||||
result[:] = np.identity(3)
|
||||
result[:] += 0.5 * skew
|
||||
result[:] += k[:, None, None] * np.matmul(skew, skew)
|
||||
|
||||
return result
|
||||
|
||||
|
||||
def _rotvec_dot_to_angular_rate_matrix(rotvecs):
|
||||
"""Compute matrices to transform rot. vector derivatives to angular rates.
|
||||
|
||||
The matrices depend on the current attitude represented as a rotation
|
||||
vector.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
rotvecs : ndarray, shape (n, 3)
|
||||
Set of rotation vectors.
|
||||
|
||||
Returns
|
||||
-------
|
||||
ndarray, shape (n, 3, 3)
|
||||
"""
|
||||
norm = np.linalg.norm(rotvecs, axis=1)
|
||||
k1 = np.empty_like(norm)
|
||||
k2 = np.empty_like(norm)
|
||||
|
||||
mask = norm > 1e-4
|
||||
nm = norm[mask]
|
||||
k1[mask] = (1 - np.cos(nm)) / nm ** 2
|
||||
k2[mask] = (nm - np.sin(nm)) / nm ** 3
|
||||
|
||||
mask = ~mask
|
||||
nm = norm[mask]
|
||||
k1[mask] = 0.5 - nm ** 2 / 24
|
||||
k2[mask] = 1 / 6 - nm ** 2 / 120
|
||||
|
||||
skew = _create_skew_matrix(rotvecs)
|
||||
|
||||
result = np.empty((len(rotvecs), 3, 3))
|
||||
result[:] = np.identity(3)
|
||||
result[:] -= k1[:, None, None] * skew
|
||||
result[:] += k2[:, None, None] * np.matmul(skew, skew)
|
||||
|
||||
return result
|
||||
|
||||
|
||||
def _angular_acceleration_nonlinear_term(rotvecs, rotvecs_dot):
|
||||
"""Compute the non-linear term in angular acceleration.
|
||||
|
||||
The angular acceleration contains a quadratic term with respect to
|
||||
the derivative of the rotation vector. This function computes that.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
rotvecs : ndarray, shape (n, 3)
|
||||
Set of rotation vectors.
|
||||
rotvecs_dot : ndarray, shape (n, 3)
|
||||
Set of rotation vector derivatives.
|
||||
|
||||
Returns
|
||||
-------
|
||||
ndarray, shape (n, 3)
|
||||
"""
|
||||
norm = np.linalg.norm(rotvecs, axis=1)
|
||||
dp = np.sum(rotvecs * rotvecs_dot, axis=1)
|
||||
cp = np.cross(rotvecs, rotvecs_dot)
|
||||
ccp = np.cross(rotvecs, cp)
|
||||
dccp = np.cross(rotvecs_dot, cp)
|
||||
|
||||
k1 = np.empty_like(norm)
|
||||
k2 = np.empty_like(norm)
|
||||
k3 = np.empty_like(norm)
|
||||
|
||||
mask = norm > 1e-4
|
||||
nm = norm[mask]
|
||||
k1[mask] = (-nm * np.sin(nm) - 2 * (np.cos(nm) - 1)) / nm ** 4
|
||||
k2[mask] = (-2 * nm + 3 * np.sin(nm) - nm * np.cos(nm)) / nm ** 5
|
||||
k3[mask] = (nm - np.sin(nm)) / nm ** 3
|
||||
|
||||
mask = ~mask
|
||||
nm = norm[mask]
|
||||
k1[mask] = 1/12 - nm ** 2 / 180
|
||||
k2[mask] = -1/60 + nm ** 2 / 12604
|
||||
k3[mask] = 1/6 - nm ** 2 / 120
|
||||
|
||||
dp = dp[:, None]
|
||||
k1 = k1[:, None]
|
||||
k2 = k2[:, None]
|
||||
k3 = k3[:, None]
|
||||
|
||||
return dp * (k1 * cp + k2 * ccp) + k3 * dccp
|
||||
|
||||
|
||||
def _compute_angular_rate(rotvecs, rotvecs_dot):
|
||||
"""Compute angular rates given rotation vectors and its derivatives.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
rotvecs : ndarray, shape (n, 3)
|
||||
Set of rotation vectors.
|
||||
rotvecs_dot : ndarray, shape (n, 3)
|
||||
Set of rotation vector derivatives.
|
||||
|
||||
Returns
|
||||
-------
|
||||
ndarray, shape (n, 3)
|
||||
"""
|
||||
return _matrix_vector_product_of_stacks(
|
||||
_rotvec_dot_to_angular_rate_matrix(rotvecs), rotvecs_dot)
|
||||
|
||||
|
||||
def _compute_angular_acceleration(rotvecs, rotvecs_dot, rotvecs_dot_dot):
|
||||
"""Compute angular acceleration given rotation vector and its derivatives.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
rotvecs : ndarray, shape (n, 3)
|
||||
Set of rotation vectors.
|
||||
rotvecs_dot : ndarray, shape (n, 3)
|
||||
Set of rotation vector derivatives.
|
||||
rotvecs_dot_dot : ndarray, shape (n, 3)
|
||||
Set of rotation vector second derivatives.
|
||||
|
||||
Returns
|
||||
-------
|
||||
ndarray, shape (n, 3)
|
||||
"""
|
||||
return (_compute_angular_rate(rotvecs, rotvecs_dot_dot) +
|
||||
_angular_acceleration_nonlinear_term(rotvecs, rotvecs_dot))
|
||||
|
||||
|
||||
def _create_block_3_diagonal_matrix(A, B, d):
|
||||
"""Create a 3-diagonal block matrix as banded.
|
||||
|
||||
The matrix has the following structure:
|
||||
|
||||
DB...
|
||||
ADB..
|
||||
.ADB.
|
||||
..ADB
|
||||
...AD
|
||||
|
||||
The blocks A, B and D are 3-by-3 matrices. The D matrices has the form
|
||||
d * I.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
A : ndarray, shape (n, 3, 3)
|
||||
Stack of A blocks.
|
||||
B : ndarray, shape (n, 3, 3)
|
||||
Stack of B blocks.
|
||||
d : ndarray, shape (n + 1,)
|
||||
Values for diagonal blocks.
|
||||
|
||||
Returns
|
||||
-------
|
||||
ndarray, shape (11, 3 * (n + 1))
|
||||
Matrix in the banded form as used by `scipy.linalg.solve_banded`.
|
||||
"""
|
||||
ind = np.arange(3)
|
||||
ind_blocks = np.arange(len(A))
|
||||
|
||||
A_i = np.empty_like(A, dtype=int)
|
||||
A_i[:] = ind[:, None]
|
||||
A_i += 3 * (1 + ind_blocks[:, None, None])
|
||||
|
||||
A_j = np.empty_like(A, dtype=int)
|
||||
A_j[:] = ind
|
||||
A_j += 3 * ind_blocks[:, None, None]
|
||||
|
||||
B_i = np.empty_like(B, dtype=int)
|
||||
B_i[:] = ind[:, None]
|
||||
B_i += 3 * ind_blocks[:, None, None]
|
||||
|
||||
B_j = np.empty_like(B, dtype=int)
|
||||
B_j[:] = ind
|
||||
B_j += 3 * (1 + ind_blocks[:, None, None])
|
||||
|
||||
diag_i = diag_j = np.arange(3 * len(d))
|
||||
i = np.hstack((A_i.ravel(), B_i.ravel(), diag_i))
|
||||
j = np.hstack((A_j.ravel(), B_j.ravel(), diag_j))
|
||||
values = np.hstack((A.ravel(), B.ravel(), np.repeat(d, 3)))
|
||||
|
||||
u = 5
|
||||
l = 5
|
||||
result = np.zeros((u + l + 1, 3 * len(d)))
|
||||
result[u + i - j, j] = values
|
||||
return result
|
||||
|
||||
|
||||
class RotationSpline:
|
||||
"""Interpolate rotations with continuous angular rate and acceleration.
|
||||
|
||||
The rotation vectors between each consecutive orientation are cubic
|
||||
functions of time and it is guaranteed that angular rate and acceleration
|
||||
are continuous. Such interpolation are analogous to cubic spline
|
||||
interpolation.
|
||||
|
||||
Refer to [1]_ for math and implementation details.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
times : array_like, shape (N,)
|
||||
Times of the known rotations. At least 2 times must be specified.
|
||||
rotations : `Rotation` instance
|
||||
Rotations to perform the interpolation between. Must contain N
|
||||
rotations.
|
||||
|
||||
Methods
|
||||
-------
|
||||
__call__
|
||||
|
||||
References
|
||||
----------
|
||||
.. [1] `Smooth Attitude Interpolation
|
||||
<https://github.com/scipy/scipy/files/2932755/attitude_interpolation.pdf>`_
|
||||
|
||||
Examples
|
||||
--------
|
||||
>>> from scipy.spatial.transform import Rotation, RotationSpline
|
||||
>>> import numpy as np
|
||||
|
||||
Define the sequence of times and rotations from the Euler angles:
|
||||
|
||||
>>> times = [0, 10, 20, 40]
|
||||
>>> angles = [[-10, 20, 30], [0, 15, 40], [-30, 45, 30], [20, 45, 90]]
|
||||
>>> rotations = Rotation.from_euler('XYZ', angles, degrees=True)
|
||||
|
||||
Create the interpolator object:
|
||||
|
||||
>>> spline = RotationSpline(times, rotations)
|
||||
|
||||
Interpolate the Euler angles, angular rate and acceleration:
|
||||
|
||||
>>> angular_rate = np.rad2deg(spline(times, 1))
|
||||
>>> angular_acceleration = np.rad2deg(spline(times, 2))
|
||||
>>> times_plot = np.linspace(times[0], times[-1], 100)
|
||||
>>> angles_plot = spline(times_plot).as_euler('XYZ', degrees=True)
|
||||
>>> angular_rate_plot = np.rad2deg(spline(times_plot, 1))
|
||||
>>> angular_acceleration_plot = np.rad2deg(spline(times_plot, 2))
|
||||
|
||||
On this plot you see that Euler angles are continuous and smooth:
|
||||
|
||||
>>> import matplotlib.pyplot as plt
|
||||
>>> plt.plot(times_plot, angles_plot)
|
||||
>>> plt.plot(times, angles, 'x')
|
||||
>>> plt.title("Euler angles")
|
||||
>>> plt.show()
|
||||
|
||||
The angular rate is also smooth:
|
||||
|
||||
>>> plt.plot(times_plot, angular_rate_plot)
|
||||
>>> plt.plot(times, angular_rate, 'x')
|
||||
>>> plt.title("Angular rate")
|
||||
>>> plt.show()
|
||||
|
||||
The angular acceleration is continuous, but not smooth. Also note that
|
||||
the angular acceleration is not a piecewise-linear function, because
|
||||
it is different from the second derivative of the rotation vector (which
|
||||
is a piecewise-linear function as in the cubic spline).
|
||||
|
||||
>>> plt.plot(times_plot, angular_acceleration_plot)
|
||||
>>> plt.plot(times, angular_acceleration, 'x')
|
||||
>>> plt.title("Angular acceleration")
|
||||
>>> plt.show()
|
||||
"""
|
||||
# Parameters for the solver for angular rate.
|
||||
MAX_ITER = 10
|
||||
TOL = 1e-9
|
||||
|
||||
def _solve_for_angular_rates(self, dt, angular_rates, rotvecs):
|
||||
angular_rate_first = angular_rates[0].copy()
|
||||
|
||||
A = _angular_rate_to_rotvec_dot_matrix(rotvecs)
|
||||
A_inv = _rotvec_dot_to_angular_rate_matrix(rotvecs)
|
||||
M = _create_block_3_diagonal_matrix(
|
||||
2 * A_inv[1:-1] / dt[1:-1, None, None],
|
||||
2 * A[1:-1] / dt[1:-1, None, None],
|
||||
4 * (1 / dt[:-1] + 1 / dt[1:]))
|
||||
|
||||
b0 = 6 * (rotvecs[:-1] * dt[:-1, None] ** -2 +
|
||||
rotvecs[1:] * dt[1:, None] ** -2)
|
||||
b0[0] -= 2 / dt[0] * A_inv[0].dot(angular_rate_first)
|
||||
b0[-1] -= 2 / dt[-1] * A[-1].dot(angular_rates[-1])
|
||||
|
||||
for iteration in range(self.MAX_ITER):
|
||||
rotvecs_dot = _matrix_vector_product_of_stacks(A, angular_rates)
|
||||
delta_beta = _angular_acceleration_nonlinear_term(
|
||||
rotvecs[:-1], rotvecs_dot[:-1])
|
||||
b = b0 - delta_beta
|
||||
angular_rates_new = solve_banded((5, 5), M, b.ravel())
|
||||
angular_rates_new = angular_rates_new.reshape((-1, 3))
|
||||
|
||||
delta = np.abs(angular_rates_new - angular_rates[:-1])
|
||||
angular_rates[:-1] = angular_rates_new
|
||||
if np.all(delta < self.TOL * (1 + np.abs(angular_rates_new))):
|
||||
break
|
||||
|
||||
rotvecs_dot = _matrix_vector_product_of_stacks(A, angular_rates)
|
||||
angular_rates = np.vstack((angular_rate_first, angular_rates[:-1]))
|
||||
|
||||
return angular_rates, rotvecs_dot
|
||||
|
||||
def __init__(self, times, rotations):
|
||||
from scipy.interpolate import PPoly
|
||||
|
||||
if rotations.single:
|
||||
raise ValueError("`rotations` must be a sequence of rotations.")
|
||||
|
||||
if len(rotations) == 1:
|
||||
raise ValueError("`rotations` must contain at least 2 rotations.")
|
||||
|
||||
times = np.asarray(times, dtype=float)
|
||||
if times.ndim != 1:
|
||||
raise ValueError("`times` must be 1-dimensional.")
|
||||
|
||||
if len(times) != len(rotations):
|
||||
raise ValueError("Expected number of rotations to be equal to "
|
||||
"number of timestamps given, "
|
||||
f"got {len(rotations)} rotations "
|
||||
f"and {len(times)} timestamps.")
|
||||
|
||||
dt = np.diff(times)
|
||||
if np.any(dt <= 0):
|
||||
raise ValueError("Values in `times` must be in a strictly "
|
||||
"increasing order.")
|
||||
|
||||
rotvecs = (rotations[:-1].inv() * rotations[1:]).as_rotvec()
|
||||
angular_rates = rotvecs / dt[:, None]
|
||||
|
||||
if len(rotations) == 2:
|
||||
rotvecs_dot = angular_rates
|
||||
else:
|
||||
angular_rates, rotvecs_dot = self._solve_for_angular_rates(
|
||||
dt, angular_rates, rotvecs)
|
||||
|
||||
dt = dt[:, None]
|
||||
coeff = np.empty((4, len(times) - 1, 3))
|
||||
coeff[0] = (-2 * rotvecs + dt * angular_rates
|
||||
+ dt * rotvecs_dot) / dt ** 3
|
||||
coeff[1] = (3 * rotvecs - 2 * dt * angular_rates
|
||||
- dt * rotvecs_dot) / dt ** 2
|
||||
coeff[2] = angular_rates
|
||||
coeff[3] = 0
|
||||
|
||||
self.times = times
|
||||
self.rotations = rotations
|
||||
self.interpolator = PPoly(coeff, times)
|
||||
|
||||
def __call__(self, times, order=0):
|
||||
"""Compute interpolated values.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
times : float or array_like
|
||||
Times of interest.
|
||||
order : {0, 1, 2}, optional
|
||||
Order of differentiation:
|
||||
|
||||
* 0 (default) : return Rotation
|
||||
* 1 : return the angular rate in rad/sec
|
||||
* 2 : return the angular acceleration in rad/sec/sec
|
||||
|
||||
Returns
|
||||
-------
|
||||
Interpolated Rotation, angular rate or acceleration.
|
||||
"""
|
||||
if order not in [0, 1, 2]:
|
||||
raise ValueError("`order` must be 0, 1 or 2.")
|
||||
|
||||
times = np.asarray(times, dtype=float)
|
||||
if times.ndim > 1:
|
||||
raise ValueError("`times` must be at most 1-dimensional.")
|
||||
|
||||
singe_time = times.ndim == 0
|
||||
times = np.atleast_1d(times)
|
||||
|
||||
rotvecs = self.interpolator(times)
|
||||
if order == 0:
|
||||
index = np.searchsorted(self.times, times, side='right')
|
||||
index -= 1
|
||||
index[index < 0] = 0
|
||||
n_segments = len(self.times) - 1
|
||||
index[index > n_segments - 1] = n_segments - 1
|
||||
result = self.rotations[index] * Rotation.from_rotvec(rotvecs)
|
||||
elif order == 1:
|
||||
rotvecs_dot = self.interpolator(times, 1)
|
||||
result = _compute_angular_rate(rotvecs, rotvecs_dot)
|
||||
elif order == 2:
|
||||
rotvecs_dot = self.interpolator(times, 1)
|
||||
rotvecs_dot_dot = self.interpolator(times, 2)
|
||||
result = _compute_angular_acceleration(rotvecs, rotvecs_dot,
|
||||
rotvecs_dot_dot)
|
||||
else:
|
||||
assert False
|
||||
|
||||
if singe_time:
|
||||
result = result[0]
|
||||
|
||||
return result
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
# This file is not meant for public use and will be removed in SciPy v2.0.0.
|
||||
# Use the `scipy.spatial` namespace for importing the functions
|
||||
# included below.
|
||||
|
||||
from scipy._lib.deprecation import _sub_module_deprecation
|
||||
|
||||
|
||||
__all__ = [ # noqa: F822
|
||||
'Rotation',
|
||||
'Slerp',
|
||||
]
|
||||
|
||||
|
||||
def __dir__():
|
||||
return __all__
|
||||
|
||||
|
||||
def __getattr__(name):
|
||||
return _sub_module_deprecation(sub_package="spatial.transform", module="rotation",
|
||||
private_modules=["_rotation"], all=__all__,
|
||||
attribute=name)
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,169 @@
|
|||
import pytest
|
||||
|
||||
import numpy as np
|
||||
from numpy.testing import assert_array_almost_equal
|
||||
from scipy.spatial.transform import Rotation
|
||||
from scipy.optimize import linear_sum_assignment
|
||||
from scipy.spatial.distance import cdist
|
||||
from scipy.constants import golden as phi
|
||||
from scipy.spatial import cKDTree
|
||||
|
||||
|
||||
TOL = 1E-12
|
||||
NS = range(1, 13)
|
||||
NAMES = ["I", "O", "T"] + [f"C{n}" for n in NS] + [f"D{n}" for n in NS]
|
||||
SIZES = [60, 24, 12] + list(NS) + [2 * n for n in NS]
|
||||
|
||||
|
||||
def _calculate_rmsd(P, Q):
|
||||
"""Calculates the root-mean-square distance between the points of P and Q.
|
||||
The distance is taken as the minimum over all possible matchings. It is
|
||||
zero if P and Q are identical and non-zero if not.
|
||||
"""
|
||||
distance_matrix = cdist(P, Q, metric='sqeuclidean')
|
||||
matching = linear_sum_assignment(distance_matrix)
|
||||
return np.sqrt(distance_matrix[matching].sum())
|
||||
|
||||
|
||||
def _generate_pyramid(n, axis):
|
||||
thetas = np.linspace(0, 2 * np.pi, n + 1)[:-1]
|
||||
P = np.vstack([np.zeros(n), np.cos(thetas), np.sin(thetas)]).T
|
||||
P = np.concatenate((P, [[1, 0, 0]]))
|
||||
return np.roll(P, axis, axis=1)
|
||||
|
||||
|
||||
def _generate_prism(n, axis):
|
||||
thetas = np.linspace(0, 2 * np.pi, n + 1)[:-1]
|
||||
bottom = np.vstack([-np.ones(n), np.cos(thetas), np.sin(thetas)]).T
|
||||
top = np.vstack([+np.ones(n), np.cos(thetas), np.sin(thetas)]).T
|
||||
P = np.concatenate((bottom, top))
|
||||
return np.roll(P, axis, axis=1)
|
||||
|
||||
|
||||
def _generate_icosahedron():
|
||||
x = np.array([[0, -1, -phi],
|
||||
[0, -1, +phi],
|
||||
[0, +1, -phi],
|
||||
[0, +1, +phi]])
|
||||
return np.concatenate([np.roll(x, i, axis=1) for i in range(3)])
|
||||
|
||||
|
||||
def _generate_octahedron():
|
||||
return np.array([[-1, 0, 0], [+1, 0, 0], [0, -1, 0],
|
||||
[0, +1, 0], [0, 0, -1], [0, 0, +1]])
|
||||
|
||||
|
||||
def _generate_tetrahedron():
|
||||
return np.array([[1, 1, 1], [1, -1, -1], [-1, 1, -1], [-1, -1, 1]])
|
||||
|
||||
|
||||
@pytest.mark.parametrize("name", [-1, None, True, np.array(['C3'])])
|
||||
def test_group_type(name):
|
||||
with pytest.raises(ValueError,
|
||||
match="must be a string"):
|
||||
Rotation.create_group(name)
|
||||
|
||||
|
||||
@pytest.mark.parametrize("name", ["Q", " ", "CA", "C ", "DA", "D ", "I2", ""])
|
||||
def test_group_name(name):
|
||||
with pytest.raises(ValueError,
|
||||
match="must be one of 'I', 'O', 'T', 'Dn', 'Cn'"):
|
||||
Rotation.create_group(name)
|
||||
|
||||
|
||||
@pytest.mark.parametrize("name", ["C0", "D0"])
|
||||
def test_group_order_positive(name):
|
||||
with pytest.raises(ValueError,
|
||||
match="Group order must be positive"):
|
||||
Rotation.create_group(name)
|
||||
|
||||
|
||||
@pytest.mark.parametrize("axis", ['A', 'b', 0, 1, 2, 4, False, None])
|
||||
def test_axis_valid(axis):
|
||||
with pytest.raises(ValueError,
|
||||
match="`axis` must be one of"):
|
||||
Rotation.create_group("C1", axis)
|
||||
|
||||
|
||||
def test_icosahedral():
|
||||
"""The icosahedral group fixes the rotations of an icosahedron. Here we
|
||||
test that the icosahedron is invariant after application of the elements
|
||||
of the rotation group."""
|
||||
P = _generate_icosahedron()
|
||||
for g in Rotation.create_group("I"):
|
||||
g = Rotation.from_quat(g.as_quat())
|
||||
assert _calculate_rmsd(P, g.apply(P)) < TOL
|
||||
|
||||
|
||||
def test_octahedral():
|
||||
"""Test that the octahedral group correctly fixes the rotations of an
|
||||
octahedron."""
|
||||
P = _generate_octahedron()
|
||||
for g in Rotation.create_group("O"):
|
||||
assert _calculate_rmsd(P, g.apply(P)) < TOL
|
||||
|
||||
|
||||
def test_tetrahedral():
|
||||
"""Test that the tetrahedral group correctly fixes the rotations of a
|
||||
tetrahedron."""
|
||||
P = _generate_tetrahedron()
|
||||
for g in Rotation.create_group("T"):
|
||||
assert _calculate_rmsd(P, g.apply(P)) < TOL
|
||||
|
||||
|
||||
@pytest.mark.parametrize("n", NS)
|
||||
@pytest.mark.parametrize("axis", 'XYZ')
|
||||
def test_dicyclic(n, axis):
|
||||
"""Test that the dicyclic group correctly fixes the rotations of a
|
||||
prism."""
|
||||
P = _generate_prism(n, axis='XYZ'.index(axis))
|
||||
for g in Rotation.create_group(f"D{n}", axis=axis):
|
||||
assert _calculate_rmsd(P, g.apply(P)) < TOL
|
||||
|
||||
|
||||
@pytest.mark.parametrize("n", NS)
|
||||
@pytest.mark.parametrize("axis", 'XYZ')
|
||||
def test_cyclic(n, axis):
|
||||
"""Test that the cyclic group correctly fixes the rotations of a
|
||||
pyramid."""
|
||||
P = _generate_pyramid(n, axis='XYZ'.index(axis))
|
||||
for g in Rotation.create_group(f"C{n}", axis=axis):
|
||||
assert _calculate_rmsd(P, g.apply(P)) < TOL
|
||||
|
||||
|
||||
@pytest.mark.parametrize("name, size", zip(NAMES, SIZES))
|
||||
def test_group_sizes(name, size):
|
||||
assert len(Rotation.create_group(name)) == size
|
||||
|
||||
|
||||
@pytest.mark.parametrize("name, size", zip(NAMES, SIZES))
|
||||
def test_group_no_duplicates(name, size):
|
||||
g = Rotation.create_group(name)
|
||||
kdtree = cKDTree(g.as_quat())
|
||||
assert len(kdtree.query_pairs(1E-3)) == 0
|
||||
|
||||
|
||||
@pytest.mark.parametrize("name, size", zip(NAMES, SIZES))
|
||||
def test_group_symmetry(name, size):
|
||||
g = Rotation.create_group(name)
|
||||
q = np.concatenate((-g.as_quat(), g.as_quat()))
|
||||
distance = np.sort(cdist(q, q))
|
||||
deltas = np.max(distance, axis=0) - np.min(distance, axis=0)
|
||||
assert (deltas < TOL).all()
|
||||
|
||||
|
||||
@pytest.mark.parametrize("name", NAMES)
|
||||
def test_reduction(name):
|
||||
"""Test that the elements of the rotation group are correctly
|
||||
mapped onto the identity rotation."""
|
||||
g = Rotation.create_group(name)
|
||||
f = g.reduce(g)
|
||||
assert_array_almost_equal(f.magnitude(), np.zeros(len(g)))
|
||||
|
||||
|
||||
@pytest.mark.parametrize("name", NAMES)
|
||||
def test_single_reduction(name):
|
||||
g = Rotation.create_group(name)
|
||||
f = g[-1].reduce(g)
|
||||
assert_array_almost_equal(f.magnitude(), 0)
|
||||
assert f.as_quat().shape == (4,)
|
||||
|
|
@ -0,0 +1,183 @@
|
|||
from itertools import product
|
||||
import numpy as np
|
||||
from numpy.testing import assert_allclose
|
||||
import pytest
|
||||
from scipy.spatial.transform import Rotation, RotationSpline
|
||||
from scipy.spatial.transform._rotation_spline import (
|
||||
_angular_rate_to_rotvec_dot_matrix,
|
||||
_rotvec_dot_to_angular_rate_matrix,
|
||||
_matrix_vector_product_of_stacks,
|
||||
_angular_acceleration_nonlinear_term,
|
||||
_create_block_3_diagonal_matrix)
|
||||
|
||||
|
||||
pytestmark = pytest.mark.skip_xp_backends(np_only=True)
|
||||
|
||||
|
||||
def test_angular_rate_to_rotvec_conversions():
|
||||
np.random.seed(0)
|
||||
rv = np.random.randn(4, 3)
|
||||
A = _angular_rate_to_rotvec_dot_matrix(rv)
|
||||
A_inv = _rotvec_dot_to_angular_rate_matrix(rv)
|
||||
|
||||
# When the rotation vector is aligned with the angular rate, then
|
||||
# the rotation vector rate and angular rate are the same.
|
||||
assert_allclose(_matrix_vector_product_of_stacks(A, rv), rv)
|
||||
assert_allclose(_matrix_vector_product_of_stacks(A_inv, rv), rv)
|
||||
|
||||
# A and A_inv must be reciprocal to each other.
|
||||
I_stack = np.empty((4, 3, 3))
|
||||
I_stack[:] = np.eye(3)
|
||||
assert_allclose(np.matmul(A, A_inv), I_stack, atol=1e-15)
|
||||
|
||||
|
||||
def test_angular_rate_nonlinear_term():
|
||||
# The only simple test is to check that the term is zero when
|
||||
# the rotation vector
|
||||
np.random.seed(0)
|
||||
rv = np.random.rand(4, 3)
|
||||
assert_allclose(_angular_acceleration_nonlinear_term(rv, rv), 0,
|
||||
atol=1e-19)
|
||||
|
||||
|
||||
def test_create_block_3_diagonal_matrix():
|
||||
np.random.seed(0)
|
||||
A = np.empty((4, 3, 3))
|
||||
A[:] = np.arange(1, 5)[:, None, None]
|
||||
|
||||
B = np.empty((4, 3, 3))
|
||||
B[:] = -np.arange(1, 5)[:, None, None]
|
||||
d = 10 * np.arange(10, 15)
|
||||
|
||||
banded = _create_block_3_diagonal_matrix(A, B, d)
|
||||
|
||||
# Convert the banded matrix to the full matrix.
|
||||
k, l = list(zip(*product(np.arange(banded.shape[0]),
|
||||
np.arange(banded.shape[1]))))
|
||||
k = np.asarray(k)
|
||||
l = np.asarray(l)
|
||||
|
||||
i = k - 5 + l
|
||||
j = l
|
||||
values = banded.ravel()
|
||||
mask = (i >= 0) & (i < 15)
|
||||
i = i[mask]
|
||||
j = j[mask]
|
||||
values = values[mask]
|
||||
full = np.zeros((15, 15))
|
||||
full[i, j] = values
|
||||
|
||||
zero = np.zeros((3, 3))
|
||||
eye = np.eye(3)
|
||||
|
||||
# Create the reference full matrix in the most straightforward manner.
|
||||
ref = np.block([
|
||||
[d[0] * eye, B[0], zero, zero, zero],
|
||||
[A[0], d[1] * eye, B[1], zero, zero],
|
||||
[zero, A[1], d[2] * eye, B[2], zero],
|
||||
[zero, zero, A[2], d[3] * eye, B[3]],
|
||||
[zero, zero, zero, A[3], d[4] * eye],
|
||||
])
|
||||
|
||||
assert_allclose(full, ref, atol=1e-19)
|
||||
|
||||
|
||||
def test_spline_2_rotations():
|
||||
times = [0, 10]
|
||||
rotations = Rotation.from_euler('xyz', [[0, 0, 0], [10, -20, 30]],
|
||||
degrees=True)
|
||||
spline = RotationSpline(times, rotations)
|
||||
|
||||
rv = (rotations[0].inv() * rotations[1]).as_rotvec()
|
||||
rate = rv / (times[1] - times[0])
|
||||
times_check = np.array([-1, 5, 12])
|
||||
dt = times_check - times[0]
|
||||
rv_ref = rate * dt[:, None]
|
||||
|
||||
assert_allclose(spline(times_check).as_rotvec(), rv_ref)
|
||||
assert_allclose(spline(times_check, 1), np.resize(rate, (3, 3)))
|
||||
assert_allclose(spline(times_check, 2), 0, atol=1e-16)
|
||||
|
||||
|
||||
def test_constant_attitude():
|
||||
times = np.arange(10)
|
||||
rotations = Rotation.from_rotvec(np.ones((10, 3)))
|
||||
spline = RotationSpline(times, rotations)
|
||||
|
||||
times_check = np.linspace(-1, 11)
|
||||
assert_allclose(spline(times_check).as_rotvec(), 1, rtol=1e-15)
|
||||
assert_allclose(spline(times_check, 1), 0, atol=1e-17)
|
||||
assert_allclose(spline(times_check, 2), 0, atol=1e-17)
|
||||
|
||||
assert_allclose(spline(5.5).as_rotvec(), 1, rtol=1e-15)
|
||||
assert_allclose(spline(5.5, 1), 0, atol=1e-17)
|
||||
assert_allclose(spline(5.5, 2), 0, atol=1e-17)
|
||||
|
||||
|
||||
def test_spline_properties():
|
||||
times = np.array([0, 5, 15, 27])
|
||||
angles = [[-5, 10, 27], [3, 5, 38], [-12, 10, 25], [-15, 20, 11]]
|
||||
|
||||
rotations = Rotation.from_euler('xyz', angles, degrees=True)
|
||||
spline = RotationSpline(times, rotations)
|
||||
|
||||
assert_allclose(spline(times).as_euler('xyz', degrees=True), angles)
|
||||
assert_allclose(spline(0).as_euler('xyz', degrees=True), angles[0])
|
||||
|
||||
h = 1e-8
|
||||
rv0 = spline(times).as_rotvec()
|
||||
rvm = spline(times - h).as_rotvec()
|
||||
rvp = spline(times + h).as_rotvec()
|
||||
# rtol bumped from 1e-15 to 1.5e-15 in gh18414 for linux 32 bit
|
||||
assert_allclose(rv0, 0.5 * (rvp + rvm), rtol=1.5e-15)
|
||||
|
||||
r0 = spline(times, 1)
|
||||
rm = spline(times - h, 1)
|
||||
rp = spline(times + h, 1)
|
||||
assert_allclose(r0, 0.5 * (rm + rp), rtol=1e-14)
|
||||
|
||||
a0 = spline(times, 2)
|
||||
am = spline(times - h, 2)
|
||||
ap = spline(times + h, 2)
|
||||
assert_allclose(a0, am, rtol=1e-7)
|
||||
assert_allclose(a0, ap, rtol=1e-7)
|
||||
|
||||
|
||||
def test_error_handling():
|
||||
with pytest.raises(ValueError):
|
||||
RotationSpline([1.0], Rotation.random())
|
||||
|
||||
r = Rotation.random(10)
|
||||
t = np.arange(10).reshape(5, 2)
|
||||
with pytest.raises(ValueError):
|
||||
RotationSpline(t, r)
|
||||
|
||||
t = np.arange(9)
|
||||
with pytest.raises(ValueError):
|
||||
RotationSpline(t, r)
|
||||
|
||||
t = np.arange(10)
|
||||
t[5] = 0
|
||||
with pytest.raises(ValueError):
|
||||
RotationSpline(t, r)
|
||||
|
||||
t = np.arange(10)
|
||||
|
||||
s = RotationSpline(t, r)
|
||||
with pytest.raises(ValueError):
|
||||
s(10, -1)
|
||||
|
||||
with pytest.raises(ValueError):
|
||||
s(np.arange(10).reshape(5, 2))
|
||||
|
||||
|
||||
@pytest.mark.skip_xp_backends("numpy")
|
||||
def test_xp_errors(xp):
|
||||
times = xp.asarray([0, 10])
|
||||
r = Rotation.random(2)
|
||||
r = Rotation.from_quat(xp.asarray(r.as_quat()))
|
||||
s = RotationSpline(times, r)
|
||||
t = xp.asarray([0.5, 1.5])
|
||||
# RotationSpline does not have native Array API support, so we check that it
|
||||
# converts any array to NumPy and outputs NumPy arrays.
|
||||
assert isinstance(s(t).as_quat(), np.ndarray)
|
||||
Loading…
Add table
Add a link
Reference in a new issue