def check_int_float(N): f = ak.randint(0, 2**63, N, dtype=ak.float64) i = ak.randint(0, 2**63, N, dtype=ak.int64) perm = ak.coargsort([f, i]) assert ak.is_sorted(f[perm]) perm = ak.coargsort([i, f]) assert ak.is_sorted(i[perm])
def check_int_uint_float(N, algo): f = ak.randint(0, 2**63, N, dtype=ak.float64) u = ak.randint(0, 2**63, N, dtype=ak.uint64) i = ak.randint(0, 2**63, N, dtype=ak.int64) perm = ak.coargsort([f, u, i], algo) assert ak.is_sorted(f[perm]) perm = ak.coargsort([u, i, f], algo) assert ak.is_sorted(u[perm]) perm = ak.coargsort([i, f, u], algo) assert ak.is_sorted(i[perm])
def testBitBoundary(self): # test 17-bit sort L = -2**15 U = 2**16 a = ak.randint(L, U, 100) for algo in ak.SortingAlgorithm: assert ak.is_sorted(ak.sort(a, algo))
def check_float(N): a = ak.randint(0, 1, N, dtype=ak.float64) n = ak.randint(-1, 1, N, dtype=ak.float64) z = ak.zeros(N, dtype=ak.float64) perm = ak.coargsort([a]) assert ak.is_sorted(a[perm]) perm = ak.coargsort([a, n]) assert ak.is_sorted(a[perm]) perm = ak.coargsort([n, a]) assert ak.is_sorted(n[perm]) perm = ak.coargsort([z, a]) assert ak.is_sorted(a[perm]) perm = ak.coargsort([z, n]) assert ak.is_sorted(n[perm])
def testBitBoundaryHardcode(self): # test hardcoded 16/17-bit boundaries with and without negative values a = ak.array([1, -1, 32767]) # 16 bit b = ak.array([1, 0, 32768]) # 16 bit c = ak.array([1, -1, 32768]) # 17 bit for algo in ak.SortingAlgorithm: assert ak.is_sorted(ak.sort(a, algo)) assert ak.is_sorted(ak.sort(b, algo)) assert ak.is_sorted(ak.sort(c, algo)) # test hardcoded 64-bit boundaries with and without negative values d = ak.array([1, -1, 2**63 - 1]) e = ak.array([1, 0, 2**63 - 1]) f = ak.array([1, -2**63, 2**63 - 1]) for algo in ak.SortingAlgorithm: assert ak.is_sorted(ak.sort(d, algo)) assert ak.is_sorted(ak.sort(e, algo)) assert ak.is_sorted(ak.sort(f, algo))
def check_int(N): z = ak.zeros(N, dtype=ak.int64) a2 = ak.randint(0, 2**16, N) b2 = ak.randint(0, 2**16, N) c2 = ak.randint(0, 2**16, N) d2 = ak.randint(0, 2**16, N) n2 = ak.randint(-(2**15), 2**15, N) perm = ak.coargsort([a2]) assert ak.is_sorted(a2[perm]) perm = ak.coargsort([n2]) assert ak.is_sorted(n2[perm]) perm = ak.coargsort([a2, b2, c2, d2]) assert ak.is_sorted(a2[perm]) perm = ak.coargsort([z, b2, c2, d2]) assert ak.is_sorted(b2[perm]) perm = ak.coargsort([z, z, c2, d2]) assert ak.is_sorted(c2[perm]) perm = ak.coargsort([z, z, z, d2]) assert ak.is_sorted(d2[perm]) a4 = ak.randint(0, 2**32, N) b4 = ak.randint(0, 2**32, N) n4 = ak.randint(-(2**31), 2**31, N) perm = ak.coargsort([a4]) assert ak.is_sorted(a4[perm]) perm = ak.coargsort([n4]) assert ak.is_sorted(n4[perm]) perm = ak.coargsort([a4, b4]) assert ak.is_sorted(a4[perm]) perm = ak.coargsort([b4, a4]) assert ak.is_sorted(b4[perm]) a8 = ak.randint(0, 2**64, N) b8 = ak.randint(0, 2**64, N) n8 = ak.randint(-(2**63), 2**64, N) perm = ak.coargsort([a8]) assert ak.is_sorted(a8[perm]) perm = ak.coargsort([n8]) assert ak.is_sorted(n8[perm]) perm = ak.coargsort([b8, a8]) assert ak.is_sorted(b8[perm]) from itertools import permutations all_perm = permutations([a2, a4, a8]) for p in all_perm: perm = ak.coargsort(p) assert ak.is_sorted(p[0][perm])
def check_large(N): l = [ak.randint(0, 2**63, N) for _ in range(10)] perm = ak.coargsort(l) assert ak.is_sorted(l[0][perm])