本文整理汇总了Python中pymor.tools.floatcmp.float_cmp函数的典型用法代码示例。如果您正苦于以下问题:Python float_cmp函数的具体用法?Python float_cmp怎么用?Python float_cmp使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了float_cmp函数的13个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: indicator
def indicator(X):
L = np.logical_and(float_cmp(X[:, 0], dd.domain[0, 0]), dd.left == bt)
R = np.logical_and(float_cmp(X[:, 0], dd.domain[1, 0]), dd.right == bt)
T = np.logical_and(float_cmp(X[:, 1], dd.domain[1, 1]), dd.top == bt)
B = np.logical_and(float_cmp(X[:, 1], dd.domain[0, 1]), dd.bottom == bt)
LR = np.logical_or(L, R)
TB = np.logical_or(T, B)
return np.logical_or(LR, TB)
示例2: test_other_functions
def test_other_functions(self):
order = GaussQuadratures.orders[-1]
for name, function, integral in FUNCTIONS:
Q = GaussQuadratures.iter_quadrature(order)
ret = sum([function(p) * w for (p, w) in Q])
assert float_cmp(ret, integral), \
f'{name} integral wrong: {integral} vs {ret} (quadrature order {order})'
示例3: test_other_functions
def test_other_functions(self):
order = GaussQuadratures.orders[-1]
for name, function, integral in FUNCTIONS:
Q = GaussQuadratures.iter_quadrature(order)
ret = sum([function(p) * w for (p, w) in Q])
assert float_cmp(ret, integral), '{} integral wrong: {} vs {} (quadrature order {})'.format(
name, integral, ret, order)
示例4: test_polynomials
def test_polynomials(self):
for n, function, _, integral in polynomials(GaussQuadratures.orders[-1]):
name = 'x^{}'.format(n)
for order in GaussQuadratures.orders:
if n > order / 2:
continue
Q = GaussQuadratures.iter_quadrature(order)
ret = sum([function(p) * w for (p, w) in Q])
assert float_cmp(ret, integral), '{} integral wrong: {} vs {} (quadrature order {})'.format(
name, integral, ret, order)
示例5: test_polynomials
def test_polynomials(self):
for n, function, _, integral in polynomials(GaussQuadratures.orders[-1]):
name = f'x^{n}'
for order in GaussQuadratures.orders:
if n > order / 2:
continue
Q = GaussQuadratures.iter_quadrature(order)
ret = sum([function(p) * w for (p, w) in Q])
assert float_cmp(ret, integral), \
f'{name} integral wrong: {integral} vs {ret} (quadrature order {order})'
示例6: test_props
def test_props(self):
tol_range = [0.0, 1e-8, 1]
nan = float('nan')
inf = float('inf')
for (rtol, atol) in itertools.product(tol_range, tol_range):
msg = 'rtol: {} | atol {}'.format(rtol, atol)
assert float_cmp(0., 0., rtol, atol), msg
assert float_cmp(-0., -0., rtol, atol), msg
assert float_cmp(-1., -1., rtol, atol), msg
assert float_cmp(0., -0., rtol, atol), msg
assert not float_cmp(2., -2., rtol, atol), msg
assert not float_cmp(nan, nan, rtol, atol), msg
assert nan != nan
assert not (nan == nan)
assert not float_cmp(-nan, nan, rtol, atol), msg
assert not float_cmp(inf, inf, rtol, atol), msg
assert not (inf != inf)
assert inf == inf
if rtol > 0:
assert float_cmp(-inf, inf, rtol, atol), msg
else:
assert not float_cmp(-inf, inf, rtol, atol), msg
示例7: test_props
def test_props(self):
tol_range = [None, 0.0, 1]
nan = float('nan')
inf = float('inf')
for (rtol, atol) in itertools.product(tol_range, tol_range):
msg = 'rtol: {} | atol {}'.format(rtol, atol)
self.assertTrue(float_cmp(0, 0, rtol, atol), msg)
self.assertTrue(float_cmp(-0, -0, rtol, atol), msg)
self.assertTrue(float_cmp(-1, -1, rtol, atol), msg)
self.assertTrue(float_cmp(0, -0, rtol, atol), msg)
self.assertFalse(float_cmp(2, -2, rtol, atol), msg)
self.assertFalse(float_cmp(nan, nan, rtol, atol), msg)
self.assertTrue(nan != nan)
self.assertFalse(nan == nan)
self.assertFalse(float_cmp(-nan, nan, rtol, atol), msg)
self.assertFalse(float_cmp(inf, inf, rtol, atol), msg)
self.assertFalse(inf != inf)
self.assertTrue(inf == inf)
self.assertTrue(float_cmp(-inf, inf, rtol, atol), msg)
示例8: almost_equal
def almost_equal(self, other, ind=None, o_ind=None, rtol=None, atol=None):
assert self.check_ind(ind)
assert other.check_ind(o_ind)
assert self.dim == other.dim
if NUMPY_INDEX_QUIRK:
if self._len == 0 and hasattr(ind, '__len__'):
ind = None
if other._len == 0 and hasattr(o_ind, '__len__'):
o_ind = None
A = self._array[:self._len] if ind is None else \
self._array[ind] if hasattr(ind, '__len__') else self._array[ind:ind + 1]
B = other._array[:other._len] if o_ind is None else \
other._array[o_ind] if hasattr(o_ind, '__len__') else other._array[o_ind:o_ind + 1]
R = np.all(float_cmp(A, B, rtol=rtol, atol=atol), axis=1).squeeze()
if R.ndim == 0:
R = R[np.newaxis, ...]
return R
示例9: test_newton
def test_newton(order):
U, _ = _newton(order)
assert float_cmp(U.data, 0.0)
示例10: test_newton
def test_newton(order):
U, _ = _newton(order, atol=1e-15)
assert float_cmp(U.data, 0.0)
示例11: flatten_grid
def flatten_grid(grid):
"""This method is used by our visualizers to render n-dimensional grids which cannot
be embedded into R^n by duplicating vertices which would have to be mapped to multiple
points at once. (Think of grids on rectangular domains with identified edges.)
Parameters
----------
grid
The |Grid| to flatten.
Returns
-------
subentities
The `subentities(0, grid.dim)` relation for the flattened grid.
coordinates
The coordinates of the codim-`grid.dim` entities.
entity_map
Maps the indices of the codim-`grid.dim` entities of the flattened
grid to the indices of the corresponding entities in the original grid.
"""
# special handling of known flat grids
if isinstance(grid, (RectGrid, TriaGrid)) and not grid.identify_left_right and not grid.identify_bottom_top:
subentities = grid.subentities(0, grid.dim)
coordinates = grid.centers(grid.dim)
entity_map = np.arange(grid.size(grid.dim), dtype=np.int32)
return subentities, coordinates, entity_map
# first we determine which vertices are mapped to different coordinates when using the
# embeddings of their codim-0 superentities
dim = grid.dim
global_coordinates = grid.embeddings(dim)[1]
subentities = grid.subentities(0, dim)
super_entities = grid.superentities(dim, 0)
superentity_indices = grid.superentity_indices(dim, 0)
A, B = grid.embeddings(0)
ref_el_coordinates = grid.reference_element.subentity_embedding(dim)[1]
local_coordinates = np.einsum('eij,vj->evi', A, ref_el_coordinates) + B[:, np.newaxis, :]
critical_vertices = np.unique(subentities[np.logical_not(np.all(float_cmp(global_coordinates[subentities],
local_coordinates), axis=2))])
del A
del B
# when there are critical vertices, we have to create additional vertices
if len(critical_vertices) > 0:
subentities = subentities.copy()
supe = super_entities[critical_vertices]
supi = superentity_indices[critical_vertices]
coord = local_coordinates[supe, supi]
new_points = np.ones_like(supe, dtype=np.int32) * -1
new_points[:, 0] = critical_vertices
num_points = grid.size(dim)
entity_map = np.empty((0,), dtype=np.int32)
for i in xrange(new_points.shape[1]):
for j in xrange(i):
new_points[:, i] = np.where(supe[:, i] == -1, new_points[:, i],
np.where(np.all(float_cmp(coord[:, i], coord[:, j]), axis=1),
new_points[:, j], new_points[:, i]))
new_point_inds = np.where(np.logical_and(new_points[:, i] == -1, supe[:, i] != -1))[0]
new_points[new_point_inds, i] = np.arange(num_points, num_points + len(new_point_inds))
num_points += len(new_point_inds)
entity_map = np.hstack((entity_map, critical_vertices[new_point_inds]))
entity_map = np.hstack((np.arange(grid.size(dim), dtype=np.int32), entity_map))
# handle -1 entries in supe/supi correctly ...
ci = np.where(critical_vertices == subentities[-1, -1])[0]
if len(ci) > 0:
assert len(ci) == 1
ci = ci[0]
i = np.where(supe[ci] == (grid.size(0) - 1))[0]
if len(i) > 0:
assert len(i) == 1
i = i[0]
new_points[supe == -1] = new_points[ci, i]
else:
new_points[supe == -1] = subentities[-1, -1]
else:
new_points[supe == -1] = subentities[-1, -1]
subentities[supe, supi] = new_points
super_entities, superentity_indices = inverse_relation(subentities, size_rhs=num_points, with_indices=True)
coordinates = local_coordinates[super_entities[:, 0], superentity_indices[:, 0]]
else:
coordinates = global_coordinates
entity_map = np.arange(grid.size(dim), dtype=np.int32)
return subentities, coordinates, entity_map
示例12: test_weights
def test_weights(self):
for order in GaussQuadratures.orders:
_, W = GaussQuadratures.quadrature(order)
assert float_cmp(sum(W), 1)
示例13: test_newton
def test_newton(order):
U, _ = _newton(order, atol=1e-15)
assert float_cmp(U.to_numpy(), 0.0)