From e417b66e1106da6c44088a1aa63105fd776c9949 Mon Sep 17 00:00:00 2001 From: Jose Manuel <118126596+jmbarrancoml@users.noreply.github.com> Date: Tue, 20 Oct 2026 23:02:07 +0200 Subject: [PATCH 1/5] Retain the published rational FFT producer for fixed-H lowering --- .../vendor/PROVENANCE.json | 21 ++ .../vendor/rational_fft/engine.py | 258 ++++++++++++++++++ .../vendor/rational_fft/exact.py | 242 ++++++++++++++++ 3 files changed, 521 insertions(+) create mode 100644 research/rational-fft-fixed-h/vendor/PROVENANCE.json create mode 100644 research/rational-fft-fixed-h/vendor/rational_fft/engine.py create mode 100644 research/rational-fft-fixed-h/vendor/rational_fft/exact.py diff --git a/research/rational-fft-fixed-h/vendor/PROVENANCE.json b/research/rational-fft-fixed-h/vendor/PROVENANCE.json new file mode 100644 index 0000000000..22cf8bdcb9 --- /dev/null +++ b/research/rational-fft-fixed-h/vendor/PROVENANCE.json @@ -0,0 +1,21 @@ +{ + "schema_version": 1, + "original_pull_request": "https://github.com/CrocSwap/integer-mult-bounds/pull/4205", + "original_commit": "78c72e563173f3822fcb4efed9ceeccf05630258", + "files": [ + { + "original_path": "research/rational-unitary-fft/engine.py", + "retained_path": "research/rational-fft-fixed-h/vendor/rational_fft/engine.py", + "git_blob": "e9f2f2b08dc2bc4c646e47dca92059351ca89384", + "sha256": "9e36aee0835e6b1b62997433581f88b5a434ccab8ae43e5c25d1deaaf1ebf653" + }, + { + "original_path": "research/rational-unitary-fft/exact.py", + "retained_path": "research/rational-fft-fixed-h/vendor/rational_fft/exact.py", + "git_blob": "aae41e6acfb2e5a4fafdd85727891eb746b57b42", + "sha256": "c9b89d7357210af69865690ba12e695366961f8b501a8fab9d0fefe3fb30c479" + } + ], + "attribution": "Jose Manuel (jmbarrancoml), with substantial OpenAI Codex assistance. Phase projection follows Chafik Boukhalfa/PR628; the FFT/shear schedule follows Vlado Vojdanovski/PR1673. Classical Fourier/FFT methods and the retained lineage remain credited. Apache-2.0.", + "scope": "Unchanged published exact arithmetic and rational FFT producer. The new loader authenticates their bytes and declared dependencies before executing them. Retention does not constitute independent acceptance of the predecessor's proofs." +} diff --git a/research/rational-fft-fixed-h/vendor/rational_fft/engine.py b/research/rational-fft-fixed-h/vendor/rational_fft/engine.py new file mode 100644 index 0000000000..e9f2f2b08d --- /dev/null +++ b/research/rational-fft-fixed-h/vendor/rational_fft/engine.py @@ -0,0 +1,258 @@ +"""Certified phases and an authenticated rational adaptation of the FFT child. + +Jose Manuel (jmbarrancoml), with substantial OpenAI Codex assistance. +Apache-2.0. Phase projection follows Chafik/PR628; the schedule is Vlado/PR1673. +""" +import ast +import copy +from fractions import Fraction as Q +from hashlib import sha256 +from math import gcd, isqrt +from types import SimpleNamespace + +from exact import (C, Mat, Vec, adjoint, ceil_log2, component_l1, inverse_gate, + need, qheight, round_q, rounded) + + +class Phases: + def __init__(self, bits, source): + need(type(bits) is int and bits >= 1, "positive phase precision") + self.bits, self.nu = bits, Q(1, 1 << bits) + self.working_bits = 2 * (bits + 32) + self.oracle = {"__name__": "_authenticated_phase_oracle"} + exec(compile(source, "", "exec", optimize=0), self.oracle) + need(self.oracle["pi_interval"].cache_info().currsize == 0 + and self.oracle["kernel"].cache_info().currsize == 0, "fresh precision namespace") + self.oracle["BITS"] = self.working_bits + self.oracle["SCALE"] = 1 << self.working_bits + self.values, self.boxes, self.certificates = {}, {}, {} + + @staticmethod + def key(denominator, numerator): + need(type(denominator) is int and denominator > 0 and type(numerator) is int, + "integer phase description") + numerator %= denominator + divisor = gcd(denominator, numerator) + return denominator // divisor, numerator // divisor + + def box(self, denominator, numerator): + key = self.key(denominator, numerator) + if key not in self.boxes: + exact = {(1, 0): C(1), (2, 1): C(-1), (4, 1): C(0, 1), (4, 3): C(0, -1)} + if key in exact: + z = exact[key] + self.boxes[key] = ((z.re, z.re), (z.im, z.im)) + else: + self.boxes[key] = self.oracle["root_interval"](*key) + return self.boxes[key] + + def phase(self, denominator, numerator): + key = self.key(denominator, numerator) + if key in self.values: + return self.values[key] + box = self.box(*key) + if box[0][0] == box[0][1] and box[1][0] == box[1][1]: + sigma, error, parameter = C(box[0][0], box[1][0]), Q(0), None + else: + choices = [] + for center in (C(1), C(-1), C(0, 1), C(0, -1)): + conjugate = center.conjugate() + point = self.oracle["point"] + rotated = self.oracle["cmul"](box, (point(conjugate.re), point(conjugate.im))) + choices.append((rotated[0][0], center, rotated)) + _, center, rotated = max(choices, key=lambda item: item[0]) + need(rotated[0][0] >= Q(1, 2), "certified unit-phase chart") + parameters = [imag / (1 + real) for imag in rotated[1] for real in rotated[0]] + parameter = round_q((min(parameters) + max(parameters)) / 2, self.bits + 4) + need(abs(parameter) < 1, "bounded stereographic parameter") + sigma = center * C((1 - parameter ** 2) / (1 + parameter ** 2), + 2 * parameter / (1 + parameter ** 2)) + # Maximum endpoint distance, not minimum distance to a rectangle. + error = sum(max(abs(endpoint - value) for endpoint in interval) + for interval, value in zip(box, (sigma.re, sigma.im))) + need(sigma.norm2() == 1 and error <= self.nu, "certified exact rational unit phase") + need(max(qheight(sigma.re), qheight(sigma.im)) <= 2 * self.bits + 12, + "unit-phase representation bound") + self.values[key] = sigma + self.certificates[key] = {"denominator": key[0], "numerator": key[1], + "unit": sigma.record(), "error_bound": str(error), + "parameter": None if parameter is None else str(parameter)} + return sigma + + def record(self): + return {"phase_bits": self.bits, "oracle_bits": self.working_bits, + "certificates": [self.certificates[key] for key in sorted(self.certificates)]} + + +def split_kernel(matrix): + n = len(matrix) + need(n > 0 and n & (n - 1) == 0 and matrix.shape == (n, n), "square dyadic tile") + column, row = matrix[:, 0], matrix[0, :] + need(all(matrix[i][j] == (column[i - j] if i >= j else row[j - i]) + for i in range(n) for j in range(n)), "Toeplitz input") + g, h = Vec([0] * n), Vec([0] * n) + g[0] = h[0] = column[0] / 2 + for j in range(1, n): + g[j] = (column[j] + row[n - j]) / 2 + h[j] = (column[j] - row[n - j]) / 2 + return g, h + + +def budget(matrix, radius, target, input_fractional_bits=0): + g, h = split_kernel(matrix) + n, depth = len(matrix), len(matrix).bit_length() - 1 + mg, mh = component_l1(g), component_l1(h) + total = mg + mh + need(type(target) is int and target >= 1 and type(radius) in (int, Q) and radius >= 1, + "target and exact input radius") + need(type(input_fractional_bits) is int and input_fractional_bits >= 0, + "declared incoming fractional precision") + layers = 4 * depth + 8 + phase_bits = target + ceil_log2(16 * (depth + 1) * (total + 1) * (radius + 1)) + multiplier_bits = target + ceil_log2(8 * (radius + 1)) + data_bits = max(input_fractional_bits, target + ceil_log2(2 * layers * n * (total + 2))) + return certificate(n, mg, mh, radius, target, phase_bits, multiplier_bits, data_bits, + input_fractional_bits) + + +def certificate(n, mg, mh, radius, target, phase_bits, multiplier_bits, data_bits, + input_fractional_bits=0): + need(type(n) is int and n > 0 and n & (n - 1) == 0, "dyadic certificate dimension") + need(all(type(x) is int for x in (target, phase_bits, multiplier_bits, data_bits)) + and all(type(x) in (int, Q) for x in (mg, mh, radius)), "exact budget fields") + need(type(input_fractional_bits) is int and 0 <= input_fractional_bits <= data_bits, + "preserve incoming data grid") + need(min(phase_bits, multiplier_bits, data_bits, target) >= 1 and min(mg, mh) >= 0 + and radius >= 1, "positive precisions and valid envelopes") + depth, layers = n.bit_length() - 1, 4 * (n.bit_length() - 1) + 8 + nu, v, u = (Q(1, 1 << b) for b in (phase_bits, multiplier_bits, data_bits)) + total = mg + mh + coefficient_error = 4 * (depth + 1) * total * nu + 2 * v + prefix_bound = 1 + total + 2 * v + rounding_error = layers * prefix_bound * n * u + error = coefficient_error * radius + rounding_error + need(error <= Q(1, 1 << target), "complete target error budget") + need(layers * n * u <= 1, "bounded rounding accumulation") + amplitude = prefix_bound * (radius + layers * n * u) + integer_bits = max(1, ceil_log2(max(Q(1), amplitude))) + 2 + coefficient_height = max(4 * phase_bits + 24, + multiplier_bits + ceil_log2(total + 2) + 2) + temporary_bits = 2 * data_bits + 8 * coefficient_height + 2 * integer_bits + 32 + return dict(n=n, depth=depth, layer_bound=layers, mg=mg, mh=mh, radius=radius, + target_bits=target, phase_bits=phase_bits, multiplier_bits=multiplier_bits, + data_bits=data_bits, input_fractional_bits=input_fractional_bits, + coefficient_error=coefficient_error, prefix_bound=prefix_bound, + rounding_error=rounding_error, total_error=error, amplitude_bound=amplitude, + integer_bits=integer_bits, coefficient_height_bound=coefficient_height, + temporary_bits=temporary_bits) + + +class Adapt(ast.NodeTransformer): + def __init__(self): + self.function = None + self.changes = [] + + def visit_FunctionDef(self, node): + old = self.function + self.function = node.name + result = self.generic_visit(node) + self.function = old + return result + + def visit_Assign(self, node): + if len(node.targets) == 1 and isinstance(node.targets[0], ast.Name): + name = node.targets[0].id + if self.function == "fft" and name == "w": + self.changes.append("fft-twiddle") + node.value = ast.Call(func=ast.Name(id="phase", ctx=ast.Load()), + args=[ast.Name(id="size", ctx=ast.Load()), + ast.UnaryOp(op=ast.USub(), operand=ast.Name(id="j", ctx=ast.Load()))], + keywords=[]) + return node + if self.function == "toeplitz_shear" and name == "gamma": + self.changes.append("independent-twist-coefficients") + return ast.Pass() + if self.function == "toeplitz_shear" and name == "d": + self.changes.append("twist-vector") + node.value = ast.Call(func=ast.Name(id="certified_twist_vector", ctx=ast.Load()), + args=[ast.Name(id="n", ctx=ast.Load())], keywords=[]) + return node + return self.generic_visit(node) + + def visit_BinOp(self, node): + if (self.function == "fft" and isinstance(node.op, ast.Div) + and isinstance(node.right, ast.Call) and isinstance(node.right.func, ast.Attribute) + and node.right.func.attr == "sqrt"): + self.changes.append("unitary-splitter") + return ast.Call(func=ast.Name(id="butterfly", ctx=ast.Load()), + args=[ast.Name(id="w", ctx=ast.Load())], keywords=[]) + return self.generic_visit(node) + + +class Builder: + def __init__(self, phase_oracle, multiplier_bits, circuit_source): + self.phases, self.multiplier_bits = phase_oracle, multiplier_bits + self.spectra, self.twist_vectors, self.bounds = [], [], [] + selected = {"diag", "inverse", "parallel", "fft", "circ_shear", "toeplitz_shear"} + tree = ast.parse(circuit_source) + tree.body = [copy.deepcopy(n) for n in tree.body + if isinstance(n, ast.FunctionDef) and n.name in selected] + need({node.name for node in tree.body} == selected, "complete source function set") + self.original_ast = sha256(ast.dump(tree).encode()).hexdigest() + adapter = Adapt() + tree = ast.fix_missing_locations(adapter.visit(tree)) + need(adapter.changes == ["fft-twiddle", "unitary-splitter", + "independent-twist-coefficients", "twist-vector"], + "exact declared coefficient adaptation") + self.adapted_ast = sha256(ast.dump(tree).encode()).hexdigest() + self.np = SimpleNamespace(array=lambda rows, dtype=None: Mat(rows), + zeros=lambda n, dtype=None: Vec([0] * n), + fft=SimpleNamespace(fft=self.spectrum), + linalg=SimpleNamespace(inv=inverse_gate)) + self.namespace = {"np": self.np, "phase": self.phases.phase, + "butterfly": self.butterfly, "certified_twist_vector": self.twists} + exec(compile(tree, "", "exec", optimize=0), self.namespace) + + def butterfly(self, w): + splitter = self.phases.phase(8, 1) + a, b = splitter.re, splitter.im + return Mat([[a, b * w], [b, -a * w]]) + + def twists(self, n): + result = Vec(self.phases.phase(2 * n, j) for j in range(n)) + self.twist_vectors.append(result) + return result + + def spectrum(self, kernel): + n = len(kernel) + bound = self.bounds[len(self.spectra)] + exact = Vec(sum((kernel[j] * self.phases.phase(n, -i * j) for j in range(n)), C()) + for i in range(n)) + result = Vec(rounded(value, self.multiplier_bits) for value in exact) + v = Q(1, 1 << self.multiplier_bits) + need(all(value.norm2() <= bound ** 2 for value in exact), "unit-root multiplier bound") + need(all(value.norm2() <= (bound + v) ** 2 for value in result), "rounded multiplier bound") + need(all((x - y).norm2() <= v ** 2 for x, y in zip(result, exact)), "multiplier rounding") + self.spectra.append({"kernel": Vec(kernel), "multipliers": result, "bound": bound}) + return result + + def plan(self, matrix): + g, h = split_kernel(matrix) + n = len(matrix) + self.bounds = [component_l1(g), component_l1(h)] + self.spectra, self.twist_vectors = [], [] + result = self.namespace["toeplitz_shear"](list(range(n, 2 * n)), list(range(n)), matrix) + need(len(self.spectra) == 2 and len(self.twist_vectors) == 1, "two circulants and one twist table") + need(self.spectra[0]["kernel"] == g, "first source kernel") + need(self.spectra[1]["kernel"] == self.twist_vectors[0] * h, "twisted second source kernel") + need(all(a.norm2() == b.norm2() for a, b in zip(self.spectra[1]["kernel"], h)), + "twisting preserves kernel magnitudes") + return result + + +def inverse_sqrt_box(n, bits): + scale = 1 << bits + lower = isqrt((1 << (2 * bits)) // n) + if lower * lower * n == 1 << (2 * bits): + return Q(lower, scale), Q(lower, scale) + return Q(lower, scale), Q(lower + 1, scale) diff --git a/research/rational-fft-fixed-h/vendor/rational_fft/exact.py b/research/rational-fft-fixed-h/vendor/rational_fft/exact.py new file mode 100644 index 0000000000..aae41e6acf --- /dev/null +++ b/research/rational-fft-fixed-h/vendor/rational_fft/exact.py @@ -0,0 +1,242 @@ +"""Exact complex rational arithmetic for coefficient and rounded-gate certificates. + +Jose Manuel (jmbarrancoml), with substantial OpenAI Codex assistance. +Apache-2.0. +""" +from fractions import Fraction as Q +from hashlib import sha256 + +TRACK = None + + +def need(ok, message): + if not ok: + raise ValueError(message) + + +def qheight(value): + return max(abs(value.numerator).bit_length(), value.denominator.bit_length()) + + +class C: + __slots__ = ("re", "im") + + def __init__(self, re=0, im=0): + need(type(re) in (int, Q) and type(im) in (int, Q), "exact rational components") + self.re, self.im = Q(re), Q(im) + if TRACK is not None: + TRACK["max_observed_height"] = max(TRACK["max_observed_height"], + qheight(self.re), qheight(self.im)) + + @staticmethod + def wrap(value): + return value if isinstance(value, C) else C(value) + + def __add__(self, other): + other = C.wrap(other) + return C(self.re + other.re, self.im + other.im) + + __radd__ = __add__ + + def __neg__(self): + return C(-self.re, -self.im) + + def __sub__(self, other): + return self + -C.wrap(other) + + def __rsub__(self, other): + return C.wrap(other) + -self + + def __mul__(self, other): + other = C.wrap(other) + return C(self.re * other.re - self.im * other.im, + self.re * other.im + self.im * other.re) + + __rmul__ = __mul__ + + def conjugate(self): + return C(self.re, -self.im) + + def norm2(self): + return self.re * self.re + self.im * self.im + + def __truediv__(self, other): + other = C.wrap(other) + denominator = other.norm2() + need(denominator > 0, "nonzero divisor") + product = self * other.conjugate() + return C(product.re / denominator, product.im / denominator) + + def __rtruediv__(self, other): + return C.wrap(other) / self + + def __eq__(self, other): + if not isinstance(other, C) and type(other) not in (int, Q): + return False + other = C.wrap(other) + return self.re == other.re and self.im == other.im + + def record(self): + return [str(self.re), str(self.im)] + + +class Vec(list): + def __init__(self, values): + super().__init__(C.wrap(x) for x in values) + + def __mul__(self, other): + if isinstance(other, C) or type(other) in (int, Q): + return Vec(x * other for x in self) + need(len(self) == len(other), "elementwise vector dimensions") + return Vec(x * y for x, y in zip(self, other)) + + __rmul__ = __mul__ + + def __sub__(self, other): + need(len(self) == len(other), "vector subtraction dimensions") + return Vec(x - y for x, y in zip(self, other)) + + def copy(self): + return Vec(self) + + def __truediv__(self, scalar): + return Vec(x / scalar for x in self) + + +class Mat(list): + def __init__(self, rows): + super().__init__([C.wrap(x) for x in row] for row in rows) + + def __rmul__(self, scalar): + return Mat([[scalar * x for x in row] for row in self]) + + @property + def shape(self): + return (len(self), len(list.__getitem__(self, 0)) if self else 0) + + def __getitem__(self, key): + if not isinstance(key, tuple): + return list.__getitem__(self, key) + row, column = key + if isinstance(row, slice): + rows = list.__getitem__(self, row) + return Mat([r[column] for r in rows]) if isinstance(column, slice) else Vec(r[column] for r in rows) + selected = list.__getitem__(self, row) + return Vec(selected[column]) if isinstance(column, slice) else selected[column] + + +def eye(n): + return Mat([[int(i == j) for j in range(n)] for i in range(n)]) + + +def adjoint(matrix): + return Mat([[matrix[j][i].conjugate() for j in range(len(matrix))] + for i in range(len(matrix[0]))]) + + +def multiply(left, right): + return Mat([[sum((x * right[k][j] for k, x in enumerate(row)), C()) + for j in range(len(right[0]))] for row in left]) + + +def unitary(matrix): + return multiply(adjoint(matrix), matrix) == eye(len(matrix)) + + +def inverse_gate(matrix): + if unitary(matrix): + return adjoint(matrix) + if matrix.shape == (1, 1): + return Mat([[1 / matrix[0][0]]]) + if matrix.shape == (2, 2) and matrix[0][0] == matrix[1][1] == 1 and matrix[0][1] == 0: + return Mat([[1, 0], [-matrix[1][0], 1]]) + raise ValueError("unsupported nonunitary inverse gate") + + +def round_q(value, bits): + scale = 1 << bits + shifted = value * scale + Q(1, 2) + return Q(shifted.numerator // shifted.denominator, scale) + + +def rounded(value, bits): + return C(round_q(value.re, bits), round_q(value.im, bits)) + + +def norm2(vector): + return sum((x.norm2() for x in vector), Q(0)) + + +def component_l1(vector): + return sum((abs(x.re) + abs(x.im) for x in vector), Q(0)) + + +def ceil_log2(value): + value = Q(value) + need(value > 0, "positive logarithm bound") + result = value.numerator.bit_length() - value.denominator.bit_length() + power = Q(1 << result) if result >= 0 else Q(1, 1 << -result) + while power < value: + result += 1 + power *= 2 + while power / 2 >= value: + result -= 1 + power /= 2 + return result + + +def upper(value, bits=160): + scale = 1 << bits + scaled = value * scale + return Q(-((-scaled.numerator) // scaled.denominator), scale) + + +def vector_hash(vector): + digest = sha256() + for entry in vector: + for value in (entry.re, entry.im): + for integer in (value.numerator, value.denominator): + raw = abs(integer).to_bytes(max(1, (abs(integer).bit_length() + 7) // 8), "big") + digest.update(bytes([integer < 0])) + digest.update(len(raw).to_bytes(8, "big")) + digest.update(raw) + return digest.hexdigest() + + +def apply(plan, vector, bits=None): + global TRACK + state = Vec(vector) + old_track = TRACK + stats = {"max_observed_height": 0, "max_grid_numerator_bits": 0, + "max_reduced_fractional_bits": 0, "rounded_outputs": 0} + if bits is not None: + need(bits >= 1, "positive data precision") + for entry in state: + for value in (entry.re, entry.im): + need((value * (1 << bits)).denominator == 1, "input already on data grid") + TRACK = stats + try: + for layer in plan: + used = set() + for ids, gate in layer: + need(len(ids) == len(gate) in (1, 2), "one- or two-wire gate") + need(not used.intersection(ids) and len(set(ids)) == len(ids), "disjoint layer") + need(all(0 <= i < len(state) for i in ids), "wire bounds") + used.update(ids) + before = [state[i] for i in ids] + outputs = [sum((a * x for a, x in zip(row, before)), C()) for row in gate] + for i, value in zip(ids, outputs): + if bits is not None: + value = rounded(value, bits) + stats["rounded_outputs"] += 1 + for part in (value.re, value.im): + grid_integer = part * (1 << bits) + need(grid_integer.denominator == 1, "rounded output grid") + stats["max_grid_numerator_bits"] = max(stats["max_grid_numerator_bits"], + abs(grid_integer.numerator).bit_length()) + stats["max_reduced_fractional_bits"] = max(stats["max_reduced_fractional_bits"], + part.denominator.bit_length() - 1) + state[i] = value + finally: + TRACK = old_track + return state, stats From 6f17e6208a78cfade27f5c8f03383256f586ab24 Mon Sep 17 00:00:00 2001 From: Jose Manuel <118126596+jmbarrancoml@users.noreply.github.com> Date: Tue, 20 Oct 2026 23:22:03 +0200 Subject: [PATCH 2/5] Lower rational FFT circuits to fixed Hadamard stages --- research/rational-fft-fixed-h/PROOF.md | 308 + research/rational-fft-fixed-h/README.md | 125 + research/rational-fft-fixed-h/RESULT.json | 18170 +++++++++++++++++++ research/rational-fft-fixed-h/SOURCES.json | 18 + research/rational-fft-fixed-h/TASK.json | 56 + research/rational-fft-fixed-h/VERIFY.json | 30 + research/rational-fft-fixed-h/lowering.py | 355 + research/rational-fft-fixed-h/verify.py | 308 + 8 files changed, 19370 insertions(+) create mode 100644 research/rational-fft-fixed-h/PROOF.md create mode 100644 research/rational-fft-fixed-h/README.md create mode 100644 research/rational-fft-fixed-h/RESULT.json create mode 100644 research/rational-fft-fixed-h/SOURCES.json create mode 100644 research/rational-fft-fixed-h/TASK.json create mode 100644 research/rational-fft-fixed-h/VERIFY.json create mode 100644 research/rational-fft-fixed-h/lowering.py create mode 100644 research/rational-fft-fixed-h/verify.py diff --git a/research/rational-fft-fixed-h/PROOF.md b/research/rational-fft-fixed-h/PROOF.md new file mode 100644 index 0000000000..302955f306 --- /dev/null +++ b/research/rational-fft-fixed-h/PROOF.md @@ -0,0 +1,308 @@ +# Fixed-H lowering of the retained rational FFT + +I bind the actual rational FFT producer from PR4205 to Vlado's retained +six-H word and Beneš compiler. I retain both source algorithms and add +the gate connection, precision allocation and storage contract below. +I use classical LDU factorization and norm perturbation methods. + +## Domain and result + +Let the complete field have size $N=2^m$. Select an ordered list $I$ +of $n=2^d\le N$ distinct addresses. Let $F_I$ act as the normalized +DFT on that ordered list and as identity on the other coordinates. +Take a rational $R\ge\max(1,\|x\|_2)$, target integer $t\ge1$, +and complex rational input on the $2^{-F_0}$ grid, $F_0\ge0$. +I use Euclidean norms and their induced operator norms throughout. + +For $n\ge2$, define + +\[ +L=d+1,\quad J=L(16m+5),\quad M=L(8m+3),\quad h=L(8m+2), +\qquad K=2^{14}. +\] + +I use $J$ for primitive stages, $M$ for diagonal stages and +$h$ for whole-field Hadamard stages. I preserve the source's +possibly empty bit-reversal layer. I choose + +\[ +P=\max\{3,\ t+\lceil\log_2(8d(R+1))\rceil\}, +\] +\[ +\boxed{F=\max\left\{F_0, +t+\lceil\log_2(16MK^2(R+1))\rceil, +t+\lceil\log_2(16KJN)\rceil\right\}.} \tag{1} +\] + +I use the retained phase contract: its rational unit phases have +component height at most $2P+12$ and error at most $2^{-P}$, +with the stated certified interval enclosures. I authenticate the +unchanged producer and oracle before execution. This contribution does +not independently reprove the interval backend's universal correctness. + +I prepare exact rational diagonal references, round their components to +the $F$-grid, and round after **each** emitted diagonal or $H_0$ stage, +where +\[ +H=\begin{pmatrix}1&1\\1&-1\end{pmatrix},\qquad H_0=H/2. +\] +With nearest component rounding, including its stated upward tie rule, +I obtain +\[ +\|\widehat y-F_Ix\|_2<\tfrac34\,2^{-t}. \tag{2} +\] +The same statement holds for the original producer's stored adjoint and +target $F_I^*$. I retain finer incoming grids. Coefficient records, +data records and arithmetic temporaries require +\[ +O(F_0+t+\log N+\log R) +\] +bits per signed component. I give explicit widths below. + +For $n=1$, I retain the empty source plan and return the input exactly. +I make no bit-zero Hadamard call when $N=1$. I use +$F=\max(F_0,1)$ for the empty-program record; all three errors are zero. + +## Rational butterfly and its stored adjoint + +The frozen producer emits +\[ +B=\begin{pmatrix}a&bw\\b&-aw\end{pmatrix},\qquad +a^2+b^2=|w|^2=1,\quad a,b\ge\tfrac12. +\] +Its splitter approximates $e^{i\pi/4}$ with component-l1 error at most +$2^{-P}\le1/8$, which implies the last inequalities. I also check them +before lowering each actual gate. The older `gateword('fft',w)` has +endpoint $H\operatorname{diag}(1,w)$; it is a different matrix. + +Write $U(q)=\left[\begin{smallmatrix}1&q\\0&1\end{smallmatrix}\right]$, +$L(q)=U(q)^T$, and $D(s,t)=\operatorname{diag}(s,t)$. +For $q\ne0$, the retained `u3` executes +\[ +D(1/c,1),H,D(-3,1),H,D(2,1),H,D(-c/8,-1/6), +\qquad c=4q/5. +\] +I can verify its endpoint without a symbolic backend: the middle +product $HD(2,1)HD(-3,1)H$ is +\(\left[\begin{smallmatrix}-8&-10\\0&-6\end{smallmatrix}\right]\). +The two outside diagonals therefore give $U(q)$. + +Set $r=b/a$, $s=rw$. Both parameters have modulus between $1/2$ +and two. Then +\[ +B=L(r)D(a,-w/a)U(s). +\] +I call the unchanged `u3`, `D` and `canonical` functions on +`u3(s) + [D(a,-w/a)] + reversed(u3(r))`. In execution order the +seven diagonals of $D_0,H,D_1,H,\ldots,H,D_6$ are + +| Index | Diagonal entries | +|---|---| +| 0 | $5a/(4bw),1$ | +| 1 | $-3,1$ | +| 2 | $2,1$ | +| 3 | $b^2w/(100a),-w/(36a)$ | +| 4 | $2,1$ | +| 5 | $-3,1$ | +| 6 | $5a/(4b),1$ | + +Thus I keep six Hadamards, rather than concatenating three generic +six-H words. For the stored adjoint I reverse and conjugate this raw +word. Conjugating only $w$ in the forward butterfly would put the +twiddle on the wrong side. I compare the exact word endpoint with the +actual frozen gate matrix before routing it. + +All raw diagonal moduli are at most three, and their reciprocal moduli +are at most 400. For any contiguous raw-word segment, multiplication +of factor norms gives the direct allowance +$(5/2)^2\,3^2\,2^2\,(\sqrt2)^6=1800$. +For inverse segments, I use $\|H^{-1}\|=1/\sqrt2\le1$, the two +outside inverse bounds $8/5$, and the middle inverse bound 400. +Their product is 1024; the other inverse diagonal norms are at most one. +These estimates also hold for the reversed conjugate word. + +Replace each raw $H$ by $H_0$, and double its immediately following +diagonal. In the resulting word any contiguous segment differs from +the corresponding raw segment by a scalar in $\{1/2,1,2\}$. +Consequently 4096 bounds its direct and inverse norms. +Native diagonal moduli are at most six. For stored phase-component +height $2P+12$, the displayed formulas and $1/w=\bar w$ give +reduced component height at most $8P+64$, including compensation. +All rational divisions belong to coefficient preparation. + +## Complete routing and inactive pairs + +I extract nine unchanged functions from the pinned tensor source: +`benes`, `D`, `u3`, `id2`, `id3`, `canonical`, `gateword`, +`matching_permutation`, and `local_layer`. I substitute exact rational +scalar operations for the needed `s` operations and compile the +untouched function AST with assertions enabled. I execute no SymPy +imports or unrelated source tests. + +The source sends input $i$ to output $p[i]$. An oriented pair +$(a,b)$ goes to $(2j,2j+1)$. I preserve this order and complete +unused addresses with full identity words. All-one diagonal padding +would give $H^6=8I$, not identity. The completed native identity word +can still incur data-rounding error; I charge those sites below. + +For completeness, I retain the source's Beneš induction. Regard the +input pairs and output pairs as vertices of a bipartite graph, with one +edge per wire. Each vertex has degree two. Alternating colors around +its even cycles give one edge of each color at each pair. The first +switch sends color $c$ to parity $c$; the final switch restores the +required output order. Each color induces a permutation of $N/2$ +pairs, which the source routes recursively. Its two parallel subnets +have equal depth and a common bit at each layer. From depth one at +$N=2$, induction gives $2m-1$ switch layers. Reversing the layers +inverts the route because each switch is an involution. + +Each source switch layer executes $H,D(1,\pm1),H,D(1/2,1/2)$. +After native compensation it executes +$H_0,D(2,\pm2),H_0,I$. Its completed map is a permutation, and +its exact prefixes and inverse prefixes have norm at most $\sqrt2$. +The retained identity and swap central words have smaller envelopes +than the butterfly word above. + +The left route, central word and right route therefore contribute +$8(2m-1)+13=16m+5$ primitive stages per logical layer, including +$8m+2$ Hadamards and $8m+3$ diagonals. I retain adjacent diagonal +stages and their distinct rounding sites. These counts apply even to +the empty bit-reversal layer of the two-wire FFT. + +Every completed original matching layer is unitary, including its +inactive coordinates. Its incomplete central prefixes are direct sums +of bounded two-wire prefixes; its routing prefixes have the bound just +proved. Hence $K=2^{14}$ bounds each exact prefix, inverse prefix and +suffix of the entire lowered FFT. The same argument handles its stored +adjoint. I do not multiply this allowance once per completed FFT layer. +For arbitrary exact segments, $K^2=2^{28}$ suffices. + +## Coefficient perturbation and data rounding + +Put $u=2^{-F}$. Component rounding changes a diagonal entry by at +most $\varepsilon=2u$ in complex modulus. Therefore each complete +diagonal operator changes by norm at most $\varepsilon$, independent +of the number of entries. Only the $M$ diagonal stages have this +coefficient perturbation. + +Let $P_j$ denote the exact native prefix through stage $j$, and +let $\Delta_j$ denote a diagonal perturbation. In exact-prefix +coordinates the perturbed step is $I+T_j$, where +\[ +T_j=P_j^{-1}\Delta_jP_{j-1},\qquad +\|T_j\|\le K^2\varepsilon. +\] +Equation (1) implies +$MK^2\varepsilon\le2^{-t}/[8(R+1)]<1/2$. +I use $\prod(1+\|T_j\|)\le e^{MK^2\varepsilon}<2$ and +$e^v-1\le2v$ for $0\le v\le1/2$. +At the completed endpoint, $P_J$ is unitary. Thus +\[ +\|\widehat U-U\|\le2MK^2\varepsilon. \tag{3} +\] +Perturbed prefixes and suffixes have norm at most $2K$, and +perturbed arbitrary segments have norm at most $2K^2$. + +I now charge rounding after each primitive stage. At most $N$ complex +entries change, so $2Nu$ is a sufficient Euclidean allowance at each +site. Propagating those residuals through the perturbed suffixes gives +\[ +\|\widehat y-Ux\|_2 +\le4MK^2uR+4KJNu. \tag{4} +\] +This includes routing, inactive words and the normalized Hadamard +outputs. I do not assume exact restoration of idle data after rounding. + +For the original FFT, the splitter matrix differs from the ideal +normalized splitter by at most $2^{-P}$ in operator norm, and its +diagonal unit twiddle differs by at most $2^{-P}$. Each butterfly +layer therefore differs by at most $2\,2^{-P}$. Telescoping the +$d$ unitary layers gives +\[ +\|U-F_I\|\le2d\,2^{-P}. +\] +Taking adjoints preserves the same estimate. I obtain the full bound +\[ +\boxed{\|\widehat y-F_Ix\|_2 +\le2d\,2^{-P}R+4MK^2uR+4KJNu<\tfrac34\,2^{-t}.} \tag{5} +\] +Each of the three allocations in (1) pays its corresponding term. + +The original rational FFT and its stored adjoint form a unitary pair. +The two new dyadic-coefficient programs generally do not form an exact +inverse pair. Inverting an expanded quantized word requires reciprocals +of its actual stored factors; lowering the original adjoint is a +different operation. I claim the two approximation bounds in (5). + +## Magnitudes, words and native-call boundary + +The same prefix argument bounds actual states by +\[ +2KR+4K^2JNu\le A:=4K(R+1). +\] +Let $I_b=\lceil\log_2 A\rceil+2$. Nearest rounding can increase a +coefficient modulus slightly, but the resulting modulus is below seven. +The following signed widths suffice: + +| Record | Component bits | +|---|---:| +| Rounded coefficient | $F+5$ | +| Stored data | $F+I_b$ | +| Arithmetic temporary | $2F+I_b+6$ | + +For a complex diagonal product I form its four real products and two +component sums before rounding. Their magnitudes are below $16A$, +and their values lie on the $2F$-grid. A Hadamard sum followed by +division by two lies on the $F+1$-grid, which the $2F$-grid contains +because $F\ge1$. These bounds prove the stated word allowance. +The verifier observes these mathematical component temporaries; it +does not trace the implementation internals of Python's `Fraction`. + +The reference implementation performs $4MN$ real diagonal products, +$hN/2$ pair Hadamard operations and $JN$ complex roundings. I retain +the source's stage counts. I keep table generation, storage and movement +distinct from these arithmetic counts and make no fixed-tape cost claim. + +If a physical native call supplies an additional absolute Euclidean +error at most $\sigma$, measured after its caller's scaling, then +the extra endpoint error is at most $2Kh\sigma$. The choice +\[ +\sigma\le2^{-t}/(8Kh) +\] +pays this from the remaining quarter-budget. The additional state term +$2K^2h\sigma\le K2^{-t}/4$ also fits inside $A$. +For $h=0$, no such call occurs. A physical consumer must establish its input-domain, complete +record and spectator conditions as well as this error allowance. +The present verifier executes exact arithmetic $H_0$ followed by the +declared grid rounding; it does not invoke a physical T74 supplier. +Across $g$ tensor axes, raw-H restoration requires $2^g$, rather +than the single-axis factor two used here. + +## Evidence and attribution + +I retain the published arithmetic and FFT producer unchanged, with +original commit and byte provenance. I authenticate the source compiler +before extracting its functions. I compare exact complete native and +retained FFT endpoints on arbitrary signed complex vectors, and complete +basis matrices for fields through size eight. I also compare a direct +Fourier interval formula using the declared phase backend. + +The finite cases cover fields through 64 wires, arbitrary wire order, +partial active fields, the stored adjoint, large input radius, singleton +programs and a 512-bit incoming spectator. I check sixteen standalone +butterfly words and their exact contiguous-segment and inverse envelopes. +I retain explicit controls for compensation, orientation, idle words, +source assertions, precision, source corruption and typed receipts. +These checks corroborate the quantified proof; they are not a proof kernel. + +I credit Vlado Vojdanovski for `u3`, the fixed word format, Beneš routing +and FFT schedule; Chafik Boukhalfa for certified rational phases; and +the classical Fourier, LDU and perturbation methods. I preserve our +PR4205 producer's attribution and the separate PR4178 tensor precision +protocol. I add the connection to the actual rational butterfly and +its complete fixed-grid FFT execution contract. I claim no worldwide +priority for the underlying mathematical methods or new multiplication +exponent. Physical delivery and the complete tensor/outer theorem remain open. + +Jose Manuel (`jmbarrancoml`), with substantial OpenAI Codex assistance. +Internal analysis agents belong to the author process. Apache-2.0. diff --git a/research/rational-fft-fixed-h/README.md b/research/rational-fft-fixed-h/README.md new file mode 100644 index 0000000000..5e56a4de0e --- /dev/null +++ b/research/rational-fft-fixed-h/README.md @@ -0,0 +1,125 @@ +# Rational FFT circuits on fixed Hadamard stages + +I connect PR4205's actual rational FFT and stored adjoint to the retained +six-H/seven-diagonal words and Beneš routing. I preserve the source stage +counts, complete inactive pairs and account for normalization from raw +Hadamard $H$ to $H_0=H/2$. I execute the resulting arithmetic with +rounded diagonal coefficients and rounding after each primitive stage. + +The old `gateword('fft',w)` produces $H\operatorname{diag}(1,w)$. +Our unitary rational butterfly is instead + +\[ +\begin{pmatrix}a&bw\\b&-aw\end{pmatrix},\qquad +a^2+b^2=|w|^2=1. +\] + +I bind it through the existing nonzero-shear helper without increasing +the six-H word count. I lower the original stored adjoint separately; +I do not identify it with the inverse of a quantized expanded word. + +For a dyadic field of size $N$, arbitrary ordered active FFT wires, +Euclidean input bound $R\ge1$, target $2^{-t}$ and incoming grid +$F_0$, I give an explicit allocation with online widths + +\[ +O(F_0+t+\log N+\log R). +\] + +I prove an exact prefix/inverse-prefix bound $K=2^{14}$ independent +of the number of completed FFT layers. I use it to pay coefficient +perturbations and all data-rounding sites, including inactive words. +Under the retained certified phase contract, I obtain error below +$3\cdot2^{-t}/4$ against the normalized DFT or its adjoint. +[PROOF.md](PROOF.md) states the domain, counts, allocation, word widths +and a separate allowance for a future physical native-call error. + +## Source and scope + +I start from canonical main +`12fa8c5c844be21bfefb38a19503fbd867a11244`, priority 7. +I retain the producer at PR4205 head +`78c72e563173f3822fcb4efed9ceeccf05630258` unchanged, with +[original provenance](vendor/PROVENANCE.json). I pin its local archive +at `e417b66e1106da6c44088a1aa63105fd776c9949` for exported source history. +[SOURCES.json](SOURCES.json) binds the actual input bytes. + +I extract nine unchanged functions from `check_tensor_compiler.py`, +substitute exact scalar arithmetic for the needed SymPy scalar operations, +and retain source assertions under optimized Python. I preserve oriented +wire ownership, the complete matching, routing direction and distinct +rounding sites. I authenticate input files before parsing or executing them. + +I execute mathematical $H_0$ arithmetic, followed by the declared grid +rounding. I do not invoke a physical T74 supplier or certify full-stream +tensor admission, coefficient delivery, tape movement or the outer theorem. +The rounded forward and adjoint programs generally are not exact inverses. + +## Verification + +Use CPython 3.12 and its standard library: + +```sh +python3.12 -B scripts/research_package.py --package research/rational-fft-fixed-h +``` + +I declare normal and optimized replays, each with a 120-second limit. +Thirteen cases cover fields through 64 wires, nontrivial wire order, +partial active fields, both directions, a large input radius, singleton +programs and a 512-bit incoming spectator. I execute 2,525 primitive +stages and 73,104 complex roundings. I compare complete exact native and +retained FFT outputs, complete basis matrices through field size eight, +and direct Fourier interval formulas. + +I also check sixteen standalone butterfly words and all 1,456 nonempty +contiguous segments and their inverses. Twenty-three controls cover +normalization, orientation, idle words, source assertions, precision, +source corruption and typed receipts. The inactive-word fixture has +nonzero spectator error, which I include in the total rounding budget. + +The complete [RESULT.json](RESULT.json) digest is +`d735321b0bf6457ad884779b5854ff201e18f79e4bf8df8b32da6f91477b4c9d`. +The Fourier formula shares the declared phase backend; I claim no +independent transcendental implementation. I observe mathematical +component temporaries, not every internal `Fraction` operation. +The finite checks do not establish the quantified proof by themselves. + +## Overlap and attribution + +I refreshed 359 open PR bodies and 3,071 Discussion records with complete +pagination, inspected all fourteen phrase matches and checked eight newer +PR records and 5/900 hub comments. I found our PR4178 tensor precision +protocol and PR4205 producer as relevant predecessors. The other named +matches concern different matrix or connector problems. Broader closed +history, arbitrary diffs and unpublished work remain outside the search. +[Discussion4202](https://github.com/CrocSwap/integer-mult-bounds/discussions/4202) +records the scoped claim and obligation ledger. + +I considered the global core/halo connection as an alternative. The +retained rad20 reports already prove the row-Neumann locality lemma; +that next task needs current-reference and output-ownership binding. +I chose this connection to resolve the rational gate's mismatch with +the existing fixed-H compiler while preserving its stage count. + +I credit Vlado Vojdanovski for the source words, Beneš routing and FFT +schedule; Chafik Boukhalfa/PR628 for certified rational phases; and +Cinna Davis for the later Gaussian caller. I retain the classical +Fourier, LDU and perturbation lineage. Our earlier PR4178 supplies a +distinct rounded tensor-scan protocol with its own caller hypotheses. +I add the rational gate binding and complete fixed-grid FFT contract. + +Jose Manuel (`jmbarrancoml`), with substantial OpenAI Codex assistance in +mathematics, source analysis, implementation and writing. Internal agents +belong to the author process. I claim no independent human or proof-kernel +acceptance, worldwide mathematical priority or selected-frontier change. +Apache-2.0. + +## Open next questions + +- Connect these coefficient bounds and stage signatures to the actual + physical tensor caller, including its unit-disk, complete-record, + normalization and spectator requirements. +- Bind the completed rounded Gaussian core to global halo ownership and + carry the analytic-reference error through the outer computation. + +I keep the exact next steps and remaining costs in [TASK.json](TASK.json). diff --git a/research/rational-fft-fixed-h/RESULT.json b/research/rational-fft-fixed-h/RESULT.json new file mode 100644 index 0000000000..a237a87e1b --- /dev/null +++ b/research/rational-fft-fixed-h/RESULT.json @@ -0,0 +1,18170 @@ +{ + "schema_version": 1, + "scope": "retained rational FFT and stored-adjoint fixed-H stage lowering", + "sources": [ + { + "path": "research/capped-phase-fusion/evidence/inplace_algebra_ultra/check_circuits.py", + "sha256": "06d1861bfe8af543908e26557ffda7e451ff176bceb9bacfaf0f04f234b336d5" + }, + { + "path": "research/capped-phase-fusion/evidence/inplace_algebra_ultra/check_tensor_compiler.py", + "sha256": "dc4b1f1884489215a2c2d0e8978a241e99e6c8c9f1d2fa2460c73d2c7d4ba30a" + }, + { + "path": "research/cubic-cyclic-inverse/vendor/interval_kernel.py", + "sha256": "9b7bb24640a9a7d3f83c7951dfef483ec933db4c50de6c0130b85f450eeddfbe" + }, + { + "path": "research/cubic-cyclic-inverse/vendor/PR628-PROOF.md", + "sha256": "595893609764c64a90d9b21b9cbd6d9e61980703f3deb43361105cf8c3d1d093" + }, + { + "path": "research/cubic-cyclic-inverse/vendor/PR628-NOTICE.md", + "sha256": "abeacf1ad1491d5797cfcf1f3832799bbf3b24b99597229d7bc884059a51ec68" + }, + { + "path": "research/capped-phase-fusion/TENSOR-COMPILER.md", + "sha256": "4d3b8466598a864a234b978e25976648d4e761840aad9153dd18d73d3dfe4d15" + }, + { + "path": "research/unconditional-batched-crt/GAUSSIAN.md", + "sha256": "2f63c91c58f2d1cf31294812c75970ea390c61866a8da7ed700d4316a033a242" + }, + { + "path": "research/rational-fft-fixed-h/vendor/rational_fft/engine.py", + "sha256": "9e36aee0835e6b1b62997433581f88b5a434ccab8ae43e5c25d1deaaf1ebf653" + }, + { + "path": "research/rational-fft-fixed-h/vendor/rational_fft/exact.py", + "sha256": "c9b89d7357210af69865690ba12e695366961f8b501a8fab9d0fefe3fb30c479" + }, + { + "path": "research/rational-fft-fixed-h/vendor/PROVENANCE.json", + "sha256": "302a23bacdb464ef8f1c5d6c87cf72ce846c52c34bd69d245a51c1972e9852f2" + } + ], + "tensor_ast_sha256": "2b5d66a710ef21aaa1bcfc1db64267067455a5ba465694876a1c2a57fda2f357", + "word_cases": [ + { + "a": "3/5", + "b": "4/5", + "phase": [ + "1", + "0" + ], + "adjoint": false, + "endpoint_sha256": "2cd80eadbcfb77ffbc39cc08c2baf66b84233266260b17e189d609bc6609e2a0", + "envelopes": { + "segments": 91, + "forward_frobenius_squared_upper": "769/2", + "inverse_frobenius_squared_upper": "13527107438266744995041684920597565233095391503250883/1461501637330902918203684832716283019655932542976" + } + }, + { + "a": "3/5", + "b": "4/5", + "phase": [ + "1", + "0" + ], + "adjoint": true, + "endpoint_sha256": "2cd80eadbcfb77ffbc39cc08c2baf66b84233266260b17e189d609bc6609e2a0", + "envelopes": { + "segments": 91, + "forward_frobenius_squared_upper": "769/2", + "inverse_frobenius_squared_upper": "13527107438266744995041684920597565233095391503250883/1461501637330902918203684832716283019655932542976" + } + }, + { + "a": "3/5", + "b": "4/5", + "phase": [ + "-1", + "0" + ], + "adjoint": false, + "endpoint_sha256": "b94753ecee6b84dec3fa8abce62f3b868907cee68451a7d9b04e1154a90078c6", + "envelopes": { + "segments": 91, + "forward_frobenius_squared_upper": "769/2", + "inverse_frobenius_squared_upper": "13527107438266744995041684920597565233095391503250883/1461501637330902918203684832716283019655932542976" + } + }, + { + "a": "3/5", + "b": "4/5", + "phase": [ + "-1", + "0" + ], + "adjoint": true, + "endpoint_sha256": "b07c201defe220f91e5675d43ff90aca04d1210bcf0efbbfcfe74879875dbb5d", + "envelopes": { + "segments": 91, + "forward_frobenius_squared_upper": "769/2", + "inverse_frobenius_squared_upper": "13527107438266744995041684920597565233095391503250883/1461501637330902918203684832716283019655932542976" + } + }, + { + "a": "3/5", + "b": "4/5", + "phase": [ + "0", + "1" + ], + "adjoint": false, + "endpoint_sha256": "4240a49da9fc9e0ea10dc3e6d293edf02c2148e6506af187ea1a08aec1a35e79", + "envelopes": { + "segments": 91, + "forward_frobenius_squared_upper": "769/2", + "inverse_frobenius_squared_upper": "13527107438266744995041684920597565233095391503250883/1461501637330902918203684832716283019655932542976" + } + }, + { + "a": "3/5", + "b": "4/5", + "phase": [ + "0", + "1" + ], + "adjoint": true, + "endpoint_sha256": "3b21e924c80f2ef1285afc3705887b2763437802f2911dd3f4564658dd11a950", + "envelopes": { + "segments": 91, + "forward_frobenius_squared_upper": "769/2", + "inverse_frobenius_squared_upper": "13527107438266744995041684920597565233095391503250883/1461501637330902918203684832716283019655932542976" + } + }, + { + "a": "3/5", + "b": "4/5", + "phase": [ + "3/5", + "4/5" + ], + "adjoint": false, + "endpoint_sha256": "083fe5f104b9b3d2bdf357bc10562a37f3369392dce4fd29a8891d48a633a3af", + "envelopes": { + "segments": 91, + "forward_frobenius_squared_upper": "769/2", + "inverse_frobenius_squared_upper": "13527107438266744995041684920597565233095391503250883/1461501637330902918203684832716283019655932542976" + } + }, + { + "a": "3/5", + "b": "4/5", + "phase": [ + "3/5", + "4/5" + ], + "adjoint": true, + "endpoint_sha256": "ec2532fcaa0370d0e81f7cac225c415f8957eba15b2c7661a26ad34a5e40cfe2", + "envelopes": { + "segments": 91, + "forward_frobenius_squared_upper": "769/2", + "inverse_frobenius_squared_upper": "13527107438266744995041684920597565233095391503250883/1461501637330902918203684832716283019655932542976" + } + }, + { + "a": "33/65", + "b": "56/65", + "phase": [ + "1", + "0" + ], + "adjoint": false, + "endpoint_sha256": "05e0362c3e61679a765571b04c19874a2309697461d3bede2b262ffc24fe7bc8", + "envelopes": { + "segments": 91, + "forward_frobenius_squared_upper": "499031971058938838516951559117963688515119680981619/1461501637330902918203684832716283019655932542976", + "inverse_frobenius_squared_upper": "1831444686451524753522241871135875818494024102574291/365375409332725729550921208179070754913983135744" + } + }, + { + "a": "33/65", + "b": "56/65", + "phase": [ + "1", + "0" + ], + "adjoint": true, + "endpoint_sha256": "05e0362c3e61679a765571b04c19874a2309697461d3bede2b262ffc24fe7bc8", + "envelopes": { + "segments": 91, + "forward_frobenius_squared_upper": "499031971058938838516951559117963688515119680981619/1461501637330902918203684832716283019655932542976", + "inverse_frobenius_squared_upper": "1831444686451524753522241871135875818494024102574291/365375409332725729550921208179070754913983135744" + } + }, + { + "a": "33/65", + "b": "56/65", + "phase": [ + "-1", + "0" + ], + "adjoint": false, + "endpoint_sha256": "0ba8dfddd3b1cd44f0449ee97e7a4dfec1d692bab9bce8e48dc754127d19a179", + "envelopes": { + "segments": 91, + "forward_frobenius_squared_upper": "499031971058938838516951559117963688515119680981619/1461501637330902918203684832716283019655932542976", + "inverse_frobenius_squared_upper": "1831444686451524753522241871135875818494024102574291/365375409332725729550921208179070754913983135744" + } + }, + { + "a": "33/65", + "b": "56/65", + "phase": [ + "-1", + "0" + ], + "adjoint": true, + "endpoint_sha256": "38d5646769f5a6d98d3a003cc01bc2889220d586b1e8c6329cacb52759089d89", + "envelopes": { + "segments": 91, + "forward_frobenius_squared_upper": "499031971058938838516951559117963688515119680981619/1461501637330902918203684832716283019655932542976", + "inverse_frobenius_squared_upper": "1831444686451524753522241871135875818494024102574291/365375409332725729550921208179070754913983135744" + } + }, + { + "a": "33/65", + "b": "56/65", + "phase": [ + "0", + "1" + ], + "adjoint": false, + "endpoint_sha256": "e5334921fd1e50735a1e704947db4ce1448196357bb16d3b94006f81129cb5af", + "envelopes": { + "segments": 91, + "forward_frobenius_squared_upper": "499031971058938838516951559117963688515119680981619/1461501637330902918203684832716283019655932542976", + "inverse_frobenius_squared_upper": "1831444686451524753522241871135875818494024102574291/365375409332725729550921208179070754913983135744" + } + }, + { + "a": "33/65", + "b": "56/65", + "phase": [ + "0", + "1" + ], + "adjoint": true, + "endpoint_sha256": "1dec16274dc638330c79c0250489fbc187491a5a08ec45a154f03fa0039012d6", + "envelopes": { + "segments": 91, + "forward_frobenius_squared_upper": "499031971058938838516951559117963688515119680981619/1461501637330902918203684832716283019655932542976", + "inverse_frobenius_squared_upper": "1831444686451524753522241871135875818494024102574291/365375409332725729550921208179070754913983135744" + } + }, + { + "a": "33/65", + "b": "56/65", + "phase": [ + "3/5", + "4/5" + ], + "adjoint": false, + "endpoint_sha256": "d18faa84d47293d8cb608a304eceb36e60c1d3ceb1ad06cb12ad76ae0e774fd4", + "envelopes": { + "segments": 91, + "forward_frobenius_squared_upper": "499031971058938838516951559117963688515119680981619/1461501637330902918203684832716283019655932542976", + "inverse_frobenius_squared_upper": "1831444686451524753522241871135875818494024102574291/365375409332725729550921208179070754913983135744" + } + }, + { + "a": "33/65", + "b": "56/65", + "phase": [ + "3/5", + "4/5" + ], + "adjoint": true, + "endpoint_sha256": "47cdf7ecfd6ecfc05c5719663897cef99066027800ac51f9b589b7db4616fff1", + "envelopes": { + "segments": 91, + "forward_frobenius_squared_upper": "499031971058938838516951559117963688515119680981619/1461501637330902918203684832716283019655932542976", + "inverse_frobenius_squared_upper": "1831444686451524753522241871135875818494024102574291/365375409332725729550921208179070754913983135744" + } + } + ], + "cases": [ + { + "field_size": 1, + "active_indices": [ + 0 + ], + "adjoint": false, + "radius": "1", + "target_bits": 18, + "incoming_bits": 3, + "phase_bits": 3, + "data_bits": 3, + "observed_coefficient_bits": 0, + "counts": { + "logical_layers": 0, + "primitive_stages": 0, + "diagonal_stages": 0, + "hadamard_stages": 0 + }, + "layers": [], + "logical_plan_sha256": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945", + "reference_stages_sha256": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945", + "stored_stages_sha256": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945", + "source_original_ast_sha256": "15211aaf783ddbe8714fb7c5c039e932422028d729566ce763a4c8016a82e537", + "source_adapted_ast_sha256": "550954f4c90dde9cae269f71042d223a2cba81d5a91dcfa7219fb36f338d1313", + "tensor_ast_sha256": "2b5d66a710ef21aaa1bcfc1db64267067455a5ba465694876a1c2a57fda2f357", + "phases": { + "phase_bits": 3, + "oracle_bits": 70, + "certificates": [] + }, + "budget": { + "prefix_bound": 16384, + "phase_error": "0", + "coefficient_error": "0", + "rounding_error": "0", + "total_error": "0", + "amplitude_bound": "131072", + "coefficient_bits": 8, + "data_bits": 22, + "temporary_bits": 31 + }, + "label": "singleton", + "input_sha256": "d3de3ed91c46d58501896e69b24b692ad83efe11469b5a82f893aef1bc2d954c", + "output_sha256": "d3de3ed91c46d58501896e69b24b692ad83efe11469b5a82f893aef1bc2d954c", + "rational_target_sha256": "d3de3ed91c46d58501896e69b24b692ad83efe11469b5a82f893aef1bc2d954c", + "exact_matrix_sha256": "e3bc0d733fd40f40b19849ffbe067cc708c713cdf241c1b30c05426e9472f697", + "rounded_rational_error_squared_upper": "0", + "ideal_error_squared_upper": "0", + "nonzero_rounded_error": false, + "nonzero_spectator_error": false, + "spectator_error_squared_upper": "0", + "statistics": { + "real_products": 0, + "complex_roundings": 0, + "h_pair_calls": 0, + "maximum_data_numerator_bits": 0, + "maximum_temporary_numerator_bits": 0, + "maximum_temporary_fractional_bits": 0 + }, + "trace": [] + }, + { + "field_size": 2, + "active_indices": [ + 0, + 1 + ], + "adjoint": false, + "radius": "1", + "target_bits": 18, + "incoming_bits": 4, + "phase_bits": 22, + "data_bits": 56, + "observed_coefficient_bits": 60, + "counts": { + "logical_layers": 2, + "primitive_stages": 42, + "diagonal_stages": 22, + "hadamard_stages": 20 + }, + "layers": [ + { + "begin": 0, + "end": 21, + "pairs": [ + [ + 0, + 1 + ] + ], + "kinds": [ + "idle" + ], + "permutation": [ + 0, + 1 + ], + "route_layers": 1 + }, + { + "begin": 21, + "end": 42, + "pairs": [ + [ + 0, + 1 + ] + ], + "kinds": [ + "butterfly" + ], + "permutation": [ + 0, + 1 + ], + "route_layers": 1 + } + ], + "logical_plan_sha256": "ac69e91734e3d446581dd69ab4bfbd29d9715243d1d1e7c6b0d9d955b239c0d1", + "reference_stages_sha256": "b5b50337d879338820d9c5e171204ab18477d857b820bf69a18edf9a06215ce1", + "stored_stages_sha256": "8bb14585b9ffdc927db656ce1492569d4094bad0c38896b12860faa831d7841b", + "source_original_ast_sha256": "15211aaf783ddbe8714fb7c5c039e932422028d729566ce763a4c8016a82e537", + "source_adapted_ast_sha256": "550954f4c90dde9cae269f71042d223a2cba81d5a91dcfa7219fb36f338d1313", + "tensor_ast_sha256": "2b5d66a710ef21aaa1bcfc1db64267067455a5ba465694876a1c2a57fda2f357", + "phases": { + "phase_bits": 22, + "oracle_bits": 108, + "certificates": [ + { + "denominator": 1, + "numerator": 0, + "unit": [ + "1", + "0" + ], + "error_bound": "0", + "parameter": null + }, + { + "denominator": 8, + "numerator": 1, + "unit": [ + "932726017355223/1319073796330025", + "932726035185664/1319073796330025" + ], + "error_bound": "5786308924411911904730226748114997499721/428063920553749865556834761428387175078454886400", + "parameter": "13898701/33554432" + } + ] + }, + "budget": { + "prefix_bound": 16384, + "phase_error": "1/2097152", + "coefficient_error": "11/33554432", + "rounding_error": "21/274877906944", + "total_error": "221205/274877906944", + "amplitude_bound": "131072", + "coefficient_bits": 61, + "data_bits": 75, + "temporary_bits": 137 + }, + "label": "two-forward", + "input_sha256": "07d93909b086db3dd0a2459b68119640a145b693a3575b68e9e94389032dc627", + "output_sha256": "0a4d55592a85f332627acc5d74ecf4c43d10073826492095284d7858d487403a", + "rational_target_sha256": "63458b27d97e14d21df7016da4a1efdf71be8bcc5bad2a82305f858e57bb63bd", + "exact_matrix_sha256": "bb46cab753805250a5ff9f33f3bac8461fa2f13f53611c926fc5c76dd427b869", + "rounded_rational_error_squared_upper": "10503596711631079/730750818665451459101842416358141509827966271488", + "ideal_error_squared_upper": "5737305851451562385791811826633/730750818665451459101842416358141509827966271488", + "nonzero_rounded_error": true, + "nonzero_spectator_error": false, + "spectator_error_squared_upper": "0", + "statistics": { + "real_products": 176, + "complex_roundings": 84, + "h_pair_calls": 20, + "maximum_data_numerator_bits": 57, + "maximum_temporary_numerator_bits": 114, + "maximum_temporary_fractional_bits": 107 + }, + "trace": [ + { + "stage": 0, + "kind": "H", + "output_sha256": "e6b26fe0838a150ba355288062e404d8e6d3b6886d8adc3ca43faad986a2573c" + }, + { + "stage": 1, + "kind": "D", + "output_sha256": "0711c50d06762c158b513e6f96acb97c206dd0f8eec3ee73347d9d6e1a5b469f" + }, + { + "stage": 2, + "kind": "H", + "output_sha256": "07d93909b086db3dd0a2459b68119640a145b693a3575b68e9e94389032dc627" + }, + { + "stage": 3, + "kind": "D", + "output_sha256": "07d93909b086db3dd0a2459b68119640a145b693a3575b68e9e94389032dc627" + }, + { + "stage": 4, + "kind": "D", + "output_sha256": "07d93909b086db3dd0a2459b68119640a145b693a3575b68e9e94389032dc627" + }, + { + "stage": 5, + "kind": "H", + "output_sha256": "e6b26fe0838a150ba355288062e404d8e6d3b6886d8adc3ca43faad986a2573c" + }, + { + "stage": 6, + "kind": "D", + "output_sha256": "0711c50d06762c158b513e6f96acb97c206dd0f8eec3ee73347d9d6e1a5b469f" + }, + { + "stage": 7, + "kind": "H", + "output_sha256": "07d93909b086db3dd0a2459b68119640a145b693a3575b68e9e94389032dc627" + }, + { + "stage": 8, + "kind": "D", + "output_sha256": "07d93909b086db3dd0a2459b68119640a145b693a3575b68e9e94389032dc627" + }, + { + "stage": 9, + "kind": "H", + "output_sha256": "e6b26fe0838a150ba355288062e404d8e6d3b6886d8adc3ca43faad986a2573c" + }, + { + "stage": 10, + "kind": "D", + "output_sha256": "0711c50d06762c158b513e6f96acb97c206dd0f8eec3ee73347d9d6e1a5b469f" + }, + { + "stage": 11, + "kind": "H", + "output_sha256": "07d93909b086db3dd0a2459b68119640a145b693a3575b68e9e94389032dc627" + }, + { + "stage": 12, + "kind": "D", + "output_sha256": "07d93909b086db3dd0a2459b68119640a145b693a3575b68e9e94389032dc627" + }, + { + "stage": 13, + "kind": "H", + "output_sha256": "e6b26fe0838a150ba355288062e404d8e6d3b6886d8adc3ca43faad986a2573c" + }, + { + "stage": 14, + "kind": "D", + "output_sha256": "0711c50d06762c158b513e6f96acb97c206dd0f8eec3ee73347d9d6e1a5b469f" + }, + { + "stage": 15, + "kind": "H", + "output_sha256": "07d93909b086db3dd0a2459b68119640a145b693a3575b68e9e94389032dc627" + }, + { + "stage": 16, + "kind": "D", + "output_sha256": "07d93909b086db3dd0a2459b68119640a145b693a3575b68e9e94389032dc627" + }, + { + "stage": 17, + "kind": "H", + "output_sha256": "e6b26fe0838a150ba355288062e404d8e6d3b6886d8adc3ca43faad986a2573c" + }, + { + "stage": 18, + "kind": "D", + "output_sha256": "0711c50d06762c158b513e6f96acb97c206dd0f8eec3ee73347d9d6e1a5b469f" + }, + { + "stage": 19, + "kind": "H", + "output_sha256": "07d93909b086db3dd0a2459b68119640a145b693a3575b68e9e94389032dc627" + }, + { + "stage": 20, + "kind": "D", + "output_sha256": "07d93909b086db3dd0a2459b68119640a145b693a3575b68e9e94389032dc627" + }, + { + "stage": 21, + "kind": "H", + "output_sha256": "e6b26fe0838a150ba355288062e404d8e6d3b6886d8adc3ca43faad986a2573c" + }, + { + "stage": 22, + "kind": "D", + "output_sha256": "0711c50d06762c158b513e6f96acb97c206dd0f8eec3ee73347d9d6e1a5b469f" + }, + { + "stage": 23, + "kind": "H", + "output_sha256": "07d93909b086db3dd0a2459b68119640a145b693a3575b68e9e94389032dc627" + }, + { + "stage": 24, + "kind": "D", + "output_sha256": "07d93909b086db3dd0a2459b68119640a145b693a3575b68e9e94389032dc627" + }, + { + "stage": 25, + "kind": "D", + "output_sha256": "3ca7265a49053366a9dd07bb13983c9fc75added312e1c5337a1363ac4cb3f23" + }, + { + "stage": 26, + "kind": "H", + "output_sha256": "77730bf526ffc8d315640ed281711e610c74902f1236d7dc0056ae0b1e348cbb" + }, + { + "stage": 27, + "kind": "D", + "output_sha256": "5686a3b659b0a97f400187412fa7bda6a0a19f79442f8bf8454d23e29d767ae9" + }, + { + "stage": 28, + "kind": "H", + "output_sha256": "86d52eb0302d0090545919d7f5693821bf8d8cc0d088440474194a22b7e0bff8" + }, + { + "stage": 29, + "kind": "D", + "output_sha256": "4e79316840e0ed3698df5b4b82c728766b3bb1621439e15f84c914fc696d9271" + }, + { + "stage": 30, + "kind": "H", + "output_sha256": "3f7e90211581dc0d00d2af3cec49df3b513f892ad70d485deeeeb1d8fbc28593" + }, + { + "stage": 31, + "kind": "D", + "output_sha256": "d37adabe0d8a7a7a1c96081c127ab735dff26b182052aaef41cebbde3deba688" + }, + { + "stage": 32, + "kind": "H", + "output_sha256": "a92e00b28fa31b6b92124b376c2fe0fa67a9216e70b890f884cbc37f6d7c5880" + }, + { + "stage": 33, + "kind": "D", + "output_sha256": "6e512cb74710dd8f50f44badedb046e29f6dabc3da20ea563a5b654a337ab96f" + }, + { + "stage": 34, + "kind": "H", + "output_sha256": "737fbc2f920033a812540fec3074d518e6f993e3ac79ffe87915ee78e983aa8f" + }, + { + "stage": 35, + "kind": "D", + "output_sha256": "7606d397e5b8bef08aa41578ee947df7dc74338d7a5342217cc5ebddb81d494b" + }, + { + "stage": 36, + "kind": "H", + "output_sha256": "4cbb33ddf6c0720b4b0e5dcd4d6d261e8d11cf9f24221aa4403e9e18c0fcd323" + }, + { + "stage": 37, + "kind": "D", + "output_sha256": "dd4e704c117036316d4abe84dd3c02d10376abf6536b19b2bf1c8ff1a0a0cd45" + }, + { + "stage": 38, + "kind": "H", + "output_sha256": "3ae601349e19b3e7fcc4cbc031373fddde54c146fc188e3baa758c29e253451d" + }, + { + "stage": 39, + "kind": "D", + "output_sha256": "349fd031a2fa42e86a886bac20315dfa546ea8b42369e3eb31f86f723d458e94" + }, + { + "stage": 40, + "kind": "H", + "output_sha256": "0a4d55592a85f332627acc5d74ecf4c43d10073826492095284d7858d487403a" + }, + { + "stage": 41, + "kind": "D", + "output_sha256": "0a4d55592a85f332627acc5d74ecf4c43d10073826492095284d7858d487403a" + } + ] + }, + { + "field_size": 2, + "active_indices": [ + 0, + 1 + ], + "adjoint": true, + "radius": "1", + "target_bits": 18, + "incoming_bits": 4, + "phase_bits": 22, + "data_bits": 56, + "observed_coefficient_bits": 60, + "counts": { + "logical_layers": 2, + "primitive_stages": 42, + "diagonal_stages": 22, + "hadamard_stages": 20 + }, + "layers": [ + { + "begin": 0, + "end": 21, + "pairs": [ + [ + 0, + 1 + ] + ], + "kinds": [ + "butterfly" + ], + "permutation": [ + 0, + 1 + ], + "route_layers": 1 + }, + { + "begin": 21, + "end": 42, + "pairs": [ + [ + 0, + 1 + ] + ], + "kinds": [ + "idle" + ], + "permutation": [ + 0, + 1 + ], + "route_layers": 1 + } + ], + "logical_plan_sha256": "4e03b83b0448937c59450e4c4610b4834835286b70db25422dab0919cb1344a1", + "reference_stages_sha256": "e155aade9b19ba0d780e3300516d71c760522aae9f3872802f9be9aa32906d25", + "stored_stages_sha256": "4b15dd3e0238f7808b8b9a9dd3da2930bf90f5cbfd110681296060aa350c2fe8", + "source_original_ast_sha256": "15211aaf783ddbe8714fb7c5c039e932422028d729566ce763a4c8016a82e537", + "source_adapted_ast_sha256": "550954f4c90dde9cae269f71042d223a2cba81d5a91dcfa7219fb36f338d1313", + "tensor_ast_sha256": "2b5d66a710ef21aaa1bcfc1db64267067455a5ba465694876a1c2a57fda2f357", + "phases": { + "phase_bits": 22, + "oracle_bits": 108, + "certificates": [ + { + "denominator": 1, + "numerator": 0, + "unit": [ + "1", + "0" + ], + "error_bound": "0", + "parameter": null + }, + { + "denominator": 8, + "numerator": 1, + "unit": [ + "932726017355223/1319073796330025", + "932726035185664/1319073796330025" + ], + "error_bound": "5786308924411911904730226748114997499721/428063920553749865556834761428387175078454886400", + "parameter": "13898701/33554432" + } + ] + }, + "budget": { + "prefix_bound": 16384, + "phase_error": "1/2097152", + "coefficient_error": "11/33554432", + "rounding_error": "21/274877906944", + "total_error": "221205/274877906944", + "amplitude_bound": "131072", + "coefficient_bits": 61, + "data_bits": 75, + "temporary_bits": 137 + }, + "label": "two-adjoint", + "input_sha256": "07d93909b086db3dd0a2459b68119640a145b693a3575b68e9e94389032dc627", + "output_sha256": "0a4d55592a85f332627acc5d74ecf4c43d10073826492095284d7858d487403a", + "rational_target_sha256": "63458b27d97e14d21df7016da4a1efdf71be8bcc5bad2a82305f858e57bb63bd", + "exact_matrix_sha256": "bb46cab753805250a5ff9f33f3bac8461fa2f13f53611c926fc5c76dd427b869", + "rounded_rational_error_squared_upper": "10503596711631079/730750818665451459101842416358141509827966271488", + "ideal_error_squared_upper": "5737305851451562385791811826633/730750818665451459101842416358141509827966271488", + "nonzero_rounded_error": true, + "nonzero_spectator_error": false, + "spectator_error_squared_upper": "0", + "statistics": { + "real_products": 176, + "complex_roundings": 84, + "h_pair_calls": 20, + "maximum_data_numerator_bits": 57, + "maximum_temporary_numerator_bits": 114, + "maximum_temporary_fractional_bits": 107 + }, + "trace": [ + { + "stage": 0, + "kind": "H", + "output_sha256": "e6b26fe0838a150ba355288062e404d8e6d3b6886d8adc3ca43faad986a2573c" + }, + { + "stage": 1, + "kind": "D", + "output_sha256": "0711c50d06762c158b513e6f96acb97c206dd0f8eec3ee73347d9d6e1a5b469f" + }, + { + "stage": 2, + "kind": "H", + "output_sha256": "07d93909b086db3dd0a2459b68119640a145b693a3575b68e9e94389032dc627" + }, + { + "stage": 3, + "kind": "D", + "output_sha256": "07d93909b086db3dd0a2459b68119640a145b693a3575b68e9e94389032dc627" + }, + { + "stage": 4, + "kind": "D", + "output_sha256": "3ca7265a49053366a9dd07bb13983c9fc75added312e1c5337a1363ac4cb3f23" + }, + { + "stage": 5, + "kind": "H", + "output_sha256": "77730bf526ffc8d315640ed281711e610c74902f1236d7dc0056ae0b1e348cbb" + }, + { + "stage": 6, + "kind": "D", + "output_sha256": "5686a3b659b0a97f400187412fa7bda6a0a19f79442f8bf8454d23e29d767ae9" + }, + { + "stage": 7, + "kind": "H", + "output_sha256": "86d52eb0302d0090545919d7f5693821bf8d8cc0d088440474194a22b7e0bff8" + }, + { + "stage": 8, + "kind": "D", + "output_sha256": "4e79316840e0ed3698df5b4b82c728766b3bb1621439e15f84c914fc696d9271" + }, + { + "stage": 9, + "kind": "H", + "output_sha256": "3f7e90211581dc0d00d2af3cec49df3b513f892ad70d485deeeeb1d8fbc28593" + }, + { + "stage": 10, + "kind": "D", + "output_sha256": "d37adabe0d8a7a7a1c96081c127ab735dff26b182052aaef41cebbde3deba688" + }, + { + "stage": 11, + "kind": "H", + "output_sha256": "a92e00b28fa31b6b92124b376c2fe0fa67a9216e70b890f884cbc37f6d7c5880" + }, + { + "stage": 12, + "kind": "D", + "output_sha256": "6e512cb74710dd8f50f44badedb046e29f6dabc3da20ea563a5b654a337ab96f" + }, + { + "stage": 13, + "kind": "H", + "output_sha256": "737fbc2f920033a812540fec3074d518e6f993e3ac79ffe87915ee78e983aa8f" + }, + { + "stage": 14, + "kind": "D", + "output_sha256": "7606d397e5b8bef08aa41578ee947df7dc74338d7a5342217cc5ebddb81d494b" + }, + { + "stage": 15, + "kind": "H", + "output_sha256": "4cbb33ddf6c0720b4b0e5dcd4d6d261e8d11cf9f24221aa4403e9e18c0fcd323" + }, + { + "stage": 16, + "kind": "D", + "output_sha256": "dd4e704c117036316d4abe84dd3c02d10376abf6536b19b2bf1c8ff1a0a0cd45" + }, + { + "stage": 17, + "kind": "H", + "output_sha256": "3ae601349e19b3e7fcc4cbc031373fddde54c146fc188e3baa758c29e253451d" + }, + { + "stage": 18, + "kind": "D", + "output_sha256": "349fd031a2fa42e86a886bac20315dfa546ea8b42369e3eb31f86f723d458e94" + }, + { + "stage": 19, + "kind": "H", + "output_sha256": "0a4d55592a85f332627acc5d74ecf4c43d10073826492095284d7858d487403a" + }, + { + "stage": 20, + "kind": "D", + "output_sha256": "0a4d55592a85f332627acc5d74ecf4c43d10073826492095284d7858d487403a" + }, + { + "stage": 21, + "kind": "H", + "output_sha256": "3ae601349e19b3e7fcc4cbc031373fddde54c146fc188e3baa758c29e253451d" + }, + { + "stage": 22, + "kind": "D", + "output_sha256": "349fd031a2fa42e86a886bac20315dfa546ea8b42369e3eb31f86f723d458e94" + }, + { + "stage": 23, + "kind": "H", + "output_sha256": "0a4d55592a85f332627acc5d74ecf4c43d10073826492095284d7858d487403a" + }, + { + "stage": 24, + "kind": "D", + "output_sha256": "0a4d55592a85f332627acc5d74ecf4c43d10073826492095284d7858d487403a" + }, + { + "stage": 25, + "kind": "D", + "output_sha256": "0a4d55592a85f332627acc5d74ecf4c43d10073826492095284d7858d487403a" + }, + { + "stage": 26, + "kind": "H", + "output_sha256": "3ae601349e19b3e7fcc4cbc031373fddde54c146fc188e3baa758c29e253451d" + }, + { + "stage": 27, + "kind": "D", + "output_sha256": "349fd031a2fa42e86a886bac20315dfa546ea8b42369e3eb31f86f723d458e94" + }, + { + "stage": 28, + "kind": "H", + "output_sha256": "0a4d55592a85f332627acc5d74ecf4c43d10073826492095284d7858d487403a" + }, + { + "stage": 29, + "kind": "D", + "output_sha256": "0a4d55592a85f332627acc5d74ecf4c43d10073826492095284d7858d487403a" + }, + { + "stage": 30, + "kind": "H", + "output_sha256": "3ae601349e19b3e7fcc4cbc031373fddde54c146fc188e3baa758c29e253451d" + }, + { + "stage": 31, + "kind": "D", + "output_sha256": "349fd031a2fa42e86a886bac20315dfa546ea8b42369e3eb31f86f723d458e94" + }, + { + "stage": 32, + "kind": "H", + "output_sha256": "0a4d55592a85f332627acc5d74ecf4c43d10073826492095284d7858d487403a" + }, + { + "stage": 33, + "kind": "D", + "output_sha256": "0a4d55592a85f332627acc5d74ecf4c43d10073826492095284d7858d487403a" + }, + { + "stage": 34, + "kind": "H", + "output_sha256": "3ae601349e19b3e7fcc4cbc031373fddde54c146fc188e3baa758c29e253451d" + }, + { + "stage": 35, + "kind": "D", + "output_sha256": "349fd031a2fa42e86a886bac20315dfa546ea8b42369e3eb31f86f723d458e94" + }, + { + "stage": 36, + "kind": "H", + "output_sha256": "0a4d55592a85f332627acc5d74ecf4c43d10073826492095284d7858d487403a" + }, + { + "stage": 37, + "kind": "D", + "output_sha256": "0a4d55592a85f332627acc5d74ecf4c43d10073826492095284d7858d487403a" + }, + { + "stage": 38, + "kind": "H", + "output_sha256": "3ae601349e19b3e7fcc4cbc031373fddde54c146fc188e3baa758c29e253451d" + }, + { + "stage": 39, + "kind": "D", + "output_sha256": "349fd031a2fa42e86a886bac20315dfa546ea8b42369e3eb31f86f723d458e94" + }, + { + "stage": 40, + "kind": "H", + "output_sha256": "0a4d55592a85f332627acc5d74ecf4c43d10073826492095284d7858d487403a" + }, + { + "stage": 41, + "kind": "D", + "output_sha256": "0a4d55592a85f332627acc5d74ecf4c43d10073826492095284d7858d487403a" + } + ] + }, + { + "field_size": 4, + "active_indices": [ + 3, + 1 + ], + "adjoint": false, + "radius": "1", + "target_bits": 18, + "incoming_bits": 512, + "phase_bits": 22, + "data_bits": 512, + "observed_coefficient_bits": 516, + "counts": { + "logical_layers": 2, + "primitive_stages": 74, + "diagonal_stages": 38, + "hadamard_stages": 36 + }, + "layers": [ + { + "begin": 0, + "end": 37, + "pairs": [ + [ + 0, + 1 + ], + [ + 2, + 3 + ] + ], + "kinds": [ + "idle", + "idle" + ], + "permutation": [ + 0, + 1, + 2, + 3 + ], + "route_layers": 3 + }, + { + "begin": 37, + "end": 74, + "pairs": [ + [ + 3, + 1 + ], + [ + 0, + 2 + ] + ], + "kinds": [ + "butterfly", + "idle" + ], + "permutation": [ + 2, + 1, + 3, + 0 + ], + "route_layers": 3 + } + ], + "logical_plan_sha256": "ea2b2a07bb69bfa0139f4ffb0261e9e5b9af12272286aebd70f6633282a9e256", + "reference_stages_sha256": "55fb4fbe645dc05726bddf7a481fa22726fb3d6c5b1d1a62ab36ee94661cb746", + "stored_stages_sha256": "71eccc5d8c179d95881a3e4a8d2c4e1970b8238a895d7712d111b508d5f28081", + "source_original_ast_sha256": "15211aaf783ddbe8714fb7c5c039e932422028d729566ce763a4c8016a82e537", + "source_adapted_ast_sha256": "550954f4c90dde9cae269f71042d223a2cba81d5a91dcfa7219fb36f338d1313", + "tensor_ast_sha256": "2b5d66a710ef21aaa1bcfc1db64267067455a5ba465694876a1c2a57fda2f357", + "phases": { + "phase_bits": 22, + "oracle_bits": 108, + "certificates": [ + { + "denominator": 1, + "numerator": 0, + "unit": [ + "1", + "0" + ], + "error_bound": "0", + "parameter": null + }, + { + "denominator": 8, + "numerator": 1, + "unit": [ + "932726017355223/1319073796330025", + "932726035185664/1319073796330025" + ], + "error_bound": "5786308924411911904730226748114997499721/428063920553749865556834761428387175078454886400", + "parameter": "13898701/33554432" + } + ] + }, + "budget": { + "prefix_bound": 16384, + "phase_error": "1/2097152", + "coefficient_error": "19/6243497100631984462763194459586332611497196285329942301718313919250743477639531240240612206126983942319653862242813245790895951358576570612580352", + "rounding_error": "37/25573364124188608359478044506465618376692515984711443667838213813251045284411519960025547596296126227741302219746563054759509816764729633229129121792", + "total_error": "12194330274671844653834364178879555881830461494785043558043581873536608354764709453594945715091765512343073949692994620685343654997219864555557/25573364124188608359478044506465618376692515984711443667838213813251045284411519960025547596296126227741302219746563054759509816764729633229129121792", + "amplitude_bound": "131072", + "coefficient_bits": 517, + "data_bits": 531, + "temporary_bits": 1049 + }, + "label": "spectator-fine", + "input_sha256": "bd4b98977d4abc1331c56a56c9d30d0d7abbdd807f44e51508dc0cba77ae4959", + "output_sha256": "bb8f41aee0b6a04834bd7c539ae6d4aee4b7b89737d696700d89c29d5c262bdb", + "rational_target_sha256": "4a4ce4bb8faf253e5a60df411255501ed6dc4297f184a3ebd62ca7be0d4119ba", + "exact_matrix_sha256": "82d7f60de4566b0de1835540804e704ec2bdbc7765e91bdd0948d31eed598a41", + "rounded_rational_error_squared_upper": "1/9979201547673599058281863565184192830337256302177287707512736212186059459344820328924789827463178505446712234220962476219862189941967968303695858991424157101600028364755428382587688607221814935913266783722719619966654052275604351944444276342240220787535604534378780208211792476151720049639424", + "ideal_error_squared_upper": "1173539863698973422465185300503/1461501637330902918203684832716283019655932542976", + "nonzero_rounded_error": true, + "nonzero_spectator_error": true, + "spectator_error_squared_upper": "1/9979201547673599058281863565184192830337256302177287707512736212186059459344820328924789827463178505446712234220962476219862189941967968303695858991424157101600028364755428382587688607221814935913266783722719619966654052275604351944444276342240220787535604534378780208211792476151720049639424", + "statistics": { + "real_products": 608, + "complex_roundings": 296, + "h_pair_calls": 72, + "maximum_data_numerator_bits": 511, + "maximum_temporary_numerator_bits": 1024, + "maximum_temporary_fractional_bits": 1021 + }, + "trace": [ + { + "stage": 0, + "kind": "H", + "output_sha256": "64f1c03d0c6d4e951900444ca7d9c80c037d822ed885dd2d648342f25e4618a6" + }, + { + "stage": 1, + "kind": "D", + "output_sha256": "3ebeeece13d2fceed091a9fda155275ff4a00dec2208c4600141ce4293d394bd" + }, + { + "stage": 2, + "kind": "H", + "output_sha256": "d0d36e397b5406adfdebfdb5a5ab896e5786fca52c357fab3d95e420535e53ac" + }, + { + "stage": 3, + "kind": "D", + "output_sha256": "d0d36e397b5406adfdebfdb5a5ab896e5786fca52c357fab3d95e420535e53ac" + }, + { + "stage": 4, + "kind": "H", + "output_sha256": "6d8dbecf9ee09d822f701b58df4011fb482a78ad2caba7d286d38d75b605bb3a" + }, + { + "stage": 5, + "kind": "D", + "output_sha256": "c31c61917c117411032a678cf338d5e8de0dbc7afbf3738175b9ad4fa2ed628e" + }, + { + "stage": 6, + "kind": "H", + "output_sha256": "d0d36e397b5406adfdebfdb5a5ab896e5786fca52c357fab3d95e420535e53ac" + }, + { + "stage": 7, + "kind": "D", + "output_sha256": "d0d36e397b5406adfdebfdb5a5ab896e5786fca52c357fab3d95e420535e53ac" + }, + { + "stage": 8, + "kind": "H", + "output_sha256": "64f1c03d0c6d4e951900444ca7d9c80c037d822ed885dd2d648342f25e4618a6" + }, + { + "stage": 9, + "kind": "D", + "output_sha256": "3ebeeece13d2fceed091a9fda155275ff4a00dec2208c4600141ce4293d394bd" + }, + { + "stage": 10, + "kind": "H", + "output_sha256": "d0d36e397b5406adfdebfdb5a5ab896e5786fca52c357fab3d95e420535e53ac" + }, + { + "stage": 11, + "kind": "D", + "output_sha256": "d0d36e397b5406adfdebfdb5a5ab896e5786fca52c357fab3d95e420535e53ac" + }, + { + "stage": 12, + "kind": "D", + "output_sha256": "d0d36e397b5406adfdebfdb5a5ab896e5786fca52c357fab3d95e420535e53ac" + }, + { + "stage": 13, + "kind": "H", + "output_sha256": "64f1c03d0c6d4e951900444ca7d9c80c037d822ed885dd2d648342f25e4618a6" + }, + { + "stage": 14, + "kind": "D", + "output_sha256": "3ebeeece13d2fceed091a9fda155275ff4a00dec2208c4600141ce4293d394bd" + }, + { + "stage": 15, + "kind": "H", + "output_sha256": "d0d36e397b5406adfdebfdb5a5ab896e5786fca52c357fab3d95e420535e53ac" + }, + { + "stage": 16, + "kind": "D", + "output_sha256": "d0d36e397b5406adfdebfdb5a5ab896e5786fca52c357fab3d95e420535e53ac" + }, + { + "stage": 17, + "kind": "H", + "output_sha256": "64f1c03d0c6d4e951900444ca7d9c80c037d822ed885dd2d648342f25e4618a6" + }, + { + "stage": 18, + "kind": "D", + "output_sha256": "3ebeeece13d2fceed091a9fda155275ff4a00dec2208c4600141ce4293d394bd" + }, + { + "stage": 19, + "kind": "H", + "output_sha256": "d0d36e397b5406adfdebfdb5a5ab896e5786fca52c357fab3d95e420535e53ac" + }, + { + "stage": 20, + "kind": "D", + "output_sha256": "d0d36e397b5406adfdebfdb5a5ab896e5786fca52c357fab3d95e420535e53ac" + }, + { + "stage": 21, + "kind": "H", + "output_sha256": "64f1c03d0c6d4e951900444ca7d9c80c037d822ed885dd2d648342f25e4618a6" + }, + { + "stage": 22, + "kind": "D", + "output_sha256": "3ebeeece13d2fceed091a9fda155275ff4a00dec2208c4600141ce4293d394bd" + }, + { + "stage": 23, + "kind": "H", + "output_sha256": "d0d36e397b5406adfdebfdb5a5ab896e5786fca52c357fab3d95e420535e53ac" + }, + { + "stage": 24, + "kind": "D", + "output_sha256": "d0d36e397b5406adfdebfdb5a5ab896e5786fca52c357fab3d95e420535e53ac" + }, + { + "stage": 25, + "kind": "H", + "output_sha256": "64f1c03d0c6d4e951900444ca7d9c80c037d822ed885dd2d648342f25e4618a6" + }, + { + "stage": 26, + "kind": "D", + "output_sha256": "3ebeeece13d2fceed091a9fda155275ff4a00dec2208c4600141ce4293d394bd" + }, + { + "stage": 27, + "kind": "H", + "output_sha256": "d0d36e397b5406adfdebfdb5a5ab896e5786fca52c357fab3d95e420535e53ac" + }, + { + "stage": 28, + "kind": "D", + "output_sha256": "d0d36e397b5406adfdebfdb5a5ab896e5786fca52c357fab3d95e420535e53ac" + }, + { + "stage": 29, + "kind": "H", + "output_sha256": "6d8dbecf9ee09d822f701b58df4011fb482a78ad2caba7d286d38d75b605bb3a" + }, + { + "stage": 30, + "kind": "D", + "output_sha256": "c31c61917c117411032a678cf338d5e8de0dbc7afbf3738175b9ad4fa2ed628e" + }, + { + "stage": 31, + "kind": "H", + "output_sha256": "d0d36e397b5406adfdebfdb5a5ab896e5786fca52c357fab3d95e420535e53ac" + }, + { + "stage": 32, + "kind": "D", + "output_sha256": "d0d36e397b5406adfdebfdb5a5ab896e5786fca52c357fab3d95e420535e53ac" + }, + { + "stage": 33, + "kind": "H", + "output_sha256": "64f1c03d0c6d4e951900444ca7d9c80c037d822ed885dd2d648342f25e4618a6" + }, + { + "stage": 34, + "kind": "D", + "output_sha256": "3ebeeece13d2fceed091a9fda155275ff4a00dec2208c4600141ce4293d394bd" + }, + { + "stage": 35, + "kind": "H", + "output_sha256": "d0d36e397b5406adfdebfdb5a5ab896e5786fca52c357fab3d95e420535e53ac" + }, + { + "stage": 36, + "kind": "D", + "output_sha256": "d0d36e397b5406adfdebfdb5a5ab896e5786fca52c357fab3d95e420535e53ac" + }, + { + "stage": 37, + "kind": "H", + "output_sha256": "64f1c03d0c6d4e951900444ca7d9c80c037d822ed885dd2d648342f25e4618a6" + }, + { + "stage": 38, + "kind": "D", + "output_sha256": "ee5b7c96e8f38fd554c5515ec11eedfa3e9ee5c8dd055217c058093c00ebf08c" + }, + { + "stage": 39, + "kind": "H", + "output_sha256": "88d75029661b01d3f9a2760ee73360d69521ae37305144192c3bf9fe72ce8a4e" + }, + { + "stage": 40, + "kind": "D", + "output_sha256": "88d75029661b01d3f9a2760ee73360d69521ae37305144192c3bf9fe72ce8a4e" + }, + { + "stage": 41, + "kind": "H", + "output_sha256": "1f4fe34e762b91e1aee6850ba843d21d604328c76265ade76868a373762358da" + }, + { + "stage": 42, + "kind": "D", + "output_sha256": "146c70cc115b133eb4aea9e447271e02e5b5470eebb40bb7b1a6f0203d2c74ec" + }, + { + "stage": 43, + "kind": "H", + "output_sha256": "ec5942e7aec38472183be8b25e6f8ca53173e3a6850dd7ebecffbd66c986f4d6" + }, + { + "stage": 44, + "kind": "D", + "output_sha256": "ec5942e7aec38472183be8b25e6f8ca53173e3a6850dd7ebecffbd66c986f4d6" + }, + { + "stage": 45, + "kind": "H", + "output_sha256": "86453d634e7bf513b697b9b7329627c02cdc643542ab9720ac1c3ec48e9a3704" + }, + { + "stage": 46, + "kind": "D", + "output_sha256": "42332988ffcdfda53b85b322a65673dc00a3175d423154daabea33b443f69c84" + }, + { + "stage": 47, + "kind": "H", + "output_sha256": "ec5942e7aec38472183be8b25e6f8ca53173e3a6850dd7ebecffbd66c986f4d6" + }, + { + "stage": 48, + "kind": "D", + "output_sha256": "ec5942e7aec38472183be8b25e6f8ca53173e3a6850dd7ebecffbd66c986f4d6" + }, + { + "stage": 49, + "kind": "D", + "output_sha256": "73acc80a5e1374bfb7c3db51b6438be1d0fa4ee0962792efeeef96a1d18a1ad9" + }, + { + "stage": 50, + "kind": "H", + "output_sha256": "9a7ac2388f3275748f13d70eb891af3dd7a72b1d8f61caa5f85ce8880ab306ea" + }, + { + "stage": 51, + "kind": "D", + "output_sha256": "d09e7f262f80a9916b60fa7375db35df0a3c8aa1d23d9646c8f62da2570e69b0" + }, + { + "stage": 52, + "kind": "H", + "output_sha256": "e735223b09282b2cea433e45fa90af1923da078462d6dda479834223c72d7c1c" + }, + { + "stage": 53, + "kind": "D", + "output_sha256": "ccc865de024a29b089b6abe57af1b3beaf55b1c76f759c2d04ba6d6dba9a783b" + }, + { + "stage": 54, + "kind": "H", + "output_sha256": "da4a2f8ce094f062bfb4e5a6838e2c263ff824f47606dec8db94be1eb5d02080" + }, + { + "stage": 55, + "kind": "D", + "output_sha256": "4488bb9ea3a3b64a92de72834449578430aa6444191aa715ca24b38c415ed531" + }, + { + "stage": 56, + "kind": "H", + "output_sha256": "8811dbb734a9eb828fc025b96891eda654a3b5e43bb5db96471932ff5c78504a" + }, + { + "stage": 57, + "kind": "D", + "output_sha256": "8fd447077f0b89ed6e499b485b1f3081a345fe474ae83266b6bc77884f33b5f5" + }, + { + "stage": 58, + "kind": "H", + "output_sha256": "5040e49e6b684a1804a5f420a0ffe07a05ad299646f50bef4f209baa77d0926d" + }, + { + "stage": 59, + "kind": "D", + "output_sha256": "7dd1ca06b208580f63bf6a0bbb0867c84b1399f3cc5d237bfc4d69cc55c70dff" + }, + { + "stage": 60, + "kind": "H", + "output_sha256": "d2199309ca8c2ac86ee2cdea27ec38405d40ea6ee96d6ba2a32d1edd16ba0eaa" + }, + { + "stage": 61, + "kind": "D", + "output_sha256": "8015b3d87e9f48cc08a9d595c58552ea6ef0917bcfcb165f571b72c03a60d7cb" + }, + { + "stage": 62, + "kind": "H", + "output_sha256": "8daa32fc4e711cb8095a84ce6d20d5b92a8c4ecdaf3e96b11d149e19fb8134d8" + }, + { + "stage": 63, + "kind": "D", + "output_sha256": "82bd1c44bc9524f6b26874e65f940089f84fe163e53671c5b1019727c0b5dee8" + }, + { + "stage": 64, + "kind": "H", + "output_sha256": "1cde914ede509d1b5d5c17cbf6569d0733f5ef83fc76b04843afec99aa2f2871" + }, + { + "stage": 65, + "kind": "D", + "output_sha256": "1cde914ede509d1b5d5c17cbf6569d0733f5ef83fc76b04843afec99aa2f2871" + }, + { + "stage": 66, + "kind": "H", + "output_sha256": "4de50d2e43c25e4b60162843c4017bb120a753c2329d0d3d26245425fdc1f2d0" + }, + { + "stage": 67, + "kind": "D", + "output_sha256": "46f53b4d940b0bdc4b33ba6cd109a6335f1ee07395dbf804b63cb2ec94a84fd3" + }, + { + "stage": 68, + "kind": "H", + "output_sha256": "e384440896a9f1d855381c647d2f128217b16af12dc93c2ef0e0ff22b3c156b8" + }, + { + "stage": 69, + "kind": "D", + "output_sha256": "e384440896a9f1d855381c647d2f128217b16af12dc93c2ef0e0ff22b3c156b8" + }, + { + "stage": 70, + "kind": "H", + "output_sha256": "a92c470fcf7d94440553356e398d12469d1d649250088b35d153a39752c037cb" + }, + { + "stage": 71, + "kind": "D", + "output_sha256": "53f415fcec346d866a8d2a58fd517c22521972ee7b99491d07201c032366c28c" + }, + { + "stage": 72, + "kind": "H", + "output_sha256": "bb8f41aee0b6a04834bd7c539ae6d4aee4b7b89737d696700d89c29d5c262bdb" + }, + { + "stage": 73, + "kind": "D", + "output_sha256": "bb8f41aee0b6a04834bd7c539ae6d4aee4b7b89737d696700d89c29d5c262bdb" + } + ] + }, + { + "field_size": 4, + "active_indices": [ + 0, + 1, + 2, + 3 + ], + "adjoint": false, + "radius": "1", + "target_bits": 18, + "incoming_bits": 5, + "phase_bits": 23, + "data_bits": 57, + "observed_coefficient_bits": 61, + "counts": { + "logical_layers": 3, + "primitive_stages": 111, + "diagonal_stages": 57, + "hadamard_stages": 54 + }, + "layers": [ + { + "begin": 0, + "end": 37, + "pairs": [ + [ + 1, + 2 + ], + [ + 0, + 3 + ] + ], + "kinds": [ + "swap", + "idle" + ], + "permutation": [ + 2, + 0, + 1, + 3 + ], + "route_layers": 3 + }, + { + "begin": 37, + "end": 74, + "pairs": [ + [ + 0, + 1 + ], + [ + 2, + 3 + ] + ], + "kinds": [ + "butterfly", + "butterfly" + ], + "permutation": [ + 0, + 1, + 2, + 3 + ], + "route_layers": 3 + }, + { + "begin": 74, + "end": 111, + "pairs": [ + [ + 0, + 2 + ], + [ + 1, + 3 + ] + ], + "kinds": [ + "butterfly", + "butterfly" + ], + "permutation": [ + 0, + 2, + 1, + 3 + ], + "route_layers": 3 + } + ], + "logical_plan_sha256": "dd024f03cac04d3416da45da6a9106638feb7ddfb54ab9f9fc388f1bdf0807fa", + "reference_stages_sha256": "2ef1d7258e9aa5a00174e940cebc2eb670607cebdf9884760d516dd2a8029e4f", + "stored_stages_sha256": "836d2f194609cbee91ebd15469a583e958f347a11855e05a8f679fd91afe8b5d", + "source_original_ast_sha256": "15211aaf783ddbe8714fb7c5c039e932422028d729566ce763a4c8016a82e537", + "source_adapted_ast_sha256": "550954f4c90dde9cae269f71042d223a2cba81d5a91dcfa7219fb36f338d1313", + "tensor_ast_sha256": "2b5d66a710ef21aaa1bcfc1db64267067455a5ba465694876a1c2a57fda2f357", + "phases": { + "phase_bits": 23, + "oracle_bits": 110, + "certificates": [ + { + "denominator": 1, + "numerator": 0, + "unit": [ + "1", + "0" + ], + "error_bound": "0", + "parameter": null + }, + { + "denominator": 4, + "numerator": 3, + "unit": [ + "0", + "-1" + ], + "error_bound": "0", + "parameter": null + }, + { + "denominator": 8, + "numerator": 1, + "unit": [ + "14923616294535168/21105180630090793", + "14923616388873175/21105180630090793" + ], + "error_bound": "122457734346634144641026579286181983424923/27396090771107629613681904774154810614789840044032", + "parameter": "-55594803/134217728" + } + ] + }, + "budget": { + "prefix_bound": 16384, + "phase_error": "1/2097152", + "coefficient_error": "57/134217728", + "rounding_error": "111/549755813888", + "total_error": "495727/549755813888", + "amplitude_bound": "131072", + "coefficient_bits": 62, + "data_bits": 76, + "temporary_bits": 139 + }, + "label": "four-forward", + "input_sha256": "923aa57ec2df41ef1b2cde1ded5de8f5482031f2d1b329fe1486536fa554626c", + "output_sha256": "5f07e0b0836c2d35ab352c0026a2d14b5a04b6d9c1973d530b31c1bffb37ed46", + "rational_target_sha256": "f4b356e1c8bf7ab7683a9aa177c91cdac6c081af347364449a54a05248be131b", + "exact_matrix_sha256": "37e624fb950f7b380e249e6ee6fc9130672328fc257f3679c63273a4988023de", + "rounded_rational_error_squared_upper": "8443327391263119/730750818665451459101842416358141509827966271488", + "ideal_error_squared_upper": "1519658601221505/2596148429267413814265248164610048", + "nonzero_rounded_error": true, + "nonzero_spectator_error": false, + "spectator_error_squared_upper": "0", + "statistics": { + "real_products": 912, + "complex_roundings": 444, + "h_pair_calls": 108, + "maximum_data_numerator_bits": 58, + "maximum_temporary_numerator_bits": 115, + "maximum_temporary_fractional_bits": 112 + }, + "trace": [ + { + "stage": 0, + "kind": "H", + "output_sha256": "ed6ff8c857c5b5f4dffa3ef68ee67f2f3470c4051bf1132683f5e65488314229" + }, + { + "stage": 1, + "kind": "D", + "output_sha256": "0e2a69dd25b6f77d2bba8124ee22c74be3b4cde810640d0315dec0fbd899253e" + }, + { + "stage": 2, + "kind": "H", + "output_sha256": "923aa57ec2df41ef1b2cde1ded5de8f5482031f2d1b329fe1486536fa554626c" + }, + { + "stage": 3, + "kind": "D", + "output_sha256": "923aa57ec2df41ef1b2cde1ded5de8f5482031f2d1b329fe1486536fa554626c" + }, + { + "stage": 4, + "kind": "H", + "output_sha256": "d44f17bca6034127ef78dd10da03666945efa4f754897abcf066ca0afdd8b2e1" + }, + { + "stage": 5, + "kind": "D", + "output_sha256": "4be8f69f6d0e44cbb0114d8d2a3d427c17c5e3096ce0120fc59568de3ceca5ee" + }, + { + "stage": 6, + "kind": "H", + "output_sha256": "81648ad00bb1182a04ea0b020758315bfa8090b3a9fadc6ef036608d7a83aa82" + }, + { + "stage": 7, + "kind": "D", + "output_sha256": "81648ad00bb1182a04ea0b020758315bfa8090b3a9fadc6ef036608d7a83aa82" + }, + { + "stage": 8, + "kind": "H", + "output_sha256": "d35decba30385761b8cbb4fb5e98cbd06c50b55f47d1b9bd5090a3f5e285fa13" + }, + { + "stage": 9, + "kind": "D", + "output_sha256": "46fc50db957bc92d21f09f1603f494468129d69fde5a5f80d7c379363ba25ac9" + }, + { + "stage": 10, + "kind": "H", + "output_sha256": "f1e2f237436c0cd6f3463221834f71f065257214a699028004a19b8b3c538b68" + }, + { + "stage": 11, + "kind": "D", + "output_sha256": "f1e2f237436c0cd6f3463221834f71f065257214a699028004a19b8b3c538b68" + }, + { + "stage": 12, + "kind": "D", + "output_sha256": "f1e2f237436c0cd6f3463221834f71f065257214a699028004a19b8b3c538b68" + }, + { + "stage": 13, + "kind": "H", + "output_sha256": "652eb075430e68bd350cb6597db3bb78816529f536183a528a641d804d78b613" + }, + { + "stage": 14, + "kind": "D", + "output_sha256": "fc9fdfd21a5d959b3d83d490d801d14173abf2ad14071d88b8260b5cdc199313" + }, + { + "stage": 15, + "kind": "H", + "output_sha256": "81648ad00bb1182a04ea0b020758315bfa8090b3a9fadc6ef036608d7a83aa82" + }, + { + "stage": 16, + "kind": "D", + "output_sha256": "81648ad00bb1182a04ea0b020758315bfa8090b3a9fadc6ef036608d7a83aa82" + }, + { + "stage": 17, + "kind": "H", + "output_sha256": "d35decba30385761b8cbb4fb5e98cbd06c50b55f47d1b9bd5090a3f5e285fa13" + }, + { + "stage": 18, + "kind": "D", + "output_sha256": "fc9fdfd21a5d959b3d83d490d801d14173abf2ad14071d88b8260b5cdc199313" + }, + { + "stage": 19, + "kind": "H", + "output_sha256": "81648ad00bb1182a04ea0b020758315bfa8090b3a9fadc6ef036608d7a83aa82" + }, + { + "stage": 20, + "kind": "D", + "output_sha256": "81648ad00bb1182a04ea0b020758315bfa8090b3a9fadc6ef036608d7a83aa82" + }, + { + "stage": 21, + "kind": "H", + "output_sha256": "d35decba30385761b8cbb4fb5e98cbd06c50b55f47d1b9bd5090a3f5e285fa13" + }, + { + "stage": 22, + "kind": "D", + "output_sha256": "fc9fdfd21a5d959b3d83d490d801d14173abf2ad14071d88b8260b5cdc199313" + }, + { + "stage": 23, + "kind": "H", + "output_sha256": "81648ad00bb1182a04ea0b020758315bfa8090b3a9fadc6ef036608d7a83aa82" + }, + { + "stage": 24, + "kind": "D", + "output_sha256": "81648ad00bb1182a04ea0b020758315bfa8090b3a9fadc6ef036608d7a83aa82" + }, + { + "stage": 25, + "kind": "H", + "output_sha256": "d35decba30385761b8cbb4fb5e98cbd06c50b55f47d1b9bd5090a3f5e285fa13" + }, + { + "stage": 26, + "kind": "D", + "output_sha256": "46fc50db957bc92d21f09f1603f494468129d69fde5a5f80d7c379363ba25ac9" + }, + { + "stage": 27, + "kind": "H", + "output_sha256": "f1e2f237436c0cd6f3463221834f71f065257214a699028004a19b8b3c538b68" + }, + { + "stage": 28, + "kind": "D", + "output_sha256": "f1e2f237436c0cd6f3463221834f71f065257214a699028004a19b8b3c538b68" + }, + { + "stage": 29, + "kind": "H", + "output_sha256": "9ed1b8c928f3168b73121159ac5866d91d5a1472ebc3bac41d1b274a76f76a4f" + }, + { + "stage": 30, + "kind": "D", + "output_sha256": "8b8a4dbd4268f9fe9dd21ba67e8e1dfea9844568a23a722d6ffa2b66591168bc" + }, + { + "stage": 31, + "kind": "H", + "output_sha256": "0a7247f4fe113dce2a80597694971bea50a5866b9e2cd34f7ec5b5347246a35b" + }, + { + "stage": 32, + "kind": "D", + "output_sha256": "0a7247f4fe113dce2a80597694971bea50a5866b9e2cd34f7ec5b5347246a35b" + }, + { + "stage": 33, + "kind": "H", + "output_sha256": "b320f1c33572a0b4c70b49e5be987ad2c15b8bcd6c388e3365c52ac6c5026c7e" + }, + { + "stage": 34, + "kind": "D", + "output_sha256": "8a538d9ea997ab5b3733424a7fb791a8fd82fe601268e030eea4eaa8f0fea9a1" + }, + { + "stage": 35, + "kind": "H", + "output_sha256": "0a7247f4fe113dce2a80597694971bea50a5866b9e2cd34f7ec5b5347246a35b" + }, + { + "stage": 36, + "kind": "D", + "output_sha256": "0a7247f4fe113dce2a80597694971bea50a5866b9e2cd34f7ec5b5347246a35b" + }, + { + "stage": 37, + "kind": "H", + "output_sha256": "b320f1c33572a0b4c70b49e5be987ad2c15b8bcd6c388e3365c52ac6c5026c7e" + }, + { + "stage": 38, + "kind": "D", + "output_sha256": "8a538d9ea997ab5b3733424a7fb791a8fd82fe601268e030eea4eaa8f0fea9a1" + }, + { + "stage": 39, + "kind": "H", + "output_sha256": "0a7247f4fe113dce2a80597694971bea50a5866b9e2cd34f7ec5b5347246a35b" + }, + { + "stage": 40, + "kind": "D", + "output_sha256": "0a7247f4fe113dce2a80597694971bea50a5866b9e2cd34f7ec5b5347246a35b" + }, + { + "stage": 41, + "kind": "H", + "output_sha256": "72cbe9638509a4f305d3f2c1084662f568daccd038e17cbce0cef3cabac86f70" + }, + { + "stage": 42, + "kind": "D", + "output_sha256": "8b8a4dbd4268f9fe9dd21ba67e8e1dfea9844568a23a722d6ffa2b66591168bc" + }, + { + "stage": 43, + "kind": "H", + "output_sha256": "0a7247f4fe113dce2a80597694971bea50a5866b9e2cd34f7ec5b5347246a35b" + }, + { + "stage": 44, + "kind": "D", + "output_sha256": "0a7247f4fe113dce2a80597694971bea50a5866b9e2cd34f7ec5b5347246a35b" + }, + { + "stage": 45, + "kind": "H", + "output_sha256": "b320f1c33572a0b4c70b49e5be987ad2c15b8bcd6c388e3365c52ac6c5026c7e" + }, + { + "stage": 46, + "kind": "D", + "output_sha256": "8a538d9ea997ab5b3733424a7fb791a8fd82fe601268e030eea4eaa8f0fea9a1" + }, + { + "stage": 47, + "kind": "H", + "output_sha256": "0a7247f4fe113dce2a80597694971bea50a5866b9e2cd34f7ec5b5347246a35b" + }, + { + "stage": 48, + "kind": "D", + "output_sha256": "0a7247f4fe113dce2a80597694971bea50a5866b9e2cd34f7ec5b5347246a35b" + }, + { + "stage": 49, + "kind": "D", + "output_sha256": "aa4a57c09ae633b87c6586d0629f146fdc1535a008b3464a5e3d37099a7917ae" + }, + { + "stage": 50, + "kind": "H", + "output_sha256": "7629f8a3de5c1dcc9555391c09d18de260b1b31148f570013ebdf0ac4f11e79e" + }, + { + "stage": 51, + "kind": "D", + "output_sha256": "4c29587a8f13dbabdefdc1f576d7255887e5b4c11af5027be94050c6e5b3d49b" + }, + { + "stage": 52, + "kind": "H", + "output_sha256": "dcdd5c12062e9fe5c37763b92613658d8fd38b6c014cdad086810ecce85b989f" + }, + { + "stage": 53, + "kind": "D", + "output_sha256": "c7be205c1a407f166aa3321f65f2df91d45e2bd708cfed64086e9f217c419ba7" + }, + { + "stage": 54, + "kind": "H", + "output_sha256": "8bf1d8b0e6e5c7332100f2b8fa488ec9659ef5aa68e47c06587cf3f00e7d85e1" + }, + { + "stage": 55, + "kind": "D", + "output_sha256": "dc497ac36b4c817a32573aede15ba679f42967453412c76cba469d33cf1eb9b1" + }, + { + "stage": 56, + "kind": "H", + "output_sha256": "f3f152b2ead8a93c08702411edd5e3e52b03207c86f18362094ed3e502fc72a7" + }, + { + "stage": 57, + "kind": "D", + "output_sha256": "b61a3dc89c42caa899cd63bc7479d912b9192fbd3f37770542945389989bff9a" + }, + { + "stage": 58, + "kind": "H", + "output_sha256": "8933bfd4af113702d078604205359875835614a11b3b3daae8bc25ae30c8c024" + }, + { + "stage": 59, + "kind": "D", + "output_sha256": "7adfe552fc943c09c7ab4f55787e739d30f6f2ac75096173ec92626d2b762f44" + }, + { + "stage": 60, + "kind": "H", + "output_sha256": "d3bc81f817cdb2090f6260766ae71658be0a000f5f4d9201fb552a29a65803be" + }, + { + "stage": 61, + "kind": "D", + "output_sha256": "24103a4d9596c89af16fb42bb58d05e71259d69aed45b401de1c26310b655441" + }, + { + "stage": 62, + "kind": "H", + "output_sha256": "9e4a479613f0cba49c6f1cd0bfd08517cce608eb1c9c22c55fefe30c224781df" + }, + { + "stage": 63, + "kind": "D", + "output_sha256": "6e0f767b68537dcf85e9e9f516f10ba1f74c38c9db74b8edb102715000c7a859" + }, + { + "stage": 64, + "kind": "H", + "output_sha256": "24103a4d9596c89af16fb42bb58d05e71259d69aed45b401de1c26310b655441" + }, + { + "stage": 65, + "kind": "D", + "output_sha256": "24103a4d9596c89af16fb42bb58d05e71259d69aed45b401de1c26310b655441" + }, + { + "stage": 66, + "kind": "H", + "output_sha256": "e2a6dfb6805dce4a941c96066c81e8aced4cb76ce8e85da995b3860c8cb121c6" + }, + { + "stage": 67, + "kind": "D", + "output_sha256": "2b2c212c761c69d24e631da8cfb1cb845717bc4b366dd03638e0d3f1f370a8b7" + }, + { + "stage": 68, + "kind": "H", + "output_sha256": "24103a4d9596c89af16fb42bb58d05e71259d69aed45b401de1c26310b655441" + }, + { + "stage": 69, + "kind": "D", + "output_sha256": "24103a4d9596c89af16fb42bb58d05e71259d69aed45b401de1c26310b655441" + }, + { + "stage": 70, + "kind": "H", + "output_sha256": "9e4a479613f0cba49c6f1cd0bfd08517cce608eb1c9c22c55fefe30c224781df" + }, + { + "stage": 71, + "kind": "D", + "output_sha256": "6e0f767b68537dcf85e9e9f516f10ba1f74c38c9db74b8edb102715000c7a859" + }, + { + "stage": 72, + "kind": "H", + "output_sha256": "24103a4d9596c89af16fb42bb58d05e71259d69aed45b401de1c26310b655441" + }, + { + "stage": 73, + "kind": "D", + "output_sha256": "24103a4d9596c89af16fb42bb58d05e71259d69aed45b401de1c26310b655441" + }, + { + "stage": 74, + "kind": "H", + "output_sha256": "9e4a479613f0cba49c6f1cd0bfd08517cce608eb1c9c22c55fefe30c224781df" + }, + { + "stage": 75, + "kind": "D", + "output_sha256": "78559b0b51a7faefba58d8f23fbb22cfddd080b4e436ec837668de0f3129e6fc" + }, + { + "stage": 76, + "kind": "H", + "output_sha256": "b269d9f8cdc1f995b4d8dddad67f38476bf39268bf0e06e4cb522fda3d1d280b" + }, + { + "stage": 77, + "kind": "D", + "output_sha256": "b269d9f8cdc1f995b4d8dddad67f38476bf39268bf0e06e4cb522fda3d1d280b" + }, + { + "stage": 78, + "kind": "H", + "output_sha256": "987dbfa09e6804f05a21dca9c5e369533107e781bad9409a5d557b415856354a" + }, + { + "stage": 79, + "kind": "D", + "output_sha256": "13af0dca70249bae0b13f2d5c31f4ec0145b2ffd087841e1f3239328e7f1b334" + }, + { + "stage": 80, + "kind": "H", + "output_sha256": "8ab5d210bc1c0a50b7d2d604f5c096a42805efbf8bb3337e61a586bd8c36f08f" + }, + { + "stage": 81, + "kind": "D", + "output_sha256": "8ab5d210bc1c0a50b7d2d604f5c096a42805efbf8bb3337e61a586bd8c36f08f" + }, + { + "stage": 82, + "kind": "H", + "output_sha256": "062ef90902fa3be6d468402d6fb17aa83b4e721fd92e98ea5f8920cbf613be6b" + }, + { + "stage": 83, + "kind": "D", + "output_sha256": "1b6dd95aa3ff57fa5a8b2581ea234964220b9f1ac3a12b3ea5d8bc4200ab412b" + }, + { + "stage": 84, + "kind": "H", + "output_sha256": "af36c187fadbaf9caa3741ff0d070f02667a740c88ed6d825557d8e18078ab67" + }, + { + "stage": 85, + "kind": "D", + "output_sha256": "af36c187fadbaf9caa3741ff0d070f02667a740c88ed6d825557d8e18078ab67" + }, + { + "stage": 86, + "kind": "D", + "output_sha256": "5288767209c744aaddb4b56ab14c610940d2d02f46538a9a8f44e75ca4663e0b" + }, + { + "stage": 87, + "kind": "H", + "output_sha256": "ddce50ad300762536a5de43eb87481d85d124a7b16dbd2e702d85a03c30fa6ff" + }, + { + "stage": 88, + "kind": "D", + "output_sha256": "e1f9a24e6b7afadc630ab0806bfa975a271b3f9687861a6d8ac77d37fd0a40d2" + }, + { + "stage": 89, + "kind": "H", + "output_sha256": "3792fd6e97ecc9bbf6aff86ea824f8b7d775300d4035081541e0b1e13f330fe7" + }, + { + "stage": 90, + "kind": "D", + "output_sha256": "fb48ff51ccd46cf899f1bad98504c7c675a172d7cd878472e2ac772c5ceaab2e" + }, + { + "stage": 91, + "kind": "H", + "output_sha256": "dde8a158b33a00060d81a7832c8ef04a1eb2626b7db0e168ba8f51b7b44ce066" + }, + { + "stage": 92, + "kind": "D", + "output_sha256": "93015906701918d32637f16bb15342c4f1d6b0d602cac3f547d9153550cde78b" + }, + { + "stage": 93, + "kind": "H", + "output_sha256": "810447c48000016c50ab144bb862a2941a47b1c952e4811d77ed453da9b547b3" + }, + { + "stage": 94, + "kind": "D", + "output_sha256": "030f6d38acc4631a4e7013ad558a60063c1d3c92c10d3abf6bd6c1dbf68a6e2b" + }, + { + "stage": 95, + "kind": "H", + "output_sha256": "383bc5e401a3441955bb9f20bcbe6d0ce01da997b6492633c55c7862d858f140" + }, + { + "stage": 96, + "kind": "D", + "output_sha256": "db28818ea168884b93ec30c6949a1f90535fa76f518e63cb552213160c7d6746" + }, + { + "stage": 97, + "kind": "H", + "output_sha256": "cb6d87b545da18821b1bc72a8bf809e4241d2c089747656959310b68de43483a" + }, + { + "stage": 98, + "kind": "D", + "output_sha256": "da14dddd2d2aab47432048d1090d3cb8c477bd3537ab37138cbe4be5b338a467" + }, + { + "stage": 99, + "kind": "H", + "output_sha256": "39838f4309019b3f68f4406bd1cccc4834bef064bfa88f8cdb02698ab55e90fc" + }, + { + "stage": 100, + "kind": "D", + "output_sha256": "f64df8bd02ab7652b5fd075fe114547ad7d086b19fd50b067317d4445c4e1e50" + }, + { + "stage": 101, + "kind": "H", + "output_sha256": "c68448ff54c02bd7f996562174cfc2bd044c8563d3fc2b1cdeca5e1220073edc" + }, + { + "stage": 102, + "kind": "D", + "output_sha256": "c68448ff54c02bd7f996562174cfc2bd044c8563d3fc2b1cdeca5e1220073edc" + }, + { + "stage": 103, + "kind": "H", + "output_sha256": "e0cc37573f910bde4ae49abb7b6cf9b8da8fa39ebf72578c22c6a245bc6a6824" + }, + { + "stage": 104, + "kind": "D", + "output_sha256": "7e11fc694fa51c221471116a69ab2facd53ef2c90ac12f0ceab97cc49846f156" + }, + { + "stage": 105, + "kind": "H", + "output_sha256": "b0460c21d7802cbd36a3bb9dd4fc01010801ccc015f62534cd350c3fb3a91689" + }, + { + "stage": 106, + "kind": "D", + "output_sha256": "b0460c21d7802cbd36a3bb9dd4fc01010801ccc015f62534cd350c3fb3a91689" + }, + { + "stage": 107, + "kind": "H", + "output_sha256": "6ae92eddf8aaecf1a057d0faae2023ac73c975a024e48f5c5986d88b5293020e" + }, + { + "stage": 108, + "kind": "D", + "output_sha256": "d6a14145cc9d077395486ec1300e56a73b406a02f34ac2e5a225f935c6f0db98" + }, + { + "stage": 109, + "kind": "H", + "output_sha256": "5f07e0b0836c2d35ab352c0026a2d14b5a04b6d9c1973d530b31c1bffb37ed46" + }, + { + "stage": 110, + "kind": "D", + "output_sha256": "5f07e0b0836c2d35ab352c0026a2d14b5a04b6d9c1973d530b31c1bffb37ed46" + } + ] + }, + { + "field_size": 4, + "active_indices": [ + 3, + 2, + 1, + 0 + ], + "adjoint": true, + "radius": "1", + "target_bits": 24, + "incoming_bits": 5, + "phase_bits": 29, + "data_bits": 63, + "observed_coefficient_bits": 67, + "counts": { + "logical_layers": 3, + "primitive_stages": 111, + "diagonal_stages": 57, + "hadamard_stages": 54 + }, + "layers": [ + { + "begin": 0, + "end": 37, + "pairs": [ + [ + 3, + 1 + ], + [ + 2, + 0 + ] + ], + "kinds": [ + "butterfly", + "adjoint" + ], + "permutation": [ + 3, + 1, + 2, + 0 + ], + "route_layers": 3 + }, + { + "begin": 37, + "end": 74, + "pairs": [ + [ + 3, + 2 + ], + [ + 1, + 0 + ] + ], + "kinds": [ + "butterfly", + "butterfly" + ], + "permutation": [ + 3, + 2, + 1, + 0 + ], + "route_layers": 3 + }, + { + "begin": 74, + "end": 111, + "pairs": [ + [ + 2, + 1 + ], + [ + 0, + 3 + ] + ], + "kinds": [ + "swap", + "idle" + ], + "permutation": [ + 2, + 1, + 0, + 3 + ], + "route_layers": 3 + } + ], + "logical_plan_sha256": "d64abd230ab47251be8071b615a3b5f71e304038385b8206f90c947ab19ba4ef", + "reference_stages_sha256": "5c9bf7a3de2ab6a66ad92275e0c4afa4625d8bb65f56238057364f26c0c1fd18", + "stored_stages_sha256": "951627a00f9430ba38d90f97fc201e8f1c2d009aff221a54fb39603407eac1eb", + "source_original_ast_sha256": "15211aaf783ddbe8714fb7c5c039e932422028d729566ce763a4c8016a82e537", + "source_adapted_ast_sha256": "550954f4c90dde9cae269f71042d223a2cba81d5a91dcfa7219fb36f338d1313", + "tensor_ast_sha256": "2b5d66a710ef21aaa1bcfc1db64267067455a5ba465694876a1c2a57fda2f357", + "phases": { + "phase_bits": 29, + "oracle_bits": 122, + "certificates": [ + { + "denominator": 1, + "numerator": 0, + "unit": [ + "1", + "0" + ], + "error_bound": "0", + "parameter": null + }, + { + "denominator": 4, + "numerator": 3, + "unit": [ + "0", + "-1" + ], + "error_bound": "0", + "parameter": null + }, + { + "denominator": 8, + "numerator": 1, + "unit": [ + "238777861777212375/337682890526211113", + "238777861786304512/337682890526211113" + ], + "error_bound": "48342092167647510599664018948811554638606829/1795430207140051013847080600839799286987531405441892352", + "parameter": "222379213/536870912" + } + ] + }, + "budget": { + "prefix_bound": 16384, + "phase_error": "1/134217728", + "coefficient_error": "57/8589934592", + "rounding_error": "111/35184372088832", + "total_error": "495727/35184372088832", + "amplitude_bound": "131072", + "coefficient_bits": 68, + "data_bits": 82, + "temporary_bits": 151 + }, + "label": "four-reversed-adjoint", + "input_sha256": "923aa57ec2df41ef1b2cde1ded5de8f5482031f2d1b329fe1486536fa554626c", + "output_sha256": "34938989c7ade60acb39aebaf2a7374b7221ca187d6f92c0fd6e813ff0968728", + "rational_target_sha256": "00e5ac7a5dfa45633a4f1614c4388d8552c60f5ce78a5913be8cbdd6860f425c", + "exact_matrix_sha256": "b88bae2bbf56c03c0badd008deb8e83591792b1630e3353f5235b74dd9c69f9d", + "rounded_rational_error_squared_upper": "15362824446163/1461501637330902918203684832716283019655932542976", + "ideal_error_squared_upper": "225852297135321/10633823966279326983230456482242756608", + "nonzero_rounded_error": true, + "nonzero_spectator_error": false, + "spectator_error_squared_upper": "0", + "statistics": { + "real_products": 912, + "complex_roundings": 444, + "h_pair_calls": 108, + "maximum_data_numerator_bits": 64, + "maximum_temporary_numerator_bits": 127, + "maximum_temporary_fractional_bits": 124 + }, + "trace": [ + { + "stage": 0, + "kind": "H", + "output_sha256": "ed6ff8c857c5b5f4dffa3ef68ee67f2f3470c4051bf1132683f5e65488314229" + }, + { + "stage": 1, + "kind": "D", + "output_sha256": "ac50a7361c9a878e44475c1543071bf34b87f4569cc8d47df4076ac40b6fb20b" + }, + { + "stage": 2, + "kind": "H", + "output_sha256": "d49eaea8552ff0083e0e7099b574e1d822cdc81928b92606dcd0b35f40578442" + }, + { + "stage": 3, + "kind": "D", + "output_sha256": "d49eaea8552ff0083e0e7099b574e1d822cdc81928b92606dcd0b35f40578442" + }, + { + "stage": 4, + "kind": "H", + "output_sha256": "1a25270e533e6a033aaec7d0e69a6af970bf952d1bfd39cfb9f8e06018078eb1" + }, + { + "stage": 5, + "kind": "D", + "output_sha256": "7155b1b90953e1499ac0d5dc314585eccec4f03b7c79ecd54388c95b167fd5c0" + }, + { + "stage": 6, + "kind": "H", + "output_sha256": "3598b95dfa7258178095466bee976dd5f9bfed44977bc86bd66e9cbc4404dabe" + }, + { + "stage": 7, + "kind": "D", + "output_sha256": "3598b95dfa7258178095466bee976dd5f9bfed44977bc86bd66e9cbc4404dabe" + }, + { + "stage": 8, + "kind": "H", + "output_sha256": "355cf66bc42d76ce64796c47ea917b0c9ae9604dc2c09bf49d18a97ff4bc81f2" + }, + { + "stage": 9, + "kind": "D", + "output_sha256": "ae8c2d9b9995e267b1db4baa7826fd2dd2e88f2e6721376b6eed178fa3f00279" + }, + { + "stage": 10, + "kind": "H", + "output_sha256": "aaff6a6efea9ede153d47ef67d9d64094ecd79c31be714622859a4ce0e0bc88a" + }, + { + "stage": 11, + "kind": "D", + "output_sha256": "aaff6a6efea9ede153d47ef67d9d64094ecd79c31be714622859a4ce0e0bc88a" + }, + { + "stage": 12, + "kind": "D", + "output_sha256": "a243dcd73af5d0d5bec18758dcf87de73a2da220ff50b93910e02d044ea427fa" + }, + { + "stage": 13, + "kind": "H", + "output_sha256": "96680e3e809caa7fecb5a096b7195bf7bc513eaecf91b31eb5f02681fd64334f" + }, + { + "stage": 14, + "kind": "D", + "output_sha256": "fc13a88ab5b60c632858b876ea2b60888185280bb3501f95e7891cff705b00a1" + }, + { + "stage": 15, + "kind": "H", + "output_sha256": "acd94ab4d926d8059d138a75519dff1bcc0828ed3f1cf9c458f34f3570c0c29a" + }, + { + "stage": 16, + "kind": "D", + "output_sha256": "516dc63e7f3b059aded989d14e2da41bce4818e2e583eea57a805a3f5eafdecb" + }, + { + "stage": 17, + "kind": "H", + "output_sha256": "80d72c064161ad09196711bd8ef8ffbe948733e9884214856d63b35e08ba3952" + }, + { + "stage": 18, + "kind": "D", + "output_sha256": "df9ad013421067c0b4fccd17863b161a9c9bffd2c6e656a5d23e47c7640eb43a" + }, + { + "stage": 19, + "kind": "H", + "output_sha256": "0f85159af6670f8df48aee4219fc29bd0dac0149d65f8ac234fb8c35e83aa707" + }, + { + "stage": 20, + "kind": "D", + "output_sha256": "1321f78b105650cebf87f40d4e0963c63015b6ef9f5b8bc0e67d16749d51c8c3" + }, + { + "stage": 21, + "kind": "H", + "output_sha256": "76ec1fe9097e33aaa8ba9b0e07b02a10eeb32934eb4bc91fcb0168049c1a8219" + }, + { + "stage": 22, + "kind": "D", + "output_sha256": "f3cfe926139858bd087d1d5c587a34ebec9b4403905c953d696ae68936f9fe07" + }, + { + "stage": 23, + "kind": "H", + "output_sha256": "9a4bfb8ca4f9fbdf5ec92b379a30b86f1cf40080332abaf435cf5531066a657b" + }, + { + "stage": 24, + "kind": "D", + "output_sha256": "841fb9b0282e01f9db4d3a2c50aa6c25325a8b2d85c8a497057d60be55799854" + }, + { + "stage": 25, + "kind": "H", + "output_sha256": "85ef9014e885b2ff3632b8924d4895e0f167a5e72fdfa7c237ee53b9eb151373" + }, + { + "stage": 26, + "kind": "D", + "output_sha256": "6ff1981e19ba05ab965f0391304addd966ee1fb3aafec3ffd2a8b800db6117e6" + }, + { + "stage": 27, + "kind": "H", + "output_sha256": "45c12546cc801e4d503c0be04b0d786ae1e0ac2692207f616b23d53bf4bb1974" + }, + { + "stage": 28, + "kind": "D", + "output_sha256": "45c12546cc801e4d503c0be04b0d786ae1e0ac2692207f616b23d53bf4bb1974" + }, + { + "stage": 29, + "kind": "H", + "output_sha256": "95b5f8c4b31596bb71e02d3abff4aa3acf98d501ecede673acd6b82dbc294680" + }, + { + "stage": 30, + "kind": "D", + "output_sha256": "1298a3ef312d446f7463becf4336e580967a615fd322e1fc4d3816056332b5a2" + }, + { + "stage": 31, + "kind": "H", + "output_sha256": "bec5e890e2e3d1e40ca7969da5d7d327e47986d5021dc6ea7e9754632d4a7239" + }, + { + "stage": 32, + "kind": "D", + "output_sha256": "bec5e890e2e3d1e40ca7969da5d7d327e47986d5021dc6ea7e9754632d4a7239" + }, + { + "stage": 33, + "kind": "H", + "output_sha256": "a23831fa6c4626171a6e5b1ead6a020a314244ec0d8aeba4949200b2bed2bc84" + }, + { + "stage": 34, + "kind": "D", + "output_sha256": "283df8637e88effdfcd95ba4d70c6959caaa740adae84c72108030b292adae4c" + }, + { + "stage": 35, + "kind": "H", + "output_sha256": "078968761bbcf8df3db3492c281bd615fb77e5339d244e019172ced424e735c1" + }, + { + "stage": 36, + "kind": "D", + "output_sha256": "078968761bbcf8df3db3492c281bd615fb77e5339d244e019172ced424e735c1" + }, + { + "stage": 37, + "kind": "H", + "output_sha256": "5ded7ce2291c2fb69228d12883113dd8c99d294aeeaab44f9504bd01698815c6" + }, + { + "stage": 38, + "kind": "D", + "output_sha256": "283df8637e88effdfcd95ba4d70c6959caaa740adae84c72108030b292adae4c" + }, + { + "stage": 39, + "kind": "H", + "output_sha256": "078968761bbcf8df3db3492c281bd615fb77e5339d244e019172ced424e735c1" + }, + { + "stage": 40, + "kind": "D", + "output_sha256": "078968761bbcf8df3db3492c281bd615fb77e5339d244e019172ced424e735c1" + }, + { + "stage": 41, + "kind": "H", + "output_sha256": "c41ce069d67ae18707a66299fc24061052145417cc69a5a4909bb2c62b274640" + }, + { + "stage": 42, + "kind": "D", + "output_sha256": "1fe6ba62c1d63321dff9be7af0832179991c3481c6d186faf5118d3887710924" + }, + { + "stage": 43, + "kind": "H", + "output_sha256": "7ec3524853cf3ed74c0f400504b624cc6d3ac772b99fbdb0f9c61b6e5b0d43ac" + }, + { + "stage": 44, + "kind": "D", + "output_sha256": "7ec3524853cf3ed74c0f400504b624cc6d3ac772b99fbdb0f9c61b6e5b0d43ac" + }, + { + "stage": 45, + "kind": "H", + "output_sha256": "bd01e53aca01bee3419ed088bc341f0f110f326e0c7686c61503c4b9a4882c3f" + }, + { + "stage": 46, + "kind": "D", + "output_sha256": "b352f35c6e60dd59235561ab8121704bc7802f9995cd0407c0c6b3824a70c05e" + }, + { + "stage": 47, + "kind": "H", + "output_sha256": "2f706ff2d7d2533db5be0b25abed9a0116cbd32c7918a1cce396082c52672ef3" + }, + { + "stage": 48, + "kind": "D", + "output_sha256": "2f706ff2d7d2533db5be0b25abed9a0116cbd32c7918a1cce396082c52672ef3" + }, + { + "stage": 49, + "kind": "D", + "output_sha256": "2d9adc7bfad344f0668e4f7e129d70dca80db2c1c33bf4369649b563e40c8e5e" + }, + { + "stage": 50, + "kind": "H", + "output_sha256": "0a033840bedb02fa7055b95e09d892a435cf1f1ed8084762a7be4cd1ba6b3ceb" + }, + { + "stage": 51, + "kind": "D", + "output_sha256": "b15cf8d87fa9c582556629db59dc7fc41706a24fbff36d08b76fe94e998475f5" + }, + { + "stage": 52, + "kind": "H", + "output_sha256": "725cbda758bf8430567e8e33376e6899a40b996f308af6e909aa0152be66f9c4" + }, + { + "stage": 53, + "kind": "D", + "output_sha256": "cf049aa76ddd1b48aeede3a1cd6e214e913bd6de5c1d30d924f8fbce4e03daef" + }, + { + "stage": 54, + "kind": "H", + "output_sha256": "ae88f813ddb0fee6287f7bb2bec12e958c930a149e59f579dcbbdbc7e6b6c9cc" + }, + { + "stage": 55, + "kind": "D", + "output_sha256": "b94e8f0582b9af4cee763505afd4f8c048dfa4df967ccf1919ba5f7525712945" + }, + { + "stage": 56, + "kind": "H", + "output_sha256": "6ae46c026cf203c627057631a3161a635c06b784997910c4456482bd2be4c863" + }, + { + "stage": 57, + "kind": "D", + "output_sha256": "3c1592a76a94a081e98a5837422d1e83d4f055ee388f2bb1f06e68e8198b4d36" + }, + { + "stage": 58, + "kind": "H", + "output_sha256": "877631f8ab38b0d8830a393d414d141db63043fde618deec43d7af6f7f1b2776" + }, + { + "stage": 59, + "kind": "D", + "output_sha256": "fb34fcf10b393715150e847e44ed9bbcddc3b18be1023336532f064748781239" + }, + { + "stage": 60, + "kind": "H", + "output_sha256": "0607117af5532be5962289f4e20b111008a8b302d7c5ba9a9a980536fcc1b1eb" + }, + { + "stage": 61, + "kind": "D", + "output_sha256": "1441dcedd33a58dd7c0b1ce877b8bbb1b7d1784953e070a5a1b6d9771d2bc608" + }, + { + "stage": 62, + "kind": "H", + "output_sha256": "e7bfd7025a9ddca92b8d031ab66043586aa104e91ae0304d8cc5d357c7d6aa20" + }, + { + "stage": 63, + "kind": "D", + "output_sha256": "b994149b3e36b35bb1cd53e4e98cac1c30e840882aa23033c78d079ff22451af" + }, + { + "stage": 64, + "kind": "H", + "output_sha256": "fa4300a8368ea5bcf772a5f6318f2eb5f75d522554868fd52120e9e87ec68234" + }, + { + "stage": 65, + "kind": "D", + "output_sha256": "fa4300a8368ea5bcf772a5f6318f2eb5f75d522554868fd52120e9e87ec68234" + }, + { + "stage": 66, + "kind": "H", + "output_sha256": "5d29ef2d24804991accee187cc43171ef3cd6bd7fa67724f8f3b2565edc88d2d" + }, + { + "stage": 67, + "kind": "D", + "output_sha256": "e71f2a327d943623b4e005fc41a847b3949048195a021a80a478f78f926b880f" + }, + { + "stage": 68, + "kind": "H", + "output_sha256": "3b9bbc7c3fc5a0e204442cd1279dbc3c3ca752480aef661585de9386b8f75fbf" + }, + { + "stage": 69, + "kind": "D", + "output_sha256": "3b9bbc7c3fc5a0e204442cd1279dbc3c3ca752480aef661585de9386b8f75fbf" + }, + { + "stage": 70, + "kind": "H", + "output_sha256": "aa814334d3eb037e4e722e96a7c1cfc1cabf93414532d37e57a87100503cb789" + }, + { + "stage": 71, + "kind": "D", + "output_sha256": "37e97cba36a9ef20c2588937f053e0d74a3f9b54a444e13e29c7bcffcc6716b0" + }, + { + "stage": 72, + "kind": "H", + "output_sha256": "3b9bbc7c3fc5a0e204442cd1279dbc3c3ca752480aef661585de9386b8f75fbf" + }, + { + "stage": 73, + "kind": "D", + "output_sha256": "3b9bbc7c3fc5a0e204442cd1279dbc3c3ca752480aef661585de9386b8f75fbf" + }, + { + "stage": 74, + "kind": "H", + "output_sha256": "aa814334d3eb037e4e722e96a7c1cfc1cabf93414532d37e57a87100503cb789" + }, + { + "stage": 75, + "kind": "D", + "output_sha256": "37e97cba36a9ef20c2588937f053e0d74a3f9b54a444e13e29c7bcffcc6716b0" + }, + { + "stage": 76, + "kind": "H", + "output_sha256": "3b9bbc7c3fc5a0e204442cd1279dbc3c3ca752480aef661585de9386b8f75fbf" + }, + { + "stage": 77, + "kind": "D", + "output_sha256": "3b9bbc7c3fc5a0e204442cd1279dbc3c3ca752480aef661585de9386b8f75fbf" + }, + { + "stage": 78, + "kind": "H", + "output_sha256": "b6cea94c14c70033d4956d6ac0dd7e9208185bd497c1df94a5bbcd7cf1317b51" + }, + { + "stage": 79, + "kind": "D", + "output_sha256": "9ea1a4c2c3800df286651e91643b4e010fc1cd53bf4cdb5664cc19a24b45fd93" + }, + { + "stage": 80, + "kind": "H", + "output_sha256": "762fad7f31ec883a4c7e6a61e6a3279f64c0cf0f4d70bee4882afad81f3b637e" + }, + { + "stage": 81, + "kind": "D", + "output_sha256": "762fad7f31ec883a4c7e6a61e6a3279f64c0cf0f4d70bee4882afad81f3b637e" + }, + { + "stage": 82, + "kind": "H", + "output_sha256": "e64721bf9867b9d58139a8ef451ebc1cdd03c94099dff2d2ae6b5d9183311778" + }, + { + "stage": 83, + "kind": "D", + "output_sha256": "de1118c8e113dab2394f8742f258fa9038c6da382e98564aaa569008e55e59d8" + }, + { + "stage": 84, + "kind": "H", + "output_sha256": "762fad7f31ec883a4c7e6a61e6a3279f64c0cf0f4d70bee4882afad81f3b637e" + }, + { + "stage": 85, + "kind": "D", + "output_sha256": "762fad7f31ec883a4c7e6a61e6a3279f64c0cf0f4d70bee4882afad81f3b637e" + }, + { + "stage": 86, + "kind": "D", + "output_sha256": "762fad7f31ec883a4c7e6a61e6a3279f64c0cf0f4d70bee4882afad81f3b637e" + }, + { + "stage": 87, + "kind": "H", + "output_sha256": "e64721bf9867b9d58139a8ef451ebc1cdd03c94099dff2d2ae6b5d9183311778" + }, + { + "stage": 88, + "kind": "D", + "output_sha256": "d7492f3f52b70494d9c78a5893802f4396da6a9f9a847f6b47f052815f7998aa" + }, + { + "stage": 89, + "kind": "H", + "output_sha256": "330081e464ea105ec43375cd457423d5aa3ceb927e2b947f08c298657b6ec711" + }, + { + "stage": 90, + "kind": "D", + "output_sha256": "330081e464ea105ec43375cd457423d5aa3ceb927e2b947f08c298657b6ec711" + }, + { + "stage": 91, + "kind": "H", + "output_sha256": "7a2a3075eea8260e6d267123b8e80abdd235c5b0c677a0233a8b054dda3f1127" + }, + { + "stage": 92, + "kind": "D", + "output_sha256": "d7492f3f52b70494d9c78a5893802f4396da6a9f9a847f6b47f052815f7998aa" + }, + { + "stage": 93, + "kind": "H", + "output_sha256": "330081e464ea105ec43375cd457423d5aa3ceb927e2b947f08c298657b6ec711" + }, + { + "stage": 94, + "kind": "D", + "output_sha256": "330081e464ea105ec43375cd457423d5aa3ceb927e2b947f08c298657b6ec711" + }, + { + "stage": 95, + "kind": "H", + "output_sha256": "7a2a3075eea8260e6d267123b8e80abdd235c5b0c677a0233a8b054dda3f1127" + }, + { + "stage": 96, + "kind": "D", + "output_sha256": "d7492f3f52b70494d9c78a5893802f4396da6a9f9a847f6b47f052815f7998aa" + }, + { + "stage": 97, + "kind": "H", + "output_sha256": "330081e464ea105ec43375cd457423d5aa3ceb927e2b947f08c298657b6ec711" + }, + { + "stage": 98, + "kind": "D", + "output_sha256": "330081e464ea105ec43375cd457423d5aa3ceb927e2b947f08c298657b6ec711" + }, + { + "stage": 99, + "kind": "H", + "output_sha256": "7a2a3075eea8260e6d267123b8e80abdd235c5b0c677a0233a8b054dda3f1127" + }, + { + "stage": 100, + "kind": "D", + "output_sha256": "d7492f3f52b70494d9c78a5893802f4396da6a9f9a847f6b47f052815f7998aa" + }, + { + "stage": 101, + "kind": "H", + "output_sha256": "330081e464ea105ec43375cd457423d5aa3ceb927e2b947f08c298657b6ec711" + }, + { + "stage": 102, + "kind": "D", + "output_sha256": "330081e464ea105ec43375cd457423d5aa3ceb927e2b947f08c298657b6ec711" + }, + { + "stage": 103, + "kind": "H", + "output_sha256": "b721d5e9137ef8099b63499a4888980534ab1f64cb8adf361a65840b7db7c7de" + }, + { + "stage": 104, + "kind": "D", + "output_sha256": "94eefdf1d688524cfb36c865dcd2c66f9f94b6c4e2b1d88fd3e2003b68cd7da2" + }, + { + "stage": 105, + "kind": "H", + "output_sha256": "34938989c7ade60acb39aebaf2a7374b7221ca187d6f92c0fd6e813ff0968728" + }, + { + "stage": 106, + "kind": "D", + "output_sha256": "34938989c7ade60acb39aebaf2a7374b7221ca187d6f92c0fd6e813ff0968728" + }, + { + "stage": 107, + "kind": "H", + "output_sha256": "121d4af5d018b4430e387043f038f0a996de0b4789876bec0598383dde818e80" + }, + { + "stage": 108, + "kind": "D", + "output_sha256": "4d23bd129ee11d85c915c898b404b866c8d8cb998dec1db08483b6a352f1466b" + }, + { + "stage": 109, + "kind": "H", + "output_sha256": "34938989c7ade60acb39aebaf2a7374b7221ca187d6f92c0fd6e813ff0968728" + }, + { + "stage": 110, + "kind": "D", + "output_sha256": "34938989c7ade60acb39aebaf2a7374b7221ca187d6f92c0fd6e813ff0968728" + } + ] + }, + { + "field_size": 8, + "active_indices": [ + 5, + 1, + 7, + 3, + 0, + 6, + 2, + 4 + ], + "adjoint": false, + "radius": "1", + "target_bits": 22, + "incoming_bits": 6, + "phase_bits": 28, + "data_bits": 62, + "observed_coefficient_bits": 66, + "counts": { + "logical_layers": 4, + "primitive_stages": 212, + "diagonal_stages": 108, + "hadamard_stages": 104 + }, + "layers": [ + { + "begin": 0, + "end": 53, + "pairs": [ + [ + 1, + 0 + ], + [ + 3, + 2 + ], + [ + 4, + 5 + ], + [ + 6, + 7 + ] + ], + "kinds": [ + "swap", + "swap", + "idle", + "idle" + ], + "permutation": [ + 1, + 0, + 3, + 2, + 4, + 5, + 6, + 7 + ], + "route_layers": 5 + }, + { + "begin": 53, + "end": 106, + "pairs": [ + [ + 5, + 1 + ], + [ + 7, + 3 + ], + [ + 0, + 6 + ], + [ + 2, + 4 + ] + ], + "kinds": [ + "butterfly", + "butterfly", + "butterfly", + "butterfly" + ], + "permutation": [ + 4, + 1, + 6, + 3, + 7, + 0, + 5, + 2 + ], + "route_layers": 5 + }, + { + "begin": 106, + "end": 159, + "pairs": [ + [ + 5, + 7 + ], + [ + 1, + 3 + ], + [ + 0, + 2 + ], + [ + 6, + 4 + ] + ], + "kinds": [ + "butterfly", + "butterfly", + "butterfly", + "butterfly" + ], + "permutation": [ + 4, + 2, + 5, + 3, + 7, + 0, + 6, + 1 + ], + "route_layers": 5 + }, + { + "begin": 159, + "end": 212, + "pairs": [ + [ + 5, + 0 + ], + [ + 1, + 6 + ], + [ + 7, + 2 + ], + [ + 3, + 4 + ] + ], + "kinds": [ + "butterfly", + "butterfly", + "butterfly", + "butterfly" + ], + "permutation": [ + 1, + 2, + 5, + 6, + 7, + 0, + 3, + 4 + ], + "route_layers": 5 + } + ], + "logical_plan_sha256": "7646e3e99f4f55d59c2df77c71f275411e26be5b8f19542ece2e9435c0110f82", + "reference_stages_sha256": "89dd37079353bd0cc3c9a5578f6c1ce4b8946ac0ec2d7c9724033aad1178c496", + "stored_stages_sha256": "bdb159054c8b5a07afdd5073bab9a240db881117910aad64687caf1488c965a7", + "source_original_ast_sha256": "15211aaf783ddbe8714fb7c5c039e932422028d729566ce763a4c8016a82e537", + "source_adapted_ast_sha256": "550954f4c90dde9cae269f71042d223a2cba81d5a91dcfa7219fb36f338d1313", + "tensor_ast_sha256": "2b5d66a710ef21aaa1bcfc1db64267067455a5ba465694876a1c2a57fda2f357", + "phases": { + "phase_bits": 28, + "oracle_bits": 120, + "certificates": [ + { + "denominator": 1, + "numerator": 0, + "unit": [ + "1", + "0" + ], + "error_bound": "0", + "parameter": null + }, + { + "denominator": 4, + "numerator": 3, + "unit": [ + "0", + "-1" + ], + "error_bound": "0", + "parameter": null + }, + { + "denominator": 8, + "numerator": 1, + "unit": [ + "238777861777212375/337682890526211113", + "238777861786304512/337682890526211113" + ], + "error_bound": "12085523041911877649916014107903100762010093/448857551785012753461770150209949821746882851360473088", + "parameter": "222379213/536870912" + }, + { + "denominator": 8, + "numerator": 5, + "unit": [ + "-238777861777212375/337682890526211113", + "-238777861786304512/337682890526211113" + ], + "error_bound": "12085523041911877649916039771802780754054681/448857551785012753461770150209949821746882851360473088", + "parameter": "222379213/536870912" + }, + { + "denominator": 8, + "numerator": 7, + "unit": [ + "238777861777212375/337682890526211113", + "-238777861786304512/337682890526211113" + ], + "error_bound": "12085523041911877649916014107903100762010093/448857551785012753461770150209949821746882851360473088", + "parameter": "-222379213/536870912" + } + ] + }, + "budget": { + "prefix_bound": 16384, + "phase_error": "3/134217728", + "coefficient_error": "27/1073741824", + "rounding_error": "53/2199023255552", + "total_error": "104501/2199023255552", + "amplitude_bound": "131072", + "coefficient_bits": 67, + "data_bits": 81, + "temporary_bits": 149 + }, + "label": "eight-permuted", + "input_sha256": "b65a7f7e9c1555ebb2b0809ae2a3f5eb4d075813a1e0685bb4674efb37b07fdc", + "output_sha256": "f3ae7a9f138e982b74c559ca42a221cb50461b74900dbe495b9c44c1d96ae040", + "rational_target_sha256": "26c7463ce31a8585d4e2122d52d4797e01da05649209be01e3a7dbd7fe3552d8", + "exact_matrix_sha256": "a309b67b68b25b348134925c46c3450aafa95c1b25ad64b39ea67d8a5dfba17b", + "rounded_rational_error_squared_upper": "89691656370903/730750818665451459101842416358141509827966271488", + "ideal_error_squared_upper": "17631557351994675949048841/730750818665451459101842416358141509827966271488", + "nonzero_rounded_error": true, + "nonzero_spectator_error": false, + "spectator_error_squared_upper": "0", + "statistics": { + "real_products": 3456, + "complex_roundings": 1696, + "h_pair_calls": 416, + "maximum_data_numerator_bits": 63, + "maximum_temporary_numerator_bits": 126, + "maximum_temporary_fractional_bits": 123 + }, + "trace": [ + { + "stage": 0, + "kind": "H", + "output_sha256": "e493330a5b87932d205a8fdf8d85589daa8b129918da38679d7376965ae2bd51" + }, + { + "stage": 1, + "kind": "D", + "output_sha256": "a02947d097e39f14fab9ec2b47b8e96ac732e57c50937a6ffecee8abde5fc6c6" + }, + { + "stage": 2, + "kind": "H", + "output_sha256": "b65a7f7e9c1555ebb2b0809ae2a3f5eb4d075813a1e0685bb4674efb37b07fdc" + }, + { + "stage": 3, + "kind": "D", + "output_sha256": "b65a7f7e9c1555ebb2b0809ae2a3f5eb4d075813a1e0685bb4674efb37b07fdc" + }, + { + "stage": 4, + "kind": "H", + "output_sha256": "28fc8c0caa799ab139e1248fa9515c3642031bf77872cf06489258577b11383d" + }, + { + "stage": 5, + "kind": "D", + "output_sha256": "02ce9765e3e86ec3ba048cff41d25c1833b41c88966a83c9412b6faf9191ec11" + }, + { + "stage": 6, + "kind": "H", + "output_sha256": "b65a7f7e9c1555ebb2b0809ae2a3f5eb4d075813a1e0685bb4674efb37b07fdc" + }, + { + "stage": 7, + "kind": "D", + "output_sha256": "b65a7f7e9c1555ebb2b0809ae2a3f5eb4d075813a1e0685bb4674efb37b07fdc" + }, + { + "stage": 8, + "kind": "H", + "output_sha256": "3e6666f79934baf33112c507c54c89fbad8b0ba5f8a2bff0a033928c1d0285f3" + }, + { + "stage": 9, + "kind": "D", + "output_sha256": "6837e7bc6d2b12bebfc319bab47c142d6a341c5b965f441f061891c25242a969" + }, + { + "stage": 10, + "kind": "H", + "output_sha256": "b65a7f7e9c1555ebb2b0809ae2a3f5eb4d075813a1e0685bb4674efb37b07fdc" + }, + { + "stage": 11, + "kind": "D", + "output_sha256": "b65a7f7e9c1555ebb2b0809ae2a3f5eb4d075813a1e0685bb4674efb37b07fdc" + }, + { + "stage": 12, + "kind": "H", + "output_sha256": "28fc8c0caa799ab139e1248fa9515c3642031bf77872cf06489258577b11383d" + }, + { + "stage": 13, + "kind": "D", + "output_sha256": "02ce9765e3e86ec3ba048cff41d25c1833b41c88966a83c9412b6faf9191ec11" + }, + { + "stage": 14, + "kind": "H", + "output_sha256": "b65a7f7e9c1555ebb2b0809ae2a3f5eb4d075813a1e0685bb4674efb37b07fdc" + }, + { + "stage": 15, + "kind": "D", + "output_sha256": "b65a7f7e9c1555ebb2b0809ae2a3f5eb4d075813a1e0685bb4674efb37b07fdc" + }, + { + "stage": 16, + "kind": "H", + "output_sha256": "e493330a5b87932d205a8fdf8d85589daa8b129918da38679d7376965ae2bd51" + }, + { + "stage": 17, + "kind": "D", + "output_sha256": "b39c3662e500d51cc7f64cf8c2e0c694b32e34616145430ebe48ebf00c9180fc" + }, + { + "stage": 18, + "kind": "H", + "output_sha256": "72e2bc27e1acde4c8e7b27b3682b3f40d46651f3e3d176418e316585deb5b3ec" + }, + { + "stage": 19, + "kind": "D", + "output_sha256": "72e2bc27e1acde4c8e7b27b3682b3f40d46651f3e3d176418e316585deb5b3ec" + }, + { + "stage": 20, + "kind": "D", + "output_sha256": "72e2bc27e1acde4c8e7b27b3682b3f40d46651f3e3d176418e316585deb5b3ec" + }, + { + "stage": 21, + "kind": "H", + "output_sha256": "7ef22d762c70ccee2cf2ef0dcca41f5ebef27ef92977d1525e817c0ed6a97ada" + }, + { + "stage": 22, + "kind": "D", + "output_sha256": "a02947d097e39f14fab9ec2b47b8e96ac732e57c50937a6ffecee8abde5fc6c6" + }, + { + "stage": 23, + "kind": "H", + "output_sha256": "b65a7f7e9c1555ebb2b0809ae2a3f5eb4d075813a1e0685bb4674efb37b07fdc" + }, + { + "stage": 24, + "kind": "D", + "output_sha256": "b65a7f7e9c1555ebb2b0809ae2a3f5eb4d075813a1e0685bb4674efb37b07fdc" + }, + { + "stage": 25, + "kind": "H", + "output_sha256": "e493330a5b87932d205a8fdf8d85589daa8b129918da38679d7376965ae2bd51" + }, + { + "stage": 26, + "kind": "D", + "output_sha256": "a02947d097e39f14fab9ec2b47b8e96ac732e57c50937a6ffecee8abde5fc6c6" + }, + { + "stage": 27, + "kind": "H", + "output_sha256": "b65a7f7e9c1555ebb2b0809ae2a3f5eb4d075813a1e0685bb4674efb37b07fdc" + }, + { + "stage": 28, + "kind": "D", + "output_sha256": "b65a7f7e9c1555ebb2b0809ae2a3f5eb4d075813a1e0685bb4674efb37b07fdc" + }, + { + "stage": 29, + "kind": "H", + "output_sha256": "e493330a5b87932d205a8fdf8d85589daa8b129918da38679d7376965ae2bd51" + }, + { + "stage": 30, + "kind": "D", + "output_sha256": "a02947d097e39f14fab9ec2b47b8e96ac732e57c50937a6ffecee8abde5fc6c6" + }, + { + "stage": 31, + "kind": "H", + "output_sha256": "b65a7f7e9c1555ebb2b0809ae2a3f5eb4d075813a1e0685bb4674efb37b07fdc" + }, + { + "stage": 32, + "kind": "D", + "output_sha256": "b65a7f7e9c1555ebb2b0809ae2a3f5eb4d075813a1e0685bb4674efb37b07fdc" + }, + { + "stage": 33, + "kind": "H", + "output_sha256": "e493330a5b87932d205a8fdf8d85589daa8b129918da38679d7376965ae2bd51" + }, + { + "stage": 34, + "kind": "D", + "output_sha256": "b39c3662e500d51cc7f64cf8c2e0c694b32e34616145430ebe48ebf00c9180fc" + }, + { + "stage": 35, + "kind": "H", + "output_sha256": "72e2bc27e1acde4c8e7b27b3682b3f40d46651f3e3d176418e316585deb5b3ec" + }, + { + "stage": 36, + "kind": "D", + "output_sha256": "72e2bc27e1acde4c8e7b27b3682b3f40d46651f3e3d176418e316585deb5b3ec" + }, + { + "stage": 37, + "kind": "H", + "output_sha256": "190192232db3ab3b52e84c03fb2596e3e9143794e826efb67b8c85de3e91dd75" + }, + { + "stage": 38, + "kind": "D", + "output_sha256": "5ae70292d665297d6edb9e02b8e0909a3584fa00666915c26194aec26c4f347f" + }, + { + "stage": 39, + "kind": "H", + "output_sha256": "72e2bc27e1acde4c8e7b27b3682b3f40d46651f3e3d176418e316585deb5b3ec" + }, + { + "stage": 40, + "kind": "D", + "output_sha256": "72e2bc27e1acde4c8e7b27b3682b3f40d46651f3e3d176418e316585deb5b3ec" + }, + { + "stage": 41, + "kind": "H", + "output_sha256": "38df108103c7ec14ce0e93c847ca9eabbeb86cdf1b780247dd026a55a884ab59" + }, + { + "stage": 42, + "kind": "D", + "output_sha256": "28726d51e6573642d32a4fee15f77b6fd01d3d869b5b948b847ec9324acc20c7" + }, + { + "stage": 43, + "kind": "H", + "output_sha256": "72e2bc27e1acde4c8e7b27b3682b3f40d46651f3e3d176418e316585deb5b3ec" + }, + { + "stage": 44, + "kind": "D", + "output_sha256": "72e2bc27e1acde4c8e7b27b3682b3f40d46651f3e3d176418e316585deb5b3ec" + }, + { + "stage": 45, + "kind": "H", + "output_sha256": "190192232db3ab3b52e84c03fb2596e3e9143794e826efb67b8c85de3e91dd75" + }, + { + "stage": 46, + "kind": "D", + "output_sha256": "5ae70292d665297d6edb9e02b8e0909a3584fa00666915c26194aec26c4f347f" + }, + { + "stage": 47, + "kind": "H", + "output_sha256": "72e2bc27e1acde4c8e7b27b3682b3f40d46651f3e3d176418e316585deb5b3ec" + }, + { + "stage": 48, + "kind": "D", + "output_sha256": "72e2bc27e1acde4c8e7b27b3682b3f40d46651f3e3d176418e316585deb5b3ec" + }, + { + "stage": 49, + "kind": "H", + "output_sha256": "7ef22d762c70ccee2cf2ef0dcca41f5ebef27ef92977d1525e817c0ed6a97ada" + }, + { + "stage": 50, + "kind": "D", + "output_sha256": "b39c3662e500d51cc7f64cf8c2e0c694b32e34616145430ebe48ebf00c9180fc" + }, + { + "stage": 51, + "kind": "H", + "output_sha256": "72e2bc27e1acde4c8e7b27b3682b3f40d46651f3e3d176418e316585deb5b3ec" + }, + { + "stage": 52, + "kind": "D", + "output_sha256": "72e2bc27e1acde4c8e7b27b3682b3f40d46651f3e3d176418e316585deb5b3ec" + }, + { + "stage": 53, + "kind": "H", + "output_sha256": "7ef22d762c70ccee2cf2ef0dcca41f5ebef27ef92977d1525e817c0ed6a97ada" + }, + { + "stage": 54, + "kind": "D", + "output_sha256": "628da16a3734fffe98699730cc6abb169ae25c84dba0345a03388f7ab3964f85" + }, + { + "stage": 55, + "kind": "H", + "output_sha256": "6e6cb4748d87c7bb5ab652df099531f8bb93b85768a75408def018ad036fe1cd" + }, + { + "stage": 56, + "kind": "D", + "output_sha256": "6e6cb4748d87c7bb5ab652df099531f8bb93b85768a75408def018ad036fe1cd" + }, + { + "stage": 57, + "kind": "H", + "output_sha256": "2729e58a0a7004c8cbd81f372236bbd20ff505b2907318a82b82898173461af5" + }, + { + "stage": 58, + "kind": "D", + "output_sha256": "9e18aa4eac2684c074753bf1e412111d4033b0d249bb9ba9b93c8c6409636417" + }, + { + "stage": 59, + "kind": "H", + "output_sha256": "6e6cb4748d87c7bb5ab652df099531f8bb93b85768a75408def018ad036fe1cd" + }, + { + "stage": 60, + "kind": "D", + "output_sha256": "6e6cb4748d87c7bb5ab652df099531f8bb93b85768a75408def018ad036fe1cd" + }, + { + "stage": 61, + "kind": "H", + "output_sha256": "980619b724a0e99bcbd9cd748aa0d8094fa0a9076a0f1699a3e1e3d819a18291" + }, + { + "stage": 62, + "kind": "D", + "output_sha256": "0ef4802b6761f2aee3d48748c781f4b5bdd428bc2abe6a1035041d15fe5c0dcf" + }, + { + "stage": 63, + "kind": "H", + "output_sha256": "38bf9e359c5c5dc9a1735564aace648583fce68684fc33220204cca934a11003" + }, + { + "stage": 64, + "kind": "D", + "output_sha256": "38bf9e359c5c5dc9a1735564aace648583fce68684fc33220204cca934a11003" + }, + { + "stage": 65, + "kind": "H", + "output_sha256": "d0c2d289c5341ccf67d1e22c82c67ab2e3cef2b271d4852b57a9510acd1a5ad1" + }, + { + "stage": 66, + "kind": "D", + "output_sha256": "bbf67fa4c8808f760198b03b38a9df20b643cd0b634bc79f10a7f6d5294527d1" + }, + { + "stage": 67, + "kind": "H", + "output_sha256": "01d538001bbf23014e3907eca1dd9c80317dce4f5a24304738caf3255a193a67" + }, + { + "stage": 68, + "kind": "D", + "output_sha256": "01d538001bbf23014e3907eca1dd9c80317dce4f5a24304738caf3255a193a67" + }, + { + "stage": 69, + "kind": "H", + "output_sha256": "6836d5b093eedb3f60f8c044802c9aedc39aada2cc51a805d5c7b5ba886e97f9" + }, + { + "stage": 70, + "kind": "D", + "output_sha256": "2330d4537ade84acb148a2fd5b792f7b43171874885a051cfd442bc957f3da26" + }, + { + "stage": 71, + "kind": "H", + "output_sha256": "01d538001bbf23014e3907eca1dd9c80317dce4f5a24304738caf3255a193a67" + }, + { + "stage": 72, + "kind": "D", + "output_sha256": "01d538001bbf23014e3907eca1dd9c80317dce4f5a24304738caf3255a193a67" + }, + { + "stage": 73, + "kind": "D", + "output_sha256": "764d4002a86d2fe2623275f9490318bb6fa44165ed108870e1acd5b1bbac9719" + }, + { + "stage": 74, + "kind": "H", + "output_sha256": "82f476ba3c59f306b742858bead81042bd3c262a5c5b114ad3d62ac216153f52" + }, + { + "stage": 75, + "kind": "D", + "output_sha256": "95d6c09dc14ed14e98f4b0df42e3cc11b61946d4a12731ed55d88e64a3405e72" + }, + { + "stage": 76, + "kind": "H", + "output_sha256": "a2fa2964fc85e3ec00cf8eca5cb2c8f5f8f42bfc0074b5812e720713ac010c6a" + }, + { + "stage": 77, + "kind": "D", + "output_sha256": "74911ad244555d1c433398bc18f0c06d6d9943f569e769adb4c058c2fccb856a" + }, + { + "stage": 78, + "kind": "H", + "output_sha256": "2d90cb0ff97b5819bab63026afa52e2fac95f63317bfa44716b2048f615e7764" + }, + { + "stage": 79, + "kind": "D", + "output_sha256": "65782fdd94df39bda7e1eb5b716c841af68284f90a48cbdc1de1edb968a4b343" + }, + { + "stage": 80, + "kind": "H", + "output_sha256": "a3203b4bbe9d4af6eda5d3ef80e95554f8804ca39e2e9ff0e98408a7501af4de" + }, + { + "stage": 81, + "kind": "D", + "output_sha256": "6d8c7cab06e4e8f5d2a0f1f3256542f2db806c89f7df6e74ebbed7ac29677537" + }, + { + "stage": 82, + "kind": "H", + "output_sha256": "5c8ced6ea9628d4eb66da71f5b26cb9f8c715bd9b0c8dd4677daf175da68b004" + }, + { + "stage": 83, + "kind": "D", + "output_sha256": "97d672e8a5a237c1ed47ce6db8543eae0aedebb51e65fb6f3f837ce6781e6cca" + }, + { + "stage": 84, + "kind": "H", + "output_sha256": "7c3af2abf3f5b33c6ba3c832bca01385e6ae2ca4366751cfb91764acb6a36ded" + }, + { + "stage": 85, + "kind": "D", + "output_sha256": "1f20df6c79bdcd2772e4cf77ee4e03862d2d60d565ec927a6cbb4e0abaad2e74" + }, + { + "stage": 86, + "kind": "H", + "output_sha256": "db8e381febaa9e9c936bb21aaa489c3965a9a15d405c764a269c0cca5f68932b" + }, + { + "stage": 87, + "kind": "D", + "output_sha256": "7991144f0d8ca32111050c324b39328b932029789c5a39b15737705776571990" + }, + { + "stage": 88, + "kind": "H", + "output_sha256": "1f20df6c79bdcd2772e4cf77ee4e03862d2d60d565ec927a6cbb4e0abaad2e74" + }, + { + "stage": 89, + "kind": "D", + "output_sha256": "1f20df6c79bdcd2772e4cf77ee4e03862d2d60d565ec927a6cbb4e0abaad2e74" + }, + { + "stage": 90, + "kind": "H", + "output_sha256": "7015ee8304c7540f38d9bfa7a287ef520e527a8955de31c0cbb0b3ddfa28154b" + }, + { + "stage": 91, + "kind": "D", + "output_sha256": "6e76f8b73d225a4c1d1541ba5f8dac52c391eee89eb7a7d7edfc339a2882b766" + }, + { + "stage": 92, + "kind": "H", + "output_sha256": "1b6e130b788c06cfe25e33b7c09cedb4d003b2b72582b9fb25cb031294193084" + }, + { + "stage": 93, + "kind": "D", + "output_sha256": "1b6e130b788c06cfe25e33b7c09cedb4d003b2b72582b9fb25cb031294193084" + }, + { + "stage": 94, + "kind": "H", + "output_sha256": "3fab22f9bf27fddf4216b444a613f2b1f37ecefd1b6052712ea7a975e7990daa" + }, + { + "stage": 95, + "kind": "D", + "output_sha256": "5125e16ead284a0c86a2c64315d64ce196a6cd6363a926378cd915f9de162af2" + }, + { + "stage": 96, + "kind": "H", + "output_sha256": "0657dcd19abcce609a3f067bba0232103d9ba915ef34e1feeb4e7ff6cba27e38" + }, + { + "stage": 97, + "kind": "D", + "output_sha256": "0657dcd19abcce609a3f067bba0232103d9ba915ef34e1feeb4e7ff6cba27e38" + }, + { + "stage": 98, + "kind": "H", + "output_sha256": "8c2ad1b06450abecefe706f7982a7782f57763666ef31fe0cdbc6a5b55b6a048" + }, + { + "stage": 99, + "kind": "D", + "output_sha256": "63a69d24859528c81c97001401b377b99de7537654df1014a6f34f6e766041ca" + }, + { + "stage": 100, + "kind": "H", + "output_sha256": "0657dcd19abcce609a3f067bba0232103d9ba915ef34e1feeb4e7ff6cba27e38" + }, + { + "stage": 101, + "kind": "D", + "output_sha256": "0657dcd19abcce609a3f067bba0232103d9ba915ef34e1feeb4e7ff6cba27e38" + }, + { + "stage": 102, + "kind": "H", + "output_sha256": "eb0d619cf8c92d0c19bb2ebab0d837e9772ac1d261ab21c8900386837cd57715" + }, + { + "stage": 103, + "kind": "D", + "output_sha256": "fccd66c29963c3fbea185f83a05ea76d55a85537b8d1a68f5a651b4a066d99b4" + }, + { + "stage": 104, + "kind": "H", + "output_sha256": "49ba66d01d1b8783ff66ae5b2df66345f210493a34563c4417f9993b09f75db8" + }, + { + "stage": 105, + "kind": "D", + "output_sha256": "49ba66d01d1b8783ff66ae5b2df66345f210493a34563c4417f9993b09f75db8" + }, + { + "stage": 106, + "kind": "H", + "output_sha256": "3894a483b82decb425a40e4e9d93740018b983d06d376e65cce472341c08ec88" + }, + { + "stage": 107, + "kind": "D", + "output_sha256": "fadaee16f1443acf4221efb4a29e8bec356813b1347016f84d05dc51d8afda64" + }, + { + "stage": 108, + "kind": "H", + "output_sha256": "b04b55c713acf6fec33ae0276a9ba992387a9476009d40ba5bce4c026d1e8b04" + }, + { + "stage": 109, + "kind": "D", + "output_sha256": "b04b55c713acf6fec33ae0276a9ba992387a9476009d40ba5bce4c026d1e8b04" + }, + { + "stage": 110, + "kind": "H", + "output_sha256": "c8f38a13845e12926464f13fb4b6f0413ff147173914bacd83dabd776e9bc415" + }, + { + "stage": 111, + "kind": "D", + "output_sha256": "fd6cd6556ee842e71a45a7c8e23af68b713c9f66b0c6ccbc030cdff316663808" + }, + { + "stage": 112, + "kind": "H", + "output_sha256": "1629802b04b8a026d2243d1728f922458b78d40c6633adaaea3377feae082370" + }, + { + "stage": 113, + "kind": "D", + "output_sha256": "1629802b04b8a026d2243d1728f922458b78d40c6633adaaea3377feae082370" + }, + { + "stage": 114, + "kind": "H", + "output_sha256": "0441bd85acef3dfa9aa44e4e9cb6da5b0173d6a7a8984dbbc7744a62684a0b31" + }, + { + "stage": 115, + "kind": "D", + "output_sha256": "5fd9838559ea6e27605e4920c1bb1729c16bd2413762a4445609481548e28062" + }, + { + "stage": 116, + "kind": "H", + "output_sha256": "ce1bf196dd66f6568253b7510358f2f2a5dc858cc85e7772602d7152d6a0aca6" + }, + { + "stage": 117, + "kind": "D", + "output_sha256": "ce1bf196dd66f6568253b7510358f2f2a5dc858cc85e7772602d7152d6a0aca6" + }, + { + "stage": 118, + "kind": "H", + "output_sha256": "ae315e83e8f40673e47ee99dd358933ab72c1110c1d6ecd28cf41649d1913f34" + }, + { + "stage": 119, + "kind": "D", + "output_sha256": "1065218f6e8c178277f9ab4e51f8bedb7b82cb3dbea25497975dc4c31283f05d" + }, + { + "stage": 120, + "kind": "H", + "output_sha256": "8def26f9430282f8dbbd54e2eb8f1aa5b7b776282734938ca8937cfb2c3f9061" + }, + { + "stage": 121, + "kind": "D", + "output_sha256": "8def26f9430282f8dbbd54e2eb8f1aa5b7b776282734938ca8937cfb2c3f9061" + }, + { + "stage": 122, + "kind": "H", + "output_sha256": "58e30072d602e3054955730d5dc1b9d53ac507b6e5873173e1f9f7ab381d65dc" + }, + { + "stage": 123, + "kind": "D", + "output_sha256": "992119e04c26ff73e97f203e9a5a5f367c8f95c5e0b4b5d9114837301cec00b5" + }, + { + "stage": 124, + "kind": "H", + "output_sha256": "b60f010d4f75f65cbe3afc0e1e1cd336971bd68a839219bb9da7afedd454cee9" + }, + { + "stage": 125, + "kind": "D", + "output_sha256": "b60f010d4f75f65cbe3afc0e1e1cd336971bd68a839219bb9da7afedd454cee9" + }, + { + "stage": 126, + "kind": "D", + "output_sha256": "90057a7d61a01e0e2f69b1a7d97d21201b92bb9e437912606e7336bef30a36fe" + }, + { + "stage": 127, + "kind": "H", + "output_sha256": "aea14777ab7d7cce94cb4e386cd52ddafea15663a8f799c1a1b1bd74db902613" + }, + { + "stage": 128, + "kind": "D", + "output_sha256": "5f720c2269882e8479324f423b14e3b78e7bf44d8ba4f68a8be6b2ab6804567a" + }, + { + "stage": 129, + "kind": "H", + "output_sha256": "f29c4cad9567f9aa5257632515d097ffda3d03ea50a30f43d0c68095903efda5" + }, + { + "stage": 130, + "kind": "D", + "output_sha256": "85b0d23ec156effdea684650685c1afbf95096fc8eaed3141595faaa85eefb39" + }, + { + "stage": 131, + "kind": "H", + "output_sha256": "5feed252b81ee5ccac7a1824570bbbe4f64d646e8de16ed592fdb1e6f2ce2e74" + }, + { + "stage": 132, + "kind": "D", + "output_sha256": "bf72c18be77d9c517cdefe67f082374b320e88d730746447d02b785d66d40846" + }, + { + "stage": 133, + "kind": "H", + "output_sha256": "3a25b79a2732b0b70524de5451f7d15bcd7e257325ea7f9d21e4f29aaba8247c" + }, + { + "stage": 134, + "kind": "D", + "output_sha256": "297736b506328f37421ec5f3a1f2d73a985dd26fcefcd524c5360b44a41d6d6e" + }, + { + "stage": 135, + "kind": "H", + "output_sha256": "1bc78e28359bfa67290a3b22ebe25ef17d53da994f577516f7b092eec2f59e14" + }, + { + "stage": 136, + "kind": "D", + "output_sha256": "55671f7f1a592b0e00921b41b9fc259435cb68fd7554b6d23f8ec14a2f93f006" + }, + { + "stage": 137, + "kind": "H", + "output_sha256": "dbaa3dfb61b83e0d5b74c26fe0d8852d1aaff2da337655164c5ee1767a29c369" + }, + { + "stage": 138, + "kind": "D", + "output_sha256": "4a205ec98083464d083a235b1b2c9cc409ef322fce6ecad0e98a744523145d11" + }, + { + "stage": 139, + "kind": "H", + "output_sha256": "7af4e778909dbe87da16bcfc28f4d158ffe41707f7b5ff78477db8465a86544b" + }, + { + "stage": 140, + "kind": "D", + "output_sha256": "7820bc551d6d1842e66012f0f7d281ec004cac44c59c2d201efdc1d962a32adf" + }, + { + "stage": 141, + "kind": "H", + "output_sha256": "6c92d7ff26f415155f73b34985b3f18d9c2655bc40f9f806b3f1440f6824355c" + }, + { + "stage": 142, + "kind": "D", + "output_sha256": "6c92d7ff26f415155f73b34985b3f18d9c2655bc40f9f806b3f1440f6824355c" + }, + { + "stage": 143, + "kind": "H", + "output_sha256": "ef4d5d75c4e32b32467578b331d62871a1b8377654607f6d29f0c36ec121873b" + }, + { + "stage": 144, + "kind": "D", + "output_sha256": "8010528a0ca5e7c60ad62e3f420500432bdacbe5c57b780f960d1675365aa8ac" + }, + { + "stage": 145, + "kind": "H", + "output_sha256": "ee69d9e7a515e9458c4e7eb875bd4fb81d3ce897c47254bad6ca364db60f1993" + }, + { + "stage": 146, + "kind": "D", + "output_sha256": "ee69d9e7a515e9458c4e7eb875bd4fb81d3ce897c47254bad6ca364db60f1993" + }, + { + "stage": 147, + "kind": "H", + "output_sha256": "eb0cf1a49ece286f9f6e9ab8a6669b28704f822398d516b2443c0e05b8aea508" + }, + { + "stage": 148, + "kind": "D", + "output_sha256": "948d2cdf27647e9b7895a782952992f0b404700b434669253db0663389c8a2ab" + }, + { + "stage": 149, + "kind": "H", + "output_sha256": "7ff379f1d0e3a5b1844f122680855850c26d597ba3718ee647042d95cf1a2c33" + }, + { + "stage": 150, + "kind": "D", + "output_sha256": "7ff379f1d0e3a5b1844f122680855850c26d597ba3718ee647042d95cf1a2c33" + }, + { + "stage": 151, + "kind": "H", + "output_sha256": "90b54a6319b686bafde239934de7788d15033953dc8fc0e87ff279611693cc68" + }, + { + "stage": 152, + "kind": "D", + "output_sha256": "2fe371394f3e202c63f777da1d60de8a568cd9c9a5f8abc5b71a34bbe22e3f8a" + }, + { + "stage": 153, + "kind": "H", + "output_sha256": "03312307f77e8a0ea6ce22cf313f046e6bb2736c9338e06521f5c27e5d6789ac" + }, + { + "stage": 154, + "kind": "D", + "output_sha256": "03312307f77e8a0ea6ce22cf313f046e6bb2736c9338e06521f5c27e5d6789ac" + }, + { + "stage": 155, + "kind": "H", + "output_sha256": "6c053aacb92bd877f8a6fc2a489faef050bce9c07dde81708fb8aed0f6f49ef9" + }, + { + "stage": 156, + "kind": "D", + "output_sha256": "1e7ec80b54daecb02758666a0cbae63e07b6c5efdf5d20022472d13397daf4f5" + }, + { + "stage": 157, + "kind": "H", + "output_sha256": "66ec8f492f72252423ef9f5b5f265607e7fd72aabeba8c0f9d1eddcca57e2872" + }, + { + "stage": 158, + "kind": "D", + "output_sha256": "66ec8f492f72252423ef9f5b5f265607e7fd72aabeba8c0f9d1eddcca57e2872" + }, + { + "stage": 159, + "kind": "H", + "output_sha256": "c1818a19bc6053b691c7ce339211fc9853d37239abb1e1ee4ca19a5abbbc7bfd" + }, + { + "stage": 160, + "kind": "D", + "output_sha256": "1e7ec80b54daecb02758666a0cbae63e07b6c5efdf5d20022472d13397daf4f5" + }, + { + "stage": 161, + "kind": "H", + "output_sha256": "66ec8f492f72252423ef9f5b5f265607e7fd72aabeba8c0f9d1eddcca57e2872" + }, + { + "stage": 162, + "kind": "D", + "output_sha256": "66ec8f492f72252423ef9f5b5f265607e7fd72aabeba8c0f9d1eddcca57e2872" + }, + { + "stage": 163, + "kind": "H", + "output_sha256": "7ddc456768dbb1bc48019b9b188dfd06b18be61b2621f5c598deff6da76e8e0d" + }, + { + "stage": 164, + "kind": "D", + "output_sha256": "6155ec9e6f66be6f57f4bbdbbc7d3466009c1f90b989865dea7aa803ba0f299d" + }, + { + "stage": 165, + "kind": "H", + "output_sha256": "ad923b71099f4f8dede2c40ac6aac66e4110bd6806fc401dc20f388171b8de9e" + }, + { + "stage": 166, + "kind": "D", + "output_sha256": "ad923b71099f4f8dede2c40ac6aac66e4110bd6806fc401dc20f388171b8de9e" + }, + { + "stage": 167, + "kind": "H", + "output_sha256": "de92b4f88b6d7b77ec012addccb16a23be3b84ddcbfb6a520ab03b415bdd4051" + }, + { + "stage": 168, + "kind": "D", + "output_sha256": "064c80d551752e2c193c6af4ec8d9d5888462821265533726a990fcc79d45861" + }, + { + "stage": 169, + "kind": "H", + "output_sha256": "bf04ee3dc9aaa4c2c1668f4795cf062ae5423309e71c3f62d31d643a7d983a47" + }, + { + "stage": 170, + "kind": "D", + "output_sha256": "bf04ee3dc9aaa4c2c1668f4795cf062ae5423309e71c3f62d31d643a7d983a47" + }, + { + "stage": 171, + "kind": "H", + "output_sha256": "84a844dac1c86fd30c4ef0db26ab1d81c5dcc5b324fc49c719d0548a3a51590c" + }, + { + "stage": 172, + "kind": "D", + "output_sha256": "152f6f1a09dc8550fde3da3ccfcdc3a2194b06f578df3a710c6c0187eb740839" + }, + { + "stage": 173, + "kind": "H", + "output_sha256": "fa85d7742a81307d011f9cb7a7d32247a39e1acbaeb35ef4eebe97cd299e3eef" + }, + { + "stage": 174, + "kind": "D", + "output_sha256": "fa85d7742a81307d011f9cb7a7d32247a39e1acbaeb35ef4eebe97cd299e3eef" + }, + { + "stage": 175, + "kind": "H", + "output_sha256": "e99125c84e2d88d286685ecd54584363a4ba1fb274f43bf5c012eba57a43880b" + }, + { + "stage": 176, + "kind": "D", + "output_sha256": "bcaad1244c6b4ed4bd4b5a38595869bbdcf21f401de695600c1c50fc43954127" + }, + { + "stage": 177, + "kind": "H", + "output_sha256": "a59001d16b123c3cc7037edac5333f73f13e225cf7dc2ce29808dbb224de8859" + }, + { + "stage": 178, + "kind": "D", + "output_sha256": "a59001d16b123c3cc7037edac5333f73f13e225cf7dc2ce29808dbb224de8859" + }, + { + "stage": 179, + "kind": "D", + "output_sha256": "0936e09f6c3f552deea09f9be207ec9db2c3914e2c21cc0ba11175397bb994e4" + }, + { + "stage": 180, + "kind": "H", + "output_sha256": "4955482c2f45517f8691825e351b2a8e384397811851b95cbdc2a6d825960d9f" + }, + { + "stage": 181, + "kind": "D", + "output_sha256": "7820988ab8e0bd0b2d0e7ba7a0c1c79ba8aa3ebfc3ecd3a5cfc0a780bebce802" + }, + { + "stage": 182, + "kind": "H", + "output_sha256": "bf7656c41fa633a6bc0634362b3e12d83a2d70201ac207ad47a9ce5c8daf547c" + }, + { + "stage": 183, + "kind": "D", + "output_sha256": "b8d183dc8a4130c4a9856ba01267ced35b7dcfa88f13358d3821cf6bf4869448" + }, + { + "stage": 184, + "kind": "H", + "output_sha256": "b51372248a0c3371687aa38567e335300bb1071dac68e08c6c67e357882265bb" + }, + { + "stage": 185, + "kind": "D", + "output_sha256": "fb5d998baa52df26456bb8f98e535de9baf0d841d77ed1409ac5d21d4b76ac1e" + }, + { + "stage": 186, + "kind": "H", + "output_sha256": "2a095b1443d67d8507190f0d7a2996ac92aaa95bbd199a0a9f9ff1fc2b5b5e18" + }, + { + "stage": 187, + "kind": "D", + "output_sha256": "a0fa768c6923949adbd51b28051967db50b2fad4fa324854b030dcd91f0abe36" + }, + { + "stage": 188, + "kind": "H", + "output_sha256": "c7d0f41b573e181b062bea7cc9c05472502bfb487020c489dc6ed68408da2fd7" + }, + { + "stage": 189, + "kind": "D", + "output_sha256": "d745dc1b717cb384877d6ca421bd872ef5f5e7bcac09065d7156637cbc45a019" + }, + { + "stage": 190, + "kind": "H", + "output_sha256": "65cf2b0b380280d73959c3ac3f82e18062c1575e3d0ba130772db85f39accc4e" + }, + { + "stage": 191, + "kind": "D", + "output_sha256": "7bfa3f6c95038e4c0497faac9a779d30b003f8bed24c9817166fd919579670f7" + }, + { + "stage": 192, + "kind": "H", + "output_sha256": "ea47cee0390fc5924fa75a3db281b472b16ca37d2122f15e1e5d4e22c84b34d6" + }, + { + "stage": 193, + "kind": "D", + "output_sha256": "1ce79ff736b3b076e1cdee4802cee3242317bffec0acab5766e47978964db723" + }, + { + "stage": 194, + "kind": "H", + "output_sha256": "b84f323ae7d0fd32431be9e5b5da9c6691639e8bf330533a8bac7233769d19b3" + }, + { + "stage": 195, + "kind": "D", + "output_sha256": "b84f323ae7d0fd32431be9e5b5da9c6691639e8bf330533a8bac7233769d19b3" + }, + { + "stage": 196, + "kind": "H", + "output_sha256": "ad2bed7af7cea0aa4d329e51a871d1dd16eb6971caf836ebf5ceac93e9d4fac0" + }, + { + "stage": 197, + "kind": "D", + "output_sha256": "48afa9d91308da978278cb1a14ad67dd77623eedc35d4f7acb1bd49220f24bd1" + }, + { + "stage": 198, + "kind": "H", + "output_sha256": "ec455ca2248ff021e65eceb531bd04d835d27b1ffc344470f95cb0067ba21856" + }, + { + "stage": 199, + "kind": "D", + "output_sha256": "ec455ca2248ff021e65eceb531bd04d835d27b1ffc344470f95cb0067ba21856" + }, + { + "stage": 200, + "kind": "H", + "output_sha256": "2bda3cb4ff46fe51cf8844ed0d8221a376ec41fcede4ca338dc62152da150f27" + }, + { + "stage": 201, + "kind": "D", + "output_sha256": "21081a0dfee3840068786cb51e9f932572faab001e9c6ce671964f7aad1b6b3c" + }, + { + "stage": 202, + "kind": "H", + "output_sha256": "4d65abdb9d857e0292eb78b1e6be5fc7a4ff70ca729d452b439e568b42c7075e" + }, + { + "stage": 203, + "kind": "D", + "output_sha256": "4d65abdb9d857e0292eb78b1e6be5fc7a4ff70ca729d452b439e568b42c7075e" + }, + { + "stage": 204, + "kind": "H", + "output_sha256": "4bd79d035c5a3790b394d6a6e2c361347414c442e97020655f1ba03b068e32d3" + }, + { + "stage": 205, + "kind": "D", + "output_sha256": "2389f0183c7fff197f47b16912ea44b3d77f99322583d50dedac0c9144c85958" + }, + { + "stage": 206, + "kind": "H", + "output_sha256": "f3ae7a9f138e982b74c559ca42a221cb50461b74900dbe495b9c44c1d96ae040" + }, + { + "stage": 207, + "kind": "D", + "output_sha256": "f3ae7a9f138e982b74c559ca42a221cb50461b74900dbe495b9c44c1d96ae040" + }, + { + "stage": 208, + "kind": "H", + "output_sha256": "313ae307c5b4b823a1636456627abee4fe02f9bed57c1451a8a916971a73d640" + }, + { + "stage": 209, + "kind": "D", + "output_sha256": "099fcb9a55dca21d69cf50a779aa7a7bfe9c4b3e01309fe59f6d14f4cd6bca49" + }, + { + "stage": 210, + "kind": "H", + "output_sha256": "f3ae7a9f138e982b74c559ca42a221cb50461b74900dbe495b9c44c1d96ae040" + }, + { + "stage": 211, + "kind": "D", + "output_sha256": "f3ae7a9f138e982b74c559ca42a221cb50461b74900dbe495b9c44c1d96ae040" + } + ] + }, + { + "field_size": 8, + "active_indices": [ + 6, + 1, + 4, + 3 + ], + "adjoint": true, + "radius": "1", + "target_bits": 20, + "incoming_bits": 6, + "phase_bits": 25, + "data_bits": 60, + "observed_coefficient_bits": 64, + "counts": { + "logical_layers": 3, + "primitive_stages": 159, + "diagonal_stages": 81, + "hadamard_stages": 78 + }, + "layers": [ + { + "begin": 0, + "end": 53, + "pairs": [ + [ + 6, + 4 + ], + [ + 1, + 3 + ], + [ + 0, + 2 + ], + [ + 5, + 7 + ] + ], + "kinds": [ + "butterfly", + "adjoint", + "idle", + "idle" + ], + "permutation": [ + 4, + 2, + 5, + 3, + 1, + 6, + 0, + 7 + ], + "route_layers": 5 + }, + { + "begin": 53, + "end": 106, + "pairs": [ + [ + 6, + 1 + ], + [ + 4, + 3 + ], + [ + 0, + 2 + ], + [ + 5, + 7 + ] + ], + "kinds": [ + "butterfly", + "butterfly", + "idle", + "idle" + ], + "permutation": [ + 4, + 1, + 5, + 3, + 2, + 6, + 0, + 7 + ], + "route_layers": 5 + }, + { + "begin": 106, + "end": 159, + "pairs": [ + [ + 1, + 4 + ], + [ + 0, + 2 + ], + [ + 3, + 5 + ], + [ + 6, + 7 + ] + ], + "kinds": [ + "swap", + "idle", + "idle", + "idle" + ], + "permutation": [ + 2, + 0, + 3, + 4, + 1, + 5, + 6, + 7 + ], + "route_layers": 5 + } + ], + "logical_plan_sha256": "3d33e8114272a71e16a3cc8e40c0aa7659c9c1fb4c5ad243cc3224eac1a115c0", + "reference_stages_sha256": "4e46ecec6f18cca0b0e9f68dcda2ef1f1ab0eb2f8e69df8e9e458eee138eafbd", + "stored_stages_sha256": "c446f75e1161e7a8c977e57e387c53ca5c06ad97bcb9c93ece3e87cd1592addf", + "source_original_ast_sha256": "15211aaf783ddbe8714fb7c5c039e932422028d729566ce763a4c8016a82e537", + "source_adapted_ast_sha256": "550954f4c90dde9cae269f71042d223a2cba81d5a91dcfa7219fb36f338d1313", + "tensor_ast_sha256": "2b5d66a710ef21aaa1bcfc1db64267067455a5ba465694876a1c2a57fda2f357", + "phases": { + "phase_bits": 25, + "oracle_bits": 114, + "certificates": [ + { + "denominator": 1, + "numerator": 0, + "unit": [ + "1", + "0" + ], + "error_bound": "0", + "parameter": null + }, + { + "denominator": 4, + "numerator": 3, + "unit": [ + "0", + "-1" + ], + "error_bound": "0", + "parameter": null + }, + { + "denominator": 8, + "numerator": 1, + "unit": [ + "238777861786304512/337682890526211113", + "238777861777212375/337682890526211113" + ], + "error_bound": "23604537191234136034993879066085739048141/876674905830103034105019824628808245599380569063424", + "parameter": "-222379213/536870912" + } + ] + }, + "budget": { + "prefix_bound": 16384, + "phase_error": "1/8388608", + "coefficient_error": "81/1073741824", + "rounding_error": "159/2199023255552", + "total_error": "428191/2199023255552", + "amplitude_bound": "131072", + "coefficient_bits": 65, + "data_bits": 79, + "temporary_bits": 145 + }, + "label": "eight-partial-adjoint", + "input_sha256": "b65a7f7e9c1555ebb2b0809ae2a3f5eb4d075813a1e0685bb4674efb37b07fdc", + "output_sha256": "fa6133400c07a51c6a6ce11a5f4f94a57413dfa3bde9f4c99c29981144909d99", + "rational_target_sha256": "c8dfe3b579b6a4592c4f2872f520b4341d36fec7c7ab3d5749016c68baedb4a6", + "exact_matrix_sha256": "331da8fb54f976227170480546eb98b6f40a94522edc1eac1e5e9822e9f9d2f2", + "rounded_rational_error_squared_upper": "1282565065610307/1461501637330902918203684832716283019655932542976", + "ideal_error_squared_upper": "40436441687/10384593717069655257060992658440192", + "nonzero_rounded_error": true, + "nonzero_spectator_error": false, + "spectator_error_squared_upper": "0", + "statistics": { + "real_products": 2592, + "complex_roundings": 1272, + "h_pair_calls": 312, + "maximum_data_numerator_bits": 60, + "maximum_temporary_numerator_bits": 121, + "maximum_temporary_fractional_bits": 119 + }, + "trace": [ + { + "stage": 0, + "kind": "H", + "output_sha256": "e493330a5b87932d205a8fdf8d85589daa8b129918da38679d7376965ae2bd51" + }, + { + "stage": 1, + "kind": "D", + "output_sha256": "cfa66f1e738c7185a38e80510635dd2a0bd87eda922c9ec9dc69fbaec4cc37af" + }, + { + "stage": 2, + "kind": "H", + "output_sha256": "d06deb2c06144732ffe27bffabcf2bdbae290d49b4e5788008e941070f8c2738" + }, + { + "stage": 3, + "kind": "D", + "output_sha256": "d06deb2c06144732ffe27bffabcf2bdbae290d49b4e5788008e941070f8c2738" + }, + { + "stage": 4, + "kind": "H", + "output_sha256": "e5ab1b4aa96a5861eb9cf6f284bbcb08e5373d2f6ad108d2308b75586e5cdc5d" + }, + { + "stage": 5, + "kind": "D", + "output_sha256": "9f763332eb853a7852c33b94d124dad90effd9cea0ed98088ca2070de48f72d7" + }, + { + "stage": 6, + "kind": "H", + "output_sha256": "d06deb2c06144732ffe27bffabcf2bdbae290d49b4e5788008e941070f8c2738" + }, + { + "stage": 7, + "kind": "D", + "output_sha256": "d06deb2c06144732ffe27bffabcf2bdbae290d49b4e5788008e941070f8c2738" + }, + { + "stage": 8, + "kind": "H", + "output_sha256": "e6c4555f5fd78213218fe5c6fb4d39fd50e5c7deec6ffdd47826357679baa6ad" + }, + { + "stage": 9, + "kind": "D", + "output_sha256": "2af4d2dea4b21c0650e411a0f604dee0ed3b536b1dcc36430babe7210991989a" + }, + { + "stage": 10, + "kind": "H", + "output_sha256": "68865279c0722e8ca3f25cd61b2d4e5ed0d4a12c1ee5fbe7470c078c6f343802" + }, + { + "stage": 11, + "kind": "D", + "output_sha256": "68865279c0722e8ca3f25cd61b2d4e5ed0d4a12c1ee5fbe7470c078c6f343802" + }, + { + "stage": 12, + "kind": "H", + "output_sha256": "e7b5bcc89a8668ed76ee88b44c97c2117a504134ba806f56925541858c5a949f" + }, + { + "stage": 13, + "kind": "D", + "output_sha256": "a2a7071a4ad239eaf58465bff3032a1200fc871ba6ae5c83cdcf652de8a5f9f7" + }, + { + "stage": 14, + "kind": "H", + "output_sha256": "d7e768b8c412d124c6803714b9512ad796c4adeab474d9c8277a334ed07e83e7" + }, + { + "stage": 15, + "kind": "D", + "output_sha256": "d7e768b8c412d124c6803714b9512ad796c4adeab474d9c8277a334ed07e83e7" + }, + { + "stage": 16, + "kind": "H", + "output_sha256": "41b3ad5eb4a7fdb4cfedadd9a86611a9d58b81753801d5015463c15a1352fcb4" + }, + { + "stage": 17, + "kind": "D", + "output_sha256": "4b74de0d54857d93c002a83b241343785878ca78ea102d8ae3bde6a50c673769" + }, + { + "stage": 18, + "kind": "H", + "output_sha256": "78494e2a480700fc47959f8e113733e0b0fcb6305ef221cd10efa29343a401cc" + }, + { + "stage": 19, + "kind": "D", + "output_sha256": "78494e2a480700fc47959f8e113733e0b0fcb6305ef221cd10efa29343a401cc" + }, + { + "stage": 20, + "kind": "D", + "output_sha256": "b5788481e20ae882c0f398b416fa27411b4869ab73b20f3225e9ff13f2e76431" + }, + { + "stage": 21, + "kind": "H", + "output_sha256": "2f58446f11cd7b5b1c1171fd3fa67e249bedf5ce97aba47e0032e4da2dfdd425" + }, + { + "stage": 22, + "kind": "D", + "output_sha256": "551e0bb1078aaabe2329ab46f41467bae0cb55943ec019db731edeabef152f48" + }, + { + "stage": 23, + "kind": "H", + "output_sha256": "d47ec0650ab9fc4d3676119a985d9cfadb27aa5bda832a7400b5329164349ad8" + }, + { + "stage": 24, + "kind": "D", + "output_sha256": "e2b775ab705e0f76120af878835b86252c6fb9d09a836f508f54e838003f2f3d" + }, + { + "stage": 25, + "kind": "H", + "output_sha256": "c6d9dea1b5ecbbc99ecd6486dd41edaed28e1971ac6d8cfc2b0935ab38d87393" + }, + { + "stage": 26, + "kind": "D", + "output_sha256": "354ff4183ccbd1e1d09955495880e6dd1d5e0aaf6e893b766325ce1ee2870b1f" + }, + { + "stage": 27, + "kind": "H", + "output_sha256": "7499272310145808fdd06be41871562262dc763f63394e92e75213f9c61c9c4f" + }, + { + "stage": 28, + "kind": "D", + "output_sha256": "a06124567466312b6b52b9ee4a4567c4c16e0e4885ec2ee28c13feb59068159e" + }, + { + "stage": 29, + "kind": "H", + "output_sha256": "f28a9a13c03af2310f9f4c83287245627bdbcd391c1f54192ffbd2b781548edc" + }, + { + "stage": 30, + "kind": "D", + "output_sha256": "3ab3b5af54ca96168637a7627a819422f2989b2ee5a0abc83d93fde7a9bb36d1" + }, + { + "stage": 31, + "kind": "H", + "output_sha256": "23102d954db2a6d8dc59d0b178ed3a2feba2426274d8afe133eba8d6c1841e0e" + }, + { + "stage": 32, + "kind": "D", + "output_sha256": "fc831a3244e3e091d2fab9e9ef28ca801d09440d637edd467bc9685f28237f14" + }, + { + "stage": 33, + "kind": "H", + "output_sha256": "39c5c3378df82da3e9284e70c2930894bf66d4ab502c92c95e821a566afd2fda" + }, + { + "stage": 34, + "kind": "D", + "output_sha256": "d8be755bfc7a05bf005ba46d1ffb010d33661627439a5e874ec8c836fde09350" + }, + { + "stage": 35, + "kind": "H", + "output_sha256": "1cdb15537b7f997d6c77b19b0d89270a3137f47f891204c949c52543983ca054" + }, + { + "stage": 36, + "kind": "D", + "output_sha256": "1cdb15537b7f997d6c77b19b0d89270a3137f47f891204c949c52543983ca054" + }, + { + "stage": 37, + "kind": "H", + "output_sha256": "05d28e35a91c1dd9db3ab12abd425e443cdd82d2ab6f33f497906f755e26376d" + }, + { + "stage": 38, + "kind": "D", + "output_sha256": "2f17536e805842dcff1e991cc70066c1a1802dd20214bbea6e668f2dede88725" + }, + { + "stage": 39, + "kind": "H", + "output_sha256": "e869b1ce300dac261a1e2e48bab2893a7c426584e3ac49412d12cc71829c9e79" + }, + { + "stage": 40, + "kind": "D", + "output_sha256": "e869b1ce300dac261a1e2e48bab2893a7c426584e3ac49412d12cc71829c9e79" + }, + { + "stage": 41, + "kind": "H", + "output_sha256": "8f6db0e2f2e0b63d5ae6d5806c02f46bbed24df1c15b83f50662487ae3db402b" + }, + { + "stage": 42, + "kind": "D", + "output_sha256": "1655816cbb1f2a0ad032aea81681a8d4324d0a0158b5c6a9e67c68819edd1377" + }, + { + "stage": 43, + "kind": "H", + "output_sha256": "f4532c23c6a7768f2a575f68f3924f003bd018bc6388fbfa50e45b4b6f809e6a" + }, + { + "stage": 44, + "kind": "D", + "output_sha256": "f4532c23c6a7768f2a575f68f3924f003bd018bc6388fbfa50e45b4b6f809e6a" + }, + { + "stage": 45, + "kind": "H", + "output_sha256": "befd602b961457c309a0e8d0c2d38963cfa0b1fe3e85c4ef6bb6b9d0c1d434f1" + }, + { + "stage": 46, + "kind": "D", + "output_sha256": "9fce3daaf129b7eeaa8850b72835d348e442f752252d8b72c77887d48955a876" + }, + { + "stage": 47, + "kind": "H", + "output_sha256": "f4532c23c6a7768f2a575f68f3924f003bd018bc6388fbfa50e45b4b6f809e6a" + }, + { + "stage": 48, + "kind": "D", + "output_sha256": "f4532c23c6a7768f2a575f68f3924f003bd018bc6388fbfa50e45b4b6f809e6a" + }, + { + "stage": 49, + "kind": "H", + "output_sha256": "d4bcac3e428207314cba3a1e52ff0fa1a656c02954509a6a52389952a129b96a" + }, + { + "stage": 50, + "kind": "D", + "output_sha256": "bcf83bb73767d33ca9dd7d84686de2cae37fa4a3ccc04311b04d1174733226e3" + }, + { + "stage": 51, + "kind": "H", + "output_sha256": "6f46bbecb8c6262ed63e6e2a1ce4429f9f4f55a22c2798e92e1809e689b8887e" + }, + { + "stage": 52, + "kind": "D", + "output_sha256": "6f46bbecb8c6262ed63e6e2a1ce4429f9f4f55a22c2798e92e1809e689b8887e" + }, + { + "stage": 53, + "kind": "H", + "output_sha256": "319eb79156bdb45942debb8faaaf26654bb26e7ccc749b3eb752569bcc5ead61" + }, + { + "stage": 54, + "kind": "D", + "output_sha256": "c5744964c95acac5f8a0913c585391bece58fdb375448225d742705d500deab3" + }, + { + "stage": 55, + "kind": "H", + "output_sha256": "3eea55124d9e4f97c5951efc685c2d72abb1ade9ac56d8db5924f01aa85dbb1c" + }, + { + "stage": 56, + "kind": "D", + "output_sha256": "3eea55124d9e4f97c5951efc685c2d72abb1ade9ac56d8db5924f01aa85dbb1c" + }, + { + "stage": 57, + "kind": "H", + "output_sha256": "245bd80bbba521f68db8bd09a0701d6bd1aba3ec39cffaabda089abcf7a76df2" + }, + { + "stage": 58, + "kind": "D", + "output_sha256": "976a3ac8aed7823d72c490589de4663610fc10aff77f0dd1adf97a76f55b6df1" + }, + { + "stage": 59, + "kind": "H", + "output_sha256": "ce66fe8194791be825e6557d1a40e7064c3ae27170eca463b39fa7c5f9ea9582" + }, + { + "stage": 60, + "kind": "D", + "output_sha256": "ce66fe8194791be825e6557d1a40e7064c3ae27170eca463b39fa7c5f9ea9582" + }, + { + "stage": 61, + "kind": "H", + "output_sha256": "5a6a2b25c872edb43315b419b18c5d429e2c9be983f53806ad2d53c6ef29c283" + }, + { + "stage": 62, + "kind": "D", + "output_sha256": "e6e80d30e7a0ef10622ad8ec55cef6f3e5e914937e6a2ad53f7aee6a598bf796" + }, + { + "stage": 63, + "kind": "H", + "output_sha256": "8b1844aa7901f33b85eb7ec9b53a48da44724548439ac770022a353fc64134d3" + }, + { + "stage": 64, + "kind": "D", + "output_sha256": "8b1844aa7901f33b85eb7ec9b53a48da44724548439ac770022a353fc64134d3" + }, + { + "stage": 65, + "kind": "H", + "output_sha256": "5f0e3c9cd33c4b842425209cc112adba2a3b97fc4664ef29ed1e3a7902bb598e" + }, + { + "stage": 66, + "kind": "D", + "output_sha256": "3d56c56db995b86b8d2c06d4ecd7006b33f101aaa493b16f34adeadeb4654fe1" + }, + { + "stage": 67, + "kind": "H", + "output_sha256": "1e41b353b286832afc64aee634eeb0a4da80e4bbcf5c30a8b625348c1ec6e4a4" + }, + { + "stage": 68, + "kind": "D", + "output_sha256": "1e41b353b286832afc64aee634eeb0a4da80e4bbcf5c30a8b625348c1ec6e4a4" + }, + { + "stage": 69, + "kind": "H", + "output_sha256": "7c17e2556bfe3de67463c318b41f9a5e98cc63f3b868af9cc07e9d0537d5a599" + }, + { + "stage": 70, + "kind": "D", + "output_sha256": "1a43620f78192a3b1e75005b3c25b7819d0202d67bb541dbe86b41c3a899011e" + }, + { + "stage": 71, + "kind": "H", + "output_sha256": "06b71f23c15669cb67e63ec2ea244a7d05ca9c06abb06f71a6d47e8dd7f1b272" + }, + { + "stage": 72, + "kind": "D", + "output_sha256": "06b71f23c15669cb67e63ec2ea244a7d05ca9c06abb06f71a6d47e8dd7f1b272" + }, + { + "stage": 73, + "kind": "D", + "output_sha256": "3d6c1f59b6fa91f75816cab372359ffbfd99a4f9c6265c058e8cf93350cc3269" + }, + { + "stage": 74, + "kind": "H", + "output_sha256": "edc60350c9bbf82787bf604c3d321235fd9da1c59a299577b9ec18577eda34fe" + }, + { + "stage": 75, + "kind": "D", + "output_sha256": "80599a0244891c20a101614fb81bc7eabba18f261e2e81ff92484605fd41dac5" + }, + { + "stage": 76, + "kind": "H", + "output_sha256": "afce892ccd5b2b0d31b11265bd75b21dfb4fb47a8c41936518ca1e68f40b816e" + }, + { + "stage": 77, + "kind": "D", + "output_sha256": "bae167c1fd158bf02c726c8f87b57cd8c0c355a41b8015f45caa9f4edcaa920a" + }, + { + "stage": 78, + "kind": "H", + "output_sha256": "dcee16aa4da767105295256eb2ea86ceeebde2603bf1838404b54f9937586b17" + }, + { + "stage": 79, + "kind": "D", + "output_sha256": "b28e69db2ff7c03fb59c577dc6b9b058c047e2d7e93cd715347d01208e1af9a6" + }, + { + "stage": 80, + "kind": "H", + "output_sha256": "a61cbd2ffa90b43593306285961c7280ee978ab3301f380daee0fc44fbbf12aa" + }, + { + "stage": 81, + "kind": "D", + "output_sha256": "24876d63553c1afc6d3882c0c6df0698a4de5468b62a11ab3ec1fd0f0d2bec3c" + }, + { + "stage": 82, + "kind": "H", + "output_sha256": "66aff5429d6c0c28748cab6c96eb84fe85bbdbdf33c55f7d1086e7bba6f7fda1" + }, + { + "stage": 83, + "kind": "D", + "output_sha256": "06a2e305730ae073107a49aae15455b8cb0f9d43335609f3dc0fb9c235f99e47" + }, + { + "stage": 84, + "kind": "H", + "output_sha256": "4881ba2c31b65d6c2ea971904670b139d8e093703a205d2694dac0baf13a5837" + }, + { + "stage": 85, + "kind": "D", + "output_sha256": "9e5afc681262f22794d0514c74eaa9de1ddb02ec8dd02d4ae80ec34e69f4a1db" + }, + { + "stage": 86, + "kind": "H", + "output_sha256": "fc1a84c0c669b521c073cb5fba3e33a8ca8e3eace9915f48888d41f105368138" + }, + { + "stage": 87, + "kind": "D", + "output_sha256": "8819c2d1e91d4501febcafe5b80ea1ded22cc4b31ea44e93f0d43a874f6028a1" + }, + { + "stage": 88, + "kind": "H", + "output_sha256": "8a076c38dd9c71f70faceaddc37b2f773a01ed20a4e05d159119dc536a500a31" + }, + { + "stage": 89, + "kind": "D", + "output_sha256": "8a076c38dd9c71f70faceaddc37b2f773a01ed20a4e05d159119dc536a500a31" + }, + { + "stage": 90, + "kind": "H", + "output_sha256": "1c6bd1a1ca6c0255162c1e1370d27df3981368f2f870177d1d042a1c4576ab39" + }, + { + "stage": 91, + "kind": "D", + "output_sha256": "6c8fd83a5cdf76ab06c7428160129c22a93d8afd9376fcbf496aa1ee1786d62b" + }, + { + "stage": 92, + "kind": "H", + "output_sha256": "350abfc7260b864d8589bf384ed00768462ce7a7e17ad09f4387c75759719233" + }, + { + "stage": 93, + "kind": "D", + "output_sha256": "350abfc7260b864d8589bf384ed00768462ce7a7e17ad09f4387c75759719233" + }, + { + "stage": 94, + "kind": "H", + "output_sha256": "2a219606261dddc0044054368add4e09e0fb009ddb0b521d54285875e56d1558" + }, + { + "stage": 95, + "kind": "D", + "output_sha256": "4e6243185d218eb8e254de2258f2ef0646bcba5563924edbb4048f05e51e6086" + }, + { + "stage": 96, + "kind": "H", + "output_sha256": "d21cc555275ee63cd3ea6bbd133529ed0833ea960efb965b28a50d1a9531c388" + }, + { + "stage": 97, + "kind": "D", + "output_sha256": "d21cc555275ee63cd3ea6bbd133529ed0833ea960efb965b28a50d1a9531c388" + }, + { + "stage": 98, + "kind": "H", + "output_sha256": "0ee09f633dfa6727d2414ea5417866c006e770c22eeee411f9fa96f158588842" + }, + { + "stage": 99, + "kind": "D", + "output_sha256": "3e8b4b18694680b534e6910fa24525b6261c782714a0dd195288af0869332321" + }, + { + "stage": 100, + "kind": "H", + "output_sha256": "712c67257c1fc37b5aabe536ccfa3ee7eb42a1b69ac58f39e181e2024ad29520" + }, + { + "stage": 101, + "kind": "D", + "output_sha256": "712c67257c1fc37b5aabe536ccfa3ee7eb42a1b69ac58f39e181e2024ad29520" + }, + { + "stage": 102, + "kind": "H", + "output_sha256": "44b006a476bb617010aa6e9c70af811ec8d8db282e15ee9940ca1f3fbf68436b" + }, + { + "stage": 103, + "kind": "D", + "output_sha256": "750c652a5ef3615449d93e34bb9e2e6b644806c7f80295d5ac38fce8d5bfa973" + }, + { + "stage": 104, + "kind": "H", + "output_sha256": "6d4939c8468452b9ec60fc91c61ea2704cb3c7636483f846078836443a59d5cb" + }, + { + "stage": 105, + "kind": "D", + "output_sha256": "6d4939c8468452b9ec60fc91c61ea2704cb3c7636483f846078836443a59d5cb" + }, + { + "stage": 106, + "kind": "H", + "output_sha256": "89ef0138720101f788d5859234b50490853bc37ba2fb9767d7b9e0471ba44b27" + }, + { + "stage": 107, + "kind": "D", + "output_sha256": "b1a0036e52412dc9abc5b0c485181f7d6a0df6bd1a3919adab7d11014db04af2" + }, + { + "stage": 108, + "kind": "H", + "output_sha256": "60dd7be48150fe61ea19c361f0786af29b300caa00ac3ed7e179d2545e601cd8" + }, + { + "stage": 109, + "kind": "D", + "output_sha256": "60dd7be48150fe61ea19c361f0786af29b300caa00ac3ed7e179d2545e601cd8" + }, + { + "stage": 110, + "kind": "H", + "output_sha256": "5ac67fc48f84be7005cbcf6b142b194a613c2d517c592d90854198aa305d2d50" + }, + { + "stage": 111, + "kind": "D", + "output_sha256": "b6244f1824ea639774f38c34a99cca6da71a1a6e0f6aa18034411e84f34af044" + }, + { + "stage": 112, + "kind": "H", + "output_sha256": "a5e6110bca44803ea4c7c91d6cce2031dc3db65ed5e0332dc7d7e3b716e3e43a" + }, + { + "stage": 113, + "kind": "D", + "output_sha256": "a5e6110bca44803ea4c7c91d6cce2031dc3db65ed5e0332dc7d7e3b716e3e43a" + }, + { + "stage": 114, + "kind": "H", + "output_sha256": "be94619b1265c7b17f1b5488a29ca52d6fab43d7c1bb2e447c9c530262f232a4" + }, + { + "stage": 115, + "kind": "D", + "output_sha256": "24fcc0fc555e687f1372be95708fa6d717d4c6f6130df3fd566b9c955d60c8e0" + }, + { + "stage": 116, + "kind": "H", + "output_sha256": "4e89d8cea2148d31eb595ca53a18b3b649ddf8882ffbfb22ce5df771672f6290" + }, + { + "stage": 117, + "kind": "D", + "output_sha256": "4e89d8cea2148d31eb595ca53a18b3b649ddf8882ffbfb22ce5df771672f6290" + }, + { + "stage": 118, + "kind": "H", + "output_sha256": "7fcf1fff086fae819777b644dad2ee4d63b319827f09c5f1a8170528b777a1e1" + }, + { + "stage": 119, + "kind": "D", + "output_sha256": "da025674e77cbc7a73a17616ba2a80ced5cf7778fbd519d43eb30e5e6e015fbb" + }, + { + "stage": 120, + "kind": "H", + "output_sha256": "ed07a20721f87b009a97c8ba32efee34e1697f4f8ea354b3e1637b0bd5db2f89" + }, + { + "stage": 121, + "kind": "D", + "output_sha256": "ed07a20721f87b009a97c8ba32efee34e1697f4f8ea354b3e1637b0bd5db2f89" + }, + { + "stage": 122, + "kind": "H", + "output_sha256": "4700cd6cbd18725752c5802b5bb02880ba3f638ad1191449e33abd8bbd82c26b" + }, + { + "stage": 123, + "kind": "D", + "output_sha256": "2bb0873997b926e353661499c2c8a125c82463ece5b38c4ae5200696b0a4ab15" + }, + { + "stage": 124, + "kind": "H", + "output_sha256": "9cb7fdd5e26ab4d72d52b9944c351e05ec2d33a7e01e3493f697155ae1210db1" + }, + { + "stage": 125, + "kind": "D", + "output_sha256": "9cb7fdd5e26ab4d72d52b9944c351e05ec2d33a7e01e3493f697155ae1210db1" + }, + { + "stage": 126, + "kind": "D", + "output_sha256": "9cb7fdd5e26ab4d72d52b9944c351e05ec2d33a7e01e3493f697155ae1210db1" + }, + { + "stage": 127, + "kind": "H", + "output_sha256": "4ef845f9e2749a3d8d11f4c848a7bea3857794a4068a97e44a5dcba4ddd9bc04" + }, + { + "stage": 128, + "kind": "D", + "output_sha256": "07e7dfc39d6218780500e630d706ff9fdb0d965123769ab0c4f2b99fa664974b" + }, + { + "stage": 129, + "kind": "H", + "output_sha256": "ed07a20721f87b009a97c8ba32efee34e1697f4f8ea354b3e1637b0bd5db2f89" + }, + { + "stage": 130, + "kind": "D", + "output_sha256": "ed07a20721f87b009a97c8ba32efee34e1697f4f8ea354b3e1637b0bd5db2f89" + }, + { + "stage": 131, + "kind": "H", + "output_sha256": "4700cd6cbd18725752c5802b5bb02880ba3f638ad1191449e33abd8bbd82c26b" + }, + { + "stage": 132, + "kind": "D", + "output_sha256": "07e7dfc39d6218780500e630d706ff9fdb0d965123769ab0c4f2b99fa664974b" + }, + { + "stage": 133, + "kind": "H", + "output_sha256": "ed07a20721f87b009a97c8ba32efee34e1697f4f8ea354b3e1637b0bd5db2f89" + }, + { + "stage": 134, + "kind": "D", + "output_sha256": "ed07a20721f87b009a97c8ba32efee34e1697f4f8ea354b3e1637b0bd5db2f89" + }, + { + "stage": 135, + "kind": "H", + "output_sha256": "4700cd6cbd18725752c5802b5bb02880ba3f638ad1191449e33abd8bbd82c26b" + }, + { + "stage": 136, + "kind": "D", + "output_sha256": "07e7dfc39d6218780500e630d706ff9fdb0d965123769ab0c4f2b99fa664974b" + }, + { + "stage": 137, + "kind": "H", + "output_sha256": "ed07a20721f87b009a97c8ba32efee34e1697f4f8ea354b3e1637b0bd5db2f89" + }, + { + "stage": 138, + "kind": "D", + "output_sha256": "ed07a20721f87b009a97c8ba32efee34e1697f4f8ea354b3e1637b0bd5db2f89" + }, + { + "stage": 139, + "kind": "H", + "output_sha256": "4700cd6cbd18725752c5802b5bb02880ba3f638ad1191449e33abd8bbd82c26b" + }, + { + "stage": 140, + "kind": "D", + "output_sha256": "2bb0873997b926e353661499c2c8a125c82463ece5b38c4ae5200696b0a4ab15" + }, + { + "stage": 141, + "kind": "H", + "output_sha256": "9cb7fdd5e26ab4d72d52b9944c351e05ec2d33a7e01e3493f697155ae1210db1" + }, + { + "stage": 142, + "kind": "D", + "output_sha256": "9cb7fdd5e26ab4d72d52b9944c351e05ec2d33a7e01e3493f697155ae1210db1" + }, + { + "stage": 143, + "kind": "H", + "output_sha256": "45880ca26f6d63da30f1bc4bee2fb5369320ebfd6eccdd83c9665e49bb510bf5" + }, + { + "stage": 144, + "kind": "D", + "output_sha256": "d299233c41ace80e094535b9b3bb8e077a64d6fd6ae63e617f0e417d1979d391" + }, + { + "stage": 145, + "kind": "H", + "output_sha256": "460b0cf36fbe55ca9f9a6711041a2cc06121b158fe0eaf1d69e83b45d86eb15d" + }, + { + "stage": 146, + "kind": "D", + "output_sha256": "460b0cf36fbe55ca9f9a6711041a2cc06121b158fe0eaf1d69e83b45d86eb15d" + }, + { + "stage": 147, + "kind": "H", + "output_sha256": "04a886070b382898c2295b14830925e8d792d659cfb7b4115cbd7e43b42afed5" + }, + { + "stage": 148, + "kind": "D", + "output_sha256": "bb75a6b168c3b57122b2b86aafa3ad6c9d944945aac967778c4ea4e12278f141" + }, + { + "stage": 149, + "kind": "H", + "output_sha256": "d04d53d4dbc49b78cd1c45e50eb6c24ca9682cd73fd89cc86f97865abf4b2a16" + }, + { + "stage": 150, + "kind": "D", + "output_sha256": "d04d53d4dbc49b78cd1c45e50eb6c24ca9682cd73fd89cc86f97865abf4b2a16" + }, + { + "stage": 151, + "kind": "H", + "output_sha256": "3a0a34ea3d62b17e12864aeb940db53ac9f75b3167e0243b21e35ea49d89150c" + }, + { + "stage": 152, + "kind": "D", + "output_sha256": "694d919f03fad984dd8e0b72cc3577717b5336dc3632551c33ed8712fe4c5e5b" + }, + { + "stage": 153, + "kind": "H", + "output_sha256": "fca699d16359db6396e5df1628a0ce4c25660b6b53f24a7d13502558355e823b" + }, + { + "stage": 154, + "kind": "D", + "output_sha256": "fca699d16359db6396e5df1628a0ce4c25660b6b53f24a7d13502558355e823b" + }, + { + "stage": 155, + "kind": "H", + "output_sha256": "f758df72d73c476109b10f7bcb6123f7278e30dc27e6c1f6f6ff5b605d8747ed" + }, + { + "stage": 156, + "kind": "D", + "output_sha256": "686e957f748b819ac0e6eb05100446b76a95a3ce387e8fb042eb8d6f304079b9" + }, + { + "stage": 157, + "kind": "H", + "output_sha256": "fa6133400c07a51c6a6ce11a5f4f94a57413dfa3bde9f4c99c29981144909d99" + }, + { + "stage": 158, + "kind": "D", + "output_sha256": "fa6133400c07a51c6a6ce11a5f4f94a57413dfa3bde9f4c99c29981144909d99" + } + ] + }, + { + "field_size": 16, + "active_indices": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15 + ], + "adjoint": false, + "radius": "1", + "target_bits": 24, + "incoming_bits": 7, + "phase_bits": 30, + "data_bits": 65, + "observed_coefficient_bits": 69, + "counts": { + "logical_layers": 5, + "primitive_stages": 345, + "diagonal_stages": 175, + "hadamard_stages": 170 + }, + "layers": [ + { + "begin": 0, + "end": 69, + "pairs": [ + [ + 1, + 8 + ], + [ + 2, + 4 + ], + [ + 3, + 12 + ], + [ + 5, + 10 + ], + [ + 7, + 14 + ], + [ + 11, + 13 + ], + [ + 0, + 6 + ], + [ + 9, + 15 + ] + ], + "kinds": [ + "swap", + "swap", + "swap", + "swap", + "swap", + "swap", + "idle", + "idle" + ], + "permutation": [ + 12, + 0, + 2, + 4, + 3, + 6, + 13, + 8, + 1, + 14, + 7, + 10, + 5, + 11, + 9, + 15 + ], + "route_layers": 7 + }, + { + "begin": 69, + "end": 138, + "pairs": [ + [ + 0, + 1 + ], + [ + 2, + 3 + ], + [ + 4, + 5 + ], + [ + 6, + 7 + ], + [ + 8, + 9 + ], + [ + 10, + 11 + ], + [ + 12, + 13 + ], + [ + 14, + 15 + ] + ], + "kinds": [ + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly" + ], + "permutation": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15 + ], + "route_layers": 7 + }, + { + "begin": 138, + "end": 207, + "pairs": [ + [ + 0, + 2 + ], + [ + 1, + 3 + ], + [ + 4, + 6 + ], + [ + 5, + 7 + ], + [ + 8, + 10 + ], + [ + 9, + 11 + ], + [ + 12, + 14 + ], + [ + 13, + 15 + ] + ], + "kinds": [ + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly" + ], + "permutation": [ + 0, + 2, + 1, + 3, + 4, + 6, + 5, + 7, + 8, + 10, + 9, + 11, + 12, + 14, + 13, + 15 + ], + "route_layers": 7 + }, + { + "begin": 207, + "end": 276, + "pairs": [ + [ + 0, + 4 + ], + [ + 1, + 5 + ], + [ + 2, + 6 + ], + [ + 3, + 7 + ], + [ + 8, + 12 + ], + [ + 9, + 13 + ], + [ + 10, + 14 + ], + [ + 11, + 15 + ] + ], + "kinds": [ + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly" + ], + "permutation": [ + 0, + 2, + 4, + 6, + 1, + 3, + 5, + 7, + 8, + 10, + 12, + 14, + 9, + 11, + 13, + 15 + ], + "route_layers": 7 + }, + { + "begin": 276, + "end": 345, + "pairs": [ + [ + 0, + 8 + ], + [ + 1, + 9 + ], + [ + 2, + 10 + ], + [ + 3, + 11 + ], + [ + 4, + 12 + ], + [ + 5, + 13 + ], + [ + 6, + 14 + ], + [ + 7, + 15 + ] + ], + "kinds": [ + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly" + ], + "permutation": [ + 0, + 2, + 4, + 6, + 8, + 10, + 12, + 14, + 1, + 3, + 5, + 7, + 9, + 11, + 13, + 15 + ], + "route_layers": 7 + } + ], + "logical_plan_sha256": "0bfd03b0099b3a1a18d6c0de31535dcab53aa8e8ef5851ce0ad16a03ecfa5316", + "reference_stages_sha256": "8f2918291b41b2c316f16be6d52d01754ddcb8c93b679b86fbf6449c1746a456", + "stored_stages_sha256": "bff199db7c533be96531ed17454445d0b7d9ef0ba24d14af41ee4b30f02a62ec", + "source_original_ast_sha256": "15211aaf783ddbe8714fb7c5c039e932422028d729566ce763a4c8016a82e537", + "source_adapted_ast_sha256": "550954f4c90dde9cae269f71042d223a2cba81d5a91dcfa7219fb36f338d1313", + "tensor_ast_sha256": "2b5d66a710ef21aaa1bcfc1db64267067455a5ba465694876a1c2a57fda2f357", + "phases": { + "phase_bits": 30, + "oracle_bits": 124, + "certificates": [ + { + "denominator": 1, + "numerator": 0, + "unit": [ + "1", + "0" + ], + "error_bound": "0", + "parameter": null + }, + { + "denominator": 4, + "numerator": 3, + "unit": [ + "0", + "-1" + ], + "error_bound": "0", + "parameter": null + }, + { + "denominator": 8, + "numerator": 1, + "unit": [ + "238777861786304512/337682890526211113", + "238777861777212375/337682890526211113" + ], + "error_bound": "96684184335295021199328019325064130335602443/3590860414280102027694161201679598573975062810883784704", + "parameter": "-222379213/536870912" + }, + { + "denominator": 8, + "numerator": 5, + "unit": [ + "-238777861777212375/337682890526211113", + "-238777861786304512/337682890526211113" + ], + "error_bound": "48342092167647510599664016922714211481340151/1795430207140051013847080600839799286987531405441892352", + "parameter": "222379213/536870912" + }, + { + "denominator": 8, + "numerator": 7, + "unit": [ + "238777861786304512/337682890526211113", + "-238777861777212375/337682890526211113" + ], + "error_bound": "96684184335295021199328019325064130335602443/3590860414280102027694161201679598573975062810883784704", + "parameter": "222379213/536870912" + }, + { + "denominator": 16, + "numerator": 9, + "unit": [ + "-283470044822014846455/306825765536690805257", + "-117417137104347987968/306825765536690805257" + ], + "error_bound": "161225933061084976727964961054205412898433182127/3262731179036064252738464594285304936620965685302977888256", + "parameter": "3417288451/17179869184" + }, + { + "denominator": 16, + "numerator": 11, + "unit": [ + "-117417137104347987968/306825765536690805257", + "-283470044822014846455/306825765536690805257" + ], + "error_bound": "322451866122169953455929888664402382297568591241/6525462358072128505476929188570609873241931370605955776512", + "parameter": "-3417288451/17179869184" + }, + { + "denominator": 16, + "numerator": 13, + "unit": [ + "117417137104347987968/306825765536690805257", + "-283470044822014846455/306825765536690805257" + ], + "error_bound": "40306483265271244181991235124219780485037307477/815682794759016063184616148571326234155241421325744472064", + "parameter": "3417288451/17179869184" + }, + { + "denominator": 16, + "numerator": 15, + "unit": [ + "283470044822014846455/306825765536690805257", + "-117417137104347987968/306825765536690805257" + ], + "error_bound": "322451866122169953455929875164068698683173159933/6525462358072128505476929188570609873241931370605955776512", + "parameter": "-3417288451/17179869184" + } + ] + }, + "budget": { + "prefix_bound": 16384, + "phase_error": "1/134217728", + "coefficient_error": "175/34359738368", + "rounding_error": "345/35184372088832", + "total_error": "441689/35184372088832", + "amplitude_bound": "131072", + "coefficient_bits": 70, + "data_bits": 84, + "temporary_bits": 155 + }, + "label": "sixteen-forward", + "input_sha256": "3ab70e9691571b169422db15b97b6e957609dba304a68d9f6642624298901059", + "output_sha256": "c1883de4521c551891dd0a54d378eb73c7d52ba07cde6c601a56cb7f63744497", + "rational_target_sha256": "4d7c4558599e282d03b542e7073c80d2d72b77a6ac35bc81567c06ea9ef6cbd4", + "exact_matrix_sha256": null, + "rounded_rational_error_squared_upper": "5905681184779/730750818665451459101842416358141509827966271488", + "ideal_error_squared_upper": "28273032546762669337470891/1461501637330902918203684832716283019655932542976", + "nonzero_rounded_error": true, + "nonzero_spectator_error": false, + "spectator_error_squared_upper": "0", + "statistics": { + "real_products": 11200, + "complex_roundings": 5520, + "h_pair_calls": 1360, + "maximum_data_numerator_bits": 65, + "maximum_temporary_numerator_bits": 130, + "maximum_temporary_fractional_bits": 129 + }, + "trace": [ + { + "stage": 0, + "kind": "H", + "output_sha256": "04adaf4142a22b6b4381c3f13fa866163c7241d6799cf047e8020bf4e9977bf6" + }, + { + "stage": 1, + "kind": "D", + "output_sha256": "88c26c3fc13e4f6103058e4d411f8db978c3c5a2ea8802a21a442509599a5a50" + }, + { + "stage": 2, + "kind": "H", + "output_sha256": "dda3021a1f25d8743bc088acf3507ffbb99d4e5ddeab2ee6bafd12198600b045" + }, + { + "stage": 3, + "kind": "D", + "output_sha256": "dda3021a1f25d8743bc088acf3507ffbb99d4e5ddeab2ee6bafd12198600b045" + }, + { + "stage": 4, + "kind": "H", + "output_sha256": "9ca044dc484e80067f5d47627c367eda94251bf3063d02c6bf286001b0571b7e" + }, + { + "stage": 5, + "kind": "D", + "output_sha256": "b41ee021b6f89b442b0b7365d6d839264e0f107d2090ffd7d298d59fcaadf535" + }, + { + "stage": 6, + "kind": "H", + "output_sha256": "8c8b0f3a136c286784fc4bed8daf6f7f906ab4bb4719d806f8e8775a4692c35d" + }, + { + "stage": 7, + "kind": "D", + "output_sha256": "8c8b0f3a136c286784fc4bed8daf6f7f906ab4bb4719d806f8e8775a4692c35d" + }, + { + "stage": 8, + "kind": "H", + "output_sha256": "1074a5c6d8a7c22bbd5d28451e6ad2da4334ca52190290b038906ca22b82691c" + }, + { + "stage": 9, + "kind": "D", + "output_sha256": "338a14b9ebfacc0cbd0be84f558380b2cca071427faa4dacabd7905a96e8461c" + }, + { + "stage": 10, + "kind": "H", + "output_sha256": "7058a1d0bc53b923c7bd1642ea489096b3cc1cb529d5a98a1d42c50f4c2af1c3" + }, + { + "stage": 11, + "kind": "D", + "output_sha256": "7058a1d0bc53b923c7bd1642ea489096b3cc1cb529d5a98a1d42c50f4c2af1c3" + }, + { + "stage": 12, + "kind": "H", + "output_sha256": "80860ca3601752089a67ccbb20fc7b602fd56cb74451d88c2ba000e193a48f9d" + }, + { + "stage": 13, + "kind": "D", + "output_sha256": "33e909328814e7073f14c6406fb75ccad873c29b1323b205dc50bf8c7628eef7" + }, + { + "stage": 14, + "kind": "H", + "output_sha256": "9d194f8691d4c936cb2c7a17ac66e759672d985375ac84b9d0a52196c45d072d" + }, + { + "stage": 15, + "kind": "D", + "output_sha256": "9d194f8691d4c936cb2c7a17ac66e759672d985375ac84b9d0a52196c45d072d" + }, + { + "stage": 16, + "kind": "H", + "output_sha256": "1cb81e72c314fa0a7dd00a67ab73af99f54a9fbef4bfae73005a6e52593ccb20" + }, + { + "stage": 17, + "kind": "D", + "output_sha256": "b929aa73224b0511ad183d44d687be197d145647b5a670b3aa9bd534c9a46be4" + }, + { + "stage": 18, + "kind": "H", + "output_sha256": "07b30313049f6db7486273324893820d93c0924b59dacb9a155eef9c18b493fe" + }, + { + "stage": 19, + "kind": "D", + "output_sha256": "07b30313049f6db7486273324893820d93c0924b59dacb9a155eef9c18b493fe" + }, + { + "stage": 20, + "kind": "H", + "output_sha256": "299a5086d5dc45e2440915df942bffc015cb3488da3af945090c6ee4dcfb0b1a" + }, + { + "stage": 21, + "kind": "D", + "output_sha256": "2e2e09c1ea6fbb64502cbf25742f2e5bc6c2b430dcd48e98b079e34a50bed347" + }, + { + "stage": 22, + "kind": "H", + "output_sha256": "e093a9cdff9113ee4de6d0b55712b7e7a8c703d24dfe78149931e53a00028e69" + }, + { + "stage": 23, + "kind": "D", + "output_sha256": "e093a9cdff9113ee4de6d0b55712b7e7a8c703d24dfe78149931e53a00028e69" + }, + { + "stage": 24, + "kind": "H", + "output_sha256": "95f1371bd01214e2331531865d4b4f6f27c99e4ab045e566c4fa509ad4c71b02" + }, + { + "stage": 25, + "kind": "D", + "output_sha256": "9ce04813351c413429684e6b4532cbae374cc81eecaae39a97b03e76dadfd9f6" + }, + { + "stage": 26, + "kind": "H", + "output_sha256": "a03a231cbd5addeec10400a118017af69ad1c35bd515d70d8495145f37420988" + }, + { + "stage": 27, + "kind": "D", + "output_sha256": "a03a231cbd5addeec10400a118017af69ad1c35bd515d70d8495145f37420988" + }, + { + "stage": 28, + "kind": "D", + "output_sha256": "a03a231cbd5addeec10400a118017af69ad1c35bd515d70d8495145f37420988" + }, + { + "stage": 29, + "kind": "H", + "output_sha256": "160d7ce766c56b8d7ea77a1059e1b54a77f9f837a955f484dc7a8925f5a28e43" + }, + { + "stage": 30, + "kind": "D", + "output_sha256": "ec5b41a73e6f8344dd98e3007d7a42c6a52270e2d3ad44529fd5a6bb9165fa65" + }, + { + "stage": 31, + "kind": "H", + "output_sha256": "5fb9bf0a6c61d91d5115d76063bd2143ca45c641c3f7cc6ffdb33b5c78119939" + }, + { + "stage": 32, + "kind": "D", + "output_sha256": "5fb9bf0a6c61d91d5115d76063bd2143ca45c641c3f7cc6ffdb33b5c78119939" + }, + { + "stage": 33, + "kind": "H", + "output_sha256": "59b0081587681ba65d72389e630b86746e5810df46cec97a6fdf075abf9af9bb" + }, + { + "stage": 34, + "kind": "D", + "output_sha256": "ec5b41a73e6f8344dd98e3007d7a42c6a52270e2d3ad44529fd5a6bb9165fa65" + }, + { + "stage": 35, + "kind": "H", + "output_sha256": "5fb9bf0a6c61d91d5115d76063bd2143ca45c641c3f7cc6ffdb33b5c78119939" + }, + { + "stage": 36, + "kind": "D", + "output_sha256": "5fb9bf0a6c61d91d5115d76063bd2143ca45c641c3f7cc6ffdb33b5c78119939" + }, + { + "stage": 37, + "kind": "H", + "output_sha256": "59b0081587681ba65d72389e630b86746e5810df46cec97a6fdf075abf9af9bb" + }, + { + "stage": 38, + "kind": "D", + "output_sha256": "ec5b41a73e6f8344dd98e3007d7a42c6a52270e2d3ad44529fd5a6bb9165fa65" + }, + { + "stage": 39, + "kind": "H", + "output_sha256": "5fb9bf0a6c61d91d5115d76063bd2143ca45c641c3f7cc6ffdb33b5c78119939" + }, + { + "stage": 40, + "kind": "D", + "output_sha256": "5fb9bf0a6c61d91d5115d76063bd2143ca45c641c3f7cc6ffdb33b5c78119939" + }, + { + "stage": 41, + "kind": "H", + "output_sha256": "59b0081587681ba65d72389e630b86746e5810df46cec97a6fdf075abf9af9bb" + }, + { + "stage": 42, + "kind": "D", + "output_sha256": "f80b455509e9c73197794b4445586e3956fc21b8a510a1ed6994b663b0892bcf" + }, + { + "stage": 43, + "kind": "H", + "output_sha256": "9e7d5221dca2e10b36c2e1d5530105a3cf1a8179ea227917bd24f13d11adf004" + }, + { + "stage": 44, + "kind": "D", + "output_sha256": "9e7d5221dca2e10b36c2e1d5530105a3cf1a8179ea227917bd24f13d11adf004" + }, + { + "stage": 45, + "kind": "H", + "output_sha256": "ec1932babca2a2790531c803ec0886184e489dc03e3c19e0e50cd6e8c5586275" + }, + { + "stage": 46, + "kind": "D", + "output_sha256": "01de897def440a8eec3fecc5692eb7abeb2ee03a0194d9702905b8ac68029177" + }, + { + "stage": 47, + "kind": "H", + "output_sha256": "95ec343227872fc87b572cca55489effe80e6ff8f5a59ab7daa04bc725a967e5" + }, + { + "stage": 48, + "kind": "D", + "output_sha256": "95ec343227872fc87b572cca55489effe80e6ff8f5a59ab7daa04bc725a967e5" + }, + { + "stage": 49, + "kind": "H", + "output_sha256": "7eb2e54a369f403e7fa72e59e3c93b748423ae9c559f0918592cfd2052fe2579" + }, + { + "stage": 50, + "kind": "D", + "output_sha256": "a9b82c71b86f87b34f245f12ca00b1106ce7754d463e01c56c1ac7c5154d24ec" + }, + { + "stage": 51, + "kind": "H", + "output_sha256": "f7de8ad7b9bd2d56f74e229a1dba438ebcca58c8906db94619846c4a73685a8e" + }, + { + "stage": 52, + "kind": "D", + "output_sha256": "f7de8ad7b9bd2d56f74e229a1dba438ebcca58c8906db94619846c4a73685a8e" + }, + { + "stage": 53, + "kind": "H", + "output_sha256": "d588209e5144aa8797dcbf1139ac83b42726d400fcc5c45abe256ae469286ebd" + }, + { + "stage": 54, + "kind": "D", + "output_sha256": "a6835365f653a1a4ddbf72b9c9b6db16298dd8fec75de252ca26b1ea405c811b" + }, + { + "stage": 55, + "kind": "H", + "output_sha256": "2ca94371e54113f842755127819cc36e25a4e04d41f2c1a06c27cf31b31832bc" + }, + { + "stage": 56, + "kind": "D", + "output_sha256": "2ca94371e54113f842755127819cc36e25a4e04d41f2c1a06c27cf31b31832bc" + }, + { + "stage": 57, + "kind": "H", + "output_sha256": "aeeff4a687e14ecba5806bf842e1b46b8923449f59c1207580764e01d4aef7f7" + }, + { + "stage": 58, + "kind": "D", + "output_sha256": "8ded9f7b26f5d4890a3192b5063c9d9e03f03e06f769fcadf9e0841e04979ec8" + }, + { + "stage": 59, + "kind": "H", + "output_sha256": "87c19bbe0a89def6c802b3347741accf52d4b9a9b6f659a313a7a2becbe49664" + }, + { + "stage": 60, + "kind": "D", + "output_sha256": "87c19bbe0a89def6c802b3347741accf52d4b9a9b6f659a313a7a2becbe49664" + }, + { + "stage": 61, + "kind": "H", + "output_sha256": "2b27ee7c294da07453c0e879950caca0c2ee1937a8e35160d3591424a6a612d1" + }, + { + "stage": 62, + "kind": "D", + "output_sha256": "006df457574ae5f6fe392f91481001ceb02e993dac721ebb77f22f8d328b5d5d" + }, + { + "stage": 63, + "kind": "H", + "output_sha256": "038c8726f141b333f4d39317d515149ab1039b3ddcb530db0d6e5fabd256cd23" + }, + { + "stage": 64, + "kind": "D", + "output_sha256": "038c8726f141b333f4d39317d515149ab1039b3ddcb530db0d6e5fabd256cd23" + }, + { + "stage": 65, + "kind": "H", + "output_sha256": "7f5302d3d6582be1c9d47eecfd7e2e1a0ff5b31ad1423e6c8bd66866dcf26ff8" + }, + { + "stage": 66, + "kind": "D", + "output_sha256": "2dc5f680c4f5ad63b39ca7d9d5f15a079cf0f5a7d4e070858e48515ecde156f0" + }, + { + "stage": 67, + "kind": "H", + "output_sha256": "918e75dd8b5ebe5c5289107ff7306378f05a3c82e9baeddfa7e3c722a3d3cd3d" + }, + { + "stage": 68, + "kind": "D", + "output_sha256": "918e75dd8b5ebe5c5289107ff7306378f05a3c82e9baeddfa7e3c722a3d3cd3d" + }, + { + "stage": 69, + "kind": "H", + "output_sha256": "770f859591f54a18cc92792aa416f9903040ce63ace8d2b25ceb83b22619a97b" + }, + { + "stage": 70, + "kind": "D", + "output_sha256": "2dc5f680c4f5ad63b39ca7d9d5f15a079cf0f5a7d4e070858e48515ecde156f0" + }, + { + "stage": 71, + "kind": "H", + "output_sha256": "918e75dd8b5ebe5c5289107ff7306378f05a3c82e9baeddfa7e3c722a3d3cd3d" + }, + { + "stage": 72, + "kind": "D", + "output_sha256": "918e75dd8b5ebe5c5289107ff7306378f05a3c82e9baeddfa7e3c722a3d3cd3d" + }, + { + "stage": 73, + "kind": "H", + "output_sha256": "0682d2fa117c93f3e9147d1264fc18a5e052d8e042c4cb98a4c290cf5a68381e" + }, + { + "stage": 74, + "kind": "D", + "output_sha256": "fe071a3b86af12a35069fed403f6ecf7a88dbc71b8b6794e08b41751b8f1d234" + }, + { + "stage": 75, + "kind": "H", + "output_sha256": "918e75dd8b5ebe5c5289107ff7306378f05a3c82e9baeddfa7e3c722a3d3cd3d" + }, + { + "stage": 76, + "kind": "D", + "output_sha256": "918e75dd8b5ebe5c5289107ff7306378f05a3c82e9baeddfa7e3c722a3d3cd3d" + }, + { + "stage": 77, + "kind": "H", + "output_sha256": "b77f77e92e99bdaf45580d7eb2acc3a07b0da6c082c6f4c08916c631807e655e" + }, + { + "stage": 78, + "kind": "D", + "output_sha256": "e388c0be6f8a32832d5ab7c5daab3ea7fb86e53145a28e9c14dd23d5a3af77c8" + }, + { + "stage": 79, + "kind": "H", + "output_sha256": "918e75dd8b5ebe5c5289107ff7306378f05a3c82e9baeddfa7e3c722a3d3cd3d" + }, + { + "stage": 80, + "kind": "D", + "output_sha256": "918e75dd8b5ebe5c5289107ff7306378f05a3c82e9baeddfa7e3c722a3d3cd3d" + }, + { + "stage": 81, + "kind": "H", + "output_sha256": "762d8b086c2d5efbd5ed6a6a05b773e5ea1d103e3fae5c595af3c7985c3a819a" + }, + { + "stage": 82, + "kind": "D", + "output_sha256": "4ad4f8edeccd1a0f78a290b7f4e006a64d7f58ce7ea8589df448e125c2485095" + }, + { + "stage": 83, + "kind": "H", + "output_sha256": "918e75dd8b5ebe5c5289107ff7306378f05a3c82e9baeddfa7e3c722a3d3cd3d" + }, + { + "stage": 84, + "kind": "D", + "output_sha256": "918e75dd8b5ebe5c5289107ff7306378f05a3c82e9baeddfa7e3c722a3d3cd3d" + }, + { + "stage": 85, + "kind": "H", + "output_sha256": "b77f77e92e99bdaf45580d7eb2acc3a07b0da6c082c6f4c08916c631807e655e" + }, + { + "stage": 86, + "kind": "D", + "output_sha256": "e388c0be6f8a32832d5ab7c5daab3ea7fb86e53145a28e9c14dd23d5a3af77c8" + }, + { + "stage": 87, + "kind": "H", + "output_sha256": "918e75dd8b5ebe5c5289107ff7306378f05a3c82e9baeddfa7e3c722a3d3cd3d" + }, + { + "stage": 88, + "kind": "D", + "output_sha256": "918e75dd8b5ebe5c5289107ff7306378f05a3c82e9baeddfa7e3c722a3d3cd3d" + }, + { + "stage": 89, + "kind": "H", + "output_sha256": "0682d2fa117c93f3e9147d1264fc18a5e052d8e042c4cb98a4c290cf5a68381e" + }, + { + "stage": 90, + "kind": "D", + "output_sha256": "fe071a3b86af12a35069fed403f6ecf7a88dbc71b8b6794e08b41751b8f1d234" + }, + { + "stage": 91, + "kind": "H", + "output_sha256": "918e75dd8b5ebe5c5289107ff7306378f05a3c82e9baeddfa7e3c722a3d3cd3d" + }, + { + "stage": 92, + "kind": "D", + "output_sha256": "918e75dd8b5ebe5c5289107ff7306378f05a3c82e9baeddfa7e3c722a3d3cd3d" + }, + { + "stage": 93, + "kind": "H", + "output_sha256": "770f859591f54a18cc92792aa416f9903040ce63ace8d2b25ceb83b22619a97b" + }, + { + "stage": 94, + "kind": "D", + "output_sha256": "2dc5f680c4f5ad63b39ca7d9d5f15a079cf0f5a7d4e070858e48515ecde156f0" + }, + { + "stage": 95, + "kind": "H", + "output_sha256": "918e75dd8b5ebe5c5289107ff7306378f05a3c82e9baeddfa7e3c722a3d3cd3d" + }, + { + "stage": 96, + "kind": "D", + "output_sha256": "918e75dd8b5ebe5c5289107ff7306378f05a3c82e9baeddfa7e3c722a3d3cd3d" + }, + { + "stage": 97, + "kind": "D", + "output_sha256": "71cc3f3b0b3c42065d725c9f607d470da44ccd8edb00719562920c92e1088386" + }, + { + "stage": 98, + "kind": "H", + "output_sha256": "c22b5bcef0236b29d5dd3c385d39990cd265e1eff55a6a4810af39f1fd829599" + }, + { + "stage": 99, + "kind": "D", + "output_sha256": "8b84352fde5accc597ecd9e792179728010b68088402e4d1adf390285d072f4f" + }, + { + "stage": 100, + "kind": "H", + "output_sha256": "8b0beb816c7669160b33626a0703ca7ff00e6e78fb60c593566d94d70b90a79f" + }, + { + "stage": 101, + "kind": "D", + "output_sha256": "88b6c5ed168c74a2691b68ff2df8830badd082e81671451418997bf46ac3409f" + }, + { + "stage": 102, + "kind": "H", + "output_sha256": "6496cb90d2e6f03c5a4c8ac3fffb26b0de13cd0ddc58a6a31a58119ec1e0b0e2" + }, + { + "stage": 103, + "kind": "D", + "output_sha256": "92df09152e913c0361223a3074d83e108388fdf21aa5e9427b5291c23ecae101" + }, + { + "stage": 104, + "kind": "H", + "output_sha256": "4488962eeb5918109da5a160bf0a19eb99c3e59374b07fd69e19d9f6d16123d7" + }, + { + "stage": 105, + "kind": "D", + "output_sha256": "fcea70175772e366974b062a234f9d2c76391790ebf22beb704b44c4ea89153f" + }, + { + "stage": 106, + "kind": "H", + "output_sha256": "06c065ee522f14d1ff2d89461ace16b000aea7259b0d5209912e06e2a904a699" + }, + { + "stage": 107, + "kind": "D", + "output_sha256": "f73ddcb561eec7ef030e236a0cd112481a671d42984e68317d51e434c97d52bd" + }, + { + "stage": 108, + "kind": "H", + "output_sha256": "2724e76811c96cac592e7f424b37d59e34224947481aae213d2a5afb5da1e108" + }, + { + "stage": 109, + "kind": "D", + "output_sha256": "d30e9cb4db4bc5c5dbfd34ecbde48ae1c517b1d650a260ff362297f6818d1465" + }, + { + "stage": 110, + "kind": "H", + "output_sha256": "0cac15c1be152e3f67a9d9e518c90e2c77983ba88b8d7b05cdd687917755c2f6" + }, + { + "stage": 111, + "kind": "D", + "output_sha256": "9e0a04dcd09b76bed31a795a0402c1b9b7361f2397e60e1a331d0e47901dbafc" + }, + { + "stage": 112, + "kind": "H", + "output_sha256": "41d411436dc1530cc652e7b897d0c0c3586acc61d82378c512269d5dcf652947" + }, + { + "stage": 113, + "kind": "D", + "output_sha256": "41d411436dc1530cc652e7b897d0c0c3586acc61d82378c512269d5dcf652947" + }, + { + "stage": 114, + "kind": "H", + "output_sha256": "fe025970592900ef71a6c3edfcf9a0f06ce9356de0e4eea51250dc9a489dda73" + }, + { + "stage": 115, + "kind": "D", + "output_sha256": "8809a7b6058c4b3aa084f398e08989bafe4f240fedcf403eb52e5595b3fc0b78" + }, + { + "stage": 116, + "kind": "H", + "output_sha256": "41d411436dc1530cc652e7b897d0c0c3586acc61d82378c512269d5dcf652947" + }, + { + "stage": 117, + "kind": "D", + "output_sha256": "41d411436dc1530cc652e7b897d0c0c3586acc61d82378c512269d5dcf652947" + }, + { + "stage": 118, + "kind": "H", + "output_sha256": "c33cbd696f685f2dac97dbd75e6e167d5c19fb1d9b63a647a32355daf99b9be7" + }, + { + "stage": 119, + "kind": "D", + "output_sha256": "0116367ac67ecffd8628b832b0cad1e44c787a1246e9a6b41de1c593b736e844" + }, + { + "stage": 120, + "kind": "H", + "output_sha256": "41d411436dc1530cc652e7b897d0c0c3586acc61d82378c512269d5dcf652947" + }, + { + "stage": 121, + "kind": "D", + "output_sha256": "41d411436dc1530cc652e7b897d0c0c3586acc61d82378c512269d5dcf652947" + }, + { + "stage": 122, + "kind": "H", + "output_sha256": "31ef49ddf3b727234c2aff5932c1c77c97529839bca7757fd452b90c85186cf5" + }, + { + "stage": 123, + "kind": "D", + "output_sha256": "1db4250c0c3b0cae084fd3347f1eb29b94270e02832b7f171e6526f9172d647e" + }, + { + "stage": 124, + "kind": "H", + "output_sha256": "41d411436dc1530cc652e7b897d0c0c3586acc61d82378c512269d5dcf652947" + }, + { + "stage": 125, + "kind": "D", + "output_sha256": "41d411436dc1530cc652e7b897d0c0c3586acc61d82378c512269d5dcf652947" + }, + { + "stage": 126, + "kind": "H", + "output_sha256": "c33cbd696f685f2dac97dbd75e6e167d5c19fb1d9b63a647a32355daf99b9be7" + }, + { + "stage": 127, + "kind": "D", + "output_sha256": "0116367ac67ecffd8628b832b0cad1e44c787a1246e9a6b41de1c593b736e844" + }, + { + "stage": 128, + "kind": "H", + "output_sha256": "41d411436dc1530cc652e7b897d0c0c3586acc61d82378c512269d5dcf652947" + }, + { + "stage": 129, + "kind": "D", + "output_sha256": "41d411436dc1530cc652e7b897d0c0c3586acc61d82378c512269d5dcf652947" + }, + { + "stage": 130, + "kind": "H", + "output_sha256": "fe025970592900ef71a6c3edfcf9a0f06ce9356de0e4eea51250dc9a489dda73" + }, + { + "stage": 131, + "kind": "D", + "output_sha256": "8809a7b6058c4b3aa084f398e08989bafe4f240fedcf403eb52e5595b3fc0b78" + }, + { + "stage": 132, + "kind": "H", + "output_sha256": "41d411436dc1530cc652e7b897d0c0c3586acc61d82378c512269d5dcf652947" + }, + { + "stage": 133, + "kind": "D", + "output_sha256": "41d411436dc1530cc652e7b897d0c0c3586acc61d82378c512269d5dcf652947" + }, + { + "stage": 134, + "kind": "H", + "output_sha256": "0cac15c1be152e3f67a9d9e518c90e2c77983ba88b8d7b05cdd687917755c2f6" + }, + { + "stage": 135, + "kind": "D", + "output_sha256": "9e0a04dcd09b76bed31a795a0402c1b9b7361f2397e60e1a331d0e47901dbafc" + }, + { + "stage": 136, + "kind": "H", + "output_sha256": "41d411436dc1530cc652e7b897d0c0c3586acc61d82378c512269d5dcf652947" + }, + { + "stage": 137, + "kind": "D", + "output_sha256": "41d411436dc1530cc652e7b897d0c0c3586acc61d82378c512269d5dcf652947" + }, + { + "stage": 138, + "kind": "H", + "output_sha256": "0cac15c1be152e3f67a9d9e518c90e2c77983ba88b8d7b05cdd687917755c2f6" + }, + { + "stage": 139, + "kind": "D", + "output_sha256": "b3fa8a336f4761d6774f2fa72bd437f507285da69c4a871e0955bd58b9acccd8" + }, + { + "stage": 140, + "kind": "H", + "output_sha256": "9872c8189fc70ffb73d731e9f1e9dfb753439588c2d789561cf140034789e807" + }, + { + "stage": 141, + "kind": "D", + "output_sha256": "9872c8189fc70ffb73d731e9f1e9dfb753439588c2d789561cf140034789e807" + }, + { + "stage": 142, + "kind": "H", + "output_sha256": "3e8de71c1ddafa19f17e1ff622db173474a38ae993a11d9bad004db6abf16cfe" + }, + { + "stage": 143, + "kind": "D", + "output_sha256": "6df2f6af9403e4b803c5d0217a1cf49e9a7a53bba8cf3550810acef3064a35bf" + }, + { + "stage": 144, + "kind": "H", + "output_sha256": "9872c8189fc70ffb73d731e9f1e9dfb753439588c2d789561cf140034789e807" + }, + { + "stage": 145, + "kind": "D", + "output_sha256": "9872c8189fc70ffb73d731e9f1e9dfb753439588c2d789561cf140034789e807" + }, + { + "stage": 146, + "kind": "H", + "output_sha256": "67504d68a6221b051e33a2d1aa4f26c0780e93196d9071898924f0f5a6da9d35" + }, + { + "stage": 147, + "kind": "D", + "output_sha256": "f9a63eaae062883220e6f0ac42504e82d398c0220264de7d72bcaa9017aceab1" + }, + { + "stage": 148, + "kind": "H", + "output_sha256": "9872c8189fc70ffb73d731e9f1e9dfb753439588c2d789561cf140034789e807" + }, + { + "stage": 149, + "kind": "D", + "output_sha256": "9872c8189fc70ffb73d731e9f1e9dfb753439588c2d789561cf140034789e807" + }, + { + "stage": 150, + "kind": "H", + "output_sha256": "0473fabc2a49ce5273cb9ab77423a848f2b2121603e7325cea53acecbf24b6cc" + }, + { + "stage": 151, + "kind": "D", + "output_sha256": "d81f5b29420beb94e448e21cd84c7aeb003b639c7628a9d5d926c8525f588d14" + }, + { + "stage": 152, + "kind": "H", + "output_sha256": "9872c8189fc70ffb73d731e9f1e9dfb753439588c2d789561cf140034789e807" + }, + { + "stage": 153, + "kind": "D", + "output_sha256": "9872c8189fc70ffb73d731e9f1e9dfb753439588c2d789561cf140034789e807" + }, + { + "stage": 154, + "kind": "H", + "output_sha256": "67504d68a6221b051e33a2d1aa4f26c0780e93196d9071898924f0f5a6da9d35" + }, + { + "stage": 155, + "kind": "D", + "output_sha256": "f9a63eaae062883220e6f0ac42504e82d398c0220264de7d72bcaa9017aceab1" + }, + { + "stage": 156, + "kind": "H", + "output_sha256": "9872c8189fc70ffb73d731e9f1e9dfb753439588c2d789561cf140034789e807" + }, + { + "stage": 157, + "kind": "D", + "output_sha256": "9872c8189fc70ffb73d731e9f1e9dfb753439588c2d789561cf140034789e807" + }, + { + "stage": 158, + "kind": "H", + "output_sha256": "3e8de71c1ddafa19f17e1ff622db173474a38ae993a11d9bad004db6abf16cfe" + }, + { + "stage": 159, + "kind": "D", + "output_sha256": "fdf05b2ddb4fd85e1ef0a22b9c3c2fc033f299e7a74ca45d8cb214ad5ef51abe" + }, + { + "stage": 160, + "kind": "H", + "output_sha256": "bdc29a14e73ee9d110855b64ebf9456631fd3d8ccdc1db0da8e2053fea6aae74" + }, + { + "stage": 161, + "kind": "D", + "output_sha256": "bdc29a14e73ee9d110855b64ebf9456631fd3d8ccdc1db0da8e2053fea6aae74" + }, + { + "stage": 162, + "kind": "H", + "output_sha256": "b5855d4ba1ea249aab31e1e89f7254949fbc085543e8bed5623d17b20853df81" + }, + { + "stage": 163, + "kind": "D", + "output_sha256": "dc8672b3b8f0f6696390e27118683feb6f9b5cb52a7be16a2e1051d235d4e20a" + }, + { + "stage": 164, + "kind": "H", + "output_sha256": "b0907eaad171def2b754ccea5bc1f3f187bf7a1385fd64282f12fa0398d6dab8" + }, + { + "stage": 165, + "kind": "D", + "output_sha256": "b0907eaad171def2b754ccea5bc1f3f187bf7a1385fd64282f12fa0398d6dab8" + }, + { + "stage": 166, + "kind": "D", + "output_sha256": "f7175a1416ca019cb6cfe84386dfc95ed7ba7181ea669149a1dd26cd9e291a57" + }, + { + "stage": 167, + "kind": "H", + "output_sha256": "4c17704e2ddff0e61d25a35b006145b6bff573c4bcc221a2fbcab0627dcc3764" + }, + { + "stage": 168, + "kind": "D", + "output_sha256": "d41ebeb3ca16f247e80c38da1da5b7f80a3614d596b5febeb3bd2a98bbab443b" + }, + { + "stage": 169, + "kind": "H", + "output_sha256": "efd5fae8651adc34b3e830a148bd4f7fd9fdc9934f63f95347031c5fac5047d0" + }, + { + "stage": 170, + "kind": "D", + "output_sha256": "498599da7fdf7fb55215c4da4a7eaf833a1401d89453527ba179539ab6203fa9" + }, + { + "stage": 171, + "kind": "H", + "output_sha256": "e7ce227fa3f9623a51b726ef7493770305e5f25a9e9534da79f649d36266e60b" + }, + { + "stage": 172, + "kind": "D", + "output_sha256": "cc5a89ef2334c50e0c19eec76253e5315e1f92b983d19033f9f99776175f78fb" + }, + { + "stage": 173, + "kind": "H", + "output_sha256": "3286834e621a2f175829c60910570650537302c5eb8cbb065e28a6043f83ccbb" + }, + { + "stage": 174, + "kind": "D", + "output_sha256": "228db5793cea8b079c41fbffa616615d20626c5542c644060e460b82dfc13aa1" + }, + { + "stage": 175, + "kind": "H", + "output_sha256": "287695df29b4f2a781aad54f7fdc05477763ac76f1f581944ca4c46cb644b098" + }, + { + "stage": 176, + "kind": "D", + "output_sha256": "8534906b41c09e1b2ac6437ff74b9c69a4a6279b4a9dada0f1dfa9a9198fde8b" + }, + { + "stage": 177, + "kind": "H", + "output_sha256": "5c669f46fcebf5b4ac5da6798a21526f3c31e7fae0d49ec1bf72ac19ceabd479" + }, + { + "stage": 178, + "kind": "D", + "output_sha256": "456e1e95632f0ae9e9fbe2317a2f4e922e2d8f0cce5510840c48113d9f2995c1" + }, + { + "stage": 179, + "kind": "H", + "output_sha256": "3973c8964c56e8057d61ac3d335cdbd7709fa69a97238e58549e1b741dc7ce59" + }, + { + "stage": 180, + "kind": "D", + "output_sha256": "8dbcd2680ad1c6b6670b48b2294b037339da283193f116c82b06fd2a31ea79fb" + }, + { + "stage": 181, + "kind": "H", + "output_sha256": "1733de97ddcf4e0426951877ba25bc50ad77843d535a938d4b59c09d6d6d2893" + }, + { + "stage": 182, + "kind": "D", + "output_sha256": "1733de97ddcf4e0426951877ba25bc50ad77843d535a938d4b59c09d6d6d2893" + }, + { + "stage": 183, + "kind": "H", + "output_sha256": "edf5ba229068d48e2cc62fcb2481a0b4fbc125e8bff06610948425f4ea74af24" + }, + { + "stage": 184, + "kind": "D", + "output_sha256": "c3b1b1f55e45573eb6e445bda00cc2b579bfcfa08f493a0034ddefd7f5989023" + }, + { + "stage": 185, + "kind": "H", + "output_sha256": "9b8fc7218d85b8c40dd7073bc203009d841a63d875d5a7c0e47753c1a54c3120" + }, + { + "stage": 186, + "kind": "D", + "output_sha256": "9b8fc7218d85b8c40dd7073bc203009d841a63d875d5a7c0e47753c1a54c3120" + }, + { + "stage": 187, + "kind": "H", + "output_sha256": "2c4bf524f484b7a4a9e687e909c6cf05b7bd3df3e91cb88f64d8259f8b449a8d" + }, + { + "stage": 188, + "kind": "D", + "output_sha256": "a721af5c15b92b27ea138e77ddc04133286a88fe3fa59d43ff2982a289edb603" + }, + { + "stage": 189, + "kind": "H", + "output_sha256": "9b8fc7218d85b8c40dd7073bc203009d841a63d875d5a7c0e47753c1a54c3120" + }, + { + "stage": 190, + "kind": "D", + "output_sha256": "9b8fc7218d85b8c40dd7073bc203009d841a63d875d5a7c0e47753c1a54c3120" + }, + { + "stage": 191, + "kind": "H", + "output_sha256": "17fa01cf98cdae8d8ca1132c7d7bd76a38d18990ae2139557f8acc90af5844af" + }, + { + "stage": 192, + "kind": "D", + "output_sha256": "facea7fa432392eb633d08a160826607ceedfdbf48e1de883893e21b78b88ec3" + }, + { + "stage": 193, + "kind": "H", + "output_sha256": "9b8fc7218d85b8c40dd7073bc203009d841a63d875d5a7c0e47753c1a54c3120" + }, + { + "stage": 194, + "kind": "D", + "output_sha256": "9b8fc7218d85b8c40dd7073bc203009d841a63d875d5a7c0e47753c1a54c3120" + }, + { + "stage": 195, + "kind": "H", + "output_sha256": "2c4bf524f484b7a4a9e687e909c6cf05b7bd3df3e91cb88f64d8259f8b449a8d" + }, + { + "stage": 196, + "kind": "D", + "output_sha256": "a721af5c15b92b27ea138e77ddc04133286a88fe3fa59d43ff2982a289edb603" + }, + { + "stage": 197, + "kind": "H", + "output_sha256": "9b8fc7218d85b8c40dd7073bc203009d841a63d875d5a7c0e47753c1a54c3120" + }, + { + "stage": 198, + "kind": "D", + "output_sha256": "9b8fc7218d85b8c40dd7073bc203009d841a63d875d5a7c0e47753c1a54c3120" + }, + { + "stage": 199, + "kind": "H", + "output_sha256": "0378dcd127450bbf6ebd9e4620fe101c85d89dfe23a26b9479eb3eaf8c5d1710" + }, + { + "stage": 200, + "kind": "D", + "output_sha256": "c3b1b1f55e45573eb6e445bda00cc2b579bfcfa08f493a0034ddefd7f5989023" + }, + { + "stage": 201, + "kind": "H", + "output_sha256": "9b8fc7218d85b8c40dd7073bc203009d841a63d875d5a7c0e47753c1a54c3120" + }, + { + "stage": 202, + "kind": "D", + "output_sha256": "9b8fc7218d85b8c40dd7073bc203009d841a63d875d5a7c0e47753c1a54c3120" + }, + { + "stage": 203, + "kind": "H", + "output_sha256": "17e5dd6cd69525e62758fc32227ca0de8c419187721d9c829aad9cae6a2eadc6" + }, + { + "stage": 204, + "kind": "D", + "output_sha256": "a96efbcb7329505da7720d3897faba1ddea64beb933b5ee6b0fc9a0e5af356cb" + }, + { + "stage": 205, + "kind": "H", + "output_sha256": "6177f9fcd7eb6a66735caf27eaef8537bf6c2a72ed7b800d525e29b229ff9a5f" + }, + { + "stage": 206, + "kind": "D", + "output_sha256": "6177f9fcd7eb6a66735caf27eaef8537bf6c2a72ed7b800d525e29b229ff9a5f" + }, + { + "stage": 207, + "kind": "H", + "output_sha256": "7af2dd6f660494a20b9702674d420fa27f7f1333f8e8f692266ff14f25fa121c" + }, + { + "stage": 208, + "kind": "D", + "output_sha256": "49a932add83beba7446c1b197e4447f1a18f3ff91f2ef589c42d27bdb4959a6d" + }, + { + "stage": 209, + "kind": "H", + "output_sha256": "f2b1cdbbbff39c8bc8bcf235950883c819d24ae4b271cf2e133523df7b4ca001" + }, + { + "stage": 210, + "kind": "D", + "output_sha256": "f2b1cdbbbff39c8bc8bcf235950883c819d24ae4b271cf2e133523df7b4ca001" + }, + { + "stage": 211, + "kind": "H", + "output_sha256": "b1d46d5f7241d3dfe05233e9abec06a1582021231e99b18465eac2134cff4803" + }, + { + "stage": 212, + "kind": "D", + "output_sha256": "8e14da2d0dcf40ec1c9905484c8f91ab8b70d778a9351ee4bd2965c294784131" + }, + { + "stage": 213, + "kind": "H", + "output_sha256": "77512fc811c69abf13c35cf38fcff5c2e470bc6ef3dd4723f0a275adaf6e4821" + }, + { + "stage": 214, + "kind": "D", + "output_sha256": "77512fc811c69abf13c35cf38fcff5c2e470bc6ef3dd4723f0a275adaf6e4821" + }, + { + "stage": 215, + "kind": "H", + "output_sha256": "d5aefd386f5c9ffe7197ab9beea0e6e976722b794897dc7a3e73109663cc7fc3" + }, + { + "stage": 216, + "kind": "D", + "output_sha256": "453b0b77eb1e679869bca507691442e155548ee0bd8c2954233e55032746f64a" + }, + { + "stage": 217, + "kind": "H", + "output_sha256": "77512fc811c69abf13c35cf38fcff5c2e470bc6ef3dd4723f0a275adaf6e4821" + }, + { + "stage": 218, + "kind": "D", + "output_sha256": "77512fc811c69abf13c35cf38fcff5c2e470bc6ef3dd4723f0a275adaf6e4821" + }, + { + "stage": 219, + "kind": "H", + "output_sha256": "6f00db7c96125e5282516d2c9cf9ded199476378c98b8ec29ad6e62728c0c776" + }, + { + "stage": 220, + "kind": "D", + "output_sha256": "b0d3d081bc62d3a588f93fe10f5bb1859fa622b904b0043f66531ebf3b059ffb" + }, + { + "stage": 221, + "kind": "H", + "output_sha256": "77512fc811c69abf13c35cf38fcff5c2e470bc6ef3dd4723f0a275adaf6e4821" + }, + { + "stage": 222, + "kind": "D", + "output_sha256": "77512fc811c69abf13c35cf38fcff5c2e470bc6ef3dd4723f0a275adaf6e4821" + }, + { + "stage": 223, + "kind": "H", + "output_sha256": "d5aefd386f5c9ffe7197ab9beea0e6e976722b794897dc7a3e73109663cc7fc3" + }, + { + "stage": 224, + "kind": "D", + "output_sha256": "713ff247f8f585472d7f37fd0457565392ce4d25ed31a43935ca9179816db3af" + }, + { + "stage": 225, + "kind": "H", + "output_sha256": "4e94bfea025463599481a5dedf405ad87aac0ea8a45382c998f6db0e3801b1c1" + }, + { + "stage": 226, + "kind": "D", + "output_sha256": "4e94bfea025463599481a5dedf405ad87aac0ea8a45382c998f6db0e3801b1c1" + }, + { + "stage": 227, + "kind": "H", + "output_sha256": "c240bc16734cff4238e4997b162b37eb4e3e72a0ceb632d99f7bf802619ad78b" + }, + { + "stage": 228, + "kind": "D", + "output_sha256": "598354ab809b62f0bbaf45630dec03ac470219768841c1887b2ad33936f351bf" + }, + { + "stage": 229, + "kind": "H", + "output_sha256": "56b12e4431481e47404cc64324419773bfe2135c7c8f30eaa2b7cb34b311a03a" + }, + { + "stage": 230, + "kind": "D", + "output_sha256": "56b12e4431481e47404cc64324419773bfe2135c7c8f30eaa2b7cb34b311a03a" + }, + { + "stage": 231, + "kind": "H", + "output_sha256": "71aede04420bf70c69090b6547e62f08d2397f439dbf28cfb7a9907c53c9403f" + }, + { + "stage": 232, + "kind": "D", + "output_sha256": "a9f97511455ce960f458440933a8c2d0313d3c154da048a3ecb9a13e568143d1" + }, + { + "stage": 233, + "kind": "H", + "output_sha256": "bdebb712acdc4a2be95c1408620ec5d393d48cd3f30d60e57270cfa3492cd4a6" + }, + { + "stage": 234, + "kind": "D", + "output_sha256": "bdebb712acdc4a2be95c1408620ec5d393d48cd3f30d60e57270cfa3492cd4a6" + }, + { + "stage": 235, + "kind": "D", + "output_sha256": "49279dd19536015b4c22a730da68575a69c4cd9c327cac04c6e71c26f1dd21c1" + }, + { + "stage": 236, + "kind": "H", + "output_sha256": "ca4085c326ce39a27859cbad39c850c3590d45ccaec91e905b1e6177cb31648e" + }, + { + "stage": 237, + "kind": "D", + "output_sha256": "dd1c659ae909c961d464a9fdea2592bd067d1ab94212fdf2df0a87e95b062f8c" + }, + { + "stage": 238, + "kind": "H", + "output_sha256": "9e4e038259c7e64e8ee57ac622b093c5d5bb2df793445665d7ba9a259ea709ae" + }, + { + "stage": 239, + "kind": "D", + "output_sha256": "bed274a905400222b8b5ee0b3f240a716e70104a5c554eeff8a69738ac657ced" + }, + { + "stage": 240, + "kind": "H", + "output_sha256": "f90f1bbf756b8affea11c9a0bdeac10c487c900ffc1d22471b41b6ee588313c2" + }, + { + "stage": 241, + "kind": "D", + "output_sha256": "644b667b272b2e87844d71493935db3f6a67bfa11f326515a147b14b23a0fb78" + }, + { + "stage": 242, + "kind": "H", + "output_sha256": "1fcc21be4d52dee37f2c077384a1e53ba3c97694780874f1ef7f96aba420015c" + }, + { + "stage": 243, + "kind": "D", + "output_sha256": "566f51dcda2f9fc45b0d51f25e91b2b06f3d54eab40ed6db6fb5dc2d36ec93d0" + }, + { + "stage": 244, + "kind": "H", + "output_sha256": "da05e1f7bdd143fbb1448e442c29897398a9633fdc83925bc6f806b2f79530ba" + }, + { + "stage": 245, + "kind": "D", + "output_sha256": "8551169219ff43ff125d08f8a1ee21d22186c3bd787f41e0fb5bf6ab566cbfe0" + }, + { + "stage": 246, + "kind": "H", + "output_sha256": "637244cdbb31b3895b1e157296e00b07cb7b51215fe9766c6d5c5793c33efd4b" + }, + { + "stage": 247, + "kind": "D", + "output_sha256": "c844020c9ca294cc41b19863b27f2dbe4630f7cf9f8d39ab65872d5065483ea1" + }, + { + "stage": 248, + "kind": "H", + "output_sha256": "bd85a0480b9a6c4df026664d4c0dcf9d2573abe8b02c7fb9e70de5638e5da5b0" + }, + { + "stage": 249, + "kind": "D", + "output_sha256": "bc75607de9df7b2aabf61dcfb2bf22cbadf8ec4ad3d11e3f59b26e6a761324ad" + }, + { + "stage": 250, + "kind": "H", + "output_sha256": "4058363948a62ccac53ed7903a05781df292e2b1113ef1b0469b1f7727aca888" + }, + { + "stage": 251, + "kind": "D", + "output_sha256": "4058363948a62ccac53ed7903a05781df292e2b1113ef1b0469b1f7727aca888" + }, + { + "stage": 252, + "kind": "H", + "output_sha256": "3b69250cffd1f6660bcb2b1fd3c1b573dbc6d4799e595bed6a5cb45a60d1fe37" + }, + { + "stage": 253, + "kind": "D", + "output_sha256": "2506b254bdd1d0f2f5b0b87f6ccf1b9c1244a8a582edc78d1ff6d7f1a604f911" + }, + { + "stage": 254, + "kind": "H", + "output_sha256": "f5732f24c624a411470b69ce644e53d6c82326b98035798d26742026a25082b3" + }, + { + "stage": 255, + "kind": "D", + "output_sha256": "f5732f24c624a411470b69ce644e53d6c82326b98035798d26742026a25082b3" + }, + { + "stage": 256, + "kind": "H", + "output_sha256": "047c856bfe79ad1377ad77ab69cfbfaedf42b4ed0e507acf6bd213f8dd1428a6" + }, + { + "stage": 257, + "kind": "D", + "output_sha256": "9bdd7883ce202ea91dd6d1ff4b91944ab6c51bb1fbb7232625442b58e83e2777" + }, + { + "stage": 258, + "kind": "H", + "output_sha256": "e075ba59135fe793df30b7cd8f638af4d64aa7d24975b8ee5be96b2c12556794" + }, + { + "stage": 259, + "kind": "D", + "output_sha256": "e075ba59135fe793df30b7cd8f638af4d64aa7d24975b8ee5be96b2c12556794" + }, + { + "stage": 260, + "kind": "H", + "output_sha256": "6c8e60dfb53806c4d2f85675d530a36378ed768181350800113788ca94917050" + }, + { + "stage": 261, + "kind": "D", + "output_sha256": "3697f87312661b541bd94a0adde91e67f16393573406575849ca5fa79c006276" + }, + { + "stage": 262, + "kind": "H", + "output_sha256": "e075ba59135fe793df30b7cd8f638af4d64aa7d24975b8ee5be96b2c12556794" + }, + { + "stage": 263, + "kind": "D", + "output_sha256": "e075ba59135fe793df30b7cd8f638af4d64aa7d24975b8ee5be96b2c12556794" + }, + { + "stage": 264, + "kind": "H", + "output_sha256": "ce1873118e8aa44a9e665223774a570cb2acfed6eba1eab85ba588863230bdd8" + }, + { + "stage": 265, + "kind": "D", + "output_sha256": "9bdd7883ce202ea91dd6d1ff4b91944ab6c51bb1fbb7232625442b58e83e2777" + }, + { + "stage": 266, + "kind": "H", + "output_sha256": "e075ba59135fe793df30b7cd8f638af4d64aa7d24975b8ee5be96b2c12556794" + }, + { + "stage": 267, + "kind": "D", + "output_sha256": "e075ba59135fe793df30b7cd8f638af4d64aa7d24975b8ee5be96b2c12556794" + }, + { + "stage": 268, + "kind": "H", + "output_sha256": "d4a8a9dcdecd83b507495f2569f5ba102411e983de4db4dc49d674ca48dff927" + }, + { + "stage": 269, + "kind": "D", + "output_sha256": "671067c1f04878ac39687d626c7d8464e317966f28709f09ecd68147e1c029b6" + }, + { + "stage": 270, + "kind": "H", + "output_sha256": "e4b376bca60c8b213d93d606496a668bee4dfde00c1c972e2bc5c3c412d113a9" + }, + { + "stage": 271, + "kind": "D", + "output_sha256": "e4b376bca60c8b213d93d606496a668bee4dfde00c1c972e2bc5c3c412d113a9" + }, + { + "stage": 272, + "kind": "H", + "output_sha256": "1beccde0c68e3b24a1539c0ab8423d8f605e3d61c86e158830e020e140c768d9" + }, + { + "stage": 273, + "kind": "D", + "output_sha256": "871d60fcba4cb99807a5fac3ebcbbc7716e94110882865194b4f414383b399b0" + }, + { + "stage": 274, + "kind": "H", + "output_sha256": "8a2cecd747f77fb375fd6650f2b6f00d06a4fa8ae69b579ddb4562db1597b4c7" + }, + { + "stage": 275, + "kind": "D", + "output_sha256": "8a2cecd747f77fb375fd6650f2b6f00d06a4fa8ae69b579ddb4562db1597b4c7" + }, + { + "stage": 276, + "kind": "H", + "output_sha256": "a9d3271c25fc856e63f200b1d6a721b07de753e58e5a5a230a68c4733e0222fb" + }, + { + "stage": 277, + "kind": "D", + "output_sha256": "ba43758344b8f78db22381dbf0cb3889ecf6b42e29689bf4878860357b55d2fc" + }, + { + "stage": 278, + "kind": "H", + "output_sha256": "f43977c28c97784fa3a6682fb0be1224d0339533d54a41693005ff735635cfed" + }, + { + "stage": 279, + "kind": "D", + "output_sha256": "f43977c28c97784fa3a6682fb0be1224d0339533d54a41693005ff735635cfed" + }, + { + "stage": 280, + "kind": "H", + "output_sha256": "8406d2012b2c04d3859fd7d4865d145d5f79f98ea88264d79e89f3998b5cb2d7" + }, + { + "stage": 281, + "kind": "D", + "output_sha256": "4ac315a0b3d4c2c19b60147a66274b66125129b8b35448298f37ff397016f6fc" + }, + { + "stage": 282, + "kind": "H", + "output_sha256": "32295a4bd5a6cadcac5ba12bac8ea8c8d8afa06f539f8afe6802695e075b30fa" + }, + { + "stage": 283, + "kind": "D", + "output_sha256": "32295a4bd5a6cadcac5ba12bac8ea8c8d8afa06f539f8afe6802695e075b30fa" + }, + { + "stage": 284, + "kind": "H", + "output_sha256": "0257605fbd9b4d9200a6ea2bfa73686401997f432b714bccabe13994fc0a41ca" + }, + { + "stage": 285, + "kind": "D", + "output_sha256": "4aef02bacfa0497385b6d20659f8aa904e1b35cd2a6b93eec6b31ca4e97eca16" + }, + { + "stage": 286, + "kind": "H", + "output_sha256": "8c9e70090dc78d19697ee7da6c0a1e37821b25f2d2f4b615332bdb68627f1429" + }, + { + "stage": 287, + "kind": "D", + "output_sha256": "8c9e70090dc78d19697ee7da6c0a1e37821b25f2d2f4b615332bdb68627f1429" + }, + { + "stage": 288, + "kind": "H", + "output_sha256": "7cf9749397489a04452b3ccae4dcdd6f46652a11a470c963eaec78038e5e9ed2" + }, + { + "stage": 289, + "kind": "D", + "output_sha256": "4f61eba884fe7024779c7972aaa84b72949e3d15c1f2971738d87ef1c904f2cf" + }, + { + "stage": 290, + "kind": "H", + "output_sha256": "106fd4211fa3d71426c8d8117d595b5fe22e3ad00b77f9cfe08c872dd0f5f436" + }, + { + "stage": 291, + "kind": "D", + "output_sha256": "106fd4211fa3d71426c8d8117d595b5fe22e3ad00b77f9cfe08c872dd0f5f436" + }, + { + "stage": 292, + "kind": "H", + "output_sha256": "7a3a120efc41b5a64e17c0d58d0d9aed3de36578f1818e724ae8c22064281330" + }, + { + "stage": 293, + "kind": "D", + "output_sha256": "8613fe16144462b7735d3c5579f7b97d5f9892f9b6282c22f25f6b9909ab7f08" + }, + { + "stage": 294, + "kind": "H", + "output_sha256": "e41a7c330643e194c5221501d194a72d7a27d4a8e621eb46ad38449791e08da0" + }, + { + "stage": 295, + "kind": "D", + "output_sha256": "e41a7c330643e194c5221501d194a72d7a27d4a8e621eb46ad38449791e08da0" + }, + { + "stage": 296, + "kind": "H", + "output_sha256": "d1d90375a18514922381c85f71de08eba732abb642d18c3b58453485e7acd29b" + }, + { + "stage": 297, + "kind": "D", + "output_sha256": "05833f20f129a2bdaf35a180abd6491cffffc801bc0f690cd7b7308e80bc4c8d" + }, + { + "stage": 298, + "kind": "H", + "output_sha256": "55c8f5356695de35c61351ee01588fcb629ac5e9793fe1dab3ffaa5695fc2128" + }, + { + "stage": 299, + "kind": "D", + "output_sha256": "55c8f5356695de35c61351ee01588fcb629ac5e9793fe1dab3ffaa5695fc2128" + }, + { + "stage": 300, + "kind": "H", + "output_sha256": "e510e6bd66d12034073d1bdba9a1addd8222089d7e4c29f3ace4f31777d4ff4e" + }, + { + "stage": 301, + "kind": "D", + "output_sha256": "0bba5bf1e3f999cb507d6446176b1ec9e0db381a09b8557492e1a60ed8196a97" + }, + { + "stage": 302, + "kind": "H", + "output_sha256": "b7e8234634c6fa6492f24a0fc9ff88c07f520b7f6acdcc442a2a94fdb3291c32" + }, + { + "stage": 303, + "kind": "D", + "output_sha256": "b7e8234634c6fa6492f24a0fc9ff88c07f520b7f6acdcc442a2a94fdb3291c32" + }, + { + "stage": 304, + "kind": "D", + "output_sha256": "83f9e391720843cd6865820ab7349c1c2c4569d5dfb792ecc954d51c2b7d3ac7" + }, + { + "stage": 305, + "kind": "H", + "output_sha256": "9c057f2675bff1e72813688768beaa816b5619b9b6242dbfa6c99244a61a2b5d" + }, + { + "stage": 306, + "kind": "D", + "output_sha256": "be18d5a78c35c421596811b397cb4a27f6efccaee1d19c7c76fe33567302ee7f" + }, + { + "stage": 307, + "kind": "H", + "output_sha256": "65b88c459a9cf077fc3f6de44fff275260f90198c697148f8d2ddffbad5bf6d2" + }, + { + "stage": 308, + "kind": "D", + "output_sha256": "540b9681b662ccaa4f671e71127d8f4032364971ecc48687a33116992a16e47e" + }, + { + "stage": 309, + "kind": "H", + "output_sha256": "da963503b3dd5c553d6997ec426d76862774adc278e22ffdaf01dc8fb2c0d717" + }, + { + "stage": 310, + "kind": "D", + "output_sha256": "6b8b516f7c94cd92c1599569167a41167ea3609dd447d2b84a27fc591d6e7750" + }, + { + "stage": 311, + "kind": "H", + "output_sha256": "e91ac9f4f687215f87fa985abc2517524c434359e3c89f814040c9b3f539ae3e" + }, + { + "stage": 312, + "kind": "D", + "output_sha256": "5938c15ea91211c053d169310197b9bc858963d3cdcad6f15f4c21f673284c9b" + }, + { + "stage": 313, + "kind": "H", + "output_sha256": "5bca5c5677398e1f71c5d6e5dc5edbeff40df960bda839d0b38f4831c05642b6" + }, + { + "stage": 314, + "kind": "D", + "output_sha256": "f652a1343458ec0daa26a445e657db351d1f27f8519d89cad0beea42d3036fb5" + }, + { + "stage": 315, + "kind": "H", + "output_sha256": "3c7544711b4469dc30c732d81c67cc1d9754b398e8462508994ad2537a03b635" + }, + { + "stage": 316, + "kind": "D", + "output_sha256": "d88db5f49f78665b8aa5fcb6be77c8cbd02bcf66818ba956df8f78780c173a7c" + }, + { + "stage": 317, + "kind": "H", + "output_sha256": "b2ca0706ad1e0967cdf7f2d4ba234b9ea456e8e457128490f12b6a485b8efec3" + }, + { + "stage": 318, + "kind": "D", + "output_sha256": "dfd2e6046c7680d3045a7f3faa4d8a4e698790eb5309200f7f9a014faa90f45b" + }, + { + "stage": 319, + "kind": "H", + "output_sha256": "888310ff70227cc3a837da37c708ad3544a5224237a94db97ecf9db7a5a53966" + }, + { + "stage": 320, + "kind": "D", + "output_sha256": "888310ff70227cc3a837da37c708ad3544a5224237a94db97ecf9db7a5a53966" + }, + { + "stage": 321, + "kind": "H", + "output_sha256": "e8256bb655eb32f8e401d02732f88d0c875de867116da77d2863e0c59656d7fc" + }, + { + "stage": 322, + "kind": "D", + "output_sha256": "548b5051f4315895d968deaf8a9152a9cbf3282e89f522fd67abf9cd837ebf6b" + }, + { + "stage": 323, + "kind": "H", + "output_sha256": "3294f89ece63f6f4d3409652c1e1455bb2be789c8fbeedc49a117a19f695fdf9" + }, + { + "stage": 324, + "kind": "D", + "output_sha256": "3294f89ece63f6f4d3409652c1e1455bb2be789c8fbeedc49a117a19f695fdf9" + }, + { + "stage": 325, + "kind": "H", + "output_sha256": "e4ae34d65a653ad3fa495a2a29dddc2583188e667edf9ab1ae5de42211377604" + }, + { + "stage": 326, + "kind": "D", + "output_sha256": "cb54d3af90c4b6dcf79c28d1a948c07ffbeb65c8ca79ffdafb4bc89fc1a12556" + }, + { + "stage": 327, + "kind": "H", + "output_sha256": "2c051233d01ec288e4f2a0f254343ba0d4d84a0c8d526e1a39ea59a5e78029f8" + }, + { + "stage": 328, + "kind": "D", + "output_sha256": "2c051233d01ec288e4f2a0f254343ba0d4d84a0c8d526e1a39ea59a5e78029f8" + }, + { + "stage": 329, + "kind": "H", + "output_sha256": "3b38f229387ab52a6edd198033e49d4fb34a5a4e1986daa1fd6d3dca8cc049a4" + }, + { + "stage": 330, + "kind": "D", + "output_sha256": "c9f4cddcbfafb9031bd679f2a144696644c842e728ca94b1df2b12f65ad4f30c" + }, + { + "stage": 331, + "kind": "H", + "output_sha256": "43bf0060522403213ef401671a1f05ede5a055c5cf38ecc19228ceecff011112" + }, + { + "stage": 332, + "kind": "D", + "output_sha256": "43bf0060522403213ef401671a1f05ede5a055c5cf38ecc19228ceecff011112" + }, + { + "stage": 333, + "kind": "H", + "output_sha256": "a66b180ec1c40881f2327f721e385b6e4535d7322c8082fa1607e407eb1ae48c" + }, + { + "stage": 334, + "kind": "D", + "output_sha256": "695f364403b10b5ccb0c43fca890c2985752032377e55e5ff6c1beae96a4eca5" + }, + { + "stage": 335, + "kind": "H", + "output_sha256": "ed0008e35e5fbc87000fb271e4be9e3b13fe6b69fd75620b2805c995eff358f5" + }, + { + "stage": 336, + "kind": "D", + "output_sha256": "ed0008e35e5fbc87000fb271e4be9e3b13fe6b69fd75620b2805c995eff358f5" + }, + { + "stage": 337, + "kind": "H", + "output_sha256": "7c21c14f7cb8bbf83e335805fe7e63b530e546b5b6af36a49750b26d0948edbf" + }, + { + "stage": 338, + "kind": "D", + "output_sha256": "f7a696b9c9f33184124e2f40437bed78a4722ec29bbd30837950d93cd5ad3865" + }, + { + "stage": 339, + "kind": "H", + "output_sha256": "3d64b595a2da66a43a84e6d072e42ce1823c4231a735dc75de36b4d774f0d908" + }, + { + "stage": 340, + "kind": "D", + "output_sha256": "3d64b595a2da66a43a84e6d072e42ce1823c4231a735dc75de36b4d774f0d908" + }, + { + "stage": 341, + "kind": "H", + "output_sha256": "17bed247024fbd9bb9f64ee529f9a8dc973e5d6cdb7ad99867d0e3837c4f71ab" + }, + { + "stage": 342, + "kind": "D", + "output_sha256": "23bcb0e077bcf902495637a7a4736c068fec2e563e63593064b94891615223c9" + }, + { + "stage": 343, + "kind": "H", + "output_sha256": "c1883de4521c551891dd0a54d378eb73c7d52ba07cde6c601a56cb7f63744497" + }, + { + "stage": 344, + "kind": "D", + "output_sha256": "c1883de4521c551891dd0a54d378eb73c7d52ba07cde6c601a56cb7f63744497" + } + ] + }, + { + "field_size": 32, + "active_indices": [ + 31, + 30, + 29, + 28, + 27, + 26, + 25, + 24, + 23, + 22, + 21, + 20, + 19, + 18, + 17, + 16, + 15, + 14, + 13, + 12, + 11, + 10, + 9, + 8, + 7, + 6, + 5, + 4, + 3, + 2, + 1, + 0 + ], + "adjoint": true, + "radius": "1", + "target_bits": 20, + "incoming_bits": 8, + "phase_bits": 27, + "data_bits": 62, + "observed_coefficient_bits": 66, + "counts": { + "logical_layers": 6, + "primitive_stages": 510, + "diagonal_stages": 258, + "hadamard_stages": 252 + }, + "layers": [ + { + "begin": 0, + "end": 85, + "pairs": [ + [ + 31, + 15 + ], + [ + 30, + 14 + ], + [ + 29, + 13 + ], + [ + 28, + 12 + ], + [ + 27, + 11 + ], + [ + 26, + 10 + ], + [ + 25, + 9 + ], + [ + 24, + 8 + ], + [ + 23, + 7 + ], + [ + 22, + 6 + ], + [ + 21, + 5 + ], + [ + 20, + 4 + ], + [ + 19, + 3 + ], + [ + 18, + 2 + ], + [ + 17, + 1 + ], + [ + 16, + 0 + ] + ], + "kinds": [ + "butterfly", + "adjoint", + "adjoint", + "adjoint", + "adjoint", + "adjoint", + "adjoint", + "adjoint", + "adjoint", + "adjoint", + "adjoint", + "adjoint", + "adjoint", + "adjoint", + "adjoint", + "adjoint" + ], + "permutation": [ + 31, + 29, + 27, + 25, + 23, + 21, + 19, + 17, + 15, + 13, + 11, + 9, + 7, + 5, + 3, + 1, + 30, + 28, + 26, + 24, + 22, + 20, + 18, + 16, + 14, + 12, + 10, + 8, + 6, + 4, + 2, + 0 + ], + "route_layers": 9 + }, + { + "begin": 85, + "end": 170, + "pairs": [ + [ + 31, + 23 + ], + [ + 30, + 22 + ], + [ + 29, + 21 + ], + [ + 28, + 20 + ], + [ + 27, + 19 + ], + [ + 26, + 18 + ], + [ + 25, + 17 + ], + [ + 24, + 16 + ], + [ + 15, + 7 + ], + [ + 14, + 6 + ], + [ + 13, + 5 + ], + [ + 12, + 4 + ], + [ + 11, + 3 + ], + [ + 10, + 2 + ], + [ + 9, + 1 + ], + [ + 8, + 0 + ] + ], + "kinds": [ + "butterfly", + "adjoint", + "adjoint", + "adjoint", + "adjoint", + "adjoint", + "adjoint", + "adjoint", + "butterfly", + "adjoint", + "adjoint", + "adjoint", + "adjoint", + "adjoint", + "adjoint", + "adjoint" + ], + "permutation": [ + 31, + 29, + 27, + 25, + 23, + 21, + 19, + 17, + 30, + 28, + 26, + 24, + 22, + 20, + 18, + 16, + 15, + 13, + 11, + 9, + 7, + 5, + 3, + 1, + 14, + 12, + 10, + 8, + 6, + 4, + 2, + 0 + ], + "route_layers": 9 + }, + { + "begin": 170, + "end": 255, + "pairs": [ + [ + 31, + 27 + ], + [ + 30, + 26 + ], + [ + 29, + 25 + ], + [ + 28, + 24 + ], + [ + 23, + 19 + ], + [ + 22, + 18 + ], + [ + 21, + 17 + ], + [ + 20, + 16 + ], + [ + 15, + 11 + ], + [ + 14, + 10 + ], + [ + 13, + 9 + ], + [ + 12, + 8 + ], + [ + 7, + 3 + ], + [ + 6, + 2 + ], + [ + 5, + 1 + ], + [ + 4, + 0 + ] + ], + "kinds": [ + "butterfly", + "adjoint", + "adjoint", + "adjoint", + "butterfly", + "adjoint", + "adjoint", + "adjoint", + "butterfly", + "adjoint", + "adjoint", + "adjoint", + "butterfly", + "adjoint", + "adjoint", + "adjoint" + ], + "permutation": [ + 31, + 29, + 27, + 25, + 30, + 28, + 26, + 24, + 23, + 21, + 19, + 17, + 22, + 20, + 18, + 16, + 15, + 13, + 11, + 9, + 14, + 12, + 10, + 8, + 7, + 5, + 3, + 1, + 6, + 4, + 2, + 0 + ], + "route_layers": 9 + }, + { + "begin": 255, + "end": 340, + "pairs": [ + [ + 31, + 29 + ], + [ + 30, + 28 + ], + [ + 27, + 25 + ], + [ + 26, + 24 + ], + [ + 23, + 21 + ], + [ + 22, + 20 + ], + [ + 19, + 17 + ], + [ + 18, + 16 + ], + [ + 15, + 13 + ], + [ + 14, + 12 + ], + [ + 11, + 9 + ], + [ + 10, + 8 + ], + [ + 7, + 5 + ], + [ + 6, + 4 + ], + [ + 3, + 1 + ], + [ + 2, + 0 + ] + ], + "kinds": [ + "butterfly", + "adjoint", + "butterfly", + "adjoint", + "butterfly", + "adjoint", + "butterfly", + "adjoint", + "butterfly", + "adjoint", + "butterfly", + "adjoint", + "butterfly", + "adjoint", + "butterfly", + "adjoint" + ], + "permutation": [ + 31, + 29, + 30, + 28, + 27, + 25, + 26, + 24, + 23, + 21, + 22, + 20, + 19, + 17, + 18, + 16, + 15, + 13, + 14, + 12, + 11, + 9, + 10, + 8, + 7, + 5, + 6, + 4, + 3, + 1, + 2, + 0 + ], + "route_layers": 9 + }, + { + "begin": 340, + "end": 425, + "pairs": [ + [ + 31, + 30 + ], + [ + 29, + 28 + ], + [ + 27, + 26 + ], + [ + 25, + 24 + ], + [ + 23, + 22 + ], + [ + 21, + 20 + ], + [ + 19, + 18 + ], + [ + 17, + 16 + ], + [ + 15, + 14 + ], + [ + 13, + 12 + ], + [ + 11, + 10 + ], + [ + 9, + 8 + ], + [ + 7, + 6 + ], + [ + 5, + 4 + ], + [ + 3, + 2 + ], + [ + 1, + 0 + ] + ], + "kinds": [ + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly" + ], + "permutation": [ + 31, + 30, + 29, + 28, + 27, + 26, + 25, + 24, + 23, + 22, + 21, + 20, + 19, + 18, + 17, + 16, + 15, + 14, + 13, + 12, + 11, + 10, + 9, + 8, + 7, + 6, + 5, + 4, + 3, + 2, + 1, + 0 + ], + "route_layers": 9 + }, + { + "begin": 425, + "end": 510, + "pairs": [ + [ + 30, + 15 + ], + [ + 29, + 23 + ], + [ + 28, + 7 + ], + [ + 26, + 11 + ], + [ + 25, + 19 + ], + [ + 24, + 3 + ], + [ + 22, + 13 + ], + [ + 20, + 5 + ], + [ + 18, + 9 + ], + [ + 16, + 1 + ], + [ + 12, + 6 + ], + [ + 8, + 2 + ], + [ + 0, + 4 + ], + [ + 10, + 14 + ], + [ + 17, + 21 + ], + [ + 27, + 31 + ] + ], + "kinds": [ + "swap", + "swap", + "swap", + "swap", + "swap", + "swap", + "swap", + "swap", + "swap", + "swap", + "swap", + "swap", + "idle", + "idle", + "idle", + "idle" + ], + "permutation": [ + 24, + 19, + 23, + 11, + 25, + 15, + 21, + 5, + 22, + 17, + 26, + 7, + 20, + 13, + 27, + 1, + 18, + 28, + 16, + 9, + 14, + 29, + 12, + 3, + 10, + 8, + 6, + 30, + 4, + 2, + 0, + 31 + ], + "route_layers": 9 + } + ], + "logical_plan_sha256": "d9dbc324ca619247d217c94bc1acea376fedbf614dd3df59100ad908f464c019", + "reference_stages_sha256": "6f7d6c694aff9538e83587ed33d525e5cf2576195f2d3b609a5182e09ba6dc77", + "stored_stages_sha256": "a5536904fce391e7072895a6c71a6b6543e7251f749f3c7465cb1759895bac7b", + "source_original_ast_sha256": "15211aaf783ddbe8714fb7c5c039e932422028d729566ce763a4c8016a82e537", + "source_adapted_ast_sha256": "550954f4c90dde9cae269f71042d223a2cba81d5a91dcfa7219fb36f338d1313", + "tensor_ast_sha256": "2b5d66a710ef21aaa1bcfc1db64267067455a5ba465694876a1c2a57fda2f357", + "phases": { + "phase_bits": 27, + "oracle_bits": 118, + "certificates": [ + { + "denominator": 1, + "numerator": 0, + "unit": [ + "1", + "0" + ], + "error_bound": "0", + "parameter": null + }, + { + "denominator": 4, + "numerator": 3, + "unit": [ + "0", + "-1" + ], + "error_bound": "0", + "parameter": null + }, + { + "denominator": 8, + "numerator": 1, + "unit": [ + "238777861777212375/337682890526211113", + "238777861786304512/337682890526211113" + ], + "error_bound": "3021380760477969412479012222310206240438683/112214387946253188365442537552487455436720712840118272", + "parameter": "222379213/536870912" + }, + { + "denominator": 8, + "numerator": 5, + "unit": [ + "-238777861777212375/337682890526211113", + "-238777861786304512/337682890526211113" + ], + "error_bound": "1510690380238984706239520124995059957980531/56107193973126594182721268776243727718360356420059136", + "parameter": "222379213/536870912" + }, + { + "denominator": 8, + "numerator": 7, + "unit": [ + "238777861777212375/337682890526211113", + "-238777861786304512/337682890526211113" + ], + "error_bound": "3021380760477969412479012222310206240438683/112214387946253188365442537552487455436720712840118272", + "parameter": "-222379213/536870912" + }, + { + "denominator": 16, + "numerator": 9, + "unit": [ + "-4325409619789407/4681789634951585", + "-1791643325825024/4681789634951585" + ], + "error_bound": "151506900925240855144919581669283176418083/388947865822080515605755909054606225707612304834560", + "parameter": "13348783/67108864" + }, + { + "denominator": 16, + "numerator": 11, + "unit": [ + "-1791643325825024/4681789634951585", + "-4325409619789407/4681789634951585" + ], + "error_bound": "606027603700963420579677919361434464884437/1555791463288322062423023636218424902830449219338240", + "parameter": "-13348783/67108864" + }, + { + "denominator": 16, + "numerator": 13, + "unit": [ + "1791643325825024/4681789634951585", + "-4325409619789407/4681789634951585" + ], + "error_bound": "303013801850481710289838868385819350886311/777895731644161031211511818109212451415224609669120", + "parameter": "13348783/67108864" + }, + { + "denominator": 16, + "numerator": 15, + "unit": [ + "4325409619789407/4681789634951585", + "-1791643325825024/4681789634951585" + ], + "error_bound": "606027603700963420579677694635531987208357/1555791463288322062423023636218424902830449219338240", + "parameter": "-13348783/67108864" + }, + { + "denominator": 32, + "numerator": 17, + "unit": [ + "-1141737524389520055/1164105484824173897", + "-227105713707548672/1164105484824173897" + ], + "error_bound": "74717455256697652228383774541414285147984529/386840400118766117353380623034638767334655071426183168", + "parameter": "105754339/1073741824" + }, + { + "denominator": 32, + "numerator": 19, + "unit": [ + "-4187322311780234055/5036049725074541753", + "-2797879320251465728/5036049725074541753" + ], + "error_bound": "550743538535373420026823524400616034854333691/1673514570683502431456959184375415675879278789034770432", + "parameter": "651432043/2147483648" + }, + { + "denominator": 32, + "numerator": 21, + "unit": [ + "-2797879320251465728/5036049725074541753", + "-4187322311780234055/5036049725074541753" + ], + "error_bound": "550743538535373420026823242381831430679995523/1673514570683502431456959184375415675879278789034770432", + "parameter": "-651432043/2147483648" + }, + { + "denominator": 32, + "numerator": 23, + "unit": [ + "-227105713707548672/1164105484824173897", + "-1141737524389520055/1164105484824173897" + ], + "error_bound": "74717455256697652228383602253802531170247773/386840400118766117353380623034638767334655071426183168", + "parameter": "-105754339/1073741824" + }, + { + "denominator": 32, + "numerator": 25, + "unit": [ + "227105713707548672/1164105484824173897", + "-1141737524389520055/1164105484824173897" + ], + "error_bound": "37358727628348826114191790067899159755471865/193420200059383058676690311517319383667327535713091584", + "parameter": "105754339/1073741824" + }, + { + "denominator": 32, + "numerator": 27, + "unit": [ + "2797879320251465728/5036049725074541753", + "-4187322311780234055/5036049725074541753" + ], + "error_bound": "275371769267686710013411497807697451013724813/836757285341751215728479592187707837939639394517385216", + "parameter": "651432043/2147483648" + }, + { + "denominator": 32, + "numerator": 29, + "unit": [ + "4187322311780234055/5036049725074541753", + "-2797879320251465728/5036049725074541753" + ], + "error_bound": "550743538535373420026822950290947376356573849/1673514570683502431456959184375415675879278789034770432", + "parameter": "-651432043/2147483648" + }, + { + "denominator": 32, + "numerator": 31, + "unit": [ + "1141737524389520055/1164105484824173897", + "-227105713707548672/1164105484824173897" + ], + "error_bound": "37358727628348826114191780755055281162080689/193420200059383058676690311517319383667327535713091584", + "parameter": "-105754339/1073741824" + } + ] + }, + "budget": { + "prefix_bound": 16384, + "phase_error": "5/67108864", + "coefficient_error": "129/2147483648", + "rounding_error": "255/1099511627776", + "total_error": "148223/1099511627776", + "amplitude_bound": "131072", + "coefficient_bits": 67, + "data_bits": 81, + "temporary_bits": 149 + }, + "label": "thirtytwo-adjoint", + "input_sha256": "4acb6a991d019187acd44af35045a67bfb62918d343464ba863efd614631b5b8", + "output_sha256": "c48d35e5f2d2c380806c247b16c49accccc1c3e57e30416e8ce630703d9c11bc", + "rational_target_sha256": "81c02fe7379342d15017434a2d220aff69e87922fb8aca6a5636ed136a9489de", + "exact_matrix_sha256": null, + "rounded_rational_error_squared_upper": "658854795762907/730750818665451459101842416358141509827966271488", + "ideal_error_squared_upper": "452286723643128800077573325/1461501637330902918203684832716283019655932542976", + "nonzero_rounded_error": true, + "nonzero_spectator_error": false, + "spectator_error_squared_upper": "0", + "statistics": { + "real_products": 33024, + "complex_roundings": 16320, + "h_pair_calls": 4032, + "maximum_data_numerator_bits": 62, + "maximum_temporary_numerator_bits": 124, + "maximum_temporary_fractional_bits": 123 + }, + "trace": [ + { + "stage": 0, + "kind": "H", + "output_sha256": "4ca70461c8fafbb6690d75408a64ab8d38bebce9751c49d933d54e0c6440831b" + }, + { + "stage": 1, + "kind": "D", + "output_sha256": "bc53f5a772641dca351646456ab166a52ddcb898b9b3293fcdc0ef39473e73a0" + }, + { + "stage": 2, + "kind": "H", + "output_sha256": "eef9f03b0ad90f9b263611062ac8e6f2929c71212db2c3707bbc7779c73b0935" + }, + { + "stage": 3, + "kind": "D", + "output_sha256": "eef9f03b0ad90f9b263611062ac8e6f2929c71212db2c3707bbc7779c73b0935" + }, + { + "stage": 4, + "kind": "H", + "output_sha256": "9b4b0d39839deebef1ebc8f90db6a76b0c9be05dab6aa762f8119a52e8c2fcf3" + }, + { + "stage": 5, + "kind": "D", + "output_sha256": "0da37eafb7f29adc950b8d23f38d99c9900d204668a8bb27484cf5a885516390" + }, + { + "stage": 6, + "kind": "H", + "output_sha256": "d4c229401280f347fea31ac46f8f3a8eb69b8d226e6c8cabcf27d67c176bfa8f" + }, + { + "stage": 7, + "kind": "D", + "output_sha256": "d4c229401280f347fea31ac46f8f3a8eb69b8d226e6c8cabcf27d67c176bfa8f" + }, + { + "stage": 8, + "kind": "H", + "output_sha256": "fb7e75301da46d0e7d3a38fd02ad14c49194968c733d2bdc6cb117c03a82895c" + }, + { + "stage": 9, + "kind": "D", + "output_sha256": "1a72729a3353831cf91021956cc9157bd11cd4267c3b8c3f9c1eef500ff726ef" + }, + { + "stage": 10, + "kind": "H", + "output_sha256": "8b1c712edfd1de1d8124aee92774df6f923329f46bfaf247f589529df1be6135" + }, + { + "stage": 11, + "kind": "D", + "output_sha256": "8b1c712edfd1de1d8124aee92774df6f923329f46bfaf247f589529df1be6135" + }, + { + "stage": 12, + "kind": "H", + "output_sha256": "747bff11beb2c3e88ad507be720018efd8edda4d6d67b47ccf14e8c4a154a8fd" + }, + { + "stage": 13, + "kind": "D", + "output_sha256": "638a8d4fba7b7050985eb3e6cdc8e66c37754b79e812325d9206be188e6c217f" + }, + { + "stage": 14, + "kind": "H", + "output_sha256": "4d140c0b600d0c04bd465aa59d375b3e9050274c2e373b8bbcb8cbfa91959942" + }, + { + "stage": 15, + "kind": "D", + "output_sha256": "4d140c0b600d0c04bd465aa59d375b3e9050274c2e373b8bbcb8cbfa91959942" + }, + { + "stage": 16, + "kind": "H", + "output_sha256": "0b67944630fed3466d57950a7d4bbe36bf65f3275c5486c1a5f7936ef492b7dd" + }, + { + "stage": 17, + "kind": "D", + "output_sha256": "be13290c70595ce91dee636ad94bcafb05b4ad971fd0117195371a37c08ff6c2" + }, + { + "stage": 18, + "kind": "H", + "output_sha256": "fcfa57bd3a0e6956531bfca43007933132edd1119211882d07a162461b7ea796" + }, + { + "stage": 19, + "kind": "D", + "output_sha256": "fcfa57bd3a0e6956531bfca43007933132edd1119211882d07a162461b7ea796" + }, + { + "stage": 20, + "kind": "H", + "output_sha256": "5af5fd056a7c2120ff49ae1657c7c78a05e71f7a62af26454fe188b9f3cb7106" + }, + { + "stage": 21, + "kind": "D", + "output_sha256": "94ce8700cb010ebc1a8f1c06bc1cd9655fd2fdac52bb5c7bd3f6a082319848a4" + }, + { + "stage": 22, + "kind": "H", + "output_sha256": "d8385fd88748b61b3f69d02afe2b6b51f43e2f6c02e34f2e69f95a90e97dba8b" + }, + { + "stage": 23, + "kind": "D", + "output_sha256": "d8385fd88748b61b3f69d02afe2b6b51f43e2f6c02e34f2e69f95a90e97dba8b" + }, + { + "stage": 24, + "kind": "H", + "output_sha256": "1c802b3bc637cdd390e99c3baade6214f0830cdf39e95ba6aa5d5e9b09e1f811" + }, + { + "stage": 25, + "kind": "D", + "output_sha256": "e6d3fc1faf3ecc80a8eadfcf518cddbd064c8b0852029c66a6b36f53ff55f46f" + }, + { + "stage": 26, + "kind": "H", + "output_sha256": "4b94cec1ecfaedfe88de8e772c986b2e78f52d9a45dd5b62e68d08ec4dfdf0b0" + }, + { + "stage": 27, + "kind": "D", + "output_sha256": "4b94cec1ecfaedfe88de8e772c986b2e78f52d9a45dd5b62e68d08ec4dfdf0b0" + }, + { + "stage": 28, + "kind": "H", + "output_sha256": "5916329d1622f8ab60b59ea1eaebe12e10afa3a3412eff7f288b5df48fe1f603" + }, + { + "stage": 29, + "kind": "D", + "output_sha256": "b242fabcda8b17a9826f25ff6b6b247014289a99f7028dcc3c9ddcb1e429bf47" + }, + { + "stage": 30, + "kind": "H", + "output_sha256": "3a19db87e6d5b7c049a01aaedd7fd0967f7cb3e58aa3fa074edfa0e2668a55ee" + }, + { + "stage": 31, + "kind": "D", + "output_sha256": "3a19db87e6d5b7c049a01aaedd7fd0967f7cb3e58aa3fa074edfa0e2668a55ee" + }, + { + "stage": 32, + "kind": "H", + "output_sha256": "bc7dc25a38890b004ecafa255e4d89efa6da5d1757de72e7e07d05c75e9ee095" + }, + { + "stage": 33, + "kind": "D", + "output_sha256": "d88b67cdd12155db28f8c8b85bdfe97b2b4fb6d1b3562952d829035a75c1851a" + }, + { + "stage": 34, + "kind": "H", + "output_sha256": "554b21414bfd4903368e0ef006a804d5265084efd7370b9542529018545b91c1" + }, + { + "stage": 35, + "kind": "D", + "output_sha256": "554b21414bfd4903368e0ef006a804d5265084efd7370b9542529018545b91c1" + }, + { + "stage": 36, + "kind": "D", + "output_sha256": "3c48e5912565fdf7a497d0b3bd06985db69d031d5d6d0bd0e61bce90b638b814" + }, + { + "stage": 37, + "kind": "H", + "output_sha256": "bb937c5205725223b36fa33fb5a104f4f713e4825f578437c575f0680183229a" + }, + { + "stage": 38, + "kind": "D", + "output_sha256": "821f54091b0c015af3b6273b5d09098a79190edf079d4c8f17db61517d7e188c" + }, + { + "stage": 39, + "kind": "H", + "output_sha256": "a236966a7bb1b97fb699f775dadf218d605e080dfff7f8672b2bddc02663ec5a" + }, + { + "stage": 40, + "kind": "D", + "output_sha256": "af6f69b36969913641e04d4bc9e05ade0cc4b6a67d3560483fca989a0be75334" + }, + { + "stage": 41, + "kind": "H", + "output_sha256": "6d634c9c173830e9ebe60924520774e39e396184377dda1f391204466dc02093" + }, + { + "stage": 42, + "kind": "D", + "output_sha256": "6da193323ba6ae71b2ab29219f89f36d624539157b7abca294f86eb29f1b1f4b" + }, + { + "stage": 43, + "kind": "H", + "output_sha256": "b20ddd2d46c1191efbafabfffc1967d206e79416677192ac0bfe70431388fe75" + }, + { + "stage": 44, + "kind": "D", + "output_sha256": "e9b13edba88f91350ee672d109ec786b76788a43ba09fbe0ad5c181f424d01fa" + }, + { + "stage": 45, + "kind": "H", + "output_sha256": "c3f36011aadaf42f9c2a0828239ae32b744aae5a45a0b1a12ae638ed852bd709" + }, + { + "stage": 46, + "kind": "D", + "output_sha256": "c9fbcc0771e9e2fb41149abf82051ea3e772c53a2cc56b8b28cb8f4b00f91c0e" + }, + { + "stage": 47, + "kind": "H", + "output_sha256": "ad37b6ae3563ee68d2a12eac93cb17f3ab2ddd49248ec97bec4b17b959ea7d46" + }, + { + "stage": 48, + "kind": "D", + "output_sha256": "d277ad0babcd4b7d771324b6a7967ae398b59963c2fe1bac41b875bf8d130c39" + }, + { + "stage": 49, + "kind": "H", + "output_sha256": "70049f564c26e5dd3969d8eb16d720fe9e1333122dfad34dc73c24e4dc1dcaf3" + }, + { + "stage": 50, + "kind": "D", + "output_sha256": "3b7ece55714032f11935fd05589f302bbcc416ad202e57fc5bf0f1b56b57e1d8" + }, + { + "stage": 51, + "kind": "H", + "output_sha256": "4fd76bdf5e09c70b7ef6963c4fce90606291ce60727eb2ff8944c65fa4254fd9" + }, + { + "stage": 52, + "kind": "D", + "output_sha256": "4fd76bdf5e09c70b7ef6963c4fce90606291ce60727eb2ff8944c65fa4254fd9" + }, + { + "stage": 53, + "kind": "H", + "output_sha256": "27817110655a4dd89b8c1775718da9c40c87785744a4ca0d88d9647e49c00fc9" + }, + { + "stage": 54, + "kind": "D", + "output_sha256": "cea625d72cebcbef9d82eb8a5e2f9131d50ad23b34320a02a4cb6a21c7568dfa" + }, + { + "stage": 55, + "kind": "H", + "output_sha256": "35328b86521170338b731f07d1ffbb6f3847b929b42093006b5b6da3984c7059" + }, + { + "stage": 56, + "kind": "D", + "output_sha256": "35328b86521170338b731f07d1ffbb6f3847b929b42093006b5b6da3984c7059" + }, + { + "stage": 57, + "kind": "H", + "output_sha256": "dda5c37221b996f78b101f5221406fe0031f962c46bfd2661569d9a98db69c59" + }, + { + "stage": 58, + "kind": "D", + "output_sha256": "d1aeb5e70cc9c97404456ee8c0912709cf4207e851c82209965339b3788b928f" + }, + { + "stage": 59, + "kind": "H", + "output_sha256": "45a52972afbd1ec19bdefe05580138ac7a132300140411d64914e9b6f1c02095" + }, + { + "stage": 60, + "kind": "D", + "output_sha256": "45a52972afbd1ec19bdefe05580138ac7a132300140411d64914e9b6f1c02095" + }, + { + "stage": 61, + "kind": "H", + "output_sha256": "ed00c3bda5e9d32c2f020301f7803fa684002e43073ca5fc964fcf093c73533d" + }, + { + "stage": 62, + "kind": "D", + "output_sha256": "a3fe610068b71fa4c2a6e747117a781ecedbeccf009c5ff32d99ac3ae12809e8" + }, + { + "stage": 63, + "kind": "H", + "output_sha256": "5e5ca85453e8c7efba5db9971fce7e06c44389f4485419e3a3139d111dbbd4ef" + }, + { + "stage": 64, + "kind": "D", + "output_sha256": "5e5ca85453e8c7efba5db9971fce7e06c44389f4485419e3a3139d111dbbd4ef" + }, + { + "stage": 65, + "kind": "H", + "output_sha256": "419484bc62cdcb13e4513ba9160774fb95815b8a3cec9e050c2ff800839bfe76" + }, + { + "stage": 66, + "kind": "D", + "output_sha256": "aa8af1b2c844c66fb7da9887b39277f6de0645f1feac3a598937e9f128c87909" + }, + { + "stage": 67, + "kind": "H", + "output_sha256": "8652061f4fe352a9e6fd24f74394184b63fad02128f89f26c977842115832637" + }, + { + "stage": 68, + "kind": "D", + "output_sha256": "8652061f4fe352a9e6fd24f74394184b63fad02128f89f26c977842115832637" + }, + { + "stage": 69, + "kind": "H", + "output_sha256": "ccc56fda93b1415c411c121774fa6ede57444a9b5eb1765a59313485b4cc54b1" + }, + { + "stage": 70, + "kind": "D", + "output_sha256": "a3ace9734380d30d7411fadf2353fcf7169bc65b27f940a730b29a8fc668ee2f" + }, + { + "stage": 71, + "kind": "H", + "output_sha256": "b487cf854a7912224338576a55b622e6d4cb778300225f47505254452b0d968d" + }, + { + "stage": 72, + "kind": "D", + "output_sha256": "b487cf854a7912224338576a55b622e6d4cb778300225f47505254452b0d968d" + }, + { + "stage": 73, + "kind": "H", + "output_sha256": "5e71d405f9993981a999fc7f108b3d3d26c469267378f9a148d4668919c67882" + }, + { + "stage": 74, + "kind": "D", + "output_sha256": "abedb9525b9bf1b0a8e2ae27bb68dfaba150f0f8ae4ed8e5a921fa9a969cba87" + }, + { + "stage": 75, + "kind": "H", + "output_sha256": "eae9f0a7661c69be38a995e0d1e02027e92a15262083ac64d34717c2ce2eabc6" + }, + { + "stage": 76, + "kind": "D", + "output_sha256": "eae9f0a7661c69be38a995e0d1e02027e92a15262083ac64d34717c2ce2eabc6" + }, + { + "stage": 77, + "kind": "H", + "output_sha256": "ba1e7e38ce1825679bd2523fd3622a3df170c4b86e53ac9d832b1e3e81f33c23" + }, + { + "stage": 78, + "kind": "D", + "output_sha256": "5279fad2c70c479cb6e6d5af3d7bee2a7e1b783657a6d936c489c77c43970353" + }, + { + "stage": 79, + "kind": "H", + "output_sha256": "479a1faf494140b947998566d51033ac7a805a06afc2a597326dc2a5f3d06114" + }, + { + "stage": 80, + "kind": "D", + "output_sha256": "479a1faf494140b947998566d51033ac7a805a06afc2a597326dc2a5f3d06114" + }, + { + "stage": 81, + "kind": "H", + "output_sha256": "4a434de479ac39d60b2981622fecd10797909c2087b7ec620a8f739f52640028" + }, + { + "stage": 82, + "kind": "D", + "output_sha256": "0829a1456040ac5b9b59326af5a61f27eb816cd1ffcd267569bac9f5774560d8" + }, + { + "stage": 83, + "kind": "H", + "output_sha256": "8e4d070ac61a46d93fd471d46f32f3c3c4186ad1e478b2e0e750c70022c6d3bd" + }, + { + "stage": 84, + "kind": "D", + "output_sha256": "8e4d070ac61a46d93fd471d46f32f3c3c4186ad1e478b2e0e750c70022c6d3bd" + }, + { + "stage": 85, + "kind": "H", + "output_sha256": "1b4c523f5345d79ca6afe580483054bbe027a5b734ed611a8083838eaa4e98d8" + }, + { + "stage": 86, + "kind": "D", + "output_sha256": "af34c0f63916a7f26f44f4da1899034330ee945b6cec6851e0546885421d40cc" + }, + { + "stage": 87, + "kind": "H", + "output_sha256": "76f8291b8c6f2504a36c7cec36b27dc514422e0ee0d11462d5126cfb7bdf4874" + }, + { + "stage": 88, + "kind": "D", + "output_sha256": "76f8291b8c6f2504a36c7cec36b27dc514422e0ee0d11462d5126cfb7bdf4874" + }, + { + "stage": 89, + "kind": "H", + "output_sha256": "9608cc7253e10f0afddd90ad950382945e5f120c5ef71a697240b3a9c08aef72" + }, + { + "stage": 90, + "kind": "D", + "output_sha256": "521a156987c49a5f15bd450938a69437d5b3e230cef8f8fd73003d369aafb8c0" + }, + { + "stage": 91, + "kind": "H", + "output_sha256": "9d97ac93bb9ff105be46ba8fb4dcecef47ce3b46c7ab1f5018a5ebb31db7a7f1" + }, + { + "stage": 92, + "kind": "D", + "output_sha256": "9d97ac93bb9ff105be46ba8fb4dcecef47ce3b46c7ab1f5018a5ebb31db7a7f1" + }, + { + "stage": 93, + "kind": "H", + "output_sha256": "9e15819d6b500f2f33170ae5b6c40d597370e0df1b1f0617d5db09b4170fc338" + }, + { + "stage": 94, + "kind": "D", + "output_sha256": "099431c0407ed9311084147260a3054a8ff70932e68870f3a653066e07f63659" + }, + { + "stage": 95, + "kind": "H", + "output_sha256": "f9f1e520d62ddab7fcfbfe59df03254b9e2c6e53174624f3d73887884f8d579a" + }, + { + "stage": 96, + "kind": "D", + "output_sha256": "f9f1e520d62ddab7fcfbfe59df03254b9e2c6e53174624f3d73887884f8d579a" + }, + { + "stage": 97, + "kind": "H", + "output_sha256": "a43cb66e8eb873565172fd1a4e38cc760d75bf0192b449538e9be53aae40ebfb" + }, + { + "stage": 98, + "kind": "D", + "output_sha256": "b1077ac19e538c24b12128b5036de27acfb676a21f5524b187a643b3e9a0e1e3" + }, + { + "stage": 99, + "kind": "H", + "output_sha256": "f9f1e520d62ddab7fcfbfe59df03254b9e2c6e53174624f3d73887884f8d579a" + }, + { + "stage": 100, + "kind": "D", + "output_sha256": "f9f1e520d62ddab7fcfbfe59df03254b9e2c6e53174624f3d73887884f8d579a" + }, + { + "stage": 101, + "kind": "H", + "output_sha256": "9864537d8a81c7bf68668eee7b520fcef9dbb05af471dd92a58c1df05c1d2480" + }, + { + "stage": 102, + "kind": "D", + "output_sha256": "3eb99247cfceea05e04ed7fd7f7b935543cd23029042c040eab7ce9098b17053" + }, + { + "stage": 103, + "kind": "H", + "output_sha256": "2fc7201b08e9858fa4c26a58eae6485d53e7a078693c2152cd55e7e1b69f3d0b" + }, + { + "stage": 104, + "kind": "D", + "output_sha256": "2fc7201b08e9858fa4c26a58eae6485d53e7a078693c2152cd55e7e1b69f3d0b" + }, + { + "stage": 105, + "kind": "H", + "output_sha256": "4833058b4f268774f6d874271ab9ad8c3c06a7135377887c2bedb390508c0303" + }, + { + "stage": 106, + "kind": "D", + "output_sha256": "20b7486c44ee7f6349f1b6239297b7dafdd3a8175190574a2cd464160ba72884" + }, + { + "stage": 107, + "kind": "H", + "output_sha256": "8c622aee581c5e03e61574df1dc7b3986e0217e05581c9c9da5cd56f79e7ba53" + }, + { + "stage": 108, + "kind": "D", + "output_sha256": "8c622aee581c5e03e61574df1dc7b3986e0217e05581c9c9da5cd56f79e7ba53" + }, + { + "stage": 109, + "kind": "H", + "output_sha256": "2ee51ed7e7c237384d5a8a1e647311e0ecdd07359633e2799f766aa52a160f85" + }, + { + "stage": 110, + "kind": "D", + "output_sha256": "62df27f05536d24a44f877fb8f0e05f1ad2ff1a5264b46116fe466b4677c6816" + }, + { + "stage": 111, + "kind": "H", + "output_sha256": "81a353bb802c0f4af9ef952fdc01d6f20b7ac783370b4192827294139372f96b" + }, + { + "stage": 112, + "kind": "D", + "output_sha256": "81a353bb802c0f4af9ef952fdc01d6f20b7ac783370b4192827294139372f96b" + }, + { + "stage": 113, + "kind": "H", + "output_sha256": "63573e91fb98cd637b5f61695b3fffc5cb64e738ba2ace805a41910332d4312e" + }, + { + "stage": 114, + "kind": "D", + "output_sha256": "8a9adce07a4f477fbcd40f1c15c1ee0e87d958d032b930af5b49dd69a7ebf47b" + }, + { + "stage": 115, + "kind": "H", + "output_sha256": "f893b3c198ebcb865654b1b9ed1573e8d5d3f1669e5d046945312e5e6974fc26" + }, + { + "stage": 116, + "kind": "D", + "output_sha256": "f893b3c198ebcb865654b1b9ed1573e8d5d3f1669e5d046945312e5e6974fc26" + }, + { + "stage": 117, + "kind": "H", + "output_sha256": "c437bffb32a461e5078fa453099abc42abb20414c2499becd3e29a756699fce0" + }, + { + "stage": 118, + "kind": "D", + "output_sha256": "20b070ccae9a600ae8cd430b40758ba53a7111db89defc81fd47be2d9260e191" + }, + { + "stage": 119, + "kind": "H", + "output_sha256": "de502d35c45ebaebed9a9677d417f259b03cfbf8d37bf0aa6fab46c0b4bffeb1" + }, + { + "stage": 120, + "kind": "D", + "output_sha256": "de502d35c45ebaebed9a9677d417f259b03cfbf8d37bf0aa6fab46c0b4bffeb1" + }, + { + "stage": 121, + "kind": "D", + "output_sha256": "a01eb29c57f169dd9f29c064f83e3dafcd7d85f1fd9948232dc97c3f9f0eff26" + }, + { + "stage": 122, + "kind": "H", + "output_sha256": "b3c7fce46f8aea7bf2b8517ea596fdc5c0f00be4f356485362202483c1aa9c73" + }, + { + "stage": 123, + "kind": "D", + "output_sha256": "c122f11935a6cd377bb9005901056b2602848565f297afd9ebb276d1d40ceccc" + }, + { + "stage": 124, + "kind": "H", + "output_sha256": "81e946703c399cdd3f1fb1057535fe799cb246b718c919695c9b4f5e15b89b2a" + }, + { + "stage": 125, + "kind": "D", + "output_sha256": "bea2092b65e91955a1d76064d7cd320418166343aa102a7f632c15067dbb4d85" + }, + { + "stage": 126, + "kind": "H", + "output_sha256": "a520c0ef4598965fe52110753fdd19ca2e1e92f71915281da585f865ee553e9c" + }, + { + "stage": 127, + "kind": "D", + "output_sha256": "83decd9d11d2057f14492209c4469358e55ec8f405891d85cfb9bb613246c575" + }, + { + "stage": 128, + "kind": "H", + "output_sha256": "74eb1227bbf73a2a3a883292da3f755323bcc3fde0669409e5052a2ce0912502" + }, + { + "stage": 129, + "kind": "D", + "output_sha256": "2dc10aac22c8998d5d6faf048d10bdd421fa1f4f0bdbcc7a3d3828ae94ebc14b" + }, + { + "stage": 130, + "kind": "H", + "output_sha256": "2bc76b0cf8880420f9698de88e2ea561bb5cee10816fc25351d471957156fa5b" + }, + { + "stage": 131, + "kind": "D", + "output_sha256": "b60b8dbfc2dd2cef67106a79a6fb5222540298a06f76310f12839f66a41fe66d" + }, + { + "stage": 132, + "kind": "H", + "output_sha256": "e61464cbd50c1da8d62bf1e934232b231e4e414798c61d67d1b799746e32cd3b" + }, + { + "stage": 133, + "kind": "D", + "output_sha256": "2a3e50885390c50618e35eab9a0036cc1f3155be506220d1f012e446ad64cfbc" + }, + { + "stage": 134, + "kind": "H", + "output_sha256": "6f18d86f1b954e9011d7e6bb76b212677c3264da577e7a6feff112905caf418f" + }, + { + "stage": 135, + "kind": "D", + "output_sha256": "2e9e2832fa9b34351d03e31afc57afb528cccf7af78ad9111d79fc9caa0d4380" + }, + { + "stage": 136, + "kind": "H", + "output_sha256": "9fb5b19e0ede145b76b1152fc51390e1c0c0078c00a3ff7968f30b24a0bda82b" + }, + { + "stage": 137, + "kind": "D", + "output_sha256": "9fb5b19e0ede145b76b1152fc51390e1c0c0078c00a3ff7968f30b24a0bda82b" + }, + { + "stage": 138, + "kind": "H", + "output_sha256": "bfa2bb5466f9db48d1a3f21f6c1ee58c3d34c58f715c7ca96f8280847766684b" + }, + { + "stage": 139, + "kind": "D", + "output_sha256": "b9b7cc63cec97b82b7ad6ac2e7c053a59a66a4c9186c818758925d41c0696e5d" + }, + { + "stage": 140, + "kind": "H", + "output_sha256": "ea36a47281edf5ac182a84ad0daf819ab53e197c7a7801501d733e2599dd5807" + }, + { + "stage": 141, + "kind": "D", + "output_sha256": "ea36a47281edf5ac182a84ad0daf819ab53e197c7a7801501d733e2599dd5807" + }, + { + "stage": 142, + "kind": "H", + "output_sha256": "f5f08e3f9814ef7324f85a044793072f9cedadd66ff4fc7d76b64c3bb3cd067c" + }, + { + "stage": 143, + "kind": "D", + "output_sha256": "131c00d2b8b937bde7606207d6d7d622e4bcd4d3fe0da5c74c9900df783adc3f" + }, + { + "stage": 144, + "kind": "H", + "output_sha256": "90e4f62848449d9356cb8ed056de36ab46d0c330466bc4527a03f86f1fd61c48" + }, + { + "stage": 145, + "kind": "D", + "output_sha256": "90e4f62848449d9356cb8ed056de36ab46d0c330466bc4527a03f86f1fd61c48" + }, + { + "stage": 146, + "kind": "H", + "output_sha256": "4dcc9f68bb499639fa068d49394c30c4a97184259d3aac43d1d2f3c48f35fedd" + }, + { + "stage": 147, + "kind": "D", + "output_sha256": "9c01baf33c950532bdcf0ae9f0e7a728777eec3f6388dd97c0d1b2fad3ac1595" + }, + { + "stage": 148, + "kind": "H", + "output_sha256": "ab8b3bb1c59676ad9954c473348f19f6f81b9a2421753382e4e46b792aa95b64" + }, + { + "stage": 149, + "kind": "D", + "output_sha256": "ab8b3bb1c59676ad9954c473348f19f6f81b9a2421753382e4e46b792aa95b64" + }, + { + "stage": 150, + "kind": "H", + "output_sha256": "2d218d23ef3381fbc8ae3479623f37d944fa6b172d5d0882a50ad4be021175e6" + }, + { + "stage": 151, + "kind": "D", + "output_sha256": "025a3f6e47b7c188c7aa160cf937c5b23977d7978d66ce09546e8fd4f998957e" + }, + { + "stage": 152, + "kind": "H", + "output_sha256": "f7a05a872ac6a0104bbe2c5396cdc0eb2c4747bb87e5dc7ddf0eea5aacbd0b0d" + }, + { + "stage": 153, + "kind": "D", + "output_sha256": "f7a05a872ac6a0104bbe2c5396cdc0eb2c4747bb87e5dc7ddf0eea5aacbd0b0d" + }, + { + "stage": 154, + "kind": "H", + "output_sha256": "66d1fca1d4e930f80865e0f1c5803da4b502bc53a7da6d0f87d5f97dc329eb8b" + }, + { + "stage": 155, + "kind": "D", + "output_sha256": "9fbcca69da02befb970da1e4b81c2dcdc7e96ebaeedf7de70f733e75a2adae29" + }, + { + "stage": 156, + "kind": "H", + "output_sha256": "f7a05a872ac6a0104bbe2c5396cdc0eb2c4747bb87e5dc7ddf0eea5aacbd0b0d" + }, + { + "stage": 157, + "kind": "D", + "output_sha256": "f7a05a872ac6a0104bbe2c5396cdc0eb2c4747bb87e5dc7ddf0eea5aacbd0b0d" + }, + { + "stage": 158, + "kind": "H", + "output_sha256": "9fb1ae4823bd5549cfd04b15e857da7f3281ec2e89be62838d63ea1ea3a24095" + }, + { + "stage": 159, + "kind": "D", + "output_sha256": "0cd78414a32ff43329b28c9e71e0ca75125ebfd8764e7092ce4c50c5f01afa0d" + }, + { + "stage": 160, + "kind": "H", + "output_sha256": "747e5965b4d84b7cdc1cfce9d244e79724ca9825d5c56e9c58d9d47c79017123" + }, + { + "stage": 161, + "kind": "D", + "output_sha256": "747e5965b4d84b7cdc1cfce9d244e79724ca9825d5c56e9c58d9d47c79017123" + }, + { + "stage": 162, + "kind": "H", + "output_sha256": "f2c43a8c7f5f6a280547db5546c63007b637e0e9672109f5c2984e5a48b0b650" + }, + { + "stage": 163, + "kind": "D", + "output_sha256": "e91f219c059322e61fb5a2707251e1feed99c7094fd6836ddf7dbf4969ea5ba6" + }, + { + "stage": 164, + "kind": "H", + "output_sha256": "ee317606ea09963ff0aa46aed1986546edea1f06bb3f894e3e0cc5f3b080921a" + }, + { + "stage": 165, + "kind": "D", + "output_sha256": "ee317606ea09963ff0aa46aed1986546edea1f06bb3f894e3e0cc5f3b080921a" + }, + { + "stage": 166, + "kind": "H", + "output_sha256": "9515943a5c94655949516e469b4f52abb049175aa20e7f6716899284ff4aef9d" + }, + { + "stage": 167, + "kind": "D", + "output_sha256": "760a748543d99e87e51fe0ffe28777969e169ce1a987aa0acae17b0f0562abf6" + }, + { + "stage": 168, + "kind": "H", + "output_sha256": "fbbcc4a82f9cde9067b32dce89a20900d17915659c98a1940154f9674b5ec58f" + }, + { + "stage": 169, + "kind": "D", + "output_sha256": "fbbcc4a82f9cde9067b32dce89a20900d17915659c98a1940154f9674b5ec58f" + }, + { + "stage": 170, + "kind": "H", + "output_sha256": "20589323d9aaeba9263845836e77aa5b1360388de0e69356709de462a8a30fc5" + }, + { + "stage": 171, + "kind": "D", + "output_sha256": "2232ac98af1a5643abf2d50fde8fc94857c58dece8d1f65296908cc844c19a1e" + }, + { + "stage": 172, + "kind": "H", + "output_sha256": "2f7d86bd1416eef0626557cd16d5316339d5756081cf14dbb585d9205f3708e3" + }, + { + "stage": 173, + "kind": "D", + "output_sha256": "2f7d86bd1416eef0626557cd16d5316339d5756081cf14dbb585d9205f3708e3" + }, + { + "stage": 174, + "kind": "H", + "output_sha256": "08c526391dd63a26876235138fac52b1bf4f14c696fd031aa522f1ca619ff37c" + }, + { + "stage": 175, + "kind": "D", + "output_sha256": "c0aebdce6c60a669b68283e6fc9cf44247affc8bfad7a4869f2fa6589489db6e" + }, + { + "stage": 176, + "kind": "H", + "output_sha256": "3805c69572079e9d82acac0eeef7dab7b16a235f0275c5593765ff6235251864" + }, + { + "stage": 177, + "kind": "D", + "output_sha256": "3805c69572079e9d82acac0eeef7dab7b16a235f0275c5593765ff6235251864" + }, + { + "stage": 178, + "kind": "H", + "output_sha256": "bdcbefa6ded920397ecff5d66f31e69d86b87ee91bcd78310462e1bb58fd6e68" + }, + { + "stage": 179, + "kind": "D", + "output_sha256": "3d1d031259706552d1b4c839e1a5d2216a3faa4aae3bed20532a1dba9a6232a6" + }, + { + "stage": 180, + "kind": "H", + "output_sha256": "3805c69572079e9d82acac0eeef7dab7b16a235f0275c5593765ff6235251864" + }, + { + "stage": 181, + "kind": "D", + "output_sha256": "3805c69572079e9d82acac0eeef7dab7b16a235f0275c5593765ff6235251864" + }, + { + "stage": 182, + "kind": "H", + "output_sha256": "f12da1d03f8219f8245de4e77fc804c7262753a05fb18a18aec50f4e9070fb1b" + }, + { + "stage": 183, + "kind": "D", + "output_sha256": "2bceded666652157031ff268d738052280e37c316797f9b29b35e25c9f3f0b61" + }, + { + "stage": 184, + "kind": "H", + "output_sha256": "3805c69572079e9d82acac0eeef7dab7b16a235f0275c5593765ff6235251864" + }, + { + "stage": 185, + "kind": "D", + "output_sha256": "3805c69572079e9d82acac0eeef7dab7b16a235f0275c5593765ff6235251864" + }, + { + "stage": 186, + "kind": "H", + "output_sha256": "a5bc2661d80198e3f918982f48289699748cb2e38ab75946f062b433352ae458" + }, + { + "stage": 187, + "kind": "D", + "output_sha256": "0cff8bee19952feb689d20294a50c9887be8db0f4ebdde5880c60b4b546c1e84" + }, + { + "stage": 188, + "kind": "H", + "output_sha256": "0919cebd978dfcb047337c0ec7e6d95f1780ff257546f998a36366fe7707f813" + }, + { + "stage": 189, + "kind": "D", + "output_sha256": "0919cebd978dfcb047337c0ec7e6d95f1780ff257546f998a36366fe7707f813" + }, + { + "stage": 190, + "kind": "H", + "output_sha256": "8e89832ea528fb86572fbda41c852fd32f555f25be72f0d6bd384ac318f53402" + }, + { + "stage": 191, + "kind": "D", + "output_sha256": "a98da0f68157c2a8c6f47b0362c340953fae3b5b3d5ed1eddd47ef985667e7cd" + }, + { + "stage": 192, + "kind": "H", + "output_sha256": "8bede354b18268ea3c069981105eb55db45f99c3dfe2ff76fb59e77b58dcfcf6" + }, + { + "stage": 193, + "kind": "D", + "output_sha256": "8bede354b18268ea3c069981105eb55db45f99c3dfe2ff76fb59e77b58dcfcf6" + }, + { + "stage": 194, + "kind": "H", + "output_sha256": "b17d4f19a25def25b2f59c5e65a638de7793698acc72d54dcfdb64f12978d8bf" + }, + { + "stage": 195, + "kind": "D", + "output_sha256": "a1e6e510bff23789a15f256ecd5d1795b67e2ba8ef261b7fafe135f5eff6d0e9" + }, + { + "stage": 196, + "kind": "H", + "output_sha256": "36bc1ccbd49f36a6738952c7e374a1edc4ffb58c25eaabe2ffff451d79dd6d55" + }, + { + "stage": 197, + "kind": "D", + "output_sha256": "36bc1ccbd49f36a6738952c7e374a1edc4ffb58c25eaabe2ffff451d79dd6d55" + }, + { + "stage": 198, + "kind": "H", + "output_sha256": "8894a60797f15e8f631fc4334eab94193c941ce5adb261b1aed6713f585783a1" + }, + { + "stage": 199, + "kind": "D", + "output_sha256": "a1eaca2fdd9bb87e7d47f0b3ca8184e6fcde415386d16a09d817223383e686c2" + }, + { + "stage": 200, + "kind": "H", + "output_sha256": "72752ce8a17cdb5f8e1a4343ac0114d2423017f56e23cd5eb6db5d70b2b6af64" + }, + { + "stage": 201, + "kind": "D", + "output_sha256": "72752ce8a17cdb5f8e1a4343ac0114d2423017f56e23cd5eb6db5d70b2b6af64" + }, + { + "stage": 202, + "kind": "H", + "output_sha256": "dce422eb3d199823b9c1b3f94eae57fecea0e0351ee7e550a79ad6651bc04cf7" + }, + { + "stage": 203, + "kind": "D", + "output_sha256": "1f637f100ae31116d4c72fd423528dc839885a5c56c5b51f31970f0fd7eddef1" + }, + { + "stage": 204, + "kind": "H", + "output_sha256": "40de1edc39bb9442b785d611384cc0034561d49171ea6567e9183f934602eca0" + }, + { + "stage": 205, + "kind": "D", + "output_sha256": "40de1edc39bb9442b785d611384cc0034561d49171ea6567e9183f934602eca0" + }, + { + "stage": 206, + "kind": "D", + "output_sha256": "afcc70b3d8e827f40271b6bfebf36040c0a416a2eeeec0493c08c1506d2d32a1" + }, + { + "stage": 207, + "kind": "H", + "output_sha256": "8ef5410afd070cd697220a9c1aba97e41b61a5c3b8a72f021ad6652fb191a89a" + }, + { + "stage": 208, + "kind": "D", + "output_sha256": "290a168ec831b74b903806e38c85b369432e2b799d7b56e56a1f7405aef0c2bd" + }, + { + "stage": 209, + "kind": "H", + "output_sha256": "d58561102e88bef947fa58fbf503456d1114d5721319ac1924984626693d68ea" + }, + { + "stage": 210, + "kind": "D", + "output_sha256": "03fffce35b076bf9cd5a24afee2e8e4cc753c89949c489e92d07be5206f75db0" + }, + { + "stage": 211, + "kind": "H", + "output_sha256": "b3e7f76e926cedc35f9d5226c7aa8700f859f98ec8830fbb5194ce613bfeb1b9" + }, + { + "stage": 212, + "kind": "D", + "output_sha256": "8e29f4504656962796d168e710c03bf4346340e4a0cec4d8d1ccda3deed7cab7" + }, + { + "stage": 213, + "kind": "H", + "output_sha256": "c67242f164af1a343ac7b0f3d4054b2704317e6119729c425438c09d28aa9eef" + }, + { + "stage": 214, + "kind": "D", + "output_sha256": "1c038a3f564f3492f1aabf91ab4fa6f374eecd819aeb0536db5ecf3841741e25" + }, + { + "stage": 215, + "kind": "H", + "output_sha256": "ce0448aaee83a70198bc2c41fea1b8b8574ba2501d2fe732e89af2d9ed2e086e" + }, + { + "stage": 216, + "kind": "D", + "output_sha256": "25496f43574e424d903e1d4bd9e37fc2a07193a793a1a0ab142d25e705cb0b8a" + }, + { + "stage": 217, + "kind": "H", + "output_sha256": "e838a5b5b203a82255d11c4762d63bd0f5de5b6c259fa8aedd7c522d847d4346" + }, + { + "stage": 218, + "kind": "D", + "output_sha256": "d831380cb172cdc4b8e599e0e50559a3724574a600e5797a71405ccd3f087ab9" + }, + { + "stage": 219, + "kind": "H", + "output_sha256": "4d7c8162557abdb74c5cde135aa019020bc1e1d5a0245a4393a59d1d34e55a51" + }, + { + "stage": 220, + "kind": "D", + "output_sha256": "b339a137a2f5dc250af8d8e7e26c50b4ca2aa4cf825f6f31ec5f13797fd488b7" + }, + { + "stage": 221, + "kind": "H", + "output_sha256": "5052dac99527b592c7a64aeef5d2e9145820ebf308d53397a5d891bb03406675" + }, + { + "stage": 222, + "kind": "D", + "output_sha256": "5052dac99527b592c7a64aeef5d2e9145820ebf308d53397a5d891bb03406675" + }, + { + "stage": 223, + "kind": "H", + "output_sha256": "0da0dddc829366953f27ad5fc4a6de73a97068c13578735bd8c3c730a5b1127f" + }, + { + "stage": 224, + "kind": "D", + "output_sha256": "750e3ea3e0b412142687e015f0f346272a1f5b4c50088409865cb25d6fa37f43" + }, + { + "stage": 225, + "kind": "H", + "output_sha256": "1df6adc840c5e37427df3848317497ed635ed0ee9ba56f2406b175704ed122a5" + }, + { + "stage": 226, + "kind": "D", + "output_sha256": "1df6adc840c5e37427df3848317497ed635ed0ee9ba56f2406b175704ed122a5" + }, + { + "stage": 227, + "kind": "H", + "output_sha256": "8e9c644b5fd64b7f9a78ccf55558685ccbcb8d5e2bb1e7693630a921ca3bac8b" + }, + { + "stage": 228, + "kind": "D", + "output_sha256": "fc057ca6fcddf614348694ec01438c56f38eb74ae11ba5dd4e31ddf6683d46b5" + }, + { + "stage": 229, + "kind": "H", + "output_sha256": "1e141e50778fa7573438367ba06435e2d2f64e125d7d4d457e66f8300caa3e58" + }, + { + "stage": 230, + "kind": "D", + "output_sha256": "1e141e50778fa7573438367ba06435e2d2f64e125d7d4d457e66f8300caa3e58" + }, + { + "stage": 231, + "kind": "H", + "output_sha256": "78a8be77fd798565ca55303f8564026c59a0cddd04b2ede6803f5d0cdf3e44f0" + }, + { + "stage": 232, + "kind": "D", + "output_sha256": "e4713a385d694df503c2da3d563def90230ee0994ceaf927f40f0d53afbf95de" + }, + { + "stage": 233, + "kind": "H", + "output_sha256": "9392476965eb58e25ae3b89ed366c128cb7b045ad27a21fb303475a4f6e8fbed" + }, + { + "stage": 234, + "kind": "D", + "output_sha256": "9392476965eb58e25ae3b89ed366c128cb7b045ad27a21fb303475a4f6e8fbed" + }, + { + "stage": 235, + "kind": "H", + "output_sha256": "9f78ec53463f404a0a4dcfdc637bd5bd409f110263bb73d8f442a01c7b50684a" + }, + { + "stage": 236, + "kind": "D", + "output_sha256": "c3dfc059058d9e60ce4ed0d7b436ebafe0b1c4c84560c57df60391ab476cb9db" + }, + { + "stage": 237, + "kind": "H", + "output_sha256": "767fa280b07845d6325adedd5a42a1717799ffb5240527060ec833c5caa56b0b" + }, + { + "stage": 238, + "kind": "D", + "output_sha256": "767fa280b07845d6325adedd5a42a1717799ffb5240527060ec833c5caa56b0b" + }, + { + "stage": 239, + "kind": "H", + "output_sha256": "96a0b7cb475b978875a1577bb71cf3929994ce670421a5744883bd6cc18f588d" + }, + { + "stage": 240, + "kind": "D", + "output_sha256": "4d95574021e5a3718f3cd4152be6faf560c6a5f49820b3529d47ba6291615c53" + }, + { + "stage": 241, + "kind": "H", + "output_sha256": "767fa280b07845d6325adedd5a42a1717799ffb5240527060ec833c5caa56b0b" + }, + { + "stage": 242, + "kind": "D", + "output_sha256": "767fa280b07845d6325adedd5a42a1717799ffb5240527060ec833c5caa56b0b" + }, + { + "stage": 243, + "kind": "H", + "output_sha256": "b1778d88e749c51a9b4f660411a40dcb3717b68a475147b6447918167bf29f48" + }, + { + "stage": 244, + "kind": "D", + "output_sha256": "9f1273ec1d1c464b59c3ab2c8d92af28aa854666c29b194ab6c3b882b24d1cb5" + }, + { + "stage": 245, + "kind": "H", + "output_sha256": "767fa280b07845d6325adedd5a42a1717799ffb5240527060ec833c5caa56b0b" + }, + { + "stage": 246, + "kind": "D", + "output_sha256": "767fa280b07845d6325adedd5a42a1717799ffb5240527060ec833c5caa56b0b" + }, + { + "stage": 247, + "kind": "H", + "output_sha256": "f4a4bd574ced3db491a28a673327b25a967e2eb9513b3f4f6e4a7fda9994ff39" + }, + { + "stage": 248, + "kind": "D", + "output_sha256": "2cdc59c505aaa08ffd422606a38ebd9c0f6764cc032585a15b9b611ce668d9d7" + }, + { + "stage": 249, + "kind": "H", + "output_sha256": "cc5cc8dbdbcf6f53c8aef57b9b9cc938a0a9c4ea58b8021dbda6de7dac7711c1" + }, + { + "stage": 250, + "kind": "D", + "output_sha256": "cc5cc8dbdbcf6f53c8aef57b9b9cc938a0a9c4ea58b8021dbda6de7dac7711c1" + }, + { + "stage": 251, + "kind": "H", + "output_sha256": "71b94a23f4da7422902fafdf5534991227a1c382407a2f5476d9102556b78967" + }, + { + "stage": 252, + "kind": "D", + "output_sha256": "b652036facc3e70009cfe801907828709a9c28ebf973df9621bb03fc2671b456" + }, + { + "stage": 253, + "kind": "H", + "output_sha256": "60acf1afe8fb81f664f8edfe771a4bff229a21135cc5e76e4225b8015d7d1a00" + }, + { + "stage": 254, + "kind": "D", + "output_sha256": "60acf1afe8fb81f664f8edfe771a4bff229a21135cc5e76e4225b8015d7d1a00" + }, + { + "stage": 255, + "kind": "H", + "output_sha256": "9ef9fed6c2b52f6dc4b269b2749d1c593e87f82b14a637c8e99817ff5abe4d29" + }, + { + "stage": 256, + "kind": "D", + "output_sha256": "b4050ad6aa3881623c237e65769c85f22bda6d126f8e299ab54ddfde0efcbce0" + }, + { + "stage": 257, + "kind": "H", + "output_sha256": "2cafa4ae5af822c2537f2e6e34807617ff8037519de1e4424ad35b17e7dd8122" + }, + { + "stage": 258, + "kind": "D", + "output_sha256": "2cafa4ae5af822c2537f2e6e34807617ff8037519de1e4424ad35b17e7dd8122" + }, + { + "stage": 259, + "kind": "H", + "output_sha256": "721042b852c995ec960f841c83c8c37a96cc941c010093e7f4b7a8442beccfc9" + }, + { + "stage": 260, + "kind": "D", + "output_sha256": "9368d8645dd57635407b33439b01910dcbc8a06663269adb7ff781fca6d87f7a" + }, + { + "stage": 261, + "kind": "H", + "output_sha256": "2cafa4ae5af822c2537f2e6e34807617ff8037519de1e4424ad35b17e7dd8122" + }, + { + "stage": 262, + "kind": "D", + "output_sha256": "2cafa4ae5af822c2537f2e6e34807617ff8037519de1e4424ad35b17e7dd8122" + }, + { + "stage": 263, + "kind": "H", + "output_sha256": "a49d32562daa49d7b2daa39914647fa5c4b665a150d59db3bc9ca997e3f9a7e5" + }, + { + "stage": 264, + "kind": "D", + "output_sha256": "c0b62839a1af4103bf815e1c4d5972a04ab9db378925880dd1148e906d4a0577" + }, + { + "stage": 265, + "kind": "H", + "output_sha256": "2cafa4ae5af822c2537f2e6e34807617ff8037519de1e4424ad35b17e7dd8122" + }, + { + "stage": 266, + "kind": "D", + "output_sha256": "2cafa4ae5af822c2537f2e6e34807617ff8037519de1e4424ad35b17e7dd8122" + }, + { + "stage": 267, + "kind": "H", + "output_sha256": "9410e61e3c917d3973d71534e2dbb2a8115b87627eab7c886bb1efcd0cdaf496" + }, + { + "stage": 268, + "kind": "D", + "output_sha256": "f6b6a17f14980343d535a13105f3e4d533aa94e3d112628f1040fdf35d919585" + }, + { + "stage": 269, + "kind": "H", + "output_sha256": "2cafa4ae5af822c2537f2e6e34807617ff8037519de1e4424ad35b17e7dd8122" + }, + { + "stage": 270, + "kind": "D", + "output_sha256": "2cafa4ae5af822c2537f2e6e34807617ff8037519de1e4424ad35b17e7dd8122" + }, + { + "stage": 271, + "kind": "H", + "output_sha256": "b5119f0eb8642431ea4d5848ef4b5b7abd37e4993d5aa9bf5b1f9af7fcd93df2" + }, + { + "stage": 272, + "kind": "D", + "output_sha256": "618384572e6981da648234b356200607617a4f2b02c9be942d62282029f4783d" + }, + { + "stage": 273, + "kind": "H", + "output_sha256": "bfbec47d96afd96b95aca15ec12054318aef55285621bd579d47014a0c7eda70" + }, + { + "stage": 274, + "kind": "D", + "output_sha256": "bfbec47d96afd96b95aca15ec12054318aef55285621bd579d47014a0c7eda70" + }, + { + "stage": 275, + "kind": "H", + "output_sha256": "3d99b7a9e77cfdade02dbfcf6025292f348d182fc3b06ac5363fd3f9c756dd0b" + }, + { + "stage": 276, + "kind": "D", + "output_sha256": "832bd5c58644e49bc378fe80a08cc8165ed4c16bb52209baf0cdff3e0474b952" + }, + { + "stage": 277, + "kind": "H", + "output_sha256": "953c84223660a080f3d6958ba302108e95e572e0fe539186910d38bb8825e4c2" + }, + { + "stage": 278, + "kind": "D", + "output_sha256": "953c84223660a080f3d6958ba302108e95e572e0fe539186910d38bb8825e4c2" + }, + { + "stage": 279, + "kind": "H", + "output_sha256": "1be2dda1c82045bbedebc85fd97a8671d3a98731af9139c7862864f93aec02fe" + }, + { + "stage": 280, + "kind": "D", + "output_sha256": "975c5918fcfe0772b73f6b1572514fc82686e2ffc06c5f4b3b76cc1a92490a27" + }, + { + "stage": 281, + "kind": "H", + "output_sha256": "d384407b86abf31103c2d613d02dba172cdd702611d4b1def21501671d92fb53" + }, + { + "stage": 282, + "kind": "D", + "output_sha256": "d384407b86abf31103c2d613d02dba172cdd702611d4b1def21501671d92fb53" + }, + { + "stage": 283, + "kind": "H", + "output_sha256": "f468bf2d065e04a57f3ed61b7627cc3b9b34d6af3886381e3e32f25ada0f83d8" + }, + { + "stage": 284, + "kind": "D", + "output_sha256": "0f7a2c70c2702353fd57dd1fc4699a5491e4e691aa3a7e53b969adfc4a7efc60" + }, + { + "stage": 285, + "kind": "H", + "output_sha256": "511176c6f3deac57b55891a4af485c6d44f77553f05fc33874b096101b9e76b2" + }, + { + "stage": 286, + "kind": "D", + "output_sha256": "511176c6f3deac57b55891a4af485c6d44f77553f05fc33874b096101b9e76b2" + }, + { + "stage": 287, + "kind": "H", + "output_sha256": "de0249c30645d64596a68d45a04591039f32b85c14baa3cbc1196d3c7a622196" + }, + { + "stage": 288, + "kind": "D", + "output_sha256": "5df9bb8d3d971b29f851eadabf80e13573fe64114c10091199935ee5a3a702fd" + }, + { + "stage": 289, + "kind": "H", + "output_sha256": "a3b1acf5f7f403deb11a5c53a5669eb7509bd62b83bdaeeee2751233f8e6e112" + }, + { + "stage": 290, + "kind": "D", + "output_sha256": "a3b1acf5f7f403deb11a5c53a5669eb7509bd62b83bdaeeee2751233f8e6e112" + }, + { + "stage": 291, + "kind": "D", + "output_sha256": "90a96e5bdc4f1531e06fecffd21d772345420237cd9643c701dbecc60dd14477" + }, + { + "stage": 292, + "kind": "H", + "output_sha256": "896c98a43058a5d098f4527a2530da8fd14c31175729244b3f0dcdd97a541df2" + }, + { + "stage": 293, + "kind": "D", + "output_sha256": "78e039c59bb883ab32e642fcefd3f1f31cb39187a9ffe629360096fe3fe3e1a7" + }, + { + "stage": 294, + "kind": "H", + "output_sha256": "ed1526d5bd73d67ed1af10d2cd3f10d77217e5aa4b6403fb21923f8613222e7f" + }, + { + "stage": 295, + "kind": "D", + "output_sha256": "ba8071342057b30dcbb4a8b1e90613a7777f83b7096e6968511b24a3547d6476" + }, + { + "stage": 296, + "kind": "H", + "output_sha256": "e91405475d3f46ba11dfaac01b70b82888bd8f2a745d390962d787839b56e6da" + }, + { + "stage": 297, + "kind": "D", + "output_sha256": "317a6c545b1bf47553f5795de4cbd73344f6d46ed5996a063b43f9fecb376f6f" + }, + { + "stage": 298, + "kind": "H", + "output_sha256": "b989f577ec8c48a0ce4dda2a97e9608bdf2f85a8be50a0995c8a47749754bb6d" + }, + { + "stage": 299, + "kind": "D", + "output_sha256": "36fad32fd2ec554bfeae7becbbff5508e5f95d9cca73a764dc37edb2fec99868" + }, + { + "stage": 300, + "kind": "H", + "output_sha256": "bba3ed963193d5c0db86b141bdc60f6c39cc731345437e7eda42d307b545ef04" + }, + { + "stage": 301, + "kind": "D", + "output_sha256": "32334749b82a28f2ea328857a254a55ab6d9daa44e1f74cd7068324632c528b3" + }, + { + "stage": 302, + "kind": "H", + "output_sha256": "d17ed4ac4c448fe3a09f93a6f7fa3c75d7d91938752ce89dca8db2ccf370e298" + }, + { + "stage": 303, + "kind": "D", + "output_sha256": "d159e51103f401cc6834efda49374d2e4d1b16498888d957e79adc5b76cfc6e7" + }, + { + "stage": 304, + "kind": "H", + "output_sha256": "1e1040f4ecb09bfa736c21c19e07c98a3e2e640b579dfdd4846ba2242d6327cb" + }, + { + "stage": 305, + "kind": "D", + "output_sha256": "7ee55e2224b26651389388919e1bdee326c4666eb43561a45cb27f343a0a90ea" + }, + { + "stage": 306, + "kind": "H", + "output_sha256": "b2c8a7df40b491049b74c67db980e40d84db08bc253c404b2fd42e2813c340f1" + }, + { + "stage": 307, + "kind": "D", + "output_sha256": "b2c8a7df40b491049b74c67db980e40d84db08bc253c404b2fd42e2813c340f1" + }, + { + "stage": 308, + "kind": "H", + "output_sha256": "63cb965298b8a578b93e3f98b6f7989da55350ac99aabd5cfa8ab50207c7295f" + }, + { + "stage": 309, + "kind": "D", + "output_sha256": "17e7fb16eb109d3c96e3c800d878f3b633c72450f1cf9478cf61f671dff5ec3f" + }, + { + "stage": 310, + "kind": "H", + "output_sha256": "69898fa8f47f9ffc11e0212f96b80921a5fe373616985f8fa51aa1bb50ffb3f2" + }, + { + "stage": 311, + "kind": "D", + "output_sha256": "69898fa8f47f9ffc11e0212f96b80921a5fe373616985f8fa51aa1bb50ffb3f2" + }, + { + "stage": 312, + "kind": "H", + "output_sha256": "10917daa431dea1f91d827d735ebdb811d276164babed386d662008715ce649a" + }, + { + "stage": 313, + "kind": "D", + "output_sha256": "420d71b067088223fc324803bd45d37815cb3a4ba30173acb01d8bad148b8b69" + }, + { + "stage": 314, + "kind": "H", + "output_sha256": "ca22e2152b0d9224f43f4019a7f800c27ac16206f4555180483b9c44d9cdc830" + }, + { + "stage": 315, + "kind": "D", + "output_sha256": "ca22e2152b0d9224f43f4019a7f800c27ac16206f4555180483b9c44d9cdc830" + }, + { + "stage": 316, + "kind": "H", + "output_sha256": "e92096e9fbe0be40ae35a7b37f8ac0cc39daebbd12be5b2d66c2001726895f69" + }, + { + "stage": 317, + "kind": "D", + "output_sha256": "f7ba5fa2fc2b3aff49c3a4a76fa6a0dac1fc579b8a69608eaad96494afff0c4f" + }, + { + "stage": 318, + "kind": "H", + "output_sha256": "16925fd2f3cafef085199300d86ead9026c2bc45c2fc00c296da95d58feac15d" + }, + { + "stage": 319, + "kind": "D", + "output_sha256": "16925fd2f3cafef085199300d86ead9026c2bc45c2fc00c296da95d58feac15d" + }, + { + "stage": 320, + "kind": "H", + "output_sha256": "b36439665592e7b8be4282f2cb46a9b84d390920385a22ab0500677d6e316513" + }, + { + "stage": 321, + "kind": "D", + "output_sha256": "2f9d7b9c5bdac8b7d8b94ce80fbcce9f37aa3ddb646d143f8334ebe593902eac" + }, + { + "stage": 322, + "kind": "H", + "output_sha256": "28998f43ea673934b677696527f81d32dfb8ca09496608d363b4a13b42bb64dc" + }, + { + "stage": 323, + "kind": "D", + "output_sha256": "28998f43ea673934b677696527f81d32dfb8ca09496608d363b4a13b42bb64dc" + }, + { + "stage": 324, + "kind": "H", + "output_sha256": "edfd1fd6686e4c277faeb157c2172c84d0215a4606d7e61c6849a462ffb0fe59" + }, + { + "stage": 325, + "kind": "D", + "output_sha256": "a29a48aa930d0b6ec2c142b01e25273bb52d7743ab1e27dcc9d9f1beee39caed" + }, + { + "stage": 326, + "kind": "H", + "output_sha256": "28998f43ea673934b677696527f81d32dfb8ca09496608d363b4a13b42bb64dc" + }, + { + "stage": 327, + "kind": "D", + "output_sha256": "28998f43ea673934b677696527f81d32dfb8ca09496608d363b4a13b42bb64dc" + }, + { + "stage": 328, + "kind": "H", + "output_sha256": "0c5b00caa87f8859eab2cd9741523885917c4f1f8e7a3531e96d2b0b14ea013e" + }, + { + "stage": 329, + "kind": "D", + "output_sha256": "956fec26b5c1cb8eaf20bd6144b2cf22ec37e0c2ce63777ea7f5e6a4104bfbef" + }, + { + "stage": 330, + "kind": "H", + "output_sha256": "28998f43ea673934b677696527f81d32dfb8ca09496608d363b4a13b42bb64dc" + }, + { + "stage": 331, + "kind": "D", + "output_sha256": "28998f43ea673934b677696527f81d32dfb8ca09496608d363b4a13b42bb64dc" + }, + { + "stage": 332, + "kind": "H", + "output_sha256": "33e64a45ab4f416395f65cdcc8643657302668fb2747ec55243a045f31eb8432" + }, + { + "stage": 333, + "kind": "D", + "output_sha256": "38e4cbaf0e58c367e8f91e958bc16b365d10aa3f2421fa8019b048f41791ff75" + }, + { + "stage": 334, + "kind": "H", + "output_sha256": "28998f43ea673934b677696527f81d32dfb8ca09496608d363b4a13b42bb64dc" + }, + { + "stage": 335, + "kind": "D", + "output_sha256": "28998f43ea673934b677696527f81d32dfb8ca09496608d363b4a13b42bb64dc" + }, + { + "stage": 336, + "kind": "H", + "output_sha256": "1c6b299816d95f4beba81f689b08756cb7def02bd379851259f32a53ec22f654" + }, + { + "stage": 337, + "kind": "D", + "output_sha256": "7c638013cf3e9337d5765cffae02a5b2da23386d4575c27a012d35b79659472d" + }, + { + "stage": 338, + "kind": "H", + "output_sha256": "52dec8a5c1b4e7ea2b977fadbbf4cbc97174748df4998c6fa27b3c4d9ed94c25" + }, + { + "stage": 339, + "kind": "D", + "output_sha256": "52dec8a5c1b4e7ea2b977fadbbf4cbc97174748df4998c6fa27b3c4d9ed94c25" + }, + { + "stage": 340, + "kind": "H", + "output_sha256": "bb83f316713e41ae69477e7868645eedfd2c22cdebcbd461777724c7d21e1787" + }, + { + "stage": 341, + "kind": "D", + "output_sha256": "7c638013cf3e9337d5765cffae02a5b2da23386d4575c27a012d35b79659472d" + }, + { + "stage": 342, + "kind": "H", + "output_sha256": "52dec8a5c1b4e7ea2b977fadbbf4cbc97174748df4998c6fa27b3c4d9ed94c25" + }, + { + "stage": 343, + "kind": "D", + "output_sha256": "52dec8a5c1b4e7ea2b977fadbbf4cbc97174748df4998c6fa27b3c4d9ed94c25" + }, + { + "stage": 344, + "kind": "H", + "output_sha256": "5f9e74f05fe21ea2878a9295b085115cdcbfaf79ddc37461c9ee615526a61dc3" + }, + { + "stage": 345, + "kind": "D", + "output_sha256": "25b6d061ab4f0fbaf90eb7f6913918a569fac08d5e608d08e02c86bd8b8439a7" + }, + { + "stage": 346, + "kind": "H", + "output_sha256": "52dec8a5c1b4e7ea2b977fadbbf4cbc97174748df4998c6fa27b3c4d9ed94c25" + }, + { + "stage": 347, + "kind": "D", + "output_sha256": "52dec8a5c1b4e7ea2b977fadbbf4cbc97174748df4998c6fa27b3c4d9ed94c25" + }, + { + "stage": 348, + "kind": "H", + "output_sha256": "de44a88850d647b9c086d690e89b15fef0e0c0936dfafa436feda7ababb23dc1" + }, + { + "stage": 349, + "kind": "D", + "output_sha256": "f4ebad53b35cf48ff965d6cc7347d0a506e8a53952a8f6099693710b86f42a7e" + }, + { + "stage": 350, + "kind": "H", + "output_sha256": "52dec8a5c1b4e7ea2b977fadbbf4cbc97174748df4998c6fa27b3c4d9ed94c25" + }, + { + "stage": 351, + "kind": "D", + "output_sha256": "52dec8a5c1b4e7ea2b977fadbbf4cbc97174748df4998c6fa27b3c4d9ed94c25" + }, + { + "stage": 352, + "kind": "H", + "output_sha256": "bd72ad6d84474072482d652b8328e042d7eaafc52b888c59302f8865a41f4739" + }, + { + "stage": 353, + "kind": "D", + "output_sha256": "7c59d7a6999fd93536b813514834dfe5bfed5c6ddfa4b8bf8aeadc85c1e4a89d" + }, + { + "stage": 354, + "kind": "H", + "output_sha256": "52dec8a5c1b4e7ea2b977fadbbf4cbc97174748df4998c6fa27b3c4d9ed94c25" + }, + { + "stage": 355, + "kind": "D", + "output_sha256": "52dec8a5c1b4e7ea2b977fadbbf4cbc97174748df4998c6fa27b3c4d9ed94c25" + }, + { + "stage": 356, + "kind": "H", + "output_sha256": "219a1e67be3396e4eec9f566b57d95cef6763798945444a55d708e104dbedb6f" + }, + { + "stage": 357, + "kind": "D", + "output_sha256": "22d84c8bf076283036faca508fdd943b891405566e967f090b8c1710e4f74cb9" + }, + { + "stage": 358, + "kind": "H", + "output_sha256": "fd87f976aff619db893faf836fd99d15d7ad636359445a7efa6db8dbbd344b77" + }, + { + "stage": 359, + "kind": "D", + "output_sha256": "fd87f976aff619db893faf836fd99d15d7ad636359445a7efa6db8dbbd344b77" + }, + { + "stage": 360, + "kind": "H", + "output_sha256": "a191e1ccd9c7ed4f3861abd06ddbfb702e8d4580fd6809787b1077ebc07a0091" + }, + { + "stage": 361, + "kind": "D", + "output_sha256": "eb67466df6d0a28ac03656e435b4a452a268e4ee774a046371eef141dacd92dc" + }, + { + "stage": 362, + "kind": "H", + "output_sha256": "a8efeb8e9be41f675a6791b0f179627fb8ba63cb4db244965f229c8dfdaa623d" + }, + { + "stage": 363, + "kind": "D", + "output_sha256": "a8efeb8e9be41f675a6791b0f179627fb8ba63cb4db244965f229c8dfdaa623d" + }, + { + "stage": 364, + "kind": "H", + "output_sha256": "e458a938b26a081261707650f4be7f04a15b0cd0d33d81288aaa3f4164b772e8" + }, + { + "stage": 365, + "kind": "D", + "output_sha256": "c6954768cfcb9e913572255f354dce8c29dff7fef3e01db0e47169d740c7c097" + }, + { + "stage": 366, + "kind": "H", + "output_sha256": "4d5fa2095b89a2211f968b12b5c871023a0f8e0b756493edd546fdc89146e068" + }, + { + "stage": 367, + "kind": "D", + "output_sha256": "4d5fa2095b89a2211f968b12b5c871023a0f8e0b756493edd546fdc89146e068" + }, + { + "stage": 368, + "kind": "H", + "output_sha256": "0a8e9e4fb8e914ec773019ae25583941d0e57a9bacf7fd655d32268aa7ca9d27" + }, + { + "stage": 369, + "kind": "D", + "output_sha256": "cfa87e4d8cedac0122e7c06a6ba419dcbdf8e77243002b573786f597945d813c" + }, + { + "stage": 370, + "kind": "H", + "output_sha256": "e4d0de9c4f551649ee1d2286db40270cb41b7dd66982656f52f4272f81a141f9" + }, + { + "stage": 371, + "kind": "D", + "output_sha256": "e4d0de9c4f551649ee1d2286db40270cb41b7dd66982656f52f4272f81a141f9" + }, + { + "stage": 372, + "kind": "H", + "output_sha256": "9b0951108f5234dc2c48422ed11402107063b820c107c0fe0128effd3e8b28b7" + }, + { + "stage": 373, + "kind": "D", + "output_sha256": "fd2e9d9f60e231d44b1fe8654d07fa37e23e25fbff0c553e0f5d0e2e21bb61b7" + }, + { + "stage": 374, + "kind": "H", + "output_sha256": "479b2cf128aec3cd33e4286963dba4278064c968f8856a01fda3d9e47b4beffc" + }, + { + "stage": 375, + "kind": "D", + "output_sha256": "479b2cf128aec3cd33e4286963dba4278064c968f8856a01fda3d9e47b4beffc" + }, + { + "stage": 376, + "kind": "D", + "output_sha256": "a5dfa004e206a9607eea8664ce06217150967ebad92cecd486dcd075897bdd7f" + }, + { + "stage": 377, + "kind": "H", + "output_sha256": "339b46c1bb6db5e50873ab377dec83d368d7b88a7442d8ccfee3d1dda7baf7c5" + }, + { + "stage": 378, + "kind": "D", + "output_sha256": "a0d22ec370674d918ec2142be783b975e317c9b63414b197a99242f034d9e643" + }, + { + "stage": 379, + "kind": "H", + "output_sha256": "9d09b8337b737477c9fa03fa653a29f261240ef7f9269c462c6370897a81a3a6" + }, + { + "stage": 380, + "kind": "D", + "output_sha256": "a78aadccd378e80b824d8d95d7f25dfe3310d6031101d5c42a680a0338d2215c" + }, + { + "stage": 381, + "kind": "H", + "output_sha256": "d205821c105186b6f0bc82e30b69485d5cbf53799f8876ca6a1b9f058da42d3d" + }, + { + "stage": 382, + "kind": "D", + "output_sha256": "baee701f9ec7773f180f036b5b7005f5e9a9b0ce014ef6072e0c320976f937ac" + }, + { + "stage": 383, + "kind": "H", + "output_sha256": "005df6cc148c709655b65e9104f4732bff82603164677a777597964d29912543" + }, + { + "stage": 384, + "kind": "D", + "output_sha256": "60d42e053943f9eac5ffab7595441765dea263f0ef1366d94453f204f90c2d63" + }, + { + "stage": 385, + "kind": "H", + "output_sha256": "80a38788b32ab050fea4f5d9f315f8b1b2e7796aac668768e74d8be4cd9b6421" + }, + { + "stage": 386, + "kind": "D", + "output_sha256": "efdb55db6e7bcc966b0d34f2d8a3242698e3ede8ec40c97b7d46011a92e6ad02" + }, + { + "stage": 387, + "kind": "H", + "output_sha256": "6f050107872fa99f574927b689dcdb78fe7efeeca58e6398e33f10ae1c218ead" + }, + { + "stage": 388, + "kind": "D", + "output_sha256": "a1df26b3145c6410fc4d8753baf84eae8ed6d3dca61b9210ee50831192d6b0ff" + }, + { + "stage": 389, + "kind": "H", + "output_sha256": "5f5ec6da219da5e0ec662deca6ee0cd29986394b8bbc8f3faa557fc9554be81a" + }, + { + "stage": 390, + "kind": "D", + "output_sha256": "5e195f2a8ed69fdd64efca73084b9bec9408247a8449b23f51770a22e65147c4" + }, + { + "stage": 391, + "kind": "H", + "output_sha256": "1fa443efe586a7b04835dbf6569097c3dfe71bc2f5ebbe014c8309c7aa38626a" + }, + { + "stage": 392, + "kind": "D", + "output_sha256": "1fa443efe586a7b04835dbf6569097c3dfe71bc2f5ebbe014c8309c7aa38626a" + }, + { + "stage": 393, + "kind": "H", + "output_sha256": "98920583174a86c43e0b0fc624dd44ef7acb68348966991b3c8807912539d71b" + }, + { + "stage": 394, + "kind": "D", + "output_sha256": "62b65683bcdf8bcb9eae74cbcfcee57d72b80daadaf1765db5711a69126b6b7d" + }, + { + "stage": 395, + "kind": "H", + "output_sha256": "922869aa3f07698b657422be0529f42fb63d664a686f2cb00c2417ee43895110" + }, + { + "stage": 396, + "kind": "D", + "output_sha256": "922869aa3f07698b657422be0529f42fb63d664a686f2cb00c2417ee43895110" + }, + { + "stage": 397, + "kind": "H", + "output_sha256": "cc04105bd5e88fd12b4ac174fc7f8d01b5782d5eea399bb554679a2bf36902f8" + }, + { + "stage": 398, + "kind": "D", + "output_sha256": "6cc16dee35cb961f02b1a316907a0bf8abfea70fcda16dc1a8eb4a97eeae6251" + }, + { + "stage": 399, + "kind": "H", + "output_sha256": "59f0109ea9a3b6a40c81992e0dd5948cb90017bd6ffa64e01b4cbba24e07695e" + }, + { + "stage": 400, + "kind": "D", + "output_sha256": "59f0109ea9a3b6a40c81992e0dd5948cb90017bd6ffa64e01b4cbba24e07695e" + }, + { + "stage": 401, + "kind": "H", + "output_sha256": "091a9d938324eace99d730f94e54b32b530e6bd4867e4c574188936ee88142fe" + }, + { + "stage": 402, + "kind": "D", + "output_sha256": "c4b1d21e70e34ceb4097662c29f82838921da68661a1802c0d67526c712fe88b" + }, + { + "stage": 403, + "kind": "H", + "output_sha256": "28505e5e7d1b3aaca67552bb02e9b28614cbdc9401089d30f37b3f11884c3ac2" + }, + { + "stage": 404, + "kind": "D", + "output_sha256": "28505e5e7d1b3aaca67552bb02e9b28614cbdc9401089d30f37b3f11884c3ac2" + }, + { + "stage": 405, + "kind": "H", + "output_sha256": "79514e91ed8dc315d2f412c13737f1598332d6b6b76e79c8c64acb08a0ebcf1d" + }, + { + "stage": 406, + "kind": "D", + "output_sha256": "f0c8378f643da8e95236c543d9b21178b097fbdad217e7b8b082e4ae6647c1c9" + }, + { + "stage": 407, + "kind": "H", + "output_sha256": "80daf84a5a366723b00cd9f7cba8500fafb8894305d46b9c0a79f3e54c020ff2" + }, + { + "stage": 408, + "kind": "D", + "output_sha256": "80daf84a5a366723b00cd9f7cba8500fafb8894305d46b9c0a79f3e54c020ff2" + }, + { + "stage": 409, + "kind": "H", + "output_sha256": "3369dc2e5d329355c0b5c645e72682e89a06baf95da5e7a0ae037108478cf070" + }, + { + "stage": 410, + "kind": "D", + "output_sha256": "c76be023c6ec5a8c6405957494cba78d9e53124c61582d4f1523846d127be0d4" + }, + { + "stage": 411, + "kind": "H", + "output_sha256": "80daf84a5a366723b00cd9f7cba8500fafb8894305d46b9c0a79f3e54c020ff2" + }, + { + "stage": 412, + "kind": "D", + "output_sha256": "80daf84a5a366723b00cd9f7cba8500fafb8894305d46b9c0a79f3e54c020ff2" + }, + { + "stage": 413, + "kind": "H", + "output_sha256": "76e1e5d11944992e90f645058827210f512ef670171065b9135a23c4e2df6de1" + }, + { + "stage": 414, + "kind": "D", + "output_sha256": "9a1435fd65441661fc400712087eed04720f3332037f885a110630fea9271eb6" + }, + { + "stage": 415, + "kind": "H", + "output_sha256": "80daf84a5a366723b00cd9f7cba8500fafb8894305d46b9c0a79f3e54c020ff2" + }, + { + "stage": 416, + "kind": "D", + "output_sha256": "80daf84a5a366723b00cd9f7cba8500fafb8894305d46b9c0a79f3e54c020ff2" + }, + { + "stage": 417, + "kind": "H", + "output_sha256": "d9d088bfb5f95c87825c6c165fe4afe8566c1113b56b4162ab43a5ab63462e7c" + }, + { + "stage": 418, + "kind": "D", + "output_sha256": "bd5555242a1188b604a91fc0ab0c9f1a7162dfbc68e2cccc38c31762d5fd927e" + }, + { + "stage": 419, + "kind": "H", + "output_sha256": "80daf84a5a366723b00cd9f7cba8500fafb8894305d46b9c0a79f3e54c020ff2" + }, + { + "stage": 420, + "kind": "D", + "output_sha256": "80daf84a5a366723b00cd9f7cba8500fafb8894305d46b9c0a79f3e54c020ff2" + }, + { + "stage": 421, + "kind": "H", + "output_sha256": "2a0719361101d7154b0f15b861ed23e4701146e0a505257e42e6515e19ae1cc8" + }, + { + "stage": 422, + "kind": "D", + "output_sha256": "28e20142329567b126de4e594c924dfa06a094b8af1cf3bdc59f6b526a385528" + }, + { + "stage": 423, + "kind": "H", + "output_sha256": "80daf84a5a366723b00cd9f7cba8500fafb8894305d46b9c0a79f3e54c020ff2" + }, + { + "stage": 424, + "kind": "D", + "output_sha256": "80daf84a5a366723b00cd9f7cba8500fafb8894305d46b9c0a79f3e54c020ff2" + }, + { + "stage": 425, + "kind": "H", + "output_sha256": "2a0719361101d7154b0f15b861ed23e4701146e0a505257e42e6515e19ae1cc8" + }, + { + "stage": 426, + "kind": "D", + "output_sha256": "bc3b734e0f148cb982c24a2fdfacda52efc88d9a073981efc5e3c30ae330852a" + }, + { + "stage": 427, + "kind": "H", + "output_sha256": "e29c1b744be6e36a18ad4b680e2fd4af60c61b485af340ccc2bb9ddf376bfe42" + }, + { + "stage": 428, + "kind": "D", + "output_sha256": "e29c1b744be6e36a18ad4b680e2fd4af60c61b485af340ccc2bb9ddf376bfe42" + }, + { + "stage": 429, + "kind": "H", + "output_sha256": "07db44712857aad566706af921424bc972cd29264f0189cf504e730ad07fedac" + }, + { + "stage": 430, + "kind": "D", + "output_sha256": "3953325bce81de5a6a77678bb5ebd2d63beacc792308ed1e46926ec6c19c223e" + }, + { + "stage": 431, + "kind": "H", + "output_sha256": "ef57770d0c47eca55610cfdb4d9a36df588b737d8716d9303f0ce22f1be0329c" + }, + { + "stage": 432, + "kind": "D", + "output_sha256": "ef57770d0c47eca55610cfdb4d9a36df588b737d8716d9303f0ce22f1be0329c" + }, + { + "stage": 433, + "kind": "H", + "output_sha256": "4e2ba8c03d10076ea53cb4968817b509c134600783440c11504c7ad60c50b261" + }, + { + "stage": 434, + "kind": "D", + "output_sha256": "72bc1fccd1545785c68ba0a7cfdadd476a6385568c21d2d0eae08d90b71a60a2" + }, + { + "stage": 435, + "kind": "H", + "output_sha256": "58d3a9db9f7b150db3983f91f054b20628998d0119acaa6a60ca028404be8333" + }, + { + "stage": 436, + "kind": "D", + "output_sha256": "58d3a9db9f7b150db3983f91f054b20628998d0119acaa6a60ca028404be8333" + }, + { + "stage": 437, + "kind": "H", + "output_sha256": "d0ad56971fc5609abd624131cf4063279abfbdf47184d7eaf3f1218e8f55bb97" + }, + { + "stage": 438, + "kind": "D", + "output_sha256": "31cfa1ea457b781798b9f971622ccda5b719797d4b061fe1f04661af741fe9a6" + }, + { + "stage": 439, + "kind": "H", + "output_sha256": "264c23e40bbb64ad4f11c269bd71a089e157a7dc68e3a5622b80c80e857fc5a1" + }, + { + "stage": 440, + "kind": "D", + "output_sha256": "264c23e40bbb64ad4f11c269bd71a089e157a7dc68e3a5622b80c80e857fc5a1" + }, + { + "stage": 441, + "kind": "H", + "output_sha256": "f93dc7f7a11907dda10569bdd8bc54783c250d834bb7a2942bcbb7d3d6b1a2a2" + }, + { + "stage": 442, + "kind": "D", + "output_sha256": "0497eb69048c84a5f531f6072497c5d1ee561e2fde00f4d360619d9a864d34db" + }, + { + "stage": 443, + "kind": "H", + "output_sha256": "d965b8a9d265257114b3355da8584456fc25822537e027afeaad23f8e14f7cdb" + }, + { + "stage": 444, + "kind": "D", + "output_sha256": "d965b8a9d265257114b3355da8584456fc25822537e027afeaad23f8e14f7cdb" + }, + { + "stage": 445, + "kind": "H", + "output_sha256": "a827772df4a6a3aa0e1a0b0d27fc727cc44771343210167b5b717d99ff6c970a" + }, + { + "stage": 446, + "kind": "D", + "output_sha256": "f46a6f8539c2a92e0918cbf5e64427a53a98df942f4ae6906e84580c2e14f230" + }, + { + "stage": 447, + "kind": "H", + "output_sha256": "11c6e8343e4e38fc5126921e2463e2662b9642d66d6d191d726c99701c30c5fb" + }, + { + "stage": 448, + "kind": "D", + "output_sha256": "11c6e8343e4e38fc5126921e2463e2662b9642d66d6d191d726c99701c30c5fb" + }, + { + "stage": 449, + "kind": "H", + "output_sha256": "eb2166f65b98b3430dd5bd412e4ea8aef4e5d019b9fc8ca2ac6ec0cd0b111d19" + }, + { + "stage": 450, + "kind": "D", + "output_sha256": "b06ee00e5e08fbe186b842550ed8c62792d2f1ff7ee172e131130d7090533bf8" + }, + { + "stage": 451, + "kind": "H", + "output_sha256": "9108448286808830b65ed81b5598878e1835e1f3471e68376ef428f3be73d2ff" + }, + { + "stage": 452, + "kind": "D", + "output_sha256": "9108448286808830b65ed81b5598878e1835e1f3471e68376ef428f3be73d2ff" + }, + { + "stage": 453, + "kind": "H", + "output_sha256": "efd2ec9eaaa8919aac7df5b05da7fe12902986846ce8af9cc95c2503c58621a3" + }, + { + "stage": 454, + "kind": "D", + "output_sha256": "362787b55305f830430fb50b22d53b44c02d83a857c4e7a328351687570d2a80" + }, + { + "stage": 455, + "kind": "H", + "output_sha256": "5b662d2669bcf6e7ff0a85885f39185c477bb1efe9cb01c0af7fcc3b90513669" + }, + { + "stage": 456, + "kind": "D", + "output_sha256": "5b662d2669bcf6e7ff0a85885f39185c477bb1efe9cb01c0af7fcc3b90513669" + }, + { + "stage": 457, + "kind": "H", + "output_sha256": "6d79851cd5ba5fce36a34f99571e30881b337dd1a77fa910eb1cdc743c453974" + }, + { + "stage": 458, + "kind": "D", + "output_sha256": "9bf058c7fe02eb45b4254884de360eb7cc517d89d035fb154dac03c8dfcb4d27" + }, + { + "stage": 459, + "kind": "H", + "output_sha256": "d2fafb15e07d35db483c5e5c32db860be0d13715ae65d8dab806d568ec19f382" + }, + { + "stage": 460, + "kind": "D", + "output_sha256": "d2fafb15e07d35db483c5e5c32db860be0d13715ae65d8dab806d568ec19f382" + }, + { + "stage": 461, + "kind": "D", + "output_sha256": "d2fafb15e07d35db483c5e5c32db860be0d13715ae65d8dab806d568ec19f382" + }, + { + "stage": 462, + "kind": "H", + "output_sha256": "35e4d2cfd809aabb5cda28b3194871a5e4f2439778fc8c46d1b0a62b5377b0f9" + }, + { + "stage": 463, + "kind": "D", + "output_sha256": "8577ba5b4396cafe62b7b923a46e22cfe8a3d1682b8075a6c9f493864f17ffac" + }, + { + "stage": 464, + "kind": "H", + "output_sha256": "439bec8fd35f6820702fd128548d183162158afc6b169ebb70205b30cd246cb5" + }, + { + "stage": 465, + "kind": "D", + "output_sha256": "439bec8fd35f6820702fd128548d183162158afc6b169ebb70205b30cd246cb5" + }, + { + "stage": 466, + "kind": "H", + "output_sha256": "cd655b12507b173b10e924462306c8a100130eb8d55002a0155320b41ec06e2e" + }, + { + "stage": 467, + "kind": "D", + "output_sha256": "8577ba5b4396cafe62b7b923a46e22cfe8a3d1682b8075a6c9f493864f17ffac" + }, + { + "stage": 468, + "kind": "H", + "output_sha256": "439bec8fd35f6820702fd128548d183162158afc6b169ebb70205b30cd246cb5" + }, + { + "stage": 469, + "kind": "D", + "output_sha256": "439bec8fd35f6820702fd128548d183162158afc6b169ebb70205b30cd246cb5" + }, + { + "stage": 470, + "kind": "H", + "output_sha256": "cd655b12507b173b10e924462306c8a100130eb8d55002a0155320b41ec06e2e" + }, + { + "stage": 471, + "kind": "D", + "output_sha256": "8577ba5b4396cafe62b7b923a46e22cfe8a3d1682b8075a6c9f493864f17ffac" + }, + { + "stage": 472, + "kind": "H", + "output_sha256": "439bec8fd35f6820702fd128548d183162158afc6b169ebb70205b30cd246cb5" + }, + { + "stage": 473, + "kind": "D", + "output_sha256": "439bec8fd35f6820702fd128548d183162158afc6b169ebb70205b30cd246cb5" + }, + { + "stage": 474, + "kind": "H", + "output_sha256": "cd655b12507b173b10e924462306c8a100130eb8d55002a0155320b41ec06e2e" + }, + { + "stage": 475, + "kind": "D", + "output_sha256": "368adc9f03fe45d5d90a04b6170278103f8b1bb6da3b1dc85ea6535e0171d716" + }, + { + "stage": 476, + "kind": "H", + "output_sha256": "0e7258a751f5ef2f68a76a636b92e649bc2253dc20189aef71951848a2e3f84e" + }, + { + "stage": 477, + "kind": "D", + "output_sha256": "0e7258a751f5ef2f68a76a636b92e649bc2253dc20189aef71951848a2e3f84e" + }, + { + "stage": 478, + "kind": "H", + "output_sha256": "f49bb543eedc917e293f90f3ad0d8144e6c1b44d996b8cb077d4e6b1b9df7835" + }, + { + "stage": 479, + "kind": "D", + "output_sha256": "fe14b599ac2ce6953a970862c79ba0f0f73d84f41ae599fc4d18394ff170c492" + }, + { + "stage": 480, + "kind": "H", + "output_sha256": "6ca4bcfc7e4df43747ecb05e51ea6a83b225ab8c9fc558a58e8c3db1c44e3b29" + }, + { + "stage": 481, + "kind": "D", + "output_sha256": "6ca4bcfc7e4df43747ecb05e51ea6a83b225ab8c9fc558a58e8c3db1c44e3b29" + }, + { + "stage": 482, + "kind": "H", + "output_sha256": "71b64e6623d6b9f6abb579e157e4b7b2039a14c19cfb02cdb093261f4acf11ae" + }, + { + "stage": 483, + "kind": "D", + "output_sha256": "d94d83b5502f511c4f71afa5fc8b7edcd9ac45a0df088088f0fbf3eb36e2b589" + }, + { + "stage": 484, + "kind": "H", + "output_sha256": "72b5e3656f52631bb13cb64d5792415f5cbaf42b49905152067b97c258229656" + }, + { + "stage": 485, + "kind": "D", + "output_sha256": "72b5e3656f52631bb13cb64d5792415f5cbaf42b49905152067b97c258229656" + }, + { + "stage": 486, + "kind": "H", + "output_sha256": "7a72b922dec11cd9a6e00497d5668fbad3dbaa04250d40a6545d3a081d89bf41" + }, + { + "stage": 487, + "kind": "D", + "output_sha256": "e9014371661fd931a108da9dc6f0a46e541aa8d5dea92d4dbaa5c326ec3d04dc" + }, + { + "stage": 488, + "kind": "H", + "output_sha256": "f5027fc3e5e4993128c43baa9357aabd372e4ab6fc799a0bb0dc8a48974e99be" + }, + { + "stage": 489, + "kind": "D", + "output_sha256": "f5027fc3e5e4993128c43baa9357aabd372e4ab6fc799a0bb0dc8a48974e99be" + }, + { + "stage": 490, + "kind": "H", + "output_sha256": "783834d7764868716e56a6dbe685eaad63755ff301a89ed03833b2c54a2f9589" + }, + { + "stage": 491, + "kind": "D", + "output_sha256": "d5f82c94fdea0a626dbe2b8893de31d49d69aa9000d46c5df6e8dc17baaa9245" + }, + { + "stage": 492, + "kind": "H", + "output_sha256": "205a71d7a13557c0af0cb51b0ca083d7ebdc453801a5f7a15fa407ba45fd3d48" + }, + { + "stage": 493, + "kind": "D", + "output_sha256": "205a71d7a13557c0af0cb51b0ca083d7ebdc453801a5f7a15fa407ba45fd3d48" + }, + { + "stage": 494, + "kind": "H", + "output_sha256": "9fc723adc66cf191d728daa1753084f36ce798f293346e80c4b14a3e98b60bbb" + }, + { + "stage": 495, + "kind": "D", + "output_sha256": "e7bfb5ceab63e8d1a351a635bb329279e907fca9acf0c3493fdc47df3a4bf5a0" + }, + { + "stage": 496, + "kind": "H", + "output_sha256": "db71be60bdfe62843c27bb8ae7512f50572a88df959426f29ed4238d1e12a0db" + }, + { + "stage": 497, + "kind": "D", + "output_sha256": "db71be60bdfe62843c27bb8ae7512f50572a88df959426f29ed4238d1e12a0db" + }, + { + "stage": 498, + "kind": "H", + "output_sha256": "38bb552e272f97e804c10317e93ff34c72e3040cbb0b9592f8ceb0e9e0f83d2e" + }, + { + "stage": 499, + "kind": "D", + "output_sha256": "2a85e1f6e38d86963a1758a02ec406493706917fa39bddc85b2b111cc802ecc7" + }, + { + "stage": 500, + "kind": "H", + "output_sha256": "8e9a7462505fe9817579c4a84f9e33dd1c914f446cf2631f1b1ef4a6dc48e57f" + }, + { + "stage": 501, + "kind": "D", + "output_sha256": "8e9a7462505fe9817579c4a84f9e33dd1c914f446cf2631f1b1ef4a6dc48e57f" + }, + { + "stage": 502, + "kind": "H", + "output_sha256": "88d853cc1ff526abb8ea6c538c3f8a9c9046ab7ee8356a492aeffe5cfd1bd042" + }, + { + "stage": 503, + "kind": "D", + "output_sha256": "17f1de81af23f9333b20cac74037bcbcc0b31b9020568bb7571aa041086cb4a2" + }, + { + "stage": 504, + "kind": "H", + "output_sha256": "133cbc168bb01616942112243506b4e2beac3b78efabc96a1cdb5953b6f7e618" + }, + { + "stage": 505, + "kind": "D", + "output_sha256": "133cbc168bb01616942112243506b4e2beac3b78efabc96a1cdb5953b6f7e618" + }, + { + "stage": 506, + "kind": "H", + "output_sha256": "75f69e3adfa0295e1530785c8f0f13b9e46e86c57db9757735fbfaf5d5a47b9b" + }, + { + "stage": 507, + "kind": "D", + "output_sha256": "89aa61a4e456d095d9fd7417da6b604d97142afac0a2e6418d9be210e3e2e366" + }, + { + "stage": 508, + "kind": "H", + "output_sha256": "c48d35e5f2d2c380806c247b16c49accccc1c3e57e30416e8ce630703d9c11bc" + }, + { + "stage": 509, + "kind": "D", + "output_sha256": "c48d35e5f2d2c380806c247b16c49accccc1c3e57e30416e8ce630703d9c11bc" + } + ] + }, + { + "field_size": 64, + "active_indices": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63 + ], + "adjoint": false, + "radius": "1", + "target_bits": 18, + "incoming_bits": 9, + "phase_bits": 25, + "data_bits": 60, + "observed_coefficient_bits": 64, + "counts": { + "logical_layers": 7, + "primitive_stages": 707, + "diagonal_stages": 357, + "hadamard_stages": 350 + }, + "layers": [ + { + "begin": 0, + "end": 101, + "pairs": [ + [ + 1, + 32 + ], + [ + 2, + 16 + ], + [ + 3, + 48 + ], + [ + 4, + 8 + ], + [ + 5, + 40 + ], + [ + 6, + 24 + ], + [ + 7, + 56 + ], + [ + 9, + 36 + ], + [ + 10, + 20 + ], + [ + 11, + 52 + ], + [ + 13, + 44 + ], + [ + 14, + 28 + ], + [ + 15, + 60 + ], + [ + 17, + 34 + ], + [ + 19, + 50 + ], + [ + 21, + 42 + ], + [ + 22, + 26 + ], + [ + 23, + 58 + ], + [ + 25, + 38 + ], + [ + 27, + 54 + ], + [ + 29, + 46 + ], + [ + 31, + 62 + ], + [ + 35, + 49 + ], + [ + 37, + 41 + ], + [ + 39, + 57 + ], + [ + 43, + 53 + ], + [ + 47, + 61 + ], + [ + 55, + 59 + ], + [ + 0, + 12 + ], + [ + 18, + 30 + ], + [ + 33, + 45 + ], + [ + 51, + 63 + ] + ], + "kinds": [ + "swap", + "swap", + "swap", + "swap", + "swap", + "swap", + "swap", + "swap", + "swap", + "swap", + "swap", + "swap", + "swap", + "swap", + "swap", + "swap", + "swap", + "swap", + "swap", + "swap", + "swap", + "swap", + "swap", + "swap", + "swap", + "swap", + "swap", + "swap", + "idle", + "idle", + "idle", + "idle" + ], + "permutation": [ + 56, + 0, + 2, + 4, + 6, + 8, + 10, + 12, + 7, + 14, + 16, + 18, + 57, + 20, + 22, + 24, + 3, + 26, + 58, + 28, + 17, + 30, + 32, + 34, + 11, + 36, + 33, + 38, + 23, + 40, + 59, + 42, + 1, + 60, + 27, + 44, + 15, + 46, + 37, + 48, + 9, + 47, + 31, + 50, + 21, + 61, + 41, + 52, + 5, + 45, + 29, + 62, + 19, + 51, + 39, + 54, + 13, + 49, + 35, + 55, + 25, + 53, + 43, + 63 + ], + "route_layers": 11 + }, + { + "begin": 101, + "end": 202, + "pairs": [ + [ + 0, + 1 + ], + [ + 2, + 3 + ], + [ + 4, + 5 + ], + [ + 6, + 7 + ], + [ + 8, + 9 + ], + [ + 10, + 11 + ], + [ + 12, + 13 + ], + [ + 14, + 15 + ], + [ + 16, + 17 + ], + [ + 18, + 19 + ], + [ + 20, + 21 + ], + [ + 22, + 23 + ], + [ + 24, + 25 + ], + [ + 26, + 27 + ], + [ + 28, + 29 + ], + [ + 30, + 31 + ], + [ + 32, + 33 + ], + [ + 34, + 35 + ], + [ + 36, + 37 + ], + [ + 38, + 39 + ], + [ + 40, + 41 + ], + [ + 42, + 43 + ], + [ + 44, + 45 + ], + [ + 46, + 47 + ], + [ + 48, + 49 + ], + [ + 50, + 51 + ], + [ + 52, + 53 + ], + [ + 54, + 55 + ], + [ + 56, + 57 + ], + [ + 58, + 59 + ], + [ + 60, + 61 + ], + [ + 62, + 63 + ] + ], + "kinds": [ + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly" + ], + "permutation": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63 + ], + "route_layers": 11 + }, + { + "begin": 202, + "end": 303, + "pairs": [ + [ + 0, + 2 + ], + [ + 1, + 3 + ], + [ + 4, + 6 + ], + [ + 5, + 7 + ], + [ + 8, + 10 + ], + [ + 9, + 11 + ], + [ + 12, + 14 + ], + [ + 13, + 15 + ], + [ + 16, + 18 + ], + [ + 17, + 19 + ], + [ + 20, + 22 + ], + [ + 21, + 23 + ], + [ + 24, + 26 + ], + [ + 25, + 27 + ], + [ + 28, + 30 + ], + [ + 29, + 31 + ], + [ + 32, + 34 + ], + [ + 33, + 35 + ], + [ + 36, + 38 + ], + [ + 37, + 39 + ], + [ + 40, + 42 + ], + [ + 41, + 43 + ], + [ + 44, + 46 + ], + [ + 45, + 47 + ], + [ + 48, + 50 + ], + [ + 49, + 51 + ], + [ + 52, + 54 + ], + [ + 53, + 55 + ], + [ + 56, + 58 + ], + [ + 57, + 59 + ], + [ + 60, + 62 + ], + [ + 61, + 63 + ] + ], + "kinds": [ + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly" + ], + "permutation": [ + 0, + 2, + 1, + 3, + 4, + 6, + 5, + 7, + 8, + 10, + 9, + 11, + 12, + 14, + 13, + 15, + 16, + 18, + 17, + 19, + 20, + 22, + 21, + 23, + 24, + 26, + 25, + 27, + 28, + 30, + 29, + 31, + 32, + 34, + 33, + 35, + 36, + 38, + 37, + 39, + 40, + 42, + 41, + 43, + 44, + 46, + 45, + 47, + 48, + 50, + 49, + 51, + 52, + 54, + 53, + 55, + 56, + 58, + 57, + 59, + 60, + 62, + 61, + 63 + ], + "route_layers": 11 + }, + { + "begin": 303, + "end": 404, + "pairs": [ + [ + 0, + 4 + ], + [ + 1, + 5 + ], + [ + 2, + 6 + ], + [ + 3, + 7 + ], + [ + 8, + 12 + ], + [ + 9, + 13 + ], + [ + 10, + 14 + ], + [ + 11, + 15 + ], + [ + 16, + 20 + ], + [ + 17, + 21 + ], + [ + 18, + 22 + ], + [ + 19, + 23 + ], + [ + 24, + 28 + ], + [ + 25, + 29 + ], + [ + 26, + 30 + ], + [ + 27, + 31 + ], + [ + 32, + 36 + ], + [ + 33, + 37 + ], + [ + 34, + 38 + ], + [ + 35, + 39 + ], + [ + 40, + 44 + ], + [ + 41, + 45 + ], + [ + 42, + 46 + ], + [ + 43, + 47 + ], + [ + 48, + 52 + ], + [ + 49, + 53 + ], + [ + 50, + 54 + ], + [ + 51, + 55 + ], + [ + 56, + 60 + ], + [ + 57, + 61 + ], + [ + 58, + 62 + ], + [ + 59, + 63 + ] + ], + "kinds": [ + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly" + ], + "permutation": [ + 0, + 2, + 4, + 6, + 1, + 3, + 5, + 7, + 8, + 10, + 12, + 14, + 9, + 11, + 13, + 15, + 16, + 18, + 20, + 22, + 17, + 19, + 21, + 23, + 24, + 26, + 28, + 30, + 25, + 27, + 29, + 31, + 32, + 34, + 36, + 38, + 33, + 35, + 37, + 39, + 40, + 42, + 44, + 46, + 41, + 43, + 45, + 47, + 48, + 50, + 52, + 54, + 49, + 51, + 53, + 55, + 56, + 58, + 60, + 62, + 57, + 59, + 61, + 63 + ], + "route_layers": 11 + }, + { + "begin": 404, + "end": 505, + "pairs": [ + [ + 0, + 8 + ], + [ + 1, + 9 + ], + [ + 2, + 10 + ], + [ + 3, + 11 + ], + [ + 4, + 12 + ], + [ + 5, + 13 + ], + [ + 6, + 14 + ], + [ + 7, + 15 + ], + [ + 16, + 24 + ], + [ + 17, + 25 + ], + [ + 18, + 26 + ], + [ + 19, + 27 + ], + [ + 20, + 28 + ], + [ + 21, + 29 + ], + [ + 22, + 30 + ], + [ + 23, + 31 + ], + [ + 32, + 40 + ], + [ + 33, + 41 + ], + [ + 34, + 42 + ], + [ + 35, + 43 + ], + [ + 36, + 44 + ], + [ + 37, + 45 + ], + [ + 38, + 46 + ], + [ + 39, + 47 + ], + [ + 48, + 56 + ], + [ + 49, + 57 + ], + [ + 50, + 58 + ], + [ + 51, + 59 + ], + [ + 52, + 60 + ], + [ + 53, + 61 + ], + [ + 54, + 62 + ], + [ + 55, + 63 + ] + ], + "kinds": [ + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly" + ], + "permutation": [ + 0, + 2, + 4, + 6, + 8, + 10, + 12, + 14, + 1, + 3, + 5, + 7, + 9, + 11, + 13, + 15, + 16, + 18, + 20, + 22, + 24, + 26, + 28, + 30, + 17, + 19, + 21, + 23, + 25, + 27, + 29, + 31, + 32, + 34, + 36, + 38, + 40, + 42, + 44, + 46, + 33, + 35, + 37, + 39, + 41, + 43, + 45, + 47, + 48, + 50, + 52, + 54, + 56, + 58, + 60, + 62, + 49, + 51, + 53, + 55, + 57, + 59, + 61, + 63 + ], + "route_layers": 11 + }, + { + "begin": 505, + "end": 606, + "pairs": [ + [ + 0, + 16 + ], + [ + 1, + 17 + ], + [ + 2, + 18 + ], + [ + 3, + 19 + ], + [ + 4, + 20 + ], + [ + 5, + 21 + ], + [ + 6, + 22 + ], + [ + 7, + 23 + ], + [ + 8, + 24 + ], + [ + 9, + 25 + ], + [ + 10, + 26 + ], + [ + 11, + 27 + ], + [ + 12, + 28 + ], + [ + 13, + 29 + ], + [ + 14, + 30 + ], + [ + 15, + 31 + ], + [ + 32, + 48 + ], + [ + 33, + 49 + ], + [ + 34, + 50 + ], + [ + 35, + 51 + ], + [ + 36, + 52 + ], + [ + 37, + 53 + ], + [ + 38, + 54 + ], + [ + 39, + 55 + ], + [ + 40, + 56 + ], + [ + 41, + 57 + ], + [ + 42, + 58 + ], + [ + 43, + 59 + ], + [ + 44, + 60 + ], + [ + 45, + 61 + ], + [ + 46, + 62 + ], + [ + 47, + 63 + ] + ], + "kinds": [ + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly" + ], + "permutation": [ + 0, + 2, + 4, + 6, + 8, + 10, + 12, + 14, + 16, + 18, + 20, + 22, + 24, + 26, + 28, + 30, + 1, + 3, + 5, + 7, + 9, + 11, + 13, + 15, + 17, + 19, + 21, + 23, + 25, + 27, + 29, + 31, + 32, + 34, + 36, + 38, + 40, + 42, + 44, + 46, + 48, + 50, + 52, + 54, + 56, + 58, + 60, + 62, + 33, + 35, + 37, + 39, + 41, + 43, + 45, + 47, + 49, + 51, + 53, + 55, + 57, + 59, + 61, + 63 + ], + "route_layers": 11 + }, + { + "begin": 606, + "end": 707, + "pairs": [ + [ + 0, + 32 + ], + [ + 1, + 33 + ], + [ + 2, + 34 + ], + [ + 3, + 35 + ], + [ + 4, + 36 + ], + [ + 5, + 37 + ], + [ + 6, + 38 + ], + [ + 7, + 39 + ], + [ + 8, + 40 + ], + [ + 9, + 41 + ], + [ + 10, + 42 + ], + [ + 11, + 43 + ], + [ + 12, + 44 + ], + [ + 13, + 45 + ], + [ + 14, + 46 + ], + [ + 15, + 47 + ], + [ + 16, + 48 + ], + [ + 17, + 49 + ], + [ + 18, + 50 + ], + [ + 19, + 51 + ], + [ + 20, + 52 + ], + [ + 21, + 53 + ], + [ + 22, + 54 + ], + [ + 23, + 55 + ], + [ + 24, + 56 + ], + [ + 25, + 57 + ], + [ + 26, + 58 + ], + [ + 27, + 59 + ], + [ + 28, + 60 + ], + [ + 29, + 61 + ], + [ + 30, + 62 + ], + [ + 31, + 63 + ] + ], + "kinds": [ + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly", + "butterfly" + ], + "permutation": [ + 0, + 2, + 4, + 6, + 8, + 10, + 12, + 14, + 16, + 18, + 20, + 22, + 24, + 26, + 28, + 30, + 32, + 34, + 36, + 38, + 40, + 42, + 44, + 46, + 48, + 50, + 52, + 54, + 56, + 58, + 60, + 62, + 1, + 3, + 5, + 7, + 9, + 11, + 13, + 15, + 17, + 19, + 21, + 23, + 25, + 27, + 29, + 31, + 33, + 35, + 37, + 39, + 41, + 43, + 45, + 47, + 49, + 51, + 53, + 55, + 57, + 59, + 61, + 63 + ], + "route_layers": 11 + } + ], + "logical_plan_sha256": "b6c76ad78dc67f496aa7abebb41754520e951f7c27b5b56fef4add85f816cee1", + "reference_stages_sha256": "94f7fbb07987d183eeb6e82505348c3b2b027caa7808e66f4b318f8fc7d0588e", + "stored_stages_sha256": "3a29c2c08b8300e4ce5fb23c2d5537ee57994a41780e1d9f1522ef140a22aa1a", + "source_original_ast_sha256": "15211aaf783ddbe8714fb7c5c039e932422028d729566ce763a4c8016a82e537", + "source_adapted_ast_sha256": "550954f4c90dde9cae269f71042d223a2cba81d5a91dcfa7219fb36f338d1313", + "tensor_ast_sha256": "2b5d66a710ef21aaa1bcfc1db64267067455a5ba465694876a1c2a57fda2f357", + "phases": { + "phase_bits": 25, + "oracle_bits": 114, + "certificates": [ + { + "denominator": 1, + "numerator": 0, + "unit": [ + "1", + "0" + ], + "error_bound": "0", + "parameter": null + }, + { + "denominator": 4, + "numerator": 3, + "unit": [ + "0", + "-1" + ], + "error_bound": "0", + "parameter": null + }, + { + "denominator": 8, + "numerator": 1, + "unit": [ + "238777861786304512/337682890526211113", + "238777861777212375/337682890526211113" + ], + "error_bound": "23604537191234136034993879066085739048141/876674905830103034105019824628808245599380569063424", + "parameter": "-222379213/536870912" + }, + { + "denominator": 8, + "numerator": 5, + "unit": [ + "-238777861777212375/337682890526211113", + "-238777861786304512/337682890526211113" + ], + "error_bound": "188836297529873088279978384842818535485281/7013399246640824272840158597030465964795044552507392", + "parameter": "222379213/536870912" + }, + { + "denominator": 8, + "numerator": 7, + "unit": [ + "238777861786304512/337682890526211113", + "-238777861777212375/337682890526211113" + ], + "error_bound": "23604537191234136034993879066085739048141/876674905830103034105019824628808245599380569063424", + "parameter": "222379213/536870912" + }, + { + "denominator": 16, + "numerator": 9, + "unit": [ + "-4325409619789407/4681789634951585", + "-1791643325825024/4681789634951585" + ], + "error_bound": "9469181307827553446557655566290405084523/24309241613880032225359744315912889106725769052160", + "parameter": "13348783/67108864" + }, + { + "denominator": 16, + "numerator": 11, + "unit": [ + "-1791643325825024/4681789634951585", + "-4325409619789407/4681789634951585" + ], + "error_bound": "37876725231310213786230252403780459162877/97236966455520128901438977263651556426903076208640", + "parameter": "-13348783/67108864" + }, + { + "denominator": 16, + "numerator": 13, + "unit": [ + "1791643325825024/4681789634951585", + "-4325409619789407/4681789634951585" + ], + "error_bound": "2367295326956888361639377607702930396347/6077310403470008056339936078978222276681442263040", + "parameter": "13348783/67108864" + }, + { + "denominator": 16, + "numerator": 15, + "unit": [ + "4325409619789407/4681789634951585", + "-1791643325825024/4681789634951585" + ], + "error_bound": "37876725231310213786230008950719441680457/97236966455520128901438977263651556426903076208640", + "parameter": "-13348783/67108864" + }, + { + "denominator": 32, + "numerator": 17, + "unit": [ + "-71358595261125711/72756592814730161", + "-14194107240939520/72756592814730161" + ], + "error_bound": "2985997716649052600155397208832092894965263/1511095313238484108292780875529854682352919274061824", + "parameter": "26438585/268435456" + }, + { + "denominator": 32, + "numerator": 19, + "unit": [ + "-261707644404835623/314753107898587865", + "-174867457784152064/314753107898587865" + ], + "error_bound": "1235543436583271743414248010990631942545653/817145786677955706173216675369175943351247589867520", + "parameter": "162858011/536870912" + }, + { + "denominator": 32, + "numerator": 21, + "unit": [ + "-174867457784152064/314753107898587865", + "-261707644404835623/314753107898587865" + ], + "error_bound": "4942173746333086973656981027603751319607337/3268583146711822824692866701476703773404990359470080", + "parameter": "-162858011/536870912" + }, + { + "denominator": 32, + "numerator": 23, + "unit": [ + "-14194107240939520/72756592814730161", + "-71358595261125711/72756592814730161" + ], + "error_bound": "1492998858324526300077692747510324861704671/755547656619242054146390437764927341176459637030912", + "parameter": "-26438585/268435456" + }, + { + "denominator": 32, + "numerator": 25, + "unit": [ + "14194107240939520/72756592814730161", + "-71358595261125711/72756592814730161" + ], + "error_bound": "1492998858324526300077692310970767973323705/755547656619242054146390437764927341176459637030912", + "parameter": "26438585/268435456" + }, + { + "denominator": 32, + "numerator": 27, + "unit": [ + "174867457784152064/314753107898587865", + "-261707644404835623/314753107898587865" + ], + "error_bound": "9884347492666173947313949150330078797112209/6537166293423645649385733402953407546809980718940160", + "parameter": "162858011/536870912" + }, + { + "denominator": 32, + "numerator": 29, + "unit": [ + "261707644404835623/314753107898587865", + "-174867457784152064/314753107898587865" + ], + "error_bound": "2471086873166543486828486264634919028867491/1634291573355911412346433350738351886702495179735040", + "parameter": "-162858011/536870912" + }, + { + "denominator": 32, + "numerator": 31, + "unit": [ + "71358595261125711/72756592814730161", + "-14194107240939520/72756592814730161" + ], + "error_bound": "1492998858324526300077691437891654196561773/755547656619242054146390437764927341176459637030912", + "parameter": "-26438585/268435456" + }, + { + "denominator": 64, + "numerator": 33, + "unit": [ + "-287534747289912015/288926005013511473", + "-28319701163573248/288926005013511473" + ], + "error_bound": "8790636494944588568650059485437779110640075/6000758352722693915548073872525083735301345752645632", + "parameter": "26374777/536870912" + }, + { + "denominator": 64, + "numerator": 35, + "unit": [ + "-281888280263737015/294572472039686473", + "-85509875064373248/294572472039686473" + ], + "error_bound": "610982698681697151396254792905721103642269/1529507721182502421714353287324619083043504450961408", + "parameter": "79637277/536870912" + }, + { + "denominator": 64, + "numerator": 37, + "unit": [ + "-270145730870531175/306315021432892313", + "-144395901769613312/306315021432892313" + ], + "error_bound": "112225339974279268511980757041037241949555/99404907719252196946154656587271747928507052720128", + "parameter": "134479163/536870912" + }, + { + "denominator": 64, + "numerator": 39, + "unit": [ + "-15708106323657343/20320690695306625", + "-12891309710770176/20320690695306625" + ], + "error_bound": "155074279782370029654367908208497684125247/422044233841993964595027259210050499324615327744000", + "parameter": "48023871/134217728" + }, + { + "denominator": 64, + "numerator": 41, + "unit": [ + "-12891309710770176/20320690695306625", + "-15708106323657343/20320690695306625" + ], + "error_bound": "77537139891185014827183537530089588276811/211022116920996982297513629605025249662307663872000", + "parameter": "-48023871/134217728" + }, + { + "denominator": 64, + "numerator": 43, + "unit": [ + "-144395901769613312/306315021432892313", + "-270145730870531175/306315021432892313" + ], + "error_bound": "7182421758353873184766743026479604554709541/6361914094032140604553898021585391867424451374088192", + "parameter": "-134479163/536870912" + }, + { + "denominator": 64, + "numerator": 45, + "unit": [ + "-85509875064373248/294572472039686473", + "-281888280263737015/294572472039686473" + ], + "error_bound": "1221965397363394302792488671165927389544955/3059015442365004843428706574649238166087008901922816", + "parameter": "-79637277/536870912" + }, + { + "denominator": 64, + "numerator": 47, + "unit": [ + "-28319701163573248/288926005013511473", + "-287534747289912015/288926005013511473" + ], + "error_bound": "2197659123736147142162500497290695355464237/1500189588180673478887018468131270933825336438161408", + "parameter": "-26374777/536870912" + }, + { + "denominator": 64, + "numerator": 49, + "unit": [ + "28319701163573248/288926005013511473", + "-287534747289912015/288926005013511473" + ], + "error_bound": "2197659123736147142162500497290695355464237/1500189588180673478887018468131270933825336438161408", + "parameter": "26374777/536870912" + }, + { + "denominator": 64, + "numerator": 51, + "unit": [ + "85509875064373248/294572472039686473", + "-281888280263737015/294572472039686473" + ], + "error_bound": "2443930794726788605584973512889718263165761/6118030884730009686857413149298476332174017803845632", + "parameter": "79637277/536870912" + }, + { + "denominator": 64, + "numerator": 53, + "unit": [ + "144395901769613312/306315021432892313", + "-270145730870531175/306315021432892313" + ], + "error_bound": "897802719794234148095841461602976442211745/795239261754017575569237252698173983428056421761024", + "parameter": "134479163/536870912" + }, + { + "denominator": 64, + "numerator": 55, + "unit": [ + "12891309710770176/20320690695306625", + "-15708106323657343/20320690695306625" + ], + "error_bound": "155074279782370029654365876139428153462747/422044233841993964595027259210050499324615327744000", + "parameter": "48023871/134217728" + }, + { + "denominator": 64, + "numerator": 57, + "unit": [ + "15708106323657343/20320690695306625", + "-12891309710770176/20320690695306625" + ], + "error_bound": "155074279782370029654365794856665372236247/422044233841993964595027259210050499324615327744000", + "parameter": "-48023871/134217728" + }, + { + "denominator": 64, + "numerator": 59, + "unit": [ + "270145730870531175/306315021432892313", + "-144395901769613312/306315021432892313" + ], + "error_bound": "1795605439588468296191682004260888585746551/1590478523508035151138474505396347966856112843522048", + "parameter": "-134479163/536870912" + }, + { + "denominator": 64, + "numerator": 61, + "unit": [ + "281888280263737015/294572472039686473", + "-85509875064373248/294572472039686473" + ], + "error_bound": "1221965397363394302792483368861430675188441/3059015442365004843428706574649238166087008901922816", + "parameter": "-79637277/536870912" + }, + { + "denominator": 64, + "numerator": 63, + "unit": [ + "287534747289912015/288926005013511473", + "-28319701163573248/288926005013511473" + ], + "error_bound": "4395318247472294284324997238543325535279325/3000379176361346957774036936262541867650672876322816", + "parameter": "-26374777/536870912" + } + ] + }, + "budget": { + "prefix_bound": 16384, + "phase_error": "3/8388608", + "coefficient_error": "357/1073741824", + "rounding_error": "707/274877906944", + "total_error": "190403/274877906944", + "amplitude_bound": "131072", + "coefficient_bits": 65, + "data_bits": 79, + "temporary_bits": 145 + }, + "label": "sixtyfour-forward", + "input_sha256": "666323adb5ac8c4c0f91a23df82a3e9f423ca82bc96644cf1152fdd8d5df67c8", + "output_sha256": "92c0a050e368cfe3de6b612dc068bcc4b6147d732fe494e7e75776adb805d13c", + "rational_target_sha256": "175ee256b48b0985717e35b00261d68af8315c50284a851eadc3d74a8fb368fc", + "exact_matrix_sha256": null, + "rounded_rational_error_squared_upper": "85311855647153695/1461501637330902918203684832716283019655932542976", + "ideal_error_squared_upper": "1286164109818979639624951717/730750818665451459101842416358141509827966271488", + "nonzero_rounded_error": true, + "nonzero_spectator_error": false, + "spectator_error_squared_upper": "0", + "statistics": { + "real_products": 91392, + "complex_roundings": 45248, + "h_pair_calls": 11200, + "maximum_data_numerator_bits": 59, + "maximum_temporary_numerator_bits": 119, + "maximum_temporary_fractional_bits": 119 + }, + "trace": [ + { + "stage": 0, + "kind": "H", + "output_sha256": "17a031bd7c784d78583a0c9818b0e0222e30bf6f96b982a751a3a5107cfbdac3" + }, + { + "stage": 1, + "kind": "D", + "output_sha256": "3a3f5e56432f980f4aad84c8928d923c7320752192fab3080bc32468af568cd6" + }, + { + "stage": 2, + "kind": "H", + "output_sha256": "5826824b1d62957f33a38350d59e02a757371c3f71c4824a2cec50cf9c11a3c6" + }, + { + "stage": 3, + "kind": "D", + "output_sha256": "5826824b1d62957f33a38350d59e02a757371c3f71c4824a2cec50cf9c11a3c6" + }, + { + "stage": 4, + "kind": "H", + "output_sha256": "abb1210bfc75edb608df79cc40c35dd89f37b38dbb0f37b93ac762dda1928b13" + }, + { + "stage": 5, + "kind": "D", + "output_sha256": "5903978c7d0f08a3b6f117c6eb5abb7f618b99642850ef4b5729dafc2b0792ee" + }, + { + "stage": 6, + "kind": "H", + "output_sha256": "f3fe0d7a62a0c34efeeb5e8702840fc044ad08d50cc9c9a2eae901a76caff44a" + }, + { + "stage": 7, + "kind": "D", + "output_sha256": "f3fe0d7a62a0c34efeeb5e8702840fc044ad08d50cc9c9a2eae901a76caff44a" + }, + { + "stage": 8, + "kind": "H", + "output_sha256": "c20ae7fba0e5dbec59645d287d5d48a203986b4b78fb614c436c521893afe6c7" + }, + { + "stage": 9, + "kind": "D", + "output_sha256": "07420ce475a4caac617b2d3aa7a8d6940ce8b1b17efb87a807ee61201a7c4701" + }, + { + "stage": 10, + "kind": "H", + "output_sha256": "b5184e38681508687a16a9fd648512cb220cd17466c2c89dbf7d45f23c57b4d7" + }, + { + "stage": 11, + "kind": "D", + "output_sha256": "b5184e38681508687a16a9fd648512cb220cd17466c2c89dbf7d45f23c57b4d7" + }, + { + "stage": 12, + "kind": "H", + "output_sha256": "70c4fd45793202d6fa45094884ca6d8e8f4c3e97e8a43e7ff55a4ef08253ca42" + }, + { + "stage": 13, + "kind": "D", + "output_sha256": "ef5f3fc11c2c90c6de4a1d552106d61b46f2c1cc3317b49a5597b23b3eacf963" + }, + { + "stage": 14, + "kind": "H", + "output_sha256": "31549cb3029fc48d93633cea5b7c7d97ce0d6ff1e5d5f9bbc3c94642ad94a8e8" + }, + { + "stage": 15, + "kind": "D", + "output_sha256": "31549cb3029fc48d93633cea5b7c7d97ce0d6ff1e5d5f9bbc3c94642ad94a8e8" + }, + { + "stage": 16, + "kind": "H", + "output_sha256": "b5b9022777abaf51d576f4a9cb77d7c56875d0149fe84d9d4d9017f86095a469" + }, + { + "stage": 17, + "kind": "D", + "output_sha256": "7b1ad37aee4c388d39c7235bd6e709946bbe79774eac20d10691dd8d6199f661" + }, + { + "stage": 18, + "kind": "H", + "output_sha256": "ccc85e456665d5da4860e84aa6f3de7e262ffd9831e462a7debc340360bce69a" + }, + { + "stage": 19, + "kind": "D", + "output_sha256": "ccc85e456665d5da4860e84aa6f3de7e262ffd9831e462a7debc340360bce69a" + }, + { + "stage": 20, + "kind": "H", + "output_sha256": "e5d4b4d2c36ec7e524a7043713e7a3ab9042cb38bb25a268d3324f1adb3b8dbc" + }, + { + "stage": 21, + "kind": "D", + "output_sha256": "c17a602b1fbc2811acc7e118044a29fff517168183fbeb62590f31cc0dea92c7" + }, + { + "stage": 22, + "kind": "H", + "output_sha256": "1abd3494f4f6932701d78f120d11cba058e0f60b4a76c46079bc50ab9ba5b42f" + }, + { + "stage": 23, + "kind": "D", + "output_sha256": "1abd3494f4f6932701d78f120d11cba058e0f60b4a76c46079bc50ab9ba5b42f" + }, + { + "stage": 24, + "kind": "H", + "output_sha256": "dbfce708aa6da44742e73ed3472ca9420b162f7dbaacc9daa37806b1e6b08de8" + }, + { + "stage": 25, + "kind": "D", + "output_sha256": "18616805147b5409b0309c59a47ed0ed07036d632e073f672bdf03081a076fa2" + }, + { + "stage": 26, + "kind": "H", + "output_sha256": "0af795c4aea66963575689be36dda22c78171ad0a6333dc297f9e36f02979bb4" + }, + { + "stage": 27, + "kind": "D", + "output_sha256": "0af795c4aea66963575689be36dda22c78171ad0a6333dc297f9e36f02979bb4" + }, + { + "stage": 28, + "kind": "H", + "output_sha256": "7d3558271bfb30168023ed4a2bd4996329743d1b18aa9fa9f15cc0b0b231192b" + }, + { + "stage": 29, + "kind": "D", + "output_sha256": "8edfc04d5a446a21534e4bbc06d6036b364eb79d94f5f7f9bb3df1f1712eca32" + }, + { + "stage": 30, + "kind": "H", + "output_sha256": "5caedd83bc42a81352cdec4533eaef5b96e76795f03c14d488529a228162f14b" + }, + { + "stage": 31, + "kind": "D", + "output_sha256": "5caedd83bc42a81352cdec4533eaef5b96e76795f03c14d488529a228162f14b" + }, + { + "stage": 32, + "kind": "H", + "output_sha256": "05f736bfd39fd374bf6fa61f64a71cae97660bf9d22a388d27aff079afd66c88" + }, + { + "stage": 33, + "kind": "D", + "output_sha256": "2edf361537f70f5fda1e461e15821f32efcb39582593dfff60432c968c9e536d" + }, + { + "stage": 34, + "kind": "H", + "output_sha256": "0caa3e561125052dde861edd56ed3eccbdd37409e94d493c0dba0696a90449dd" + }, + { + "stage": 35, + "kind": "D", + "output_sha256": "0caa3e561125052dde861edd56ed3eccbdd37409e94d493c0dba0696a90449dd" + }, + { + "stage": 36, + "kind": "H", + "output_sha256": "94ee6107618e8231720a34b0f43b792c97602bad593e3b3ee3d9eeec0bc0f688" + }, + { + "stage": 37, + "kind": "D", + "output_sha256": "9c6c12d9bcf58b7459e8803fcb7f387197f1c8b58ce03449f5417f55520b5257" + }, + { + "stage": 38, + "kind": "H", + "output_sha256": "d57e768ae3518884058764ea3508b06847878f396167015452b6a07e65a2b2fd" + }, + { + "stage": 39, + "kind": "D", + "output_sha256": "d57e768ae3518884058764ea3508b06847878f396167015452b6a07e65a2b2fd" + }, + { + "stage": 40, + "kind": "H", + "output_sha256": "a446515c83575f2ba2fc13dedf9d7c30bfe99a8ffe190f6f31994e66501b1810" + }, + { + "stage": 41, + "kind": "D", + "output_sha256": "05fc0daa4c635b9928737ecefbb4caa6922ab2f59bed1fae5debadd1e0c78fbf" + }, + { + "stage": 42, + "kind": "H", + "output_sha256": "60c427b3f806f14be05633873f5022b315cbdbde8936865d0bfef3a32cda1d78" + }, + { + "stage": 43, + "kind": "D", + "output_sha256": "60c427b3f806f14be05633873f5022b315cbdbde8936865d0bfef3a32cda1d78" + }, + { + "stage": 44, + "kind": "D", + "output_sha256": "60c427b3f806f14be05633873f5022b315cbdbde8936865d0bfef3a32cda1d78" + }, + { + "stage": 45, + "kind": "H", + "output_sha256": "9ee87c92740194562d683335fc5f1603c80adb3edd0f7201fe9e24f46938d299" + }, + { + "stage": 46, + "kind": "D", + "output_sha256": "804a960c25675bb2c582360aeccb7b8a8023e31589e112acc034768ae1064fa0" + }, + { + "stage": 47, + "kind": "H", + "output_sha256": "0b6e184b231314ab0fa7b27512696139a08e8731dfb4bfcd3c50922d009b89bd" + }, + { + "stage": 48, + "kind": "D", + "output_sha256": "0b6e184b231314ab0fa7b27512696139a08e8731dfb4bfcd3c50922d009b89bd" + }, + { + "stage": 49, + "kind": "H", + "output_sha256": "e5bc69aeaa9c92249317808c2c4d73e89881ea90861e4ac8ee1979e28c7ba524" + }, + { + "stage": 50, + "kind": "D", + "output_sha256": "804a960c25675bb2c582360aeccb7b8a8023e31589e112acc034768ae1064fa0" + }, + { + "stage": 51, + "kind": "H", + "output_sha256": "0b6e184b231314ab0fa7b27512696139a08e8731dfb4bfcd3c50922d009b89bd" + }, + { + "stage": 52, + "kind": "D", + "output_sha256": "0b6e184b231314ab0fa7b27512696139a08e8731dfb4bfcd3c50922d009b89bd" + }, + { + "stage": 53, + "kind": "H", + "output_sha256": "e5bc69aeaa9c92249317808c2c4d73e89881ea90861e4ac8ee1979e28c7ba524" + }, + { + "stage": 54, + "kind": "D", + "output_sha256": "804a960c25675bb2c582360aeccb7b8a8023e31589e112acc034768ae1064fa0" + }, + { + "stage": 55, + "kind": "H", + "output_sha256": "0b6e184b231314ab0fa7b27512696139a08e8731dfb4bfcd3c50922d009b89bd" + }, + { + "stage": 56, + "kind": "D", + "output_sha256": "0b6e184b231314ab0fa7b27512696139a08e8731dfb4bfcd3c50922d009b89bd" + }, + { + "stage": 57, + "kind": "H", + "output_sha256": "e5bc69aeaa9c92249317808c2c4d73e89881ea90861e4ac8ee1979e28c7ba524" + }, + { + "stage": 58, + "kind": "D", + "output_sha256": "0a17f08ed788d7fff44942b39dc95359b495919bb9f8fca60113762bcc9280d2" + }, + { + "stage": 59, + "kind": "H", + "output_sha256": "83d1a6e0e2e02750a1ba79cd82a803e300dad82b763073cbc7a74636ea12e2e1" + }, + { + "stage": 60, + "kind": "D", + "output_sha256": "83d1a6e0e2e02750a1ba79cd82a803e300dad82b763073cbc7a74636ea12e2e1" + }, + { + "stage": 61, + "kind": "H", + "output_sha256": "a26b4a5cf538cd8c2eb9ce1912b82b33b8db755e7f26417536e11810ba3af095" + }, + { + "stage": 62, + "kind": "D", + "output_sha256": "764766ef9a7acb2ec4114244e6dba63778c37dc927e930bcaa559d593cd16e62" + }, + { + "stage": 63, + "kind": "H", + "output_sha256": "349b3d53edd4e4de12b5a74171896bc128bf138e927e07c6647510500d997e4b" + }, + { + "stage": 64, + "kind": "D", + "output_sha256": "349b3d53edd4e4de12b5a74171896bc128bf138e927e07c6647510500d997e4b" + }, + { + "stage": 65, + "kind": "H", + "output_sha256": "4dd9ab0c0e9ce6e638d5949cb7888b9af7fc0a2c3a9ffd23b3648afb23d56a66" + }, + { + "stage": 66, + "kind": "D", + "output_sha256": "9228eab3341044e5ac1bb970b236a0730ca7537f20c39043cb280193ae3ed8ee" + }, + { + "stage": 67, + "kind": "H", + "output_sha256": "1e51a70a72aa1c2f5fae91dd3b409a2cf5981fe790ec00d7ae9ec74ccf329606" + }, + { + "stage": 68, + "kind": "D", + "output_sha256": "1e51a70a72aa1c2f5fae91dd3b409a2cf5981fe790ec00d7ae9ec74ccf329606" + }, + { + "stage": 69, + "kind": "H", + "output_sha256": "f5427d4f6bab1409f30fe1485c7c15c7363c9a85afb9027a1619d0925efe3f61" + }, + { + "stage": 70, + "kind": "D", + "output_sha256": "720d5f3baa98122e97c4892e6200eb1f0162d014f372444e33b2e926c340bf2b" + }, + { + "stage": 71, + "kind": "H", + "output_sha256": "73a8b2a1902979975a47975f273e8a0670fae37ad608c7c2438e7944a0205e51" + }, + { + "stage": 72, + "kind": "D", + "output_sha256": "73a8b2a1902979975a47975f273e8a0670fae37ad608c7c2438e7944a0205e51" + }, + { + "stage": 73, + "kind": "H", + "output_sha256": "1784cd451af31f4390d1fdb5f083b5e560822cb340732c485b9ead2ac8e731ad" + }, + { + "stage": 74, + "kind": "D", + "output_sha256": "5cb18526fa7cd79803ebcfed159767ab1916c9c0ea0bc279a0b28813c7480032" + }, + { + "stage": 75, + "kind": "H", + "output_sha256": "7c447d59e77ccf083a6a7a38ba65e17bd89580f602cea71c066953e9a710e141" + }, + { + "stage": 76, + "kind": "D", + "output_sha256": "7c447d59e77ccf083a6a7a38ba65e17bd89580f602cea71c066953e9a710e141" + }, + { + "stage": 77, + "kind": "H", + "output_sha256": "e06b1115185474ab26e50520345519f2811abc971a762fc07e81451256a929fa" + }, + { + "stage": 78, + "kind": "D", + "output_sha256": "2ef3a654fc9f6bc5b29ffc31e10dfeddd845b1d70fc0a5af73727b6a231df226" + }, + { + "stage": 79, + "kind": "H", + "output_sha256": "d55f9cc5db176f64fe8bb1dedf3e6198c112d64b0748de2a8289049199807daa" + }, + { + "stage": 80, + "kind": "D", + "output_sha256": "d55f9cc5db176f64fe8bb1dedf3e6198c112d64b0748de2a8289049199807daa" + }, + { + "stage": 81, + "kind": "H", + "output_sha256": "15dc1da752f01410b79a44a5c6a30d9db71087b5a593364f9b7bdae081902644" + }, + { + "stage": 82, + "kind": "D", + "output_sha256": "3da8839b47f233b3b9168678a6fb77f06c50bca635b8dbf6bd85b6525becf24e" + }, + { + "stage": 83, + "kind": "H", + "output_sha256": "b7f25bade43747f5e9ea7b4fdff1ded9f57b800a11f7a1831d333ad5783a889d" + }, + { + "stage": 84, + "kind": "D", + "output_sha256": "b7f25bade43747f5e9ea7b4fdff1ded9f57b800a11f7a1831d333ad5783a889d" + }, + { + "stage": 85, + "kind": "H", + "output_sha256": "e5fe0663d0b2594e13effb94b9fa08210160da3601ab84cfba1b7be82dcac79d" + }, + { + "stage": 86, + "kind": "D", + "output_sha256": "f0f38e0c882f4f06e554a362922f5327122b273e9e7efd72f2d1fbe8670346a2" + }, + { + "stage": 87, + "kind": "H", + "output_sha256": "e46b0a816ba8dd96ae4a047092e478fc8c85b5771bae74627b5d3e2d0b480512" + }, + { + "stage": 88, + "kind": "D", + "output_sha256": "e46b0a816ba8dd96ae4a047092e478fc8c85b5771bae74627b5d3e2d0b480512" + }, + { + "stage": 89, + "kind": "H", + "output_sha256": "c9e700f633426d559e2a04356d55fcd6f95366f9e4e733cfd7c7cb97d5973f47" + }, + { + "stage": 90, + "kind": "D", + "output_sha256": "2459d4c7e21e2eaa614ce8296d313650b2d0a4f848a33e537bf1501a2fc399de" + }, + { + "stage": 91, + "kind": "H", + "output_sha256": "fc12ab00b36ee3dfbcef2c8ca228503457efb7d6466dae41c07accdcd4c23901" + }, + { + "stage": 92, + "kind": "D", + "output_sha256": "fc12ab00b36ee3dfbcef2c8ca228503457efb7d6466dae41c07accdcd4c23901" + }, + { + "stage": 93, + "kind": "H", + "output_sha256": "a42e7ca43666c503b31711fb365e1b826b050de9bf6ca9ad4f70ff00eff948a6" + }, + { + "stage": 94, + "kind": "D", + "output_sha256": "bb16fb06fc0e13aadf7329e391ee8f3d16cceceee872db478c55b37760b9cf56" + }, + { + "stage": 95, + "kind": "H", + "output_sha256": "1019728bd34062a5876f1104ff9d51e1b607f9ab9f47a5af00582cfe252c1679" + }, + { + "stage": 96, + "kind": "D", + "output_sha256": "1019728bd34062a5876f1104ff9d51e1b607f9ab9f47a5af00582cfe252c1679" + }, + { + "stage": 97, + "kind": "H", + "output_sha256": "26522cc7a8d71d569bd1f528c3359a8eb338f080a2e0d5964cb4330949d1c3cc" + }, + { + "stage": 98, + "kind": "D", + "output_sha256": "309f279c6342813caa89d3aaeaeb4c44f53ba44366f807da1b4798cd535549b9" + }, + { + "stage": 99, + "kind": "H", + "output_sha256": "289dcf479a996acedd525564a96f267cba0f3cad3f5126a53cdea601b74351b6" + }, + { + "stage": 100, + "kind": "D", + "output_sha256": "289dcf479a996acedd525564a96f267cba0f3cad3f5126a53cdea601b74351b6" + }, + { + "stage": 101, + "kind": "H", + "output_sha256": "cbd61b652cde633328ed762dab4a9d26ebb55740ac45aea70b4f193793ac8aac" + }, + { + "stage": 102, + "kind": "D", + "output_sha256": "309f279c6342813caa89d3aaeaeb4c44f53ba44366f807da1b4798cd535549b9" + }, + { + "stage": 103, + "kind": "H", + "output_sha256": "289dcf479a996acedd525564a96f267cba0f3cad3f5126a53cdea601b74351b6" + }, + { + "stage": 104, + "kind": "D", + "output_sha256": "289dcf479a996acedd525564a96f267cba0f3cad3f5126a53cdea601b74351b6" + }, + { + "stage": 105, + "kind": "H", + "output_sha256": "e1238d4277aaceb554d841dcaba6dab0180b0f9758a5cbe03ef28ec418fcb487" + }, + { + "stage": 106, + "kind": "D", + "output_sha256": "3c0487af7f9f734395cff7ceff38084593904367ba19f3095c9a8c84a7f19661" + }, + { + "stage": 107, + "kind": "H", + "output_sha256": "289dcf479a996acedd525564a96f267cba0f3cad3f5126a53cdea601b74351b6" + }, + { + "stage": 108, + "kind": "D", + "output_sha256": "289dcf479a996acedd525564a96f267cba0f3cad3f5126a53cdea601b74351b6" + }, + { + "stage": 109, + "kind": "H", + "output_sha256": "a6c0ff35cdf39b5ab1bbaae45faa610bf5384dbd08233ca31b43e4bfb74a0a17" + }, + { + "stage": 110, + "kind": "D", + "output_sha256": "9920934b456b2fd959e8095bad0c3ff005e5208d47e4e5acedb67b7e9ef5d150" + }, + { + "stage": 111, + "kind": "H", + "output_sha256": "289dcf479a996acedd525564a96f267cba0f3cad3f5126a53cdea601b74351b6" + }, + { + "stage": 112, + "kind": "D", + "output_sha256": "289dcf479a996acedd525564a96f267cba0f3cad3f5126a53cdea601b74351b6" + }, + { + "stage": 113, + "kind": "H", + "output_sha256": "c0ea61a2e93f5ac951b57d81ce4b445a0bc4b50e71901104c30c8044ecd0d805" + }, + { + "stage": 114, + "kind": "D", + "output_sha256": "7523c1ca0275e5189f2e2bfd4d6c77a64ef2ffe2d210d281647fc64fd6d0f91e" + }, + { + "stage": 115, + "kind": "H", + "output_sha256": "289dcf479a996acedd525564a96f267cba0f3cad3f5126a53cdea601b74351b6" + }, + { + "stage": 116, + "kind": "D", + "output_sha256": "289dcf479a996acedd525564a96f267cba0f3cad3f5126a53cdea601b74351b6" + }, + { + "stage": 117, + "kind": "H", + "output_sha256": "596dfb7e6729ad3aa13556a780a8a26f094959db6d40e6055563988d3522a7e1" + }, + { + "stage": 118, + "kind": "D", + "output_sha256": "073829dc0ebefcea309657202a180eb02110b392261b29e0bdfc47b583991f8b" + }, + { + "stage": 119, + "kind": "H", + "output_sha256": "289dcf479a996acedd525564a96f267cba0f3cad3f5126a53cdea601b74351b6" + }, + { + "stage": 120, + "kind": "D", + "output_sha256": "289dcf479a996acedd525564a96f267cba0f3cad3f5126a53cdea601b74351b6" + }, + { + "stage": 121, + "kind": "H", + "output_sha256": "fa6d1411e8325f998580ca6bcdbd379e54a187f40b33de70dd6d62b163f191b9" + }, + { + "stage": 122, + "kind": "D", + "output_sha256": "8b405a6af695705983c0ff737a86933a119845b0157b06e8f370993c73b57ffe" + }, + { + "stage": 123, + "kind": "H", + "output_sha256": "289dcf479a996acedd525564a96f267cba0f3cad3f5126a53cdea601b74351b6" + }, + { + "stage": 124, + "kind": "D", + "output_sha256": "289dcf479a996acedd525564a96f267cba0f3cad3f5126a53cdea601b74351b6" + }, + { + "stage": 125, + "kind": "H", + "output_sha256": "596dfb7e6729ad3aa13556a780a8a26f094959db6d40e6055563988d3522a7e1" + }, + { + "stage": 126, + "kind": "D", + "output_sha256": "073829dc0ebefcea309657202a180eb02110b392261b29e0bdfc47b583991f8b" + }, + { + "stage": 127, + "kind": "H", + "output_sha256": "289dcf479a996acedd525564a96f267cba0f3cad3f5126a53cdea601b74351b6" + }, + { + "stage": 128, + "kind": "D", + "output_sha256": "289dcf479a996acedd525564a96f267cba0f3cad3f5126a53cdea601b74351b6" + }, + { + "stage": 129, + "kind": "H", + "output_sha256": "c0ea61a2e93f5ac951b57d81ce4b445a0bc4b50e71901104c30c8044ecd0d805" + }, + { + "stage": 130, + "kind": "D", + "output_sha256": "7523c1ca0275e5189f2e2bfd4d6c77a64ef2ffe2d210d281647fc64fd6d0f91e" + }, + { + "stage": 131, + "kind": "H", + "output_sha256": "289dcf479a996acedd525564a96f267cba0f3cad3f5126a53cdea601b74351b6" + }, + { + "stage": 132, + "kind": "D", + "output_sha256": "289dcf479a996acedd525564a96f267cba0f3cad3f5126a53cdea601b74351b6" + }, + { + "stage": 133, + "kind": "H", + "output_sha256": "a6c0ff35cdf39b5ab1bbaae45faa610bf5384dbd08233ca31b43e4bfb74a0a17" + }, + { + "stage": 134, + "kind": "D", + "output_sha256": "9920934b456b2fd959e8095bad0c3ff005e5208d47e4e5acedb67b7e9ef5d150" + }, + { + "stage": 135, + "kind": "H", + "output_sha256": "289dcf479a996acedd525564a96f267cba0f3cad3f5126a53cdea601b74351b6" + }, + { + "stage": 136, + "kind": "D", + "output_sha256": "289dcf479a996acedd525564a96f267cba0f3cad3f5126a53cdea601b74351b6" + }, + { + "stage": 137, + "kind": "H", + "output_sha256": "e1238d4277aaceb554d841dcaba6dab0180b0f9758a5cbe03ef28ec418fcb487" + }, + { + "stage": 138, + "kind": "D", + "output_sha256": "3c0487af7f9f734395cff7ceff38084593904367ba19f3095c9a8c84a7f19661" + }, + { + "stage": 139, + "kind": "H", + "output_sha256": "289dcf479a996acedd525564a96f267cba0f3cad3f5126a53cdea601b74351b6" + }, + { + "stage": 140, + "kind": "D", + "output_sha256": "289dcf479a996acedd525564a96f267cba0f3cad3f5126a53cdea601b74351b6" + }, + { + "stage": 141, + "kind": "H", + "output_sha256": "cbd61b652cde633328ed762dab4a9d26ebb55740ac45aea70b4f193793ac8aac" + }, + { + "stage": 142, + "kind": "D", + "output_sha256": "309f279c6342813caa89d3aaeaeb4c44f53ba44366f807da1b4798cd535549b9" + }, + { + "stage": 143, + "kind": "H", + "output_sha256": "289dcf479a996acedd525564a96f267cba0f3cad3f5126a53cdea601b74351b6" + }, + { + "stage": 144, + "kind": "D", + "output_sha256": "289dcf479a996acedd525564a96f267cba0f3cad3f5126a53cdea601b74351b6" + }, + { + "stage": 145, + "kind": "D", + "output_sha256": "e3325d71776ad0ae5ca10c50e202a6e8084171b0318444b04176432e33b61a7d" + }, + { + "stage": 146, + "kind": "H", + "output_sha256": "b31324e6374b7f7eec9ba079fa9944866fee60640238ba24cb9b0083c9f9c427" + }, + { + "stage": 147, + "kind": "D", + "output_sha256": "61866828f2712c44d4ef1f8a4fc951cfdf54b11054151fe92cff184ee231d298" + }, + { + "stage": 148, + "kind": "H", + "output_sha256": "cff1252df51b2d9cc5c77c8d32d2a5ca1c2b95f6af6b6780162eae2cbaee098c" + }, + { + "stage": 149, + "kind": "D", + "output_sha256": "b83f0894587eb904bb0530b566b5838a01c5d21f08f86a11a0dc73e6d9f23e1d" + }, + { + "stage": 150, + "kind": "H", + "output_sha256": "dd4371686c14f78b9e037612723a878d7654f3ddbec114f3dc5c50361add3138" + }, + { + "stage": 151, + "kind": "D", + "output_sha256": "38f81bb9c43259925785fb15fb5c8675e6d38c003d47ca8d066e5ddc92ac9cd0" + }, + { + "stage": 152, + "kind": "H", + "output_sha256": "8f9efbe94f6b38beca9ba7520bc3b1a3622d8359a1fabecf1db82856bb97f195" + }, + { + "stage": 153, + "kind": "D", + "output_sha256": "c59c049ddd78b26111ec798b43503062dec47d11ba9c846301d5531b388d949c" + }, + { + "stage": 154, + "kind": "H", + "output_sha256": "102ffcabc986c2a5030f9f04124b88a3e4f2928334c8ad080d8208dcb0de5a98" + }, + { + "stage": 155, + "kind": "D", + "output_sha256": "af437ac4ad673ca3909be2478df18c7f115b8c66dba976909620043d449ad77a" + }, + { + "stage": 156, + "kind": "H", + "output_sha256": "66982edd542f6efd91041f253bf93e709ab5ec2536f7fb9cccedbfa230446ab6" + }, + { + "stage": 157, + "kind": "D", + "output_sha256": "285f085a2ad37cbfe7e9055a5c1769d05a69427106d57fde4726764c9f85c4b1" + }, + { + "stage": 158, + "kind": "H", + "output_sha256": "75d5334cd41dccd51b562b02560f4f9f760b2248233a42b1fbdd0ae2396b46fa" + }, + { + "stage": 159, + "kind": "D", + "output_sha256": "68edfb75f1eeffa0d312281b59f7d1c8689b6cdf35c2eaeccde08f5db9b4d78d" + }, + { + "stage": 160, + "kind": "H", + "output_sha256": "6929da076037ba5b8735b3dc7c6c2fed23aeab55f329370fe7c9de9d74cb6405" + }, + { + "stage": 161, + "kind": "D", + "output_sha256": "6929da076037ba5b8735b3dc7c6c2fed23aeab55f329370fe7c9de9d74cb6405" + }, + { + "stage": 162, + "kind": "H", + "output_sha256": "1bb6c1362dc24cd030e0d23dff022788b086f043bdca3841dda81aeeeaf7d730" + }, + { + "stage": 163, + "kind": "D", + "output_sha256": "8d2b5b5387898a67650c966622c1982bca71418a99dc46d70c7510c84100eddf" + }, + { + "stage": 164, + "kind": "H", + "output_sha256": "6929da076037ba5b8735b3dc7c6c2fed23aeab55f329370fe7c9de9d74cb6405" + }, + { + "stage": 165, + "kind": "D", + "output_sha256": "6929da076037ba5b8735b3dc7c6c2fed23aeab55f329370fe7c9de9d74cb6405" + }, + { + "stage": 166, + "kind": "H", + "output_sha256": "a3b571132423b95992fe920f282721cb87ef12bd29a0d616ad8ffe9ac00888b6" + }, + { + "stage": 167, + "kind": "D", + "output_sha256": "e4d549ec7992daac0a6428fb95219f6935ee2e61634f396faf60baf8b782b824" + }, + { + "stage": 168, + "kind": "H", + "output_sha256": "6929da076037ba5b8735b3dc7c6c2fed23aeab55f329370fe7c9de9d74cb6405" + }, + { + "stage": 169, + "kind": "D", + "output_sha256": "6929da076037ba5b8735b3dc7c6c2fed23aeab55f329370fe7c9de9d74cb6405" + }, + { + "stage": 170, + "kind": "H", + "output_sha256": "789915096ce8de189e8e8d7ba456968cbf494ddff37e080dcd7b285b40e6e69f" + }, + { + "stage": 171, + "kind": "D", + "output_sha256": "b95edae18645cab5991cff0c0342d51dee362d23b30119473f55949619db7615" + }, + { + "stage": 172, + "kind": "H", + "output_sha256": "6929da076037ba5b8735b3dc7c6c2fed23aeab55f329370fe7c9de9d74cb6405" + }, + { + "stage": 173, + "kind": "D", + "output_sha256": "6929da076037ba5b8735b3dc7c6c2fed23aeab55f329370fe7c9de9d74cb6405" + }, + { + "stage": 174, + "kind": "H", + "output_sha256": "fe803f2c0dd41c3591b5e4bb3323e0071651a237d6ef175543e15a8ccfb85666" + }, + { + "stage": 175, + "kind": "D", + "output_sha256": "d367d0ae202433189c3ad6fcfef021044e72078a75d3c1efb7b614d29535ae12" + }, + { + "stage": 176, + "kind": "H", + "output_sha256": "6929da076037ba5b8735b3dc7c6c2fed23aeab55f329370fe7c9de9d74cb6405" + }, + { + "stage": 177, + "kind": "D", + "output_sha256": "6929da076037ba5b8735b3dc7c6c2fed23aeab55f329370fe7c9de9d74cb6405" + }, + { + "stage": 178, + "kind": "H", + "output_sha256": "a0284a692c9fc12920df26346a33839ebada3db2a119ade6743854471bec4a72" + }, + { + "stage": 179, + "kind": "D", + "output_sha256": "824ca6fa9fafa9c4ac4fe36fcd98bf718ecc4f934562312d62ef3136ffb9b388" + }, + { + "stage": 180, + "kind": "H", + "output_sha256": "6929da076037ba5b8735b3dc7c6c2fed23aeab55f329370fe7c9de9d74cb6405" + }, + { + "stage": 181, + "kind": "D", + "output_sha256": "6929da076037ba5b8735b3dc7c6c2fed23aeab55f329370fe7c9de9d74cb6405" + }, + { + "stage": 182, + "kind": "H", + "output_sha256": "fe803f2c0dd41c3591b5e4bb3323e0071651a237d6ef175543e15a8ccfb85666" + }, + { + "stage": 183, + "kind": "D", + "output_sha256": "d367d0ae202433189c3ad6fcfef021044e72078a75d3c1efb7b614d29535ae12" + }, + { + "stage": 184, + "kind": "H", + "output_sha256": "6929da076037ba5b8735b3dc7c6c2fed23aeab55f329370fe7c9de9d74cb6405" + }, + { + "stage": 185, + "kind": "D", + "output_sha256": "6929da076037ba5b8735b3dc7c6c2fed23aeab55f329370fe7c9de9d74cb6405" + }, + { + "stage": 186, + "kind": "H", + "output_sha256": "789915096ce8de189e8e8d7ba456968cbf494ddff37e080dcd7b285b40e6e69f" + }, + { + "stage": 187, + "kind": "D", + "output_sha256": "b95edae18645cab5991cff0c0342d51dee362d23b30119473f55949619db7615" + }, + { + "stage": 188, + "kind": "H", + "output_sha256": "6929da076037ba5b8735b3dc7c6c2fed23aeab55f329370fe7c9de9d74cb6405" + }, + { + "stage": 189, + "kind": "D", + "output_sha256": "6929da076037ba5b8735b3dc7c6c2fed23aeab55f329370fe7c9de9d74cb6405" + }, + { + "stage": 190, + "kind": "H", + "output_sha256": "a3b571132423b95992fe920f282721cb87ef12bd29a0d616ad8ffe9ac00888b6" + }, + { + "stage": 191, + "kind": "D", + "output_sha256": "e4d549ec7992daac0a6428fb95219f6935ee2e61634f396faf60baf8b782b824" + }, + { + "stage": 192, + "kind": "H", + "output_sha256": "6929da076037ba5b8735b3dc7c6c2fed23aeab55f329370fe7c9de9d74cb6405" + }, + { + "stage": 193, + "kind": "D", + "output_sha256": "6929da076037ba5b8735b3dc7c6c2fed23aeab55f329370fe7c9de9d74cb6405" + }, + { + "stage": 194, + "kind": "H", + "output_sha256": "1bb6c1362dc24cd030e0d23dff022788b086f043bdca3841dda81aeeeaf7d730" + }, + { + "stage": 195, + "kind": "D", + "output_sha256": "8d2b5b5387898a67650c966622c1982bca71418a99dc46d70c7510c84100eddf" + }, + { + "stage": 196, + "kind": "H", + "output_sha256": "6929da076037ba5b8735b3dc7c6c2fed23aeab55f329370fe7c9de9d74cb6405" + }, + { + "stage": 197, + "kind": "D", + "output_sha256": "6929da076037ba5b8735b3dc7c6c2fed23aeab55f329370fe7c9de9d74cb6405" + }, + { + "stage": 198, + "kind": "H", + "output_sha256": "75d5334cd41dccd51b562b02560f4f9f760b2248233a42b1fbdd0ae2396b46fa" + }, + { + "stage": 199, + "kind": "D", + "output_sha256": "68edfb75f1eeffa0d312281b59f7d1c8689b6cdf35c2eaeccde08f5db9b4d78d" + }, + { + "stage": 200, + "kind": "H", + "output_sha256": "6929da076037ba5b8735b3dc7c6c2fed23aeab55f329370fe7c9de9d74cb6405" + }, + { + "stage": 201, + "kind": "D", + "output_sha256": "6929da076037ba5b8735b3dc7c6c2fed23aeab55f329370fe7c9de9d74cb6405" + }, + { + "stage": 202, + "kind": "H", + "output_sha256": "75d5334cd41dccd51b562b02560f4f9f760b2248233a42b1fbdd0ae2396b46fa" + }, + { + "stage": 203, + "kind": "D", + "output_sha256": "d376b17f84cdc7890dab3be7fa8035249a72a3f15e094415a3d33206c9bf2791" + }, + { + "stage": 204, + "kind": "H", + "output_sha256": "c45cf82df7a0fd493f88b90b9a0082781a9adc8f0f7a1f1fe8d3eb59200dc98e" + }, + { + "stage": 205, + "kind": "D", + "output_sha256": "c45cf82df7a0fd493f88b90b9a0082781a9adc8f0f7a1f1fe8d3eb59200dc98e" + }, + { + "stage": 206, + "kind": "H", + "output_sha256": "b06e37713a81b386d5826780e34b3dcbbec36ed8d01a974597cd77c16b9b7fbe" + }, + { + "stage": 207, + "kind": "D", + "output_sha256": "b6727935666a01dddf30e67abdaf22107807c36c2abba989c43906276f4c149c" + }, + { + "stage": 208, + "kind": "H", + "output_sha256": "c45cf82df7a0fd493f88b90b9a0082781a9adc8f0f7a1f1fe8d3eb59200dc98e" + }, + { + "stage": 209, + "kind": "D", + "output_sha256": "c45cf82df7a0fd493f88b90b9a0082781a9adc8f0f7a1f1fe8d3eb59200dc98e" + }, + { + "stage": 210, + "kind": "H", + "output_sha256": "692fff7e6d0faf2858378f75feabce2b071f2141c75f0884f8ca2f57aac09a4f" + }, + { + "stage": 211, + "kind": "D", + "output_sha256": "a51866eb9649685d29cb77030922244de90cccd827719b01ea7bee7198d5e2eb" + }, + { + "stage": 212, + "kind": "H", + "output_sha256": "c45cf82df7a0fd493f88b90b9a0082781a9adc8f0f7a1f1fe8d3eb59200dc98e" + }, + { + "stage": 213, + "kind": "D", + "output_sha256": "c45cf82df7a0fd493f88b90b9a0082781a9adc8f0f7a1f1fe8d3eb59200dc98e" + }, + { + "stage": 214, + "kind": "H", + "output_sha256": "97fb738ca399934f25c24119b90c1204fb05e5afce7d48eb3838b70095503ab1" + }, + { + "stage": 215, + "kind": "D", + "output_sha256": "221a8c4897f9a7a261562c39f4ccb37734a992e555fb8f643f1e3fe658292e63" + }, + { + "stage": 216, + "kind": "H", + "output_sha256": "c45cf82df7a0fd493f88b90b9a0082781a9adc8f0f7a1f1fe8d3eb59200dc98e" + }, + { + "stage": 217, + "kind": "D", + "output_sha256": "c45cf82df7a0fd493f88b90b9a0082781a9adc8f0f7a1f1fe8d3eb59200dc98e" + }, + { + "stage": 218, + "kind": "H", + "output_sha256": "2463dedb143645c4cc7b335a2febe80646a8c9960ab218bce03763606a761a95" + }, + { + "stage": 219, + "kind": "D", + "output_sha256": "b9837228181b48fa695aa8131ac658c8dc400f89ff63552bbd28992d97fc5ceb" + }, + { + "stage": 220, + "kind": "H", + "output_sha256": "c45cf82df7a0fd493f88b90b9a0082781a9adc8f0f7a1f1fe8d3eb59200dc98e" + }, + { + "stage": 221, + "kind": "D", + "output_sha256": "c45cf82df7a0fd493f88b90b9a0082781a9adc8f0f7a1f1fe8d3eb59200dc98e" + }, + { + "stage": 222, + "kind": "H", + "output_sha256": "47d0deea1d65f885d72fdd70ca2e26e4f8c70ba0423a8d587c96df9fc634cbfd" + }, + { + "stage": 223, + "kind": "D", + "output_sha256": "1089a1a59cf2d02223ccd96179e61a2dba5f7823a77b216619ad12977b2cbc8d" + }, + { + "stage": 224, + "kind": "H", + "output_sha256": "c45cf82df7a0fd493f88b90b9a0082781a9adc8f0f7a1f1fe8d3eb59200dc98e" + }, + { + "stage": 225, + "kind": "D", + "output_sha256": "c45cf82df7a0fd493f88b90b9a0082781a9adc8f0f7a1f1fe8d3eb59200dc98e" + }, + { + "stage": 226, + "kind": "H", + "output_sha256": "2463dedb143645c4cc7b335a2febe80646a8c9960ab218bce03763606a761a95" + }, + { + "stage": 227, + "kind": "D", + "output_sha256": "b9837228181b48fa695aa8131ac658c8dc400f89ff63552bbd28992d97fc5ceb" + }, + { + "stage": 228, + "kind": "H", + "output_sha256": "c45cf82df7a0fd493f88b90b9a0082781a9adc8f0f7a1f1fe8d3eb59200dc98e" + }, + { + "stage": 229, + "kind": "D", + "output_sha256": "c45cf82df7a0fd493f88b90b9a0082781a9adc8f0f7a1f1fe8d3eb59200dc98e" + }, + { + "stage": 230, + "kind": "H", + "output_sha256": "97fb738ca399934f25c24119b90c1204fb05e5afce7d48eb3838b70095503ab1" + }, + { + "stage": 231, + "kind": "D", + "output_sha256": "221a8c4897f9a7a261562c39f4ccb37734a992e555fb8f643f1e3fe658292e63" + }, + { + "stage": 232, + "kind": "H", + "output_sha256": "c45cf82df7a0fd493f88b90b9a0082781a9adc8f0f7a1f1fe8d3eb59200dc98e" + }, + { + "stage": 233, + "kind": "D", + "output_sha256": "c45cf82df7a0fd493f88b90b9a0082781a9adc8f0f7a1f1fe8d3eb59200dc98e" + }, + { + "stage": 234, + "kind": "H", + "output_sha256": "692fff7e6d0faf2858378f75feabce2b071f2141c75f0884f8ca2f57aac09a4f" + }, + { + "stage": 235, + "kind": "D", + "output_sha256": "a51866eb9649685d29cb77030922244de90cccd827719b01ea7bee7198d5e2eb" + }, + { + "stage": 236, + "kind": "H", + "output_sha256": "c45cf82df7a0fd493f88b90b9a0082781a9adc8f0f7a1f1fe8d3eb59200dc98e" + }, + { + "stage": 237, + "kind": "D", + "output_sha256": "c45cf82df7a0fd493f88b90b9a0082781a9adc8f0f7a1f1fe8d3eb59200dc98e" + }, + { + "stage": 238, + "kind": "H", + "output_sha256": "b06e37713a81b386d5826780e34b3dcbbec36ed8d01a974597cd77c16b9b7fbe" + }, + { + "stage": 239, + "kind": "D", + "output_sha256": "1e0ba84a8a64650442b7346e078b2ac193d6b6e4578cd6c7b010bf98c382fccc" + }, + { + "stage": 240, + "kind": "H", + "output_sha256": "72ad867904cc700728065b27fea9f65ac20a8272a58ef78f785b80ea4ab64467" + }, + { + "stage": 241, + "kind": "D", + "output_sha256": "72ad867904cc700728065b27fea9f65ac20a8272a58ef78f785b80ea4ab64467" + }, + { + "stage": 242, + "kind": "H", + "output_sha256": "ce51a1319326cdeba1532616ad81a11f03cc2133fbb6c38c4f391d4eb034ffc5" + }, + { + "stage": 243, + "kind": "D", + "output_sha256": "38d1c94f7a66f2406a247742bebe110fb49447c98c390c336bad22e6ac3049ef" + }, + { + "stage": 244, + "kind": "H", + "output_sha256": "b0060e2c337c434a2c5a37c2b7969b86471712411298186430f6ec6bf09a52ab" + }, + { + "stage": 245, + "kind": "D", + "output_sha256": "b0060e2c337c434a2c5a37c2b7969b86471712411298186430f6ec6bf09a52ab" + }, + { + "stage": 246, + "kind": "D", + "output_sha256": "d342606d4c46a4502fab9c107c8ebdfba2367dc734adbcd2c96dce5a653a2ce2" + }, + { + "stage": 247, + "kind": "H", + "output_sha256": "927201c1eaee77af91a0929c6dd1c85ca3c6033e7691fecf416bba544e266a37" + }, + { + "stage": 248, + "kind": "D", + "output_sha256": "cbc940ed46c3e2e9e61807b9e15376c60535d8da44386b999067d3dcf9d3cf6f" + }, + { + "stage": 249, + "kind": "H", + "output_sha256": "0aaa09b4269b104ae7f806bbe4b78bac5e14af54f92df83d4eeff37855736b95" + }, + { + "stage": 250, + "kind": "D", + "output_sha256": "66d51e171cce99d038892b3a3029be09493e423f6473d64ace0a178adaae4a2e" + }, + { + "stage": 251, + "kind": "H", + "output_sha256": "dc60a574e7710ec29feaf880eb2c8abaa7a74c55e64b1f3dc027a90dcb4e8beb" + }, + { + "stage": 252, + "kind": "D", + "output_sha256": "bda560a5a9c48427f2a7f7a8d5e305e45652f57d2b4b331510c53ac425728508" + }, + { + "stage": 253, + "kind": "H", + "output_sha256": "949b8d7d72ba229a05dfd83fd0239c014940b25d257d15089fd6041aeb358fe0" + }, + { + "stage": 254, + "kind": "D", + "output_sha256": "9ef1d1b2cb03d46e38872e646b38925274f0432aab488847ab32819a1d02a706" + }, + { + "stage": 255, + "kind": "H", + "output_sha256": "9a02a06f3951b7f930da2b4f65e5e15810855271e852df18cc9120c71838e00c" + }, + { + "stage": 256, + "kind": "D", + "output_sha256": "d529e27b8ce0a2592c81736e3d83d8715f953f297b1044816fd43f055876f23d" + }, + { + "stage": 257, + "kind": "H", + "output_sha256": "fd2bfdd4a7920525e54f3b4e26ad7dd4dfd827c3d5f5806b1ec2540e3531a60e" + }, + { + "stage": 258, + "kind": "D", + "output_sha256": "c0a987fc9fbe97eabff5dbff13fd0153c65b9159a0155d5521d4aff8ff570bf2" + }, + { + "stage": 259, + "kind": "H", + "output_sha256": "e620861f512e27de29e0d3afd57de349f65d15bb6f52a486382c1143fcf86633" + }, + { + "stage": 260, + "kind": "D", + "output_sha256": "acdd33fc6dbf72b4df1f2651c1c318eb7bfb7f1b3b9853d47d8d15944ae58356" + }, + { + "stage": 261, + "kind": "H", + "output_sha256": "58377ae11dccbdfe9044b8c76ddb8e176b864e9679b54350c263d88fbb01668f" + }, + { + "stage": 262, + "kind": "D", + "output_sha256": "58377ae11dccbdfe9044b8c76ddb8e176b864e9679b54350c263d88fbb01668f" + }, + { + "stage": 263, + "kind": "H", + "output_sha256": "9720c482934699f2913cf93809066e4381e6ccbb79e576819f74f8af1751f7c3" + }, + { + "stage": 264, + "kind": "D", + "output_sha256": "65d17ec619efe8faf4d4c7672bc9a280c453b08cd1c74cd48b1385673ea0ef51" + }, + { + "stage": 265, + "kind": "H", + "output_sha256": "8396684c8571d2e8c04793468d80e381f531fce67eb0ffc92f8a82974d97111a" + }, + { + "stage": 266, + "kind": "D", + "output_sha256": "8396684c8571d2e8c04793468d80e381f531fce67eb0ffc92f8a82974d97111a" + }, + { + "stage": 267, + "kind": "H", + "output_sha256": "929e763e8d7043863bdc5ea8eda1f54315ab1386e760f92b861a2d6ccf839056" + }, + { + "stage": 268, + "kind": "D", + "output_sha256": "04b911cdd452872cbe9bff8a1ce54175a35d7e62a88292187f966b8e67d617c5" + }, + { + "stage": 269, + "kind": "H", + "output_sha256": "8396684c8571d2e8c04793468d80e381f531fce67eb0ffc92f8a82974d97111a" + }, + { + "stage": 270, + "kind": "D", + "output_sha256": "8396684c8571d2e8c04793468d80e381f531fce67eb0ffc92f8a82974d97111a" + }, + { + "stage": 271, + "kind": "H", + "output_sha256": "11ab460315e6f15bfa2a8ecdc29b5e9e5e775f08e175b06573ccdc961de3fa01" + }, + { + "stage": 272, + "kind": "D", + "output_sha256": "9ba55bd6ba3755f3b8081fb8adf6945235b964f446e7d9799f7ba5b56224916c" + }, + { + "stage": 273, + "kind": "H", + "output_sha256": "8396684c8571d2e8c04793468d80e381f531fce67eb0ffc92f8a82974d97111a" + }, + { + "stage": 274, + "kind": "D", + "output_sha256": "8396684c8571d2e8c04793468d80e381f531fce67eb0ffc92f8a82974d97111a" + }, + { + "stage": 275, + "kind": "H", + "output_sha256": "6f24d61a4ffd16275e84c2e81771d47a16a8b364be4c28906dc80fd3a3a04d72" + }, + { + "stage": 276, + "kind": "D", + "output_sha256": "c28f1c2307ccc0c5432542ba812705ef11b9d9ef769b320731519e26306ab0c8" + }, + { + "stage": 277, + "kind": "H", + "output_sha256": "8396684c8571d2e8c04793468d80e381f531fce67eb0ffc92f8a82974d97111a" + }, + { + "stage": 278, + "kind": "D", + "output_sha256": "8396684c8571d2e8c04793468d80e381f531fce67eb0ffc92f8a82974d97111a" + }, + { + "stage": 279, + "kind": "H", + "output_sha256": "2469e5079193fd5efa4d823fffa269d6265cc64936a5133ef6f3327559c66942" + }, + { + "stage": 280, + "kind": "D", + "output_sha256": "7fe84f453186789a28fe27684227c031878b04ea5bb34985f59acd5e6ee5fe38" + }, + { + "stage": 281, + "kind": "H", + "output_sha256": "8396684c8571d2e8c04793468d80e381f531fce67eb0ffc92f8a82974d97111a" + }, + { + "stage": 282, + "kind": "D", + "output_sha256": "8396684c8571d2e8c04793468d80e381f531fce67eb0ffc92f8a82974d97111a" + }, + { + "stage": 283, + "kind": "H", + "output_sha256": "6f24d61a4ffd16275e84c2e81771d47a16a8b364be4c28906dc80fd3a3a04d72" + }, + { + "stage": 284, + "kind": "D", + "output_sha256": "c28f1c2307ccc0c5432542ba812705ef11b9d9ef769b320731519e26306ab0c8" + }, + { + "stage": 285, + "kind": "H", + "output_sha256": "8396684c8571d2e8c04793468d80e381f531fce67eb0ffc92f8a82974d97111a" + }, + { + "stage": 286, + "kind": "D", + "output_sha256": "8396684c8571d2e8c04793468d80e381f531fce67eb0ffc92f8a82974d97111a" + }, + { + "stage": 287, + "kind": "H", + "output_sha256": "11ab460315e6f15bfa2a8ecdc29b5e9e5e775f08e175b06573ccdc961de3fa01" + }, + { + "stage": 288, + "kind": "D", + "output_sha256": "9ba55bd6ba3755f3b8081fb8adf6945235b964f446e7d9799f7ba5b56224916c" + }, + { + "stage": 289, + "kind": "H", + "output_sha256": "8396684c8571d2e8c04793468d80e381f531fce67eb0ffc92f8a82974d97111a" + }, + { + "stage": 290, + "kind": "D", + "output_sha256": "8396684c8571d2e8c04793468d80e381f531fce67eb0ffc92f8a82974d97111a" + }, + { + "stage": 291, + "kind": "H", + "output_sha256": "929e763e8d7043863bdc5ea8eda1f54315ab1386e760f92b861a2d6ccf839056" + }, + { + "stage": 292, + "kind": "D", + "output_sha256": "04b911cdd452872cbe9bff8a1ce54175a35d7e62a88292187f966b8e67d617c5" + }, + { + "stage": 293, + "kind": "H", + "output_sha256": "8396684c8571d2e8c04793468d80e381f531fce67eb0ffc92f8a82974d97111a" + }, + { + "stage": 294, + "kind": "D", + "output_sha256": "8396684c8571d2e8c04793468d80e381f531fce67eb0ffc92f8a82974d97111a" + }, + { + "stage": 295, + "kind": "H", + "output_sha256": "f040fcaec6d06228fbf05ea1f8944ea266d939f5c4d0457ed45d87c44ae75184" + }, + { + "stage": 296, + "kind": "D", + "output_sha256": "65d17ec619efe8faf4d4c7672bc9a280c453b08cd1c74cd48b1385673ea0ef51" + }, + { + "stage": 297, + "kind": "H", + "output_sha256": "8396684c8571d2e8c04793468d80e381f531fce67eb0ffc92f8a82974d97111a" + }, + { + "stage": 298, + "kind": "D", + "output_sha256": "8396684c8571d2e8c04793468d80e381f531fce67eb0ffc92f8a82974d97111a" + }, + { + "stage": 299, + "kind": "H", + "output_sha256": "98f7c4c1ea3b04aaf41669b80c9390921bf0dc12988d6ef3dfd19a6cb4df7a7f" + }, + { + "stage": 300, + "kind": "D", + "output_sha256": "a03856807ac4d2b2440b2c3d48a675a5fc94981f69a433b3925e4e073ec8740a" + }, + { + "stage": 301, + "kind": "H", + "output_sha256": "8d55bbf616ef5b9aceeec19dc0a871de4ed7319cdab4e975278406bbcb5211e9" + }, + { + "stage": 302, + "kind": "D", + "output_sha256": "8d55bbf616ef5b9aceeec19dc0a871de4ed7319cdab4e975278406bbcb5211e9" + }, + { + "stage": 303, + "kind": "H", + "output_sha256": "5819005a4db884c41e2a17794090f3470cf9e6187b940233a7f3d127a7934a4b" + }, + { + "stage": 304, + "kind": "D", + "output_sha256": "209cd528be0979df36455af388e371cfa18df8b3c3385aeab398415638b9a73f" + }, + { + "stage": 305, + "kind": "H", + "output_sha256": "911cbb85722ff808b4f26b0663fd3b408293a1a5ef55482fe01cc1debf68023c" + }, + { + "stage": 306, + "kind": "D", + "output_sha256": "911cbb85722ff808b4f26b0663fd3b408293a1a5ef55482fe01cc1debf68023c" + }, + { + "stage": 307, + "kind": "H", + "output_sha256": "a8f0f187b83ab3916ab8b6fca7163be3447032c86919e31bed45791cdd507bf8" + }, + { + "stage": 308, + "kind": "D", + "output_sha256": "a449cf249f972f113e2e01a91dff668620e5483ff2a3d1c46340b0907f5c0969" + }, + { + "stage": 309, + "kind": "H", + "output_sha256": "254ed21a72c3efb2e7f241b8b123f9f83a9b285ad8abc33d4dd4383f09163e1c" + }, + { + "stage": 310, + "kind": "D", + "output_sha256": "254ed21a72c3efb2e7f241b8b123f9f83a9b285ad8abc33d4dd4383f09163e1c" + }, + { + "stage": 311, + "kind": "H", + "output_sha256": "b56afb103a0819f691fff288412438bf4e6188ab6077e593adcd212222b15881" + }, + { + "stage": 312, + "kind": "D", + "output_sha256": "d5996db2e05faee015bf010f8a40fe03da4078c1c515dd5cfa2af66df7544b0e" + }, + { + "stage": 313, + "kind": "H", + "output_sha256": "254ed21a72c3efb2e7f241b8b123f9f83a9b285ad8abc33d4dd4383f09163e1c" + }, + { + "stage": 314, + "kind": "D", + "output_sha256": "254ed21a72c3efb2e7f241b8b123f9f83a9b285ad8abc33d4dd4383f09163e1c" + }, + { + "stage": 315, + "kind": "H", + "output_sha256": "8e8d61c0300e2489944d12203d22c199e3c073ce6d93c07aeeae9542e4de7566" + }, + { + "stage": 316, + "kind": "D", + "output_sha256": "126240ab6680b8dd8f3261869b3c68ced45f9b3a7ddd207f4cc21c892d43c7ab" + }, + { + "stage": 317, + "kind": "H", + "output_sha256": "254ed21a72c3efb2e7f241b8b123f9f83a9b285ad8abc33d4dd4383f09163e1c" + }, + { + "stage": 318, + "kind": "D", + "output_sha256": "254ed21a72c3efb2e7f241b8b123f9f83a9b285ad8abc33d4dd4383f09163e1c" + }, + { + "stage": 319, + "kind": "H", + "output_sha256": "7fab5fcd0b3d887bdaa18cf649bfe49864a7f231c8ec7c0b1a8b265a5f049146" + }, + { + "stage": 320, + "kind": "D", + "output_sha256": "e0ccfd8512b35db25dfa98abc70b50c854a05e886d3a1e7a633bc6149e5f59a4" + }, + { + "stage": 321, + "kind": "H", + "output_sha256": "254ed21a72c3efb2e7f241b8b123f9f83a9b285ad8abc33d4dd4383f09163e1c" + }, + { + "stage": 322, + "kind": "D", + "output_sha256": "254ed21a72c3efb2e7f241b8b123f9f83a9b285ad8abc33d4dd4383f09163e1c" + }, + { + "stage": 323, + "kind": "H", + "output_sha256": "3b9c1257f5966a7a028f17cc782eb1c87965e552f3262dbe9748f3a887ca11f2" + }, + { + "stage": 324, + "kind": "D", + "output_sha256": "11117cc2b367096a306801f07c26f56277c3c0e87444521d6ba94976b3c6b045" + }, + { + "stage": 325, + "kind": "H", + "output_sha256": "254ed21a72c3efb2e7f241b8b123f9f83a9b285ad8abc33d4dd4383f09163e1c" + }, + { + "stage": 326, + "kind": "D", + "output_sha256": "254ed21a72c3efb2e7f241b8b123f9f83a9b285ad8abc33d4dd4383f09163e1c" + }, + { + "stage": 327, + "kind": "H", + "output_sha256": "7fab5fcd0b3d887bdaa18cf649bfe49864a7f231c8ec7c0b1a8b265a5f049146" + }, + { + "stage": 328, + "kind": "D", + "output_sha256": "e0ccfd8512b35db25dfa98abc70b50c854a05e886d3a1e7a633bc6149e5f59a4" + }, + { + "stage": 329, + "kind": "H", + "output_sha256": "254ed21a72c3efb2e7f241b8b123f9f83a9b285ad8abc33d4dd4383f09163e1c" + }, + { + "stage": 330, + "kind": "D", + "output_sha256": "254ed21a72c3efb2e7f241b8b123f9f83a9b285ad8abc33d4dd4383f09163e1c" + }, + { + "stage": 331, + "kind": "H", + "output_sha256": "8e8d61c0300e2489944d12203d22c199e3c073ce6d93c07aeeae9542e4de7566" + }, + { + "stage": 332, + "kind": "D", + "output_sha256": "126240ab6680b8dd8f3261869b3c68ced45f9b3a7ddd207f4cc21c892d43c7ab" + }, + { + "stage": 333, + "kind": "H", + "output_sha256": "254ed21a72c3efb2e7f241b8b123f9f83a9b285ad8abc33d4dd4383f09163e1c" + }, + { + "stage": 334, + "kind": "D", + "output_sha256": "254ed21a72c3efb2e7f241b8b123f9f83a9b285ad8abc33d4dd4383f09163e1c" + }, + { + "stage": 335, + "kind": "H", + "output_sha256": "b56afb103a0819f691fff288412438bf4e6188ab6077e593adcd212222b15881" + }, + { + "stage": 336, + "kind": "D", + "output_sha256": "91e9eac7f43554cc987c04a69b34bce660eb77d1fd4954fc0a21f4b1175b3f07" + }, + { + "stage": 337, + "kind": "H", + "output_sha256": "69fc64855c6014d19fc3128fe5938b8a72c88ad3515cc7c3dab58feee6f35d60" + }, + { + "stage": 338, + "kind": "D", + "output_sha256": "69fc64855c6014d19fc3128fe5938b8a72c88ad3515cc7c3dab58feee6f35d60" + }, + { + "stage": 339, + "kind": "H", + "output_sha256": "fb4a55b4d88638b6a51e35a9bfd9a230cb1d19b115e11597a5b97aad8a77f99a" + }, + { + "stage": 340, + "kind": "D", + "output_sha256": "5ecfced710a6e181464aca373d950c4feb0379fd54705f2a666622c6f5516992" + }, + { + "stage": 341, + "kind": "H", + "output_sha256": "326553f269bfe7132625d85818ad24f4f21ffc8ee6c04fbb965bf99324dcbf72" + }, + { + "stage": 342, + "kind": "D", + "output_sha256": "326553f269bfe7132625d85818ad24f4f21ffc8ee6c04fbb965bf99324dcbf72" + }, + { + "stage": 343, + "kind": "H", + "output_sha256": "de9bfb3f0fbf616d68dcff34c5f9bc0ae25219e210959d6088f65ed1a35749d5" + }, + { + "stage": 344, + "kind": "D", + "output_sha256": "345ad6adeb833653078e3777d7086c69dc6fa56d4bb34cddc1bd1b1dc9b9b4b5" + }, + { + "stage": 345, + "kind": "H", + "output_sha256": "399f481bfe1958e0fff870db0eee88b352189a9d69c1b9b27391406ef9eb9266" + }, + { + "stage": 346, + "kind": "D", + "output_sha256": "399f481bfe1958e0fff870db0eee88b352189a9d69c1b9b27391406ef9eb9266" + }, + { + "stage": 347, + "kind": "D", + "output_sha256": "0c39ac5df9c58068d86745cd9ec3db1b98ccbbebe3c891956df37321d2adb64d" + }, + { + "stage": 348, + "kind": "H", + "output_sha256": "01ce616939a2988fc2a4cafa71cedc04399be81acf1f8f91f7748959ae5a04d1" + }, + { + "stage": 349, + "kind": "D", + "output_sha256": "d953f11553fb76088079e3c095a359df5180f4a23bdf48dda61b7ee855b123ab" + }, + { + "stage": 350, + "kind": "H", + "output_sha256": "2d849f970716bdfc39d50e8d9a9ecd0275cc65ffb6a6aa7a9402365ed4f41140" + }, + { + "stage": 351, + "kind": "D", + "output_sha256": "35afd38646a1a39767abf996cffd93eb6a09974a19b12fe36350d9341fe42f59" + }, + { + "stage": 352, + "kind": "H", + "output_sha256": "d445e7c63e89769fddbbf29a6673dca4070e93fa46506d41e488f85b47ae0fa3" + }, + { + "stage": 353, + "kind": "D", + "output_sha256": "6fea26076396f9af583a552c42db24b9a90ed861ee961a56040d2b279d8e4c4e" + }, + { + "stage": 354, + "kind": "H", + "output_sha256": "7a262e4a4dfb90420c92e314a66b014d70296d271f0d2a483301328269d5aefe" + }, + { + "stage": 355, + "kind": "D", + "output_sha256": "dd4951ccebb0e652260ef6c1207726794e383bd94760b426283df522eb6f4659" + }, + { + "stage": 356, + "kind": "H", + "output_sha256": "fb904e401e6a9df35823a73e26cc7aa502004abf09e6aa3bc806ea927587570a" + }, + { + "stage": 357, + "kind": "D", + "output_sha256": "4277ed921766b3cd404b5bae5feb628a56bec66329dac37987757e3b86413d99" + }, + { + "stage": 358, + "kind": "H", + "output_sha256": "a01b9f229ca45004e81fa041f642cdf72f563659dbfaee7bed87f6ae42a614c3" + }, + { + "stage": 359, + "kind": "D", + "output_sha256": "f24556537b4f0728bad3ff9b65c4337e258784e5a4618a87c5cc676f8c30a380" + }, + { + "stage": 360, + "kind": "H", + "output_sha256": "1e17e296c24bc9bc9520c1665c05b6409631b90329cef7af617064e5e8fbf8a8" + }, + { + "stage": 361, + "kind": "D", + "output_sha256": "532fe52df3d90685154f09aade3333cefd3d718768eef951ba8a60eeb1f1ba82" + }, + { + "stage": 362, + "kind": "H", + "output_sha256": "38bb73f37476ab267b36178604e88a7d5eef0b13a8e43d9ca7e03704506e96a8" + }, + { + "stage": 363, + "kind": "D", + "output_sha256": "38bb73f37476ab267b36178604e88a7d5eef0b13a8e43d9ca7e03704506e96a8" + }, + { + "stage": 364, + "kind": "H", + "output_sha256": "29749da26a3da357dcdce4ec5a08edf97622977ed3ee12d30766f2bba50c1198" + }, + { + "stage": 365, + "kind": "D", + "output_sha256": "d2bc77e8415b65cd5f28c607eb2935857668b06da7ca7b4076eb45c94d2e344c" + }, + { + "stage": 366, + "kind": "H", + "output_sha256": "f3e98ab77a4d01b6f89642a3e01380430daba3a8c7b520272bd5d876180acb7b" + }, + { + "stage": 367, + "kind": "D", + "output_sha256": "f3e98ab77a4d01b6f89642a3e01380430daba3a8c7b520272bd5d876180acb7b" + }, + { + "stage": 368, + "kind": "H", + "output_sha256": "5580d52150e5f31d1ae34999d403ce195563c2f09b5b61b940390eb36cceca4b" + }, + { + "stage": 369, + "kind": "D", + "output_sha256": "6fa550b4860522c855345fcdadf265f9effae1a89b98ec2fd06cd8a6375ce47f" + }, + { + "stage": 370, + "kind": "H", + "output_sha256": "07be850749ede1c592a76a9f830293218d5d1db4dd3912ca160995b9ac6602bb" + }, + { + "stage": 371, + "kind": "D", + "output_sha256": "07be850749ede1c592a76a9f830293218d5d1db4dd3912ca160995b9ac6602bb" + }, + { + "stage": 372, + "kind": "H", + "output_sha256": "c63f4695dbb3fb53432ecd9cd244f24df4eacb3ef60c923d71980b5029833ce1" + }, + { + "stage": 373, + "kind": "D", + "output_sha256": "a6fe80d1b3f3a17b4ffa48426fbe985b8e76417e72d47a4f3b338490ac7d68cf" + }, + { + "stage": 374, + "kind": "H", + "output_sha256": "07be850749ede1c592a76a9f830293218d5d1db4dd3912ca160995b9ac6602bb" + }, + { + "stage": 375, + "kind": "D", + "output_sha256": "07be850749ede1c592a76a9f830293218d5d1db4dd3912ca160995b9ac6602bb" + }, + { + "stage": 376, + "kind": "H", + "output_sha256": "c842f883abbf98ad4c268232f2a214ad81938145438e373e272d00a87215a335" + }, + { + "stage": 377, + "kind": "D", + "output_sha256": "564d4ea9de38bf29efeff030a214791166bd8225d98e897a52bd50c3f85f7b19" + }, + { + "stage": 378, + "kind": "H", + "output_sha256": "07be850749ede1c592a76a9f830293218d5d1db4dd3912ca160995b9ac6602bb" + }, + { + "stage": 379, + "kind": "D", + "output_sha256": "07be850749ede1c592a76a9f830293218d5d1db4dd3912ca160995b9ac6602bb" + }, + { + "stage": 380, + "kind": "H", + "output_sha256": "bd788799811982dfbc1308af0e8f6f83f06609c6ce4fdf53a1ef53975d4a0e54" + }, + { + "stage": 381, + "kind": "D", + "output_sha256": "f2d5d230c4643ce70a9d60bb89fe535fd3568fa73f8dc80229923088983e3e31" + }, + { + "stage": 382, + "kind": "H", + "output_sha256": "07be850749ede1c592a76a9f830293218d5d1db4dd3912ca160995b9ac6602bb" + }, + { + "stage": 383, + "kind": "D", + "output_sha256": "07be850749ede1c592a76a9f830293218d5d1db4dd3912ca160995b9ac6602bb" + }, + { + "stage": 384, + "kind": "H", + "output_sha256": "c842f883abbf98ad4c268232f2a214ad81938145438e373e272d00a87215a335" + }, + { + "stage": 385, + "kind": "D", + "output_sha256": "564d4ea9de38bf29efeff030a214791166bd8225d98e897a52bd50c3f85f7b19" + }, + { + "stage": 386, + "kind": "H", + "output_sha256": "07be850749ede1c592a76a9f830293218d5d1db4dd3912ca160995b9ac6602bb" + }, + { + "stage": 387, + "kind": "D", + "output_sha256": "07be850749ede1c592a76a9f830293218d5d1db4dd3912ca160995b9ac6602bb" + }, + { + "stage": 388, + "kind": "H", + "output_sha256": "c63f4695dbb3fb53432ecd9cd244f24df4eacb3ef60c923d71980b5029833ce1" + }, + { + "stage": 389, + "kind": "D", + "output_sha256": "a6fe80d1b3f3a17b4ffa48426fbe985b8e76417e72d47a4f3b338490ac7d68cf" + }, + { + "stage": 390, + "kind": "H", + "output_sha256": "07be850749ede1c592a76a9f830293218d5d1db4dd3912ca160995b9ac6602bb" + }, + { + "stage": 391, + "kind": "D", + "output_sha256": "07be850749ede1c592a76a9f830293218d5d1db4dd3912ca160995b9ac6602bb" + }, + { + "stage": 392, + "kind": "H", + "output_sha256": "0988adc3e55d87425b6f342de0f598149be505cccc5e543193343b7d9d0572b4" + }, + { + "stage": 393, + "kind": "D", + "output_sha256": "6fa550b4860522c855345fcdadf265f9effae1a89b98ec2fd06cd8a6375ce47f" + }, + { + "stage": 394, + "kind": "H", + "output_sha256": "07be850749ede1c592a76a9f830293218d5d1db4dd3912ca160995b9ac6602bb" + }, + { + "stage": 395, + "kind": "D", + "output_sha256": "07be850749ede1c592a76a9f830293218d5d1db4dd3912ca160995b9ac6602bb" + }, + { + "stage": 396, + "kind": "H", + "output_sha256": "09e97dc6415f8cdd4fd925fc1d88ce84f673b402f468d966e0d4b2b613c65053" + }, + { + "stage": 397, + "kind": "D", + "output_sha256": "6006d9ee83cb197a31796f8b8bb8daab555c3ef70fa26494b7ac3cd8f379af5a" + }, + { + "stage": 398, + "kind": "H", + "output_sha256": "3a6dc309e9a1a8df42f60a3d5f01b9608798a4d7852abc4efd4519be7bfeda20" + }, + { + "stage": 399, + "kind": "D", + "output_sha256": "3a6dc309e9a1a8df42f60a3d5f01b9608798a4d7852abc4efd4519be7bfeda20" + }, + { + "stage": 400, + "kind": "H", + "output_sha256": "b3f0311c7532ef32cd80df8b2aa217bf69135e01306b96e342ed2416139943f2" + }, + { + "stage": 401, + "kind": "D", + "output_sha256": "5b5f0aa8315479570b9152841b96d804a95e57ca66cc65975dc521d06e176883" + }, + { + "stage": 402, + "kind": "H", + "output_sha256": "1f136c95d44f1f198c1428c72b544c9168c0542d89adf9c9f021c2077b0edd3b" + }, + { + "stage": 403, + "kind": "D", + "output_sha256": "1f136c95d44f1f198c1428c72b544c9168c0542d89adf9c9f021c2077b0edd3b" + }, + { + "stage": 404, + "kind": "H", + "output_sha256": "3940dd7ef838a4e02b5a3ce05053700baf7f9f85de4a7ec55ef8c2b253981be2" + }, + { + "stage": 405, + "kind": "D", + "output_sha256": "e5c6dfc37349f9035f4e9076de7de513e3a2e4ad48a8c42d2126f6091c55b32e" + }, + { + "stage": 406, + "kind": "H", + "output_sha256": "c28de8d4ad33d415ae4932d1d5fcfae9a192b11227c81862104377df671dc6b1" + }, + { + "stage": 407, + "kind": "D", + "output_sha256": "c28de8d4ad33d415ae4932d1d5fcfae9a192b11227c81862104377df671dc6b1" + }, + { + "stage": 408, + "kind": "H", + "output_sha256": "6bd734f2dc93682a6940025d859a58e7637abed00162c0dddfee483eebe342b7" + }, + { + "stage": 409, + "kind": "D", + "output_sha256": "f1d29b5eb9852784c62d1fda549958e05896e4382d6c484ad640e6f936a7d833" + }, + { + "stage": 410, + "kind": "H", + "output_sha256": "05607444d47556f027bc33a53b04355e39b81f52d99f60c583f37881d083fbdd" + }, + { + "stage": 411, + "kind": "D", + "output_sha256": "05607444d47556f027bc33a53b04355e39b81f52d99f60c583f37881d083fbdd" + }, + { + "stage": 412, + "kind": "H", + "output_sha256": "e37c633f158cfd066a96899fc1b3bcfca12b30e2bd8b880a5b6d53dae65f2839" + }, + { + "stage": 413, + "kind": "D", + "output_sha256": "054847783592509802008d12963875bea78c582aa29d3ce12c7ac8b25775daa1" + }, + { + "stage": 414, + "kind": "H", + "output_sha256": "939e674034ac78e454c1e4316f4b3a7e5e72401ec6fba101ac56167bfd3326e2" + }, + { + "stage": 415, + "kind": "D", + "output_sha256": "939e674034ac78e454c1e4316f4b3a7e5e72401ec6fba101ac56167bfd3326e2" + }, + { + "stage": 416, + "kind": "H", + "output_sha256": "83f746eef2e6e9798e2c1cace694d3578642533035efab87c6e8c7943a5e3294" + }, + { + "stage": 417, + "kind": "D", + "output_sha256": "907a3c7679e7fcbbfb3b8acf4263ef3e4b94af37d2771551d0c92543921f5951" + }, + { + "stage": 418, + "kind": "H", + "output_sha256": "939e674034ac78e454c1e4316f4b3a7e5e72401ec6fba101ac56167bfd3326e2" + }, + { + "stage": 419, + "kind": "D", + "output_sha256": "939e674034ac78e454c1e4316f4b3a7e5e72401ec6fba101ac56167bfd3326e2" + }, + { + "stage": 420, + "kind": "H", + "output_sha256": "131483f508acd2bc5da106bf2625db88dfdbc6b33d0f63b392b19998439e8537" + }, + { + "stage": 421, + "kind": "D", + "output_sha256": "cd753069e500e4a078d7c3186a83653be73f75532387855814ddb64ca052f537" + }, + { + "stage": 422, + "kind": "H", + "output_sha256": "939e674034ac78e454c1e4316f4b3a7e5e72401ec6fba101ac56167bfd3326e2" + }, + { + "stage": 423, + "kind": "D", + "output_sha256": "939e674034ac78e454c1e4316f4b3a7e5e72401ec6fba101ac56167bfd3326e2" + }, + { + "stage": 424, + "kind": "H", + "output_sha256": "6e6627bd6f86d853a3b1797882665abcbc80a80032093c9107eec434af1d9c43" + }, + { + "stage": 425, + "kind": "D", + "output_sha256": "f5fe978ab32d67e02bcee666026cbcfd25d4f8e14876fd33811fc1942c18a694" + }, + { + "stage": 426, + "kind": "H", + "output_sha256": "939e674034ac78e454c1e4316f4b3a7e5e72401ec6fba101ac56167bfd3326e2" + }, + { + "stage": 427, + "kind": "D", + "output_sha256": "939e674034ac78e454c1e4316f4b3a7e5e72401ec6fba101ac56167bfd3326e2" + }, + { + "stage": 428, + "kind": "H", + "output_sha256": "131483f508acd2bc5da106bf2625db88dfdbc6b33d0f63b392b19998439e8537" + }, + { + "stage": 429, + "kind": "D", + "output_sha256": "cd753069e500e4a078d7c3186a83653be73f75532387855814ddb64ca052f537" + }, + { + "stage": 430, + "kind": "H", + "output_sha256": "939e674034ac78e454c1e4316f4b3a7e5e72401ec6fba101ac56167bfd3326e2" + }, + { + "stage": 431, + "kind": "D", + "output_sha256": "939e674034ac78e454c1e4316f4b3a7e5e72401ec6fba101ac56167bfd3326e2" + }, + { + "stage": 432, + "kind": "H", + "output_sha256": "83f746eef2e6e9798e2c1cace694d3578642533035efab87c6e8c7943a5e3294" + }, + { + "stage": 433, + "kind": "D", + "output_sha256": "31ce81c20642e2963168c363d98a96313ef1a47e6f679b5d12d471ca77aad8e5" + }, + { + "stage": 434, + "kind": "H", + "output_sha256": "a05abc0ab938b670d4bfbc0b0f1938a1dc30cdba5af9d6b1c2f184abb625892e" + }, + { + "stage": 435, + "kind": "D", + "output_sha256": "a05abc0ab938b670d4bfbc0b0f1938a1dc30cdba5af9d6b1c2f184abb625892e" + }, + { + "stage": 436, + "kind": "H", + "output_sha256": "c8bc24af26678954daeb5b1c3164697c240ca93838bd5b4da544ed76a26b1c78" + }, + { + "stage": 437, + "kind": "D", + "output_sha256": "4d1d7d332a011a8e708264fea60a112e79a34d8a819bc86d39313faa531f97fe" + }, + { + "stage": 438, + "kind": "H", + "output_sha256": "ecfd417c62fb5d9cbe9a2f2d0ec887d1b4672ae25985dd8e85f8e8e8c8315b41" + }, + { + "stage": 439, + "kind": "D", + "output_sha256": "ecfd417c62fb5d9cbe9a2f2d0ec887d1b4672ae25985dd8e85f8e8e8c8315b41" + }, + { + "stage": 440, + "kind": "H", + "output_sha256": "aae50b4da9456c9eb3113de0a06c55b4aa21f116fa37c30d6589882036665aab" + }, + { + "stage": 441, + "kind": "D", + "output_sha256": "cb832c59ad7af2fcebdfeef23713bc4bdb5814422f03eeeb6d25ca41553e61d7" + }, + { + "stage": 442, + "kind": "H", + "output_sha256": "2e6aef741fff8bffbb83e186260e0e1bbfe2bf61dee7c870d3c2f1d005d1dbfd" + }, + { + "stage": 443, + "kind": "D", + "output_sha256": "2e6aef741fff8bffbb83e186260e0e1bbfe2bf61dee7c870d3c2f1d005d1dbfd" + }, + { + "stage": 444, + "kind": "H", + "output_sha256": "40207e139218d1ba5bcdd557532ab2d084eb67053e15a2781e154d06c0d0844f" + }, + { + "stage": 445, + "kind": "D", + "output_sha256": "336496e7d093982f98d7b5a776497a6666833c35d4e4ebf4875ae04dc7862b3b" + }, + { + "stage": 446, + "kind": "H", + "output_sha256": "ba9c8ba1dc9cb84ef47d8d1c54d706ca5a5bccf9f2171dc0672c31b09c9c4696" + }, + { + "stage": 447, + "kind": "D", + "output_sha256": "ba9c8ba1dc9cb84ef47d8d1c54d706ca5a5bccf9f2171dc0672c31b09c9c4696" + }, + { + "stage": 448, + "kind": "D", + "output_sha256": "2ebe3427d61cb2e6cce1140bd593215a54ed2d992d20f2bdbc1c1200adf20c46" + }, + { + "stage": 449, + "kind": "H", + "output_sha256": "c449b083c066e0318e3631cbc0d996712b539034c91b45327e0f80b841782d3a" + }, + { + "stage": 450, + "kind": "D", + "output_sha256": "3672afd6af172c0c74b376ff994f359db604623456a1ae8740bdfacddfaa4ad7" + }, + { + "stage": 451, + "kind": "H", + "output_sha256": "4ab38b88e57466e61a184c50250e3d472e5e0e5bf813595d42a453323974e366" + }, + { + "stage": 452, + "kind": "D", + "output_sha256": "501b2253caf5454e36536ccc7e4054cfd9ab6b5442a0c33abe1f90938a36b815" + }, + { + "stage": 453, + "kind": "H", + "output_sha256": "d647a7b57680dfbb4f72b3aa8b20de86371777ddbf6172661a0362cddce89666" + }, + { + "stage": 454, + "kind": "D", + "output_sha256": "0291927d3673ee1433e4d7522035ea0534f89f4c67855f9323c2d09b03378cd8" + }, + { + "stage": 455, + "kind": "H", + "output_sha256": "67621eee14fc25567f3681d6d944118756a7e618165df3da72360b0875d72de2" + }, + { + "stage": 456, + "kind": "D", + "output_sha256": "ecd9461931f68ed525c5b21a43ab7ffc8daf1936e4c295fce21f66cf729fc4e5" + }, + { + "stage": 457, + "kind": "H", + "output_sha256": "1aa080dcefa44053772d3557dc8d6cdfa80534013a27cd7fc5b534a998a95a0a" + }, + { + "stage": 458, + "kind": "D", + "output_sha256": "85279adabc45c741e553c7fa701163d22eb4a655ba81e03017658fc4cdb3affb" + }, + { + "stage": 459, + "kind": "H", + "output_sha256": "e43da3c12980f58d8456e282cc2ba31c96ec68645c3bf3e2f636fd27470a094f" + }, + { + "stage": 460, + "kind": "D", + "output_sha256": "93110a2cf87d58b8998fd583656e5cbf4419e2c009a60a1b44b8fb190ae95fcd" + }, + { + "stage": 461, + "kind": "H", + "output_sha256": "c8b0e187d74170dc3f3a002ac940eb3c2cea8f5411f89f86b98129d7a6fa737c" + }, + { + "stage": 462, + "kind": "D", + "output_sha256": "837c0e3ddaac19bacfa850e53a87b4fb0d6ac153e004e3a735cc753ac127533c" + }, + { + "stage": 463, + "kind": "H", + "output_sha256": "e19b76ea2698129c57fb0e7cbe7262d1831455d302b74708e14195920b9524f4" + }, + { + "stage": 464, + "kind": "D", + "output_sha256": "e19b76ea2698129c57fb0e7cbe7262d1831455d302b74708e14195920b9524f4" + }, + { + "stage": 465, + "kind": "H", + "output_sha256": "b75d2db1fc9c0b4e1d7e6b3438576f9be59869ba00453b705c9ccea13d5e6068" + }, + { + "stage": 466, + "kind": "D", + "output_sha256": "c340f0e75416cba2ecd6050004cebe233a8516c46d88e53088cb3c15d97691d0" + }, + { + "stage": 467, + "kind": "H", + "output_sha256": "51ae94bff37e293dce7b3e092295bb3c8d5656cadd34cc997859738f68c3c435" + }, + { + "stage": 468, + "kind": "D", + "output_sha256": "51ae94bff37e293dce7b3e092295bb3c8d5656cadd34cc997859738f68c3c435" + }, + { + "stage": 469, + "kind": "H", + "output_sha256": "3b31b959071eb27a84279475183bc5119a9d8375469fa54c20e3ab75dc80fd7b" + }, + { + "stage": 470, + "kind": "D", + "output_sha256": "a65e07287411e5d86de54d9bb06b79e7ab25754b6db5f3eca46973cc891e7e54" + }, + { + "stage": 471, + "kind": "H", + "output_sha256": "01921c9449393e0ecdef9fc015e5f686122581d900d634c0658f5306c733ad86" + }, + { + "stage": 472, + "kind": "D", + "output_sha256": "01921c9449393e0ecdef9fc015e5f686122581d900d634c0658f5306c733ad86" + }, + { + "stage": 473, + "kind": "H", + "output_sha256": "bb4879700178f3e76e655075b9b20c9c15ae4b508aefede05de7a37f54552191" + }, + { + "stage": 474, + "kind": "D", + "output_sha256": "e7b638a182b9eef3d796a8522386c4a65e8975a118b8dbd9fb06674c69a01ed7" + }, + { + "stage": 475, + "kind": "H", + "output_sha256": "706741f726366fc5b9237416bdb5369273475c8faf81be90b5be5c0ec34ae1a0" + }, + { + "stage": 476, + "kind": "D", + "output_sha256": "706741f726366fc5b9237416bdb5369273475c8faf81be90b5be5c0ec34ae1a0" + }, + { + "stage": 477, + "kind": "H", + "output_sha256": "57585e85ecb914b27701ec843a8ee8cf718dc3eacccfa8f7642e6115c01cd526" + }, + { + "stage": 478, + "kind": "D", + "output_sha256": "c355aa18e7b94b450c7b1f2d693e368a3cbcf066334cc1840739bdb6b83368cb" + }, + { + "stage": 479, + "kind": "H", + "output_sha256": "706741f726366fc5b9237416bdb5369273475c8faf81be90b5be5c0ec34ae1a0" + }, + { + "stage": 480, + "kind": "D", + "output_sha256": "706741f726366fc5b9237416bdb5369273475c8faf81be90b5be5c0ec34ae1a0" + }, + { + "stage": 481, + "kind": "H", + "output_sha256": "05801f9e1a33f48ae37d2408788b40ae08149bc5caeacff29e8f7929d5620393" + }, + { + "stage": 482, + "kind": "D", + "output_sha256": "f09c9bed41b8660bff5a53813c436ee9660b6e20738157d167a41c012e99c5f9" + }, + { + "stage": 483, + "kind": "H", + "output_sha256": "706741f726366fc5b9237416bdb5369273475c8faf81be90b5be5c0ec34ae1a0" + }, + { + "stage": 484, + "kind": "D", + "output_sha256": "706741f726366fc5b9237416bdb5369273475c8faf81be90b5be5c0ec34ae1a0" + }, + { + "stage": 485, + "kind": "H", + "output_sha256": "57585e85ecb914b27701ec843a8ee8cf718dc3eacccfa8f7642e6115c01cd526" + }, + { + "stage": 486, + "kind": "D", + "output_sha256": "c355aa18e7b94b450c7b1f2d693e368a3cbcf066334cc1840739bdb6b83368cb" + }, + { + "stage": 487, + "kind": "H", + "output_sha256": "706741f726366fc5b9237416bdb5369273475c8faf81be90b5be5c0ec34ae1a0" + }, + { + "stage": 488, + "kind": "D", + "output_sha256": "706741f726366fc5b9237416bdb5369273475c8faf81be90b5be5c0ec34ae1a0" + }, + { + "stage": 489, + "kind": "H", + "output_sha256": "64f07a4b7ae755bd411ca8ff117d50e80501067808403d2073829c2e624eeb37" + }, + { + "stage": 490, + "kind": "D", + "output_sha256": "e7b638a182b9eef3d796a8522386c4a65e8975a118b8dbd9fb06674c69a01ed7" + }, + { + "stage": 491, + "kind": "H", + "output_sha256": "706741f726366fc5b9237416bdb5369273475c8faf81be90b5be5c0ec34ae1a0" + }, + { + "stage": 492, + "kind": "D", + "output_sha256": "706741f726366fc5b9237416bdb5369273475c8faf81be90b5be5c0ec34ae1a0" + }, + { + "stage": 493, + "kind": "H", + "output_sha256": "e0a312f8ad955a27861ac652b06ef82a5efb5156799f4bdd0c3781513fffbc3a" + }, + { + "stage": 494, + "kind": "D", + "output_sha256": "ea182abc048029f0a08a83f98d7b191610a3a02c4092d3bf1313f7639c73b89c" + }, + { + "stage": 495, + "kind": "H", + "output_sha256": "e056fe39226bcee2ac05e1369025d8c915401a7f008b3112a80cbb2234f44cb1" + }, + { + "stage": 496, + "kind": "D", + "output_sha256": "e056fe39226bcee2ac05e1369025d8c915401a7f008b3112a80cbb2234f44cb1" + }, + { + "stage": 497, + "kind": "H", + "output_sha256": "ff8628ae4d39b72194450eeebd4b13051eb71343d0f3cd014e9f9e2d3c103420" + }, + { + "stage": 498, + "kind": "D", + "output_sha256": "b3b65a1b19cd27a346467bd6e8cda0adb9612a89545b83294682a10e3e5d6401" + }, + { + "stage": 499, + "kind": "H", + "output_sha256": "5b4ac0f1595a1ead0ad5666d46114517dce8e03be26f72792e12de8e10732869" + }, + { + "stage": 500, + "kind": "D", + "output_sha256": "5b4ac0f1595a1ead0ad5666d46114517dce8e03be26f72792e12de8e10732869" + }, + { + "stage": 501, + "kind": "H", + "output_sha256": "e93fe7d81cadc49dbaaac20a22a219fbdbdf2fd1d51f1175f31656f26fbcb66d" + }, + { + "stage": 502, + "kind": "D", + "output_sha256": "a48a4a30d67630e3308cfc4d6d2832fde2744e52a359590bb073313c2a5f4193" + }, + { + "stage": 503, + "kind": "H", + "output_sha256": "26817d0ba33b40bc82d64cafbec3cede2a97aa3a2bc14a9d13f7fd2a3eb4552c" + }, + { + "stage": 504, + "kind": "D", + "output_sha256": "26817d0ba33b40bc82d64cafbec3cede2a97aa3a2bc14a9d13f7fd2a3eb4552c" + }, + { + "stage": 505, + "kind": "H", + "output_sha256": "404e3dc38c7366b35b744690fd6450562e4553e63d245cc0c4c684eb954fad69" + }, + { + "stage": 506, + "kind": "D", + "output_sha256": "2a73c898697490e4e0e77fa801e1cbbe5e17746bf0296c513d2c23d97fd0bbd1" + }, + { + "stage": 507, + "kind": "H", + "output_sha256": "cb41cf493a56ba8cb5e14b60baac16a7a74de1aa0393fdde85a882ffaffc25a6" + }, + { + "stage": 508, + "kind": "D", + "output_sha256": "cb41cf493a56ba8cb5e14b60baac16a7a74de1aa0393fdde85a882ffaffc25a6" + }, + { + "stage": 509, + "kind": "H", + "output_sha256": "b5e564b902a6ddeafc02da6a3f6d8350beded1737a40b142fd1a47eea155d1ca" + }, + { + "stage": 510, + "kind": "D", + "output_sha256": "3c91980c949e1196c3d7c8906413be4870fe8e27a563f53b85233a4810538377" + }, + { + "stage": 511, + "kind": "H", + "output_sha256": "528047535874d41257d43e28ed87cc1a9387529ba425d4dd96ac5ec6a2cc8b20" + }, + { + "stage": 512, + "kind": "D", + "output_sha256": "528047535874d41257d43e28ed87cc1a9387529ba425d4dd96ac5ec6a2cc8b20" + }, + { + "stage": 513, + "kind": "H", + "output_sha256": "9058f107c9a52077d684594299e85c3aaec9852679ac23716d3851c5e57510cf" + }, + { + "stage": 514, + "kind": "D", + "output_sha256": "303f5bad8fa8b0328d3988fab7fb2a48fd89af6b64f14a51a6056b67cb350639" + }, + { + "stage": 515, + "kind": "H", + "output_sha256": "1711ed537baca3c75f2d596ef1faa806deb24d0dfeba479cd4d49c701a0511f2" + }, + { + "stage": 516, + "kind": "D", + "output_sha256": "1711ed537baca3c75f2d596ef1faa806deb24d0dfeba479cd4d49c701a0511f2" + }, + { + "stage": 517, + "kind": "H", + "output_sha256": "038d398e734a40589c9d0a088a99d5e3214247047e2f73522cc59f44a7d54b35" + }, + { + "stage": 518, + "kind": "D", + "output_sha256": "b5ad26fb5a005ba2d3259144244e9978622aa9a432407ef13fed5de65481675a" + }, + { + "stage": 519, + "kind": "H", + "output_sha256": "2011086aed731cb6fdbd5159ca3eb2997b2df16c37328dbd614d2991750b40d8" + }, + { + "stage": 520, + "kind": "D", + "output_sha256": "2011086aed731cb6fdbd5159ca3eb2997b2df16c37328dbd614d2991750b40d8" + }, + { + "stage": 521, + "kind": "H", + "output_sha256": "672d551247fdfcec3d362822a3a348071f15de1d36cd37c30543cac1b24c0043" + }, + { + "stage": 522, + "kind": "D", + "output_sha256": "326921df33c5e34c4f30bc79b02fd600c888e7b7b945244fd69d31ccefa3df1c" + }, + { + "stage": 523, + "kind": "H", + "output_sha256": "2011086aed731cb6fdbd5159ca3eb2997b2df16c37328dbd614d2991750b40d8" + }, + { + "stage": 524, + "kind": "D", + "output_sha256": "2011086aed731cb6fdbd5159ca3eb2997b2df16c37328dbd614d2991750b40d8" + }, + { + "stage": 525, + "kind": "H", + "output_sha256": "4a7d4dc764433f288751e8fd5ce5c008fbe322d9dbc18d17fef8c3c625c2fa81" + }, + { + "stage": 526, + "kind": "D", + "output_sha256": "4da9de97ad4004c6a81d5f379332741e9ba177b370bb6938aff60dcc7b51a034" + }, + { + "stage": 527, + "kind": "H", + "output_sha256": "2011086aed731cb6fdbd5159ca3eb2997b2df16c37328dbd614d2991750b40d8" + }, + { + "stage": 528, + "kind": "D", + "output_sha256": "2011086aed731cb6fdbd5159ca3eb2997b2df16c37328dbd614d2991750b40d8" + }, + { + "stage": 529, + "kind": "H", + "output_sha256": "672d551247fdfcec3d362822a3a348071f15de1d36cd37c30543cac1b24c0043" + }, + { + "stage": 530, + "kind": "D", + "output_sha256": "c22d2889c26371694db1b9cbd09cdcf8abb6f12f8009314c617825dcab044cbf" + }, + { + "stage": 531, + "kind": "H", + "output_sha256": "9f2d277f93eaccb1d2fb4f506969f1c5d26d1bd2b279700d79584bbc67c4af57" + }, + { + "stage": 532, + "kind": "D", + "output_sha256": "9f2d277f93eaccb1d2fb4f506969f1c5d26d1bd2b279700d79584bbc67c4af57" + }, + { + "stage": 533, + "kind": "H", + "output_sha256": "63984d515af48a1067eb72e83ce3b666466aa5d12431229469a755f3d73f9239" + }, + { + "stage": 534, + "kind": "D", + "output_sha256": "33b8fca135a11abd21e3d7cfed5a9bc78b67a68c1656b4a3f5aa6e697ea7c0ef" + }, + { + "stage": 535, + "kind": "H", + "output_sha256": "6702979481652e33f5a1ef603c8113ba59bed1f3e9790924abc30bf272b10d51" + }, + { + "stage": 536, + "kind": "D", + "output_sha256": "6702979481652e33f5a1ef603c8113ba59bed1f3e9790924abc30bf272b10d51" + }, + { + "stage": 537, + "kind": "H", + "output_sha256": "0e0566494f2ea9eeb3d7b7d9eb538f4261ca02a2953e4591fa53855046429027" + }, + { + "stage": 538, + "kind": "D", + "output_sha256": "9a2663f325062b8249edbfb38b8b3b780743e31f2ce47059ae96a461d222b861" + }, + { + "stage": 539, + "kind": "H", + "output_sha256": "817891218f863891eead640f5ccaee649e101c9b894779844ecd3f21fb1024d2" + }, + { + "stage": 540, + "kind": "D", + "output_sha256": "817891218f863891eead640f5ccaee649e101c9b894779844ecd3f21fb1024d2" + }, + { + "stage": 541, + "kind": "H", + "output_sha256": "dd160c69e07b9d538cbeda952ed5213cbb12c3626781f645b3b878477bd5a88f" + }, + { + "stage": 542, + "kind": "D", + "output_sha256": "571337926ca26d33d9aa5191fa369c3c53b2366b872f6adf96ca64b9540be89d" + }, + { + "stage": 543, + "kind": "H", + "output_sha256": "3e924ffdf6f297612e7f3074068248d105f115b2359998fdfb1a1aa756ef277b" + }, + { + "stage": 544, + "kind": "D", + "output_sha256": "3e924ffdf6f297612e7f3074068248d105f115b2359998fdfb1a1aa756ef277b" + }, + { + "stage": 545, + "kind": "H", + "output_sha256": "c13d15cf681e458ea0176e457f0191489a47316e1e6c33f038029d3646a867c9" + }, + { + "stage": 546, + "kind": "D", + "output_sha256": "6b45da5273db3002093ff9b82aefe859a07326c8c868c8ea423c8563b10e7c03" + }, + { + "stage": 547, + "kind": "H", + "output_sha256": "0451522d57695d21f8bd215c29c59f5def368161a073196f7cf7345ae85c6070" + }, + { + "stage": 548, + "kind": "D", + "output_sha256": "0451522d57695d21f8bd215c29c59f5def368161a073196f7cf7345ae85c6070" + }, + { + "stage": 549, + "kind": "D", + "output_sha256": "a436c84755029cafca0ac2e4998edbf581e37c426ab77b0f877b176a4feebbca" + }, + { + "stage": 550, + "kind": "H", + "output_sha256": "3963ad39246c64355b2ab1d9bbc5c0d1653295d742acb8200de535c839d285ca" + }, + { + "stage": 551, + "kind": "D", + "output_sha256": "bbf70c21899a476092741c3b67430fdef2be0ed3474139035b1b253ca4dd5654" + }, + { + "stage": 552, + "kind": "H", + "output_sha256": "2c54fd704ae1ebf6cf0f706741bc4885408d9e12c66aa12b7a26af494bad05dd" + }, + { + "stage": 553, + "kind": "D", + "output_sha256": "5f027de3cc92c443fa6ce7aae64a1efabf123a9a218d2b1e682132799d5a273b" + }, + { + "stage": 554, + "kind": "H", + "output_sha256": "a4f30b0bcf83a082e72f209d89c32eb16f94ba26734c33c776af7509ebf66d33" + }, + { + "stage": 555, + "kind": "D", + "output_sha256": "3b956a2d4b5eb98a0611c934d857e2dfbfbc97ee514a815bb2ba8583cbc478ad" + }, + { + "stage": 556, + "kind": "H", + "output_sha256": "30d99584303344fb7cd1cfa88060df4e3347f51450141dadb846d84c0047acdb" + }, + { + "stage": 557, + "kind": "D", + "output_sha256": "06802e1fda7fb5b7d70c6d7de889b64a7bcebaaf2b69c81f747e16b952cf576b" + }, + { + "stage": 558, + "kind": "H", + "output_sha256": "cd699a346c9942ae281c62c7309e52023c7245b5454e720f6cd4a67d2a7b72cf" + }, + { + "stage": 559, + "kind": "D", + "output_sha256": "ef1d22e427d3dfc5e0a8154acb8345c50f357927155b85e7306745706c5c65b9" + }, + { + "stage": 560, + "kind": "H", + "output_sha256": "1d43cfd214f55f8fa48bbd78c7c21e8f79626ae6b4a966452c29676620252e25" + }, + { + "stage": 561, + "kind": "D", + "output_sha256": "7064b9b23d67fffa510c8979ddbc2add41932fdf061e350376581f811c35758d" + }, + { + "stage": 562, + "kind": "H", + "output_sha256": "931e2489881760ef08e24ad025c5d1aa92863704e551d180821ee4353abe2228" + }, + { + "stage": 563, + "kind": "D", + "output_sha256": "f45d6db215cc2cc9e00898fe959189d821e4228cac835c3cedd562f1fb54fb22" + }, + { + "stage": 564, + "kind": "H", + "output_sha256": "5177350ffbaeb09489722f3c213e2eaede72010d29e050142aa5d0d69b92b3e2" + }, + { + "stage": 565, + "kind": "D", + "output_sha256": "5177350ffbaeb09489722f3c213e2eaede72010d29e050142aa5d0d69b92b3e2" + }, + { + "stage": 566, + "kind": "H", + "output_sha256": "3337cf4aa64ff4f347f879b57675465b366c26c935805cf085104421f9ef7dc8" + }, + { + "stage": 567, + "kind": "D", + "output_sha256": "d8f7435703cae6bd0e762ce2e76913d59d499438e60847e62aba4fd8cae55254" + }, + { + "stage": 568, + "kind": "H", + "output_sha256": "3bae16be38191b6a192df09b5c30ed3e7dbdad7217303ded6343f20704db5633" + }, + { + "stage": 569, + "kind": "D", + "output_sha256": "3bae16be38191b6a192df09b5c30ed3e7dbdad7217303ded6343f20704db5633" + }, + { + "stage": 570, + "kind": "H", + "output_sha256": "3d8b78b094c6048d30c152f89010469e466d698646f61c4844eee0fe3af0f4af" + }, + { + "stage": 571, + "kind": "D", + "output_sha256": "94ced25fc8481f70347b5d741293017b181c67ee65119483ecccae31ed151856" + }, + { + "stage": 572, + "kind": "H", + "output_sha256": "b5a44838e329d050135ccce5388c28aa86aea496604a173154e04a7a46070d22" + }, + { + "stage": 573, + "kind": "D", + "output_sha256": "b5a44838e329d050135ccce5388c28aa86aea496604a173154e04a7a46070d22" + }, + { + "stage": 574, + "kind": "H", + "output_sha256": "3da25aa42a70f591f20bc42b49e1fc4381910add52ff2aa54e618138e290ba8d" + }, + { + "stage": 575, + "kind": "D", + "output_sha256": "32d9a03103b5b52a7ee62682d31165ee59be77d700b248bdc0f7e8451b43baf7" + }, + { + "stage": 576, + "kind": "H", + "output_sha256": "a89ebb775996a43dd80e1c5d069de82d799ccb4975a444e03674641baf09181b" + }, + { + "stage": 577, + "kind": "D", + "output_sha256": "a89ebb775996a43dd80e1c5d069de82d799ccb4975a444e03674641baf09181b" + }, + { + "stage": 578, + "kind": "H", + "output_sha256": "dde1e7982ef10d289b933b1eef4ba7e30ee0e06d6afc1f1bccb90591212da42d" + }, + { + "stage": 579, + "kind": "D", + "output_sha256": "426c3844bd119487992ef224e52980a0f6204e8097b817f4df33a703309d6156" + }, + { + "stage": 580, + "kind": "H", + "output_sha256": "e3a88bed1d306bfc29ebd94e7102a6e0262d7ec543b2dc3e894e68aa421f8fc6" + }, + { + "stage": 581, + "kind": "D", + "output_sha256": "e3a88bed1d306bfc29ebd94e7102a6e0262d7ec543b2dc3e894e68aa421f8fc6" + }, + { + "stage": 582, + "kind": "H", + "output_sha256": "8c081657f2df435f9a4a0c39120610f7c9bb3312fdb9b91a2258deb28ab20337" + }, + { + "stage": 583, + "kind": "D", + "output_sha256": "7d7b8201feb8d2d1e538d49c6cbf98cb683375a757ec2fcd44f92359d3f8c445" + }, + { + "stage": 584, + "kind": "H", + "output_sha256": "e3a88bed1d306bfc29ebd94e7102a6e0262d7ec543b2dc3e894e68aa421f8fc6" + }, + { + "stage": 585, + "kind": "D", + "output_sha256": "e3a88bed1d306bfc29ebd94e7102a6e0262d7ec543b2dc3e894e68aa421f8fc6" + }, + { + "stage": 586, + "kind": "H", + "output_sha256": "c10eb3ce09f9aa9017b4cb50a312b56bfa811a5d7ae696d7f26f50ce0d73a3d8" + }, + { + "stage": 587, + "kind": "D", + "output_sha256": "426c3844bd119487992ef224e52980a0f6204e8097b817f4df33a703309d6156" + }, + { + "stage": 588, + "kind": "H", + "output_sha256": "e3a88bed1d306bfc29ebd94e7102a6e0262d7ec543b2dc3e894e68aa421f8fc6" + }, + { + "stage": 589, + "kind": "D", + "output_sha256": "e3a88bed1d306bfc29ebd94e7102a6e0262d7ec543b2dc3e894e68aa421f8fc6" + }, + { + "stage": 590, + "kind": "H", + "output_sha256": "e70003eef612a9a8293bbddf79b2c32a8b1b9f32576ca3f81fd6758325129395" + }, + { + "stage": 591, + "kind": "D", + "output_sha256": "021ec5aebc2b3f209b1a370fa654ea306326195e59aba4cfb4941ecd88327ebd" + }, + { + "stage": 592, + "kind": "H", + "output_sha256": "a025b511930c2ec6337d3b886d06e137996014ff4dde37deacb704a2b5909330" + }, + { + "stage": 593, + "kind": "D", + "output_sha256": "a025b511930c2ec6337d3b886d06e137996014ff4dde37deacb704a2b5909330" + }, + { + "stage": 594, + "kind": "H", + "output_sha256": "532ea9acbc5409735b25a6bc3903d6da156c3598f1943ab143b6834a23270c42" + }, + { + "stage": 595, + "kind": "D", + "output_sha256": "08f3a3079c0d79389d7afb96e698be79c39e2db34f432e4cd4e4b997917bd649" + }, + { + "stage": 596, + "kind": "H", + "output_sha256": "9f1e8ef42e3c9777b52190edca29319186fe36465e075b9a18526a493b287a17" + }, + { + "stage": 597, + "kind": "D", + "output_sha256": "9f1e8ef42e3c9777b52190edca29319186fe36465e075b9a18526a493b287a17" + }, + { + "stage": 598, + "kind": "H", + "output_sha256": "407bf8783f7b4d04ccbf3edac53aa25f7d7a5f064bf14e58d0b3f2b4fe64151c" + }, + { + "stage": 599, + "kind": "D", + "output_sha256": "8fb16ae5559d334a144082666d98a2b16ca3e6ad51fcf7bd00fbe72a3a53d8b0" + }, + { + "stage": 600, + "kind": "H", + "output_sha256": "b2b200ff1f637124cef155894073d515cca1b56825cba386dfc2ef88ba557790" + }, + { + "stage": 601, + "kind": "D", + "output_sha256": "b2b200ff1f637124cef155894073d515cca1b56825cba386dfc2ef88ba557790" + }, + { + "stage": 602, + "kind": "H", + "output_sha256": "dd515b74309d7441fee2e13063d0dd8fba63113e04139d9f96f7796d43b00bf1" + }, + { + "stage": 603, + "kind": "D", + "output_sha256": "26c6bc4c86f3c9a082d35bea8753d0b4bfcb384cdc7dacb543964816def4632e" + }, + { + "stage": 604, + "kind": "H", + "output_sha256": "3e52bb75b724178a1cb875d16c9c02b3f74ab36f82958a8003558c910ece4f5b" + }, + { + "stage": 605, + "kind": "D", + "output_sha256": "3e52bb75b724178a1cb875d16c9c02b3f74ab36f82958a8003558c910ece4f5b" + }, + { + "stage": 606, + "kind": "H", + "output_sha256": "bf3449cbd568a724999355b623922adc0956f678d5a2a0322bcdb16ad25a3fd2" + }, + { + "stage": 607, + "kind": "D", + "output_sha256": "333fc76c6070375c3ddd3dcd6cb334e3babb0bd173f835ade458424b0869b83c" + }, + { + "stage": 608, + "kind": "H", + "output_sha256": "e1c9778bfe293db1f477096a9ed699a0fc93c2fc841dbdc59c0aa80b2045ff6e" + }, + { + "stage": 609, + "kind": "D", + "output_sha256": "e1c9778bfe293db1f477096a9ed699a0fc93c2fc841dbdc59c0aa80b2045ff6e" + }, + { + "stage": 610, + "kind": "H", + "output_sha256": "fae289249f22ba0162c04cd865e1e3ec6a109cec42cc750e311aac0da43c9d37" + }, + { + "stage": 611, + "kind": "D", + "output_sha256": "df996819f7131521f05bf9473f7c796f226d04da6a08fbc50583fdb199927e17" + }, + { + "stage": 612, + "kind": "H", + "output_sha256": "8219a861443b48cf25e9e735e8672197b8ded2eafeee7ba48202cd7c70f023eb" + }, + { + "stage": 613, + "kind": "D", + "output_sha256": "8219a861443b48cf25e9e735e8672197b8ded2eafeee7ba48202cd7c70f023eb" + }, + { + "stage": 614, + "kind": "H", + "output_sha256": "697b93b63982f92ad968881e428bafd7bef60b106618b262927fbfefc032f28e" + }, + { + "stage": 615, + "kind": "D", + "output_sha256": "fae70229a470713c49d21685143f815e875f43f09e6ff9936d35e5d42408229b" + }, + { + "stage": 616, + "kind": "H", + "output_sha256": "d9f75efb3ba72e1463b88a3b521c8b3c9bce0e7dd4a46fa88bc41caf375c6ffd" + }, + { + "stage": 617, + "kind": "D", + "output_sha256": "d9f75efb3ba72e1463b88a3b521c8b3c9bce0e7dd4a46fa88bc41caf375c6ffd" + }, + { + "stage": 618, + "kind": "H", + "output_sha256": "7435533caccd2f31c7efe60ab97079a8414a291ecb32717c4bbf2e14cf52be24" + }, + { + "stage": 619, + "kind": "D", + "output_sha256": "81276a7def10b9f7a6751b12a3585bfc3cafea976c619d66e98d98089f7ded3a" + }, + { + "stage": 620, + "kind": "H", + "output_sha256": "0e8bce099165ea07cc387efa15ea4160599dbff148366fb4587f7772dfc3eab1" + }, + { + "stage": 621, + "kind": "D", + "output_sha256": "0e8bce099165ea07cc387efa15ea4160599dbff148366fb4587f7772dfc3eab1" + }, + { + "stage": 622, + "kind": "H", + "output_sha256": "f358b8912acd66899999f8bfdbc1c506da9a2b92436465ec182a5c76b76a0fd6" + }, + { + "stage": 623, + "kind": "D", + "output_sha256": "0b11aef73da3323c08681eae8975d002c2633943c6f6e12d1dbb7e0a52da8487" + }, + { + "stage": 624, + "kind": "H", + "output_sha256": "198075b4f73167ce1a766911ea6c96bd35fbfe3502f8c1306a11f660ed1d3af8" + }, + { + "stage": 625, + "kind": "D", + "output_sha256": "198075b4f73167ce1a766911ea6c96bd35fbfe3502f8c1306a11f660ed1d3af8" + }, + { + "stage": 626, + "kind": "H", + "output_sha256": "39744c66a9f05d4ed705eb5e7a5d699be826370e9b83b68166a31f1f71f40ead" + }, + { + "stage": 627, + "kind": "D", + "output_sha256": "16e0fe5d935e62f30206a15d31814bd5b91b3a3e7c730c3e37c6bd33fa7f2aa2" + }, + { + "stage": 628, + "kind": "H", + "output_sha256": "1945c50a6519b7e311407eab7e1d9955cd6e939f4784d4381e4564317a228832" + }, + { + "stage": 629, + "kind": "D", + "output_sha256": "1945c50a6519b7e311407eab7e1d9955cd6e939f4784d4381e4564317a228832" + }, + { + "stage": 630, + "kind": "H", + "output_sha256": "6dc2d74a55e8f5fa97d9d01f640bab8d8a356c1e16ef2a17be11768406aa381f" + }, + { + "stage": 631, + "kind": "D", + "output_sha256": "0c13b0bfaf0ddc64fff7d833b911cf31ce74d2f2ad2c6b0c34f6b669be4b3d31" + }, + { + "stage": 632, + "kind": "H", + "output_sha256": "74e3cf79ba508ecc581c31455f2a8d9f6ccb7aea51baa7afcf32b24996fc5504" + }, + { + "stage": 633, + "kind": "D", + "output_sha256": "74e3cf79ba508ecc581c31455f2a8d9f6ccb7aea51baa7afcf32b24996fc5504" + }, + { + "stage": 634, + "kind": "H", + "output_sha256": "395619f35dd7420dec8b3eee7c9a9d9a17672217d4edcdcf9051589596e107f1" + }, + { + "stage": 635, + "kind": "D", + "output_sha256": "b57a6c351b75d0f41f1d9189ff93a59306ec1b44b8300330ddddfa00b486c595" + }, + { + "stage": 636, + "kind": "H", + "output_sha256": "3f8fedc09be4d4ed0d18a6078642c550183cad4f632064c1d65bad0903c060d9" + }, + { + "stage": 637, + "kind": "D", + "output_sha256": "3f8fedc09be4d4ed0d18a6078642c550183cad4f632064c1d65bad0903c060d9" + }, + { + "stage": 638, + "kind": "H", + "output_sha256": "b89e4e569996cfbb0abd58d9e0109547ba2cebeed25400a63911f2015fa64478" + }, + { + "stage": 639, + "kind": "D", + "output_sha256": "e326e8ebb5704615a4bb0b2492d42ffbb5e55675eefc24b6d108db2eb04aeddd" + }, + { + "stage": 640, + "kind": "H", + "output_sha256": "68087da6e64e8493a707bc6da1bf7ee98075c4e3b28092e60bbca2c4868fd842" + }, + { + "stage": 641, + "kind": "D", + "output_sha256": "68087da6e64e8493a707bc6da1bf7ee98075c4e3b28092e60bbca2c4868fd842" + }, + { + "stage": 642, + "kind": "H", + "output_sha256": "30efcb9a2e9290a34a907094292f287f182bcb836a4271c9a5f6d928676231cd" + }, + { + "stage": 643, + "kind": "D", + "output_sha256": "5eff557781a5401ee7a4d728619303ff0e79306375a60be8b8718500149436fc" + }, + { + "stage": 644, + "kind": "H", + "output_sha256": "52dcb1a35b66629e40e0e1115aa03cd191ef53a1d8bf68773add3fe6ce0c6359" + }, + { + "stage": 645, + "kind": "D", + "output_sha256": "52dcb1a35b66629e40e0e1115aa03cd191ef53a1d8bf68773add3fe6ce0c6359" + }, + { + "stage": 646, + "kind": "H", + "output_sha256": "340f8f8854cd63a2c5cb6d04f257b742cd940b1757dec56466e7087043746af6" + }, + { + "stage": 647, + "kind": "D", + "output_sha256": "078a9213b8180786f4fb6fced935303cdb775fb62a5bf759a9ded74383d75e27" + }, + { + "stage": 648, + "kind": "H", + "output_sha256": "c9520f0d5fa13a92f57d65cac467c0deec6f76a94fe133a227cdbefe6dd5bc39" + }, + { + "stage": 649, + "kind": "D", + "output_sha256": "c9520f0d5fa13a92f57d65cac467c0deec6f76a94fe133a227cdbefe6dd5bc39" + }, + { + "stage": 650, + "kind": "D", + "output_sha256": "cd388bd1d99db059aa961fba80b3339b889a0f6db8015eee8630f7c08c9951f1" + }, + { + "stage": 651, + "kind": "H", + "output_sha256": "5f3375a584b2e1e55de9a71d00df98241fbdc5a8231d1d34c8d811fc558506f2" + }, + { + "stage": 652, + "kind": "D", + "output_sha256": "5afac666fd3500c17cda1fe210c8eeb5c8fe8326b75030fbb7eadfce8b1a66fa" + }, + { + "stage": 653, + "kind": "H", + "output_sha256": "94621ec896b79a8e238fbe09361b6cad130dc80906dc86adcfcf3d84aa93ba6f" + }, + { + "stage": 654, + "kind": "D", + "output_sha256": "69dddf7f2cfa4f165dc48b39929a37ee3444a69a464110474e0253fa6bdc909d" + }, + { + "stage": 655, + "kind": "H", + "output_sha256": "1627a63da13e64de3d58481f9c867486fc7795d15ab8fa7393e9f144e1cf924f" + }, + { + "stage": 656, + "kind": "D", + "output_sha256": "358ad5feffe9df4e6162278f5c7ca8c520d035a954132b7d942b63d095e5c968" + }, + { + "stage": 657, + "kind": "H", + "output_sha256": "ba1cba64e93516b380f34e9c507cc488ecdc66e70470035a5a0cf74b31b68c07" + }, + { + "stage": 658, + "kind": "D", + "output_sha256": "1bad4f45410d7d82577a6b399a655d322935941ea328c6efee8383a3d5287254" + }, + { + "stage": 659, + "kind": "H", + "output_sha256": "02ba4203d46cf57fe6bbf56357d5aea82c74da006bc2b4152fcc41194dc84b4d" + }, + { + "stage": 660, + "kind": "D", + "output_sha256": "4104c8fd3ec99a8f14b4844a45f97e2b4512e8036b77d21740cc75b3a873c800" + }, + { + "stage": 661, + "kind": "H", + "output_sha256": "28cbc17ba78e582940dc0524ea0061198bb9c6ae46660cf3d6947e7c912ba933" + }, + { + "stage": 662, + "kind": "D", + "output_sha256": "eb15bb6d163f7e416190b62a42e4dd18cf87b84dd09d884961a235c02b9e3d20" + }, + { + "stage": 663, + "kind": "H", + "output_sha256": "ed082c758c9c574273b6ee52e8408d70aa16dda0d20dae582ccde0b654c6e814" + }, + { + "stage": 664, + "kind": "D", + "output_sha256": "7d2c07ab822afdea8607ff954ad830552f08b26e25ab168b6a50393dcf4e1da2" + }, + { + "stage": 665, + "kind": "H", + "output_sha256": "1cf3e847dd76dc60af4aa84ab486b0cf214d56bcce4a460d4bbaf903a6f9ba10" + }, + { + "stage": 666, + "kind": "D", + "output_sha256": "1cf3e847dd76dc60af4aa84ab486b0cf214d56bcce4a460d4bbaf903a6f9ba10" + }, + { + "stage": 667, + "kind": "H", + "output_sha256": "0a6b0a030f07bdb03a2ab9ddb7cb41ecf6cb8693deb4c7995b679ccf98e8f7fd" + }, + { + "stage": 668, + "kind": "D", + "output_sha256": "b9ae819e105cfaf399f332f20147a4ac650116a4091f00a4144755ce4b3b1624" + }, + { + "stage": 669, + "kind": "H", + "output_sha256": "5bcfc08572d63b0ce491a85f2e031df6eec0e10a13509dfb074878fa2c6875e0" + }, + { + "stage": 670, + "kind": "D", + "output_sha256": "5bcfc08572d63b0ce491a85f2e031df6eec0e10a13509dfb074878fa2c6875e0" + }, + { + "stage": 671, + "kind": "H", + "output_sha256": "67b7b60f780a0c4ee3f2e0aeb537fe6d962900a2cd1572cf94fbb41eb48d4ae5" + }, + { + "stage": 672, + "kind": "D", + "output_sha256": "2137fc3b56170840f6b4c70cb0e47eb8909b78ecda8b833c1eedf57fbeb72614" + }, + { + "stage": 673, + "kind": "H", + "output_sha256": "1f16793855fc23c229d33e32b327947deaeff3c9f236191043f2f3106553e910" + }, + { + "stage": 674, + "kind": "D", + "output_sha256": "1f16793855fc23c229d33e32b327947deaeff3c9f236191043f2f3106553e910" + }, + { + "stage": 675, + "kind": "H", + "output_sha256": "b1c699c7903200df891316cc28c2d3e3129cfb5e638929d0f9d0834d42ec35cf" + }, + { + "stage": 676, + "kind": "D", + "output_sha256": "c6b647977a4950c561b29a476de915b5cd2fb65ffe183afa21c0076952d5932f" + }, + { + "stage": 677, + "kind": "H", + "output_sha256": "d90bdac6fc9b6983084c6c1529ceff73b625a1c75eb6b6fe60538dcf10dff9c8" + }, + { + "stage": 678, + "kind": "D", + "output_sha256": "d90bdac6fc9b6983084c6c1529ceff73b625a1c75eb6b6fe60538dcf10dff9c8" + }, + { + "stage": 679, + "kind": "H", + "output_sha256": "49b1caf7eb9c1506e05bd3d1578f2ec71566025ccc789bab2911ec3661eb8b49" + }, + { + "stage": 680, + "kind": "D", + "output_sha256": "bd644703fa61ac03f287fa18ba89ed0a6cf63881ed60b5b4253379fcae97cf88" + }, + { + "stage": 681, + "kind": "H", + "output_sha256": "7a56f630cbdfbe056b0a64b356af6c90318d04e47132f30b55e6549b53ab32f8" + }, + { + "stage": 682, + "kind": "D", + "output_sha256": "7a56f630cbdfbe056b0a64b356af6c90318d04e47132f30b55e6549b53ab32f8" + }, + { + "stage": 683, + "kind": "H", + "output_sha256": "bd433d2eed27aa82855a9ce1a043ac3cfa9654617a34532ef25eb054d4d3668f" + }, + { + "stage": 684, + "kind": "D", + "output_sha256": "8d0ab3f837dacd0dff6c47a6909af8005808992e0b3e151a7781a9c7008b8ce7" + }, + { + "stage": 685, + "kind": "H", + "output_sha256": "405abd2e1bb974be1d82679a0829eeaa8e567aae4e9e632559a65877cae74082" + }, + { + "stage": 686, + "kind": "D", + "output_sha256": "405abd2e1bb974be1d82679a0829eeaa8e567aae4e9e632559a65877cae74082" + }, + { + "stage": 687, + "kind": "H", + "output_sha256": "e97256a8a9d7d316c812381abfdd28f1116e643829e5e008da8c55f03d491c40" + }, + { + "stage": 688, + "kind": "D", + "output_sha256": "eb588cb5bdba41591800e35c07e0ea08bdab09aff23502a456e22fbdd92db186" + }, + { + "stage": 689, + "kind": "H", + "output_sha256": "0dd45d6455c6e7305cdcb8c6fb99267ced750f5e816002deb558f82fe6ff43f5" + }, + { + "stage": 690, + "kind": "D", + "output_sha256": "0dd45d6455c6e7305cdcb8c6fb99267ced750f5e816002deb558f82fe6ff43f5" + }, + { + "stage": 691, + "kind": "H", + "output_sha256": "bd20f39dc8558a598eac956c19ca29be6e7312313ae0f537529c2ecb5ac66652" + }, + { + "stage": 692, + "kind": "D", + "output_sha256": "d81b4ce5f09035f398ac59d336e593410e0eb2a5062a7c35dc2086710222fd0f" + }, + { + "stage": 693, + "kind": "H", + "output_sha256": "5e4f4adec70f87cb74aac07da35771d83edd98d9c70476eee0b1cf50e37ccb5a" + }, + { + "stage": 694, + "kind": "D", + "output_sha256": "5e4f4adec70f87cb74aac07da35771d83edd98d9c70476eee0b1cf50e37ccb5a" + }, + { + "stage": 695, + "kind": "H", + "output_sha256": "085248ef70c290f391fba1a427418bae6c8d3c1846ccfccfffb93102be763b03" + }, + { + "stage": 696, + "kind": "D", + "output_sha256": "0595967a1d810bd39ac90af59a23b2a0de6be92c3940164cffd2be5dede2a9ee" + }, + { + "stage": 697, + "kind": "H", + "output_sha256": "f367776dce767c61827b6da28e8b94bd6d602d39ba8d6612933c44ec38677e16" + }, + { + "stage": 698, + "kind": "D", + "output_sha256": "f367776dce767c61827b6da28e8b94bd6d602d39ba8d6612933c44ec38677e16" + }, + { + "stage": 699, + "kind": "H", + "output_sha256": "73a4e1ce083e268d4e41c42e2cb0f1d9f8273c3e448ddb1627c0f78d5159983e" + }, + { + "stage": 700, + "kind": "D", + "output_sha256": "d7d1bdcdedbc0e7b193cb132cecf93fc44d353a27affb63ad9e5553539f64097" + }, + { + "stage": 701, + "kind": "H", + "output_sha256": "778372ab54b347eff45f0f19f35adf13fb3d858229dc74d1132238dc7f3511f0" + }, + { + "stage": 702, + "kind": "D", + "output_sha256": "778372ab54b347eff45f0f19f35adf13fb3d858229dc74d1132238dc7f3511f0" + }, + { + "stage": 703, + "kind": "H", + "output_sha256": "96946558a079a14ada2abb15efe5a3a2201221e02784eed25233bcb1cec0ce0d" + }, + { + "stage": 704, + "kind": "D", + "output_sha256": "930e6e375f679ff2cf5637496b3fe45335b0de14782187e00db30e2d8f12fbcc" + }, + { + "stage": 705, + "kind": "H", + "output_sha256": "92c0a050e368cfe3de6b612dc068bcc4b6147d732fe494e7e75776adb805d13c" + }, + { + "stage": 706, + "kind": "D", + "output_sha256": "92c0a050e368cfe3de6b612dc068bcc4b6147d732fe494e7e75776adb805d13c" + } + ] + }, + { + "field_size": 8, + "active_indices": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7 + ], + "adjoint": false, + "radius": "1048576", + "target_bits": 18, + "incoming_bits": 6, + "phase_bits": 43, + "data_bits": 77, + "observed_coefficient_bits": 81, + "counts": { + "logical_layers": 4, + "primitive_stages": 212, + "diagonal_stages": 108, + "hadamard_stages": 104 + }, + "layers": [ + { + "begin": 0, + "end": 53, + "pairs": [ + [ + 1, + 4 + ], + [ + 3, + 6 + ], + [ + 0, + 2 + ], + [ + 5, + 7 + ] + ], + "kinds": [ + "swap", + "swap", + "idle", + "idle" + ], + "permutation": [ + 4, + 0, + 5, + 2, + 1, + 6, + 3, + 7 + ], + "route_layers": 5 + }, + { + "begin": 53, + "end": 106, + "pairs": [ + [ + 0, + 1 + ], + [ + 2, + 3 + ], + [ + 4, + 5 + ], + [ + 6, + 7 + ] + ], + "kinds": [ + "butterfly", + "butterfly", + "butterfly", + "butterfly" + ], + "permutation": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7 + ], + "route_layers": 5 + }, + { + "begin": 106, + "end": 159, + "pairs": [ + [ + 0, + 2 + ], + [ + 1, + 3 + ], + [ + 4, + 6 + ], + [ + 5, + 7 + ] + ], + "kinds": [ + "butterfly", + "butterfly", + "butterfly", + "butterfly" + ], + "permutation": [ + 0, + 2, + 1, + 3, + 4, + 6, + 5, + 7 + ], + "route_layers": 5 + }, + { + "begin": 159, + "end": 212, + "pairs": [ + [ + 0, + 4 + ], + [ + 1, + 5 + ], + [ + 2, + 6 + ], + [ + 3, + 7 + ] + ], + "kinds": [ + "butterfly", + "butterfly", + "butterfly", + "butterfly" + ], + "permutation": [ + 0, + 2, + 4, + 6, + 1, + 3, + 5, + 7 + ], + "route_layers": 5 + } + ], + "logical_plan_sha256": "cc69ede15aa99957c5c98cc4c88634b24a3624121e8d10cc0549cea095115233", + "reference_stages_sha256": "776d7fdc30d31df00678bb6446cdd12954aa24c9b05fff1b9b7097f53c3fce50", + "stored_stages_sha256": "efdcea519a1f061f91305d237cdce3c96b276081e3adce70bcf4816ef4f51f4a", + "source_original_ast_sha256": "15211aaf783ddbe8714fb7c5c039e932422028d729566ce763a4c8016a82e537", + "source_adapted_ast_sha256": "550954f4c90dde9cae269f71042d223a2cba81d5a91dcfa7219fb36f338d1313", + "tensor_ast_sha256": "2b5d66a710ef21aaa1bcfc1db64267067455a5ba465694876a1c2a57fda2f357", + "phases": { + "phase_bits": 43, + "oracle_bits": 150, + "certificates": [ + { + "denominator": 1, + "numerator": 0, + "unit": [ + "1", + "0" + ], + "error_bound": "0", + "parameter": null + }, + { + "denominator": 4, + "numerator": 3, + "unit": [ + "0", + "-1" + ], + "error_bound": "0", + "parameter": null + }, + { + "denominator": 8, + "numerator": 1, + "unit": [ + "4102172429413465150590025728/5801347884869537974023710497", + "4102172429413504225169283295/5801347884869537974023710497" + ], + "error_bound": "55769103088818659610438567402588473685871954818257025571203/8279960383264648657311934674369581795752031283767425150071017480680112128", + "parameter": "-29147688205551/70368744177664" + }, + { + "denominator": 8, + "numerator": 5, + "unit": [ + "-4102172429413504225169283295/5801347884869537974023710497", + "-4102172429413465150590025728/5801347884869537974023710497" + ], + "error_bound": "55769103088818659610438567403029376125122039704282827568975/8279960383264648657311934674369581795752031283767425150071017480680112128", + "parameter": "29147688205551/70368744177664" + }, + { + "denominator": 8, + "numerator": 7, + "unit": [ + "4102172429413465150590025728/5801347884869537974023710497", + "-4102172429413504225169283295/5801347884869537974023710497" + ], + "error_bound": "55769103088818659610438567402588473685871954818257025571203/8279960383264648657311934674369581795752031283767425150071017480680112128", + "parameter": "29147688205551/70368744177664" + } + ] + }, + "budget": { + "prefix_bound": 16384, + "phase_error": "3/4194304", + "coefficient_error": "27/33554432", + "rounding_error": "53/72057594037927936", + "total_error": "109521666101/72057594037927936", + "amplitude_bound": "68719542272", + "coefficient_bits": 82, + "data_bits": 116, + "temporary_bits": 199 + }, + "label": "large-radius", + "input_sha256": "718398330f0e502e501815546e2794ebaed814fe83b8af30b606376adf7e565d", + "output_sha256": "b06781e13e87ff2c2757af50dfca8d35c79494ebf88f9d5fe31d78f89bdb3b6a", + "rational_target_sha256": "84cdfc2578cb077e1fe23ca104b6508559e886381d5951a340b1a35bef376de8", + "exact_matrix_sha256": "76f1298b598b4bd9d84197a6f63201e4c58f335d94c2abef32cd3f99b9772459", + "rounded_rational_error_squared_upper": "233843543662363/365375409332725729550921208179070754913983135744", + "ideal_error_squared_upper": "121074059023113202839856272269/365375409332725729550921208179070754913983135744", + "nonzero_rounded_error": true, + "nonzero_spectator_error": false, + "spectator_error_squared_upper": "0", + "statistics": { + "real_products": 3456, + "complex_roundings": 1696, + "h_pair_calls": 416, + "maximum_data_numerator_bits": 97, + "maximum_temporary_numerator_bits": 174, + "maximum_temporary_fractional_bits": 153 + }, + "trace": [ + { + "stage": 0, + "kind": "H", + "output_sha256": "c3c65aa062027ea768869b94d3a07722b18d802561b2d6ea460aa688f57206c7" + }, + { + "stage": 1, + "kind": "D", + "output_sha256": "22d11565906885703cbd66be8699917ab42f4f40fdf19c5b822e591ae9797c20" + }, + { + "stage": 2, + "kind": "H", + "output_sha256": "e482438c9f7d701ac873bd98513c2a44b5bae673d16e4092732d77348be5625c" + }, + { + "stage": 3, + "kind": "D", + "output_sha256": "e482438c9f7d701ac873bd98513c2a44b5bae673d16e4092732d77348be5625c" + }, + { + "stage": 4, + "kind": "H", + "output_sha256": "666a74e3dcfa9a574bfbf167825c43a57a694727c7c78254ecb3156a187a5b06" + }, + { + "stage": 5, + "kind": "D", + "output_sha256": "68a09baefb725909ed8ee5af9b04c802f34829c6de7d571636c626774b476d87" + }, + { + "stage": 6, + "kind": "H", + "output_sha256": "e482438c9f7d701ac873bd98513c2a44b5bae673d16e4092732d77348be5625c" + }, + { + "stage": 7, + "kind": "D", + "output_sha256": "e482438c9f7d701ac873bd98513c2a44b5bae673d16e4092732d77348be5625c" + }, + { + "stage": 8, + "kind": "H", + "output_sha256": "9ceb9abdd6ef1880d9226f7ff684cd34c8469969d90b8f21cf7b20231ea8ab5e" + }, + { + "stage": 9, + "kind": "D", + "output_sha256": "b1372d627bd3c7b270c3afd72e0d408d9429e2b34b04897b76abbea37c564316" + }, + { + "stage": 10, + "kind": "H", + "output_sha256": "e1fda37cb7d0fab58614e4f06e652bc8b98bdc93779e0114324c98383b783404" + }, + { + "stage": 11, + "kind": "D", + "output_sha256": "e1fda37cb7d0fab58614e4f06e652bc8b98bdc93779e0114324c98383b783404" + }, + { + "stage": 12, + "kind": "H", + "output_sha256": "4d15a2a80ab1cc699c3babf66e3f48bea10bddf7576c8e2d9e750f02edbe912f" + }, + { + "stage": 13, + "kind": "D", + "output_sha256": "d50800df3590870f70b0f241db19e297054c1239a44ddb70ff51eb3379cf0c96" + }, + { + "stage": 14, + "kind": "H", + "output_sha256": "f193277d822fdd89c7938fdb6956b95556655222c94af9a0841229bbb311d4a4" + }, + { + "stage": 15, + "kind": "D", + "output_sha256": "f193277d822fdd89c7938fdb6956b95556655222c94af9a0841229bbb311d4a4" + }, + { + "stage": 16, + "kind": "H", + "output_sha256": "8b4e87a74f18f66edd2907926713284802bdb20e7141200424892608650afb16" + }, + { + "stage": 17, + "kind": "D", + "output_sha256": "c198a895f56f445d9fef773689932a3a49098691d8862acf6edbca461c56587b" + }, + { + "stage": 18, + "kind": "H", + "output_sha256": "302f7c3a649495595c123eb75fecdeb8ff68cc5fd82bff7d868c4b5b373256e8" + }, + { + "stage": 19, + "kind": "D", + "output_sha256": "302f7c3a649495595c123eb75fecdeb8ff68cc5fd82bff7d868c4b5b373256e8" + }, + { + "stage": 20, + "kind": "D", + "output_sha256": "302f7c3a649495595c123eb75fecdeb8ff68cc5fd82bff7d868c4b5b373256e8" + }, + { + "stage": 21, + "kind": "H", + "output_sha256": "8d33cc93e5b7f0ac5c6651483c473e982c0f26762cb2e33f1b5a4ad100f44d13" + }, + { + "stage": 22, + "kind": "D", + "output_sha256": "c69f8fd460271cc78591f5b514937ce26d8a33e7b7dc946a11a446a59b379f8b" + }, + { + "stage": 23, + "kind": "H", + "output_sha256": "e83b67689e8ec2d62a652844842c30064265d3f64b95356030e651c7e053cc06" + }, + { + "stage": 24, + "kind": "D", + "output_sha256": "e83b67689e8ec2d62a652844842c30064265d3f64b95356030e651c7e053cc06" + }, + { + "stage": 25, + "kind": "H", + "output_sha256": "2645dac3aa011dacd16f17549a32df05e0eba005176868a33e0cb9d0133060d3" + }, + { + "stage": 26, + "kind": "D", + "output_sha256": "c69f8fd460271cc78591f5b514937ce26d8a33e7b7dc946a11a446a59b379f8b" + }, + { + "stage": 27, + "kind": "H", + "output_sha256": "e83b67689e8ec2d62a652844842c30064265d3f64b95356030e651c7e053cc06" + }, + { + "stage": 28, + "kind": "D", + "output_sha256": "e83b67689e8ec2d62a652844842c30064265d3f64b95356030e651c7e053cc06" + }, + { + "stage": 29, + "kind": "H", + "output_sha256": "2645dac3aa011dacd16f17549a32df05e0eba005176868a33e0cb9d0133060d3" + }, + { + "stage": 30, + "kind": "D", + "output_sha256": "c69f8fd460271cc78591f5b514937ce26d8a33e7b7dc946a11a446a59b379f8b" + }, + { + "stage": 31, + "kind": "H", + "output_sha256": "e83b67689e8ec2d62a652844842c30064265d3f64b95356030e651c7e053cc06" + }, + { + "stage": 32, + "kind": "D", + "output_sha256": "e83b67689e8ec2d62a652844842c30064265d3f64b95356030e651c7e053cc06" + }, + { + "stage": 33, + "kind": "H", + "output_sha256": "2645dac3aa011dacd16f17549a32df05e0eba005176868a33e0cb9d0133060d3" + }, + { + "stage": 34, + "kind": "D", + "output_sha256": "3571b476e420bd83bd3696f9358990dbe78cdb14ca3175e78158830897281f38" + }, + { + "stage": 35, + "kind": "H", + "output_sha256": "eacacd8ff8ad9e889404705f7eff8d2d14567e6cd7f61b90803d2070abbce768" + }, + { + "stage": 36, + "kind": "D", + "output_sha256": "eacacd8ff8ad9e889404705f7eff8d2d14567e6cd7f61b90803d2070abbce768" + }, + { + "stage": 37, + "kind": "H", + "output_sha256": "a32e5db58d9b82e8a70bc194abef1e128ca35211254e518c33e6d78b9d9e0eba" + }, + { + "stage": 38, + "kind": "D", + "output_sha256": "930d44f8a8f4eb896ccce368ad67e480d7039a03e32ee6017a55d48462b33e4c" + }, + { + "stage": 39, + "kind": "H", + "output_sha256": "f105da24386668dc2a064a680b17a163d2012ac1352847e7667db8236705fcbc" + }, + { + "stage": 40, + "kind": "D", + "output_sha256": "f105da24386668dc2a064a680b17a163d2012ac1352847e7667db8236705fcbc" + }, + { + "stage": 41, + "kind": "H", + "output_sha256": "abfaef1403d9a26fb4c7f281767a36fe8f77119b157571b533d3e530562e44ef" + }, + { + "stage": 42, + "kind": "D", + "output_sha256": "d3543e9a788516aa9149a39e447df4118e159354e9cb1ca8da4b2c2112bd16ce" + }, + { + "stage": 43, + "kind": "H", + "output_sha256": "ed2e67b84e9ff87075be324e51c75639253f75b6706d88ed6956db2c7f89c3ee" + }, + { + "stage": 44, + "kind": "D", + "output_sha256": "ed2e67b84e9ff87075be324e51c75639253f75b6706d88ed6956db2c7f89c3ee" + }, + { + "stage": 45, + "kind": "H", + "output_sha256": "8d2eb30a937dbbca786987380a55ffc9dd2a0186145d2580ecb927b83e37a82c" + }, + { + "stage": 46, + "kind": "D", + "output_sha256": "4f1b316073c5a2766648c0ffb456cfd300924e56ebed4963bc333076ec7a40fa" + }, + { + "stage": 47, + "kind": "H", + "output_sha256": "ed2e67b84e9ff87075be324e51c75639253f75b6706d88ed6956db2c7f89c3ee" + }, + { + "stage": 48, + "kind": "D", + "output_sha256": "ed2e67b84e9ff87075be324e51c75639253f75b6706d88ed6956db2c7f89c3ee" + }, + { + "stage": 49, + "kind": "H", + "output_sha256": "7d4c1458b7c9859110db5fc3c85d832a0d452c8bfb6505f84edbd703a80fb37f" + }, + { + "stage": 50, + "kind": "D", + "output_sha256": "920dfa48cd94622d0d0c161bebeab8359c319c6c21592f744491e5511c45c458" + }, + { + "stage": 51, + "kind": "H", + "output_sha256": "b24cf9c4f4572112105484d911d0576c21dbd3f71e01f3c3c6efe7527817f932" + }, + { + "stage": 52, + "kind": "D", + "output_sha256": "b24cf9c4f4572112105484d911d0576c21dbd3f71e01f3c3c6efe7527817f932" + }, + { + "stage": 53, + "kind": "H", + "output_sha256": "c0391af9c6ab360f4e4b907c78b7045ac7fcf899e7f54c27f2851bb90da23c1a" + }, + { + "stage": 54, + "kind": "D", + "output_sha256": "920dfa48cd94622d0d0c161bebeab8359c319c6c21592f744491e5511c45c458" + }, + { + "stage": 55, + "kind": "H", + "output_sha256": "b24cf9c4f4572112105484d911d0576c21dbd3f71e01f3c3c6efe7527817f932" + }, + { + "stage": 56, + "kind": "D", + "output_sha256": "b24cf9c4f4572112105484d911d0576c21dbd3f71e01f3c3c6efe7527817f932" + }, + { + "stage": 57, + "kind": "H", + "output_sha256": "87b684266a219fa02416569c9c578925f08011d5e7b0afa0cf26c888d9766f16" + }, + { + "stage": 58, + "kind": "D", + "output_sha256": "016d287f4094c19844c06dadbe251d3880437622a1630a63a98cb721962d6a23" + }, + { + "stage": 59, + "kind": "H", + "output_sha256": "b24cf9c4f4572112105484d911d0576c21dbd3f71e01f3c3c6efe7527817f932" + }, + { + "stage": 60, + "kind": "D", + "output_sha256": "b24cf9c4f4572112105484d911d0576c21dbd3f71e01f3c3c6efe7527817f932" + }, + { + "stage": 61, + "kind": "H", + "output_sha256": "1a0ff85d872ca2713c8463ba0415cc4273d4a13512e7c0cb4c381af5e6de352d" + }, + { + "stage": 62, + "kind": "D", + "output_sha256": "a10a989b6d0059de36a34d9e2d13c895ab4cde242e1d4ab1ea4b2a1380a604eb" + }, + { + "stage": 63, + "kind": "H", + "output_sha256": "b24cf9c4f4572112105484d911d0576c21dbd3f71e01f3c3c6efe7527817f932" + }, + { + "stage": 64, + "kind": "D", + "output_sha256": "b24cf9c4f4572112105484d911d0576c21dbd3f71e01f3c3c6efe7527817f932" + }, + { + "stage": 65, + "kind": "H", + "output_sha256": "87b684266a219fa02416569c9c578925f08011d5e7b0afa0cf26c888d9766f16" + }, + { + "stage": 66, + "kind": "D", + "output_sha256": "016d287f4094c19844c06dadbe251d3880437622a1630a63a98cb721962d6a23" + }, + { + "stage": 67, + "kind": "H", + "output_sha256": "b24cf9c4f4572112105484d911d0576c21dbd3f71e01f3c3c6efe7527817f932" + }, + { + "stage": 68, + "kind": "D", + "output_sha256": "b24cf9c4f4572112105484d911d0576c21dbd3f71e01f3c3c6efe7527817f932" + }, + { + "stage": 69, + "kind": "H", + "output_sha256": "c0391af9c6ab360f4e4b907c78b7045ac7fcf899e7f54c27f2851bb90da23c1a" + }, + { + "stage": 70, + "kind": "D", + "output_sha256": "920dfa48cd94622d0d0c161bebeab8359c319c6c21592f744491e5511c45c458" + }, + { + "stage": 71, + "kind": "H", + "output_sha256": "b24cf9c4f4572112105484d911d0576c21dbd3f71e01f3c3c6efe7527817f932" + }, + { + "stage": 72, + "kind": "D", + "output_sha256": "b24cf9c4f4572112105484d911d0576c21dbd3f71e01f3c3c6efe7527817f932" + }, + { + "stage": 73, + "kind": "D", + "output_sha256": "c3cbc4bea07d2bd2b7bf9ee228d89358eba75425aefef03c65af1c3a7ba604dc" + }, + { + "stage": 74, + "kind": "H", + "output_sha256": "35261f7017ace612a158b8c2a899556ff4c4fe7bd4422d3d6eac6952cce4adf5" + }, + { + "stage": 75, + "kind": "D", + "output_sha256": "50ff2ccbbc4739f531c212252db33373867ee22b30e5267f8ef5f51243464c1a" + }, + { + "stage": 76, + "kind": "H", + "output_sha256": "e101fdd3c3053a04098233f5e9d56d415702dd9e1838fbb46502031a6a549940" + }, + { + "stage": 77, + "kind": "D", + "output_sha256": "18cdaf209ca4a8d79b59eaf9622a388ff4fa6fa16398e46dfc50a3c74d051a80" + }, + { + "stage": 78, + "kind": "H", + "output_sha256": "d2336b1772de7326b15fb5869151e73e9832abeabf9b15e6fdfdb0ae7b1a844d" + }, + { + "stage": 79, + "kind": "D", + "output_sha256": "9c6942e45988dc96b00b308cf2c6644f33ba8863d425d4a0619592f5fd040525" + }, + { + "stage": 80, + "kind": "H", + "output_sha256": "423e14bb1fe3418f2352cb535d9fe87f94c50184e2d4b9f2d078bc2c1615b1e0" + }, + { + "stage": 81, + "kind": "D", + "output_sha256": "9e5b2607a3b5723a2d1b0b45b1eedff79560f487e54e43c2d777714b14c167e6" + }, + { + "stage": 82, + "kind": "H", + "output_sha256": "7be77539de3a50f8104501a140d6d1acc035c3e0cc01c03c56178e46efe9f0c6" + }, + { + "stage": 83, + "kind": "D", + "output_sha256": "5a23aad695e965e2db8d09b2e45a5573d1d8c21829054cc35c5ba04909700801" + }, + { + "stage": 84, + "kind": "H", + "output_sha256": "d1691c8e9aa6ef3eea1b0e61ed65a52dccbd3eb0f5323d474eea9a9295c1df61" + }, + { + "stage": 85, + "kind": "D", + "output_sha256": "28db72275180912f2944e8edce15863100bd18db29d4b4a681ad8013a3af0703" + }, + { + "stage": 86, + "kind": "H", + "output_sha256": "9580fcbcf86e5b3dc1b35cc2a88393de12f82b2974096b909d14d2ccb5d0bd21" + }, + { + "stage": 87, + "kind": "D", + "output_sha256": "86ba1541abd8b0e9892f8bd1bf4934bab5750294dc1e5724946d7b203b25cdd6" + }, + { + "stage": 88, + "kind": "H", + "output_sha256": "78f7b343590668aca6d27390899ccb67f1cfc38ab9418baa45cfa231cac1d7b9" + }, + { + "stage": 89, + "kind": "D", + "output_sha256": "78f7b343590668aca6d27390899ccb67f1cfc38ab9418baa45cfa231cac1d7b9" + }, + { + "stage": 90, + "kind": "H", + "output_sha256": "b14e71a9cd33f4e24dad1d417ab5858fd1ae8f389f9a5a025b91dc35fd53f84e" + }, + { + "stage": 91, + "kind": "D", + "output_sha256": "be82c8a4da572b816d02cd6b9dc046dfba21452e4225dc70e2f82cb078ed60e4" + }, + { + "stage": 92, + "kind": "H", + "output_sha256": "78f7b343590668aca6d27390899ccb67f1cfc38ab9418baa45cfa231cac1d7b9" + }, + { + "stage": 93, + "kind": "D", + "output_sha256": "78f7b343590668aca6d27390899ccb67f1cfc38ab9418baa45cfa231cac1d7b9" + }, + { + "stage": 94, + "kind": "H", + "output_sha256": "cc82de96194a5a3b9632f6543e9d8adbd4dca4c68d540a56215c077d3195acf1" + }, + { + "stage": 95, + "kind": "D", + "output_sha256": "57ae30b5b0626a43f0975db7b2dfe5a66c675c05e66e8d4033b75c93bd0c0710" + }, + { + "stage": 96, + "kind": "H", + "output_sha256": "78f7b343590668aca6d27390899ccb67f1cfc38ab9418baa45cfa231cac1d7b9" + }, + { + "stage": 97, + "kind": "D", + "output_sha256": "78f7b343590668aca6d27390899ccb67f1cfc38ab9418baa45cfa231cac1d7b9" + }, + { + "stage": 98, + "kind": "H", + "output_sha256": "b14e71a9cd33f4e24dad1d417ab5858fd1ae8f389f9a5a025b91dc35fd53f84e" + }, + { + "stage": 99, + "kind": "D", + "output_sha256": "be82c8a4da572b816d02cd6b9dc046dfba21452e4225dc70e2f82cb078ed60e4" + }, + { + "stage": 100, + "kind": "H", + "output_sha256": "78f7b343590668aca6d27390899ccb67f1cfc38ab9418baa45cfa231cac1d7b9" + }, + { + "stage": 101, + "kind": "D", + "output_sha256": "78f7b343590668aca6d27390899ccb67f1cfc38ab9418baa45cfa231cac1d7b9" + }, + { + "stage": 102, + "kind": "H", + "output_sha256": "9580fcbcf86e5b3dc1b35cc2a88393de12f82b2974096b909d14d2ccb5d0bd21" + }, + { + "stage": 103, + "kind": "D", + "output_sha256": "86ba1541abd8b0e9892f8bd1bf4934bab5750294dc1e5724946d7b203b25cdd6" + }, + { + "stage": 104, + "kind": "H", + "output_sha256": "78f7b343590668aca6d27390899ccb67f1cfc38ab9418baa45cfa231cac1d7b9" + }, + { + "stage": 105, + "kind": "D", + "output_sha256": "78f7b343590668aca6d27390899ccb67f1cfc38ab9418baa45cfa231cac1d7b9" + }, + { + "stage": 106, + "kind": "H", + "output_sha256": "9580fcbcf86e5b3dc1b35cc2a88393de12f82b2974096b909d14d2ccb5d0bd21" + }, + { + "stage": 107, + "kind": "D", + "output_sha256": "d6b008e2acc30931855f89fca19fc106167a8272e1f2711bcdfa108f842c06a9" + }, + { + "stage": 108, + "kind": "H", + "output_sha256": "10e6364e04d79c899f4ea19a2b4b7e7cffe168e78fc541385723aa589d957972" + }, + { + "stage": 109, + "kind": "D", + "output_sha256": "10e6364e04d79c899f4ea19a2b4b7e7cffe168e78fc541385723aa589d957972" + }, + { + "stage": 110, + "kind": "H", + "output_sha256": "2901119e3e8ed56b021f9d2b4507c6c847d76f276d2de8135ae7acb0d8acf77f" + }, + { + "stage": 111, + "kind": "D", + "output_sha256": "6b39fe8636f19810a9edb706fa1e0c181eab0a8db7293280bee7c6c4de592687" + }, + { + "stage": 112, + "kind": "H", + "output_sha256": "10e6364e04d79c899f4ea19a2b4b7e7cffe168e78fc541385723aa589d957972" + }, + { + "stage": 113, + "kind": "D", + "output_sha256": "10e6364e04d79c899f4ea19a2b4b7e7cffe168e78fc541385723aa589d957972" + }, + { + "stage": 114, + "kind": "H", + "output_sha256": "eb7ecd235321534ca836e40b4c068b634c6da932592830092e74ec92aa2435d8" + }, + { + "stage": 115, + "kind": "D", + "output_sha256": "4a089b88abc6515a6f7c3dcbcb97bbd421eb8551c0542b4d4badd35a651205d9" + }, + { + "stage": 116, + "kind": "H", + "output_sha256": "10e6364e04d79c899f4ea19a2b4b7e7cffe168e78fc541385723aa589d957972" + }, + { + "stage": 117, + "kind": "D", + "output_sha256": "10e6364e04d79c899f4ea19a2b4b7e7cffe168e78fc541385723aa589d957972" + }, + { + "stage": 118, + "kind": "H", + "output_sha256": "2901119e3e8ed56b021f9d2b4507c6c847d76f276d2de8135ae7acb0d8acf77f" + }, + { + "stage": 119, + "kind": "D", + "output_sha256": "0dd0dc553031908960571e43db86724b28f25b18eb8d720752d7eef47006f962" + }, + { + "stage": 120, + "kind": "H", + "output_sha256": "307c40f3a45aa92ffc00ae19d23940ccdbbb6ffa1f8c0c46750e5a3df604f0c7" + }, + { + "stage": 121, + "kind": "D", + "output_sha256": "307c40f3a45aa92ffc00ae19d23940ccdbbb6ffa1f8c0c46750e5a3df604f0c7" + }, + { + "stage": 122, + "kind": "H", + "output_sha256": "a869f55d94f90e1a3e1c4b8123f9f3a4b4fab58a69d9022b48b424c2c89ed802" + }, + { + "stage": 123, + "kind": "D", + "output_sha256": "9b1fbb4f40207df56ba79f4f0dae7f3ba94bf8ef94a65a0bf834144e4891d17c" + }, + { + "stage": 124, + "kind": "H", + "output_sha256": "23997ac554fa8238653e10cc2ca2de5cfd8cb77b3142582aa23cc57ac38d1c5d" + }, + { + "stage": 125, + "kind": "D", + "output_sha256": "23997ac554fa8238653e10cc2ca2de5cfd8cb77b3142582aa23cc57ac38d1c5d" + }, + { + "stage": 126, + "kind": "D", + "output_sha256": "19fe5b2889aa56989f2d15f5b7e7074f925ce709f66f8a2e3155b6e5a0fd839c" + }, + { + "stage": 127, + "kind": "H", + "output_sha256": "f1cce35991bc05147fec3cc77a1f18081d63d90102d715d6125efc3e532629a8" + }, + { + "stage": 128, + "kind": "D", + "output_sha256": "dcaa30939bcc6eec794f1c8656cc5ab394278f99acdd671bd9ed8ffc8e0c5021" + }, + { + "stage": 129, + "kind": "H", + "output_sha256": "584730378d31fc0c52aef18774a99d764b65338fd4256de632809c4f7886d71f" + }, + { + "stage": 130, + "kind": "D", + "output_sha256": "f80c65fcfce49cf5fa1728f471dbb1fec3ba710dd78a5a512ac7413391be0ae4" + }, + { + "stage": 131, + "kind": "H", + "output_sha256": "60874192d5159957aaf5c5783b66a43d7d46cf3ed92336cd1bcf0d71d0411fee" + }, + { + "stage": 132, + "kind": "D", + "output_sha256": "3e413f4c610ab307a49e84f1dbe71a59e7ff3b5893b8783bd5f33e7dcac4055a" + }, + { + "stage": 133, + "kind": "H", + "output_sha256": "c9690851f2f5219451805cc99ee87dd78f7b5303f181448f637ec940748ecf9f" + }, + { + "stage": 134, + "kind": "D", + "output_sha256": "69ee0934fec8d8f75bcda0b20c414dcb069773600ed8f56b79ce8b0c93c229fe" + }, + { + "stage": 135, + "kind": "H", + "output_sha256": "6dde04e6a5cc37b0287ee75ca6952325a5b3123880700675ae199968787ed874" + }, + { + "stage": 136, + "kind": "D", + "output_sha256": "02abffb029fd0eb0c2f9d6721b23f9426f4d92359550fdecdb8d1467345614e1" + }, + { + "stage": 137, + "kind": "H", + "output_sha256": "7a670d7c0db57da7410556650e062d086d05a1f56743ca46abd9a042d1182ae0" + }, + { + "stage": 138, + "kind": "D", + "output_sha256": "a1c0c1dfd4d91b7b5d7b9f7dd7035b7182c3efa91dea6b58a374e9f73fab5195" + }, + { + "stage": 139, + "kind": "H", + "output_sha256": "db93b6e99db7b5af25517c69edf7a1f31227be28d00d2ea7a5ac94195dec7970" + }, + { + "stage": 140, + "kind": "D", + "output_sha256": "956ce47e5fc26cece2c3f013778b304568c5662a2fe27c327b2ee3da7c0a2b84" + }, + { + "stage": 141, + "kind": "H", + "output_sha256": "8730e61f56338e3056c40c3fd0f0306a0df3a69a6a9c0991d1889a92e77a3efd" + }, + { + "stage": 142, + "kind": "D", + "output_sha256": "8730e61f56338e3056c40c3fd0f0306a0df3a69a6a9c0991d1889a92e77a3efd" + }, + { + "stage": 143, + "kind": "H", + "output_sha256": "5a8d3da546cc057aef8f942b3d499a6ae6518fdb30e10b024ce3852c82a27c93" + }, + { + "stage": 144, + "kind": "D", + "output_sha256": "668bd57b5b17102e509a8d12090900182f97dc3de9b0a997fdf4e41dc9ccbf4d" + }, + { + "stage": 145, + "kind": "H", + "output_sha256": "f810849dac351c130f7bcf82c33d38f7ae044e6a3e004709a9d12a9d99f5e3ac" + }, + { + "stage": 146, + "kind": "D", + "output_sha256": "f810849dac351c130f7bcf82c33d38f7ae044e6a3e004709a9d12a9d99f5e3ac" + }, + { + "stage": 147, + "kind": "H", + "output_sha256": "dfc89b0badb8a03b00239116d37975708c56c9cb1d7822548634f75d38b6b118" + }, + { + "stage": 148, + "kind": "D", + "output_sha256": "09aabcaf47b24c020add3fceeda5644f00d5f790413adfb1371b000d9b891b53" + }, + { + "stage": 149, + "kind": "H", + "output_sha256": "f810849dac351c130f7bcf82c33d38f7ae044e6a3e004709a9d12a9d99f5e3ac" + }, + { + "stage": 150, + "kind": "D", + "output_sha256": "f810849dac351c130f7bcf82c33d38f7ae044e6a3e004709a9d12a9d99f5e3ac" + }, + { + "stage": 151, + "kind": "H", + "output_sha256": "06ae59db0b8aa175c835bb979d1f18f17726aebdfc7c9d5135c03bc63fd3067b" + }, + { + "stage": 152, + "kind": "D", + "output_sha256": "668bd57b5b17102e509a8d12090900182f97dc3de9b0a997fdf4e41dc9ccbf4d" + }, + { + "stage": 153, + "kind": "H", + "output_sha256": "f810849dac351c130f7bcf82c33d38f7ae044e6a3e004709a9d12a9d99f5e3ac" + }, + { + "stage": 154, + "kind": "D", + "output_sha256": "f810849dac351c130f7bcf82c33d38f7ae044e6a3e004709a9d12a9d99f5e3ac" + }, + { + "stage": 155, + "kind": "H", + "output_sha256": "9358caf517bbaf76e675b277ff36dbd047bb3581273f2ee47b72428d3fcb193a" + }, + { + "stage": 156, + "kind": "D", + "output_sha256": "b2f0faa2a59b559e9b8a96f8a2e0ec36140c9fd94fb9939acd508e621946c4a4" + }, + { + "stage": 157, + "kind": "H", + "output_sha256": "fd672696c1e131cae922eb44fbce92d974c7da773c98603a048e4cd726b6b343" + }, + { + "stage": 158, + "kind": "D", + "output_sha256": "fd672696c1e131cae922eb44fbce92d974c7da773c98603a048e4cd726b6b343" + }, + { + "stage": 159, + "kind": "H", + "output_sha256": "31eb012f10c7cb0a514f2b750e32e830517b35f921f13dd7bcdd0f0120fbe86b" + }, + { + "stage": 160, + "kind": "D", + "output_sha256": "397a033b5957d393f721b7b00c853a0ab2f01e88014daa04641685fb02e00df9" + }, + { + "stage": 161, + "kind": "H", + "output_sha256": "2f8f9f684cf492642fe9d49ddf36032faa5a0791dd355019909f93c2251acc00" + }, + { + "stage": 162, + "kind": "D", + "output_sha256": "2f8f9f684cf492642fe9d49ddf36032faa5a0791dd355019909f93c2251acc00" + }, + { + "stage": 163, + "kind": "H", + "output_sha256": "4517b4e02e5c2b25e3b55fc2ed46d91b4f01b3053ebe520cc03c4621987fc06c" + }, + { + "stage": 164, + "kind": "D", + "output_sha256": "db7236f58c1081c35ea3c9d28a0fc0ab07e9d7e84d24e8bc211586a6b414b8c7" + }, + { + "stage": 165, + "kind": "H", + "output_sha256": "b0967d0b2a2bdc3cae2fbf74fcb22c7405c97c2357572328e20a6dd7126d646e" + }, + { + "stage": 166, + "kind": "D", + "output_sha256": "b0967d0b2a2bdc3cae2fbf74fcb22c7405c97c2357572328e20a6dd7126d646e" + }, + { + "stage": 167, + "kind": "H", + "output_sha256": "6e989552181816e8e0b57080909fbeb9d7ec2c2b5d6c6d6516daf9e7a621c881" + }, + { + "stage": 168, + "kind": "D", + "output_sha256": "3277fc76377e89575babe34765ec7192899f49bbd8feb0cf0cd395e06035bb0c" + }, + { + "stage": 169, + "kind": "H", + "output_sha256": "4fc4e7a25a140c8a963e637c48510ee0a58eebc2bcdee0015179e3dbdb44698a" + }, + { + "stage": 170, + "kind": "D", + "output_sha256": "4fc4e7a25a140c8a963e637c48510ee0a58eebc2bcdee0015179e3dbdb44698a" + }, + { + "stage": 171, + "kind": "H", + "output_sha256": "1a52964d127b589f5dd2d0372b0a729caf74078e1d4e375381ad90f308b1efef" + }, + { + "stage": 172, + "kind": "D", + "output_sha256": "a444288d7e98b98a47da38c3ff9c52ac1d1057139060a9eb69984c9a13c80737" + }, + { + "stage": 173, + "kind": "H", + "output_sha256": "3cf59e63902493cd0cd69cb2be15312ce211250c2bf5ffc4243edeb313fb5be4" + }, + { + "stage": 174, + "kind": "D", + "output_sha256": "3cf59e63902493cd0cd69cb2be15312ce211250c2bf5ffc4243edeb313fb5be4" + }, + { + "stage": 175, + "kind": "H", + "output_sha256": "602a364b2c65b3de4027c952763aab56442fd3c176d0b8f67863223196871972" + }, + { + "stage": 176, + "kind": "D", + "output_sha256": "5ddb0a18cf58e9a71c9abc19b9dd65b33e74a8d1d41acefc2e6d042a1e9e028c" + }, + { + "stage": 177, + "kind": "H", + "output_sha256": "f97bcddf5345e4f1724b65d60ab58df5d78ef281d8bda083b5193f159c11213b" + }, + { + "stage": 178, + "kind": "D", + "output_sha256": "f97bcddf5345e4f1724b65d60ab58df5d78ef281d8bda083b5193f159c11213b" + }, + { + "stage": 179, + "kind": "D", + "output_sha256": "a73891a74dfac677c05efa671528c1305b614e7af8b6fb6a09888eb4e5a8bdf4" + }, + { + "stage": 180, + "kind": "H", + "output_sha256": "cb97a9800ff16843a149b3395c4bee02592dacf6a78a339d2904a5017a82d59d" + }, + { + "stage": 181, + "kind": "D", + "output_sha256": "bfc363c4c96d3c51fc0a75e8f5b9a1297c94688e002ab613eaf719d36875079b" + }, + { + "stage": 182, + "kind": "H", + "output_sha256": "3f125954d4f549f7bfb52c94ba179a62cb61c459dab1fe8990acba2241d85be8" + }, + { + "stage": 183, + "kind": "D", + "output_sha256": "fc064099c1f185f216aacfcd87c7a106182aea588ec6f7e6b36beb122c2e1c09" + }, + { + "stage": 184, + "kind": "H", + "output_sha256": "910aa6fbe0a4ceab2229decca262ac7836eead1bdb1cf6dabaad911ad42d3a24" + }, + { + "stage": 185, + "kind": "D", + "output_sha256": "819529bb6739db04f6f81d51f9a536d19d814960967522cd6e3b03e4725a1822" + }, + { + "stage": 186, + "kind": "H", + "output_sha256": "614bf35daeebba13f319fdd7f7816975af7b937c509612cbeb7f594d5c837660" + }, + { + "stage": 187, + "kind": "D", + "output_sha256": "4ce7879ea1bbda3618e8fee48d2fcb803c559a6af5d0256f905c8a5907e90d59" + }, + { + "stage": 188, + "kind": "H", + "output_sha256": "6ab3e5df11ae3cbb09ca0958c00a6cbc77f73e1d8ef9321b99af77e69636408a" + }, + { + "stage": 189, + "kind": "D", + "output_sha256": "5954d60e98ecb8190086a0ee52d63bc40e970a94a7efe6de701f731a3687b1df" + }, + { + "stage": 190, + "kind": "H", + "output_sha256": "dc22681eac99a7f55fa08fa2ca3e1a28053d728de38b25ecc174940a5e9028cd" + }, + { + "stage": 191, + "kind": "D", + "output_sha256": "82d1f66c10246841c16caf72c50346a50754f3a9615314ccea146f53f4f87a98" + }, + { + "stage": 192, + "kind": "H", + "output_sha256": "c417af36107c711ef5742b4cbcc691b2de4d5318dc569027766ba61bf38167b6" + }, + { + "stage": 193, + "kind": "D", + "output_sha256": "dc5e2d49603b9e766f907699a6990534d053a834e0d17e857c5f2dc0e39fcdc6" + }, + { + "stage": 194, + "kind": "H", + "output_sha256": "f500af77a8038ea37a5533e1baf08d020ad51e6043b02b6aee8c927cc69c19a6" + }, + { + "stage": 195, + "kind": "D", + "output_sha256": "f500af77a8038ea37a5533e1baf08d020ad51e6043b02b6aee8c927cc69c19a6" + }, + { + "stage": 196, + "kind": "H", + "output_sha256": "9471b02de968bfd80fe33270763a1fbb144ab704e775dcc4fc1fe349f6f3e707" + }, + { + "stage": 197, + "kind": "D", + "output_sha256": "e0b3e7e95fcd786d93764267f2fc57f9880836e6438e12fbfaff1a64e223229c" + }, + { + "stage": 198, + "kind": "H", + "output_sha256": "4f6d61351cb391630e179505abd7f2e3cc60f07515d418f8881ab0f4c73f95dd" + }, + { + "stage": 199, + "kind": "D", + "output_sha256": "4f6d61351cb391630e179505abd7f2e3cc60f07515d418f8881ab0f4c73f95dd" + }, + { + "stage": 200, + "kind": "H", + "output_sha256": "0edac9bd2a644cddc5ced6d13743dcb6fb5987e719f5e3a985d00fe84bb4d99e" + }, + { + "stage": 201, + "kind": "D", + "output_sha256": "e5b930ed0b5bb733e6e3a056c66f442eeeea0cfb3ae00ef14b629d3974d6d820" + }, + { + "stage": 202, + "kind": "H", + "output_sha256": "1274f45ee3bd524490847d827eb14cc0c5433a08d2e4b9d7d7e740da3c0ed0dc" + }, + { + "stage": 203, + "kind": "D", + "output_sha256": "1274f45ee3bd524490847d827eb14cc0c5433a08d2e4b9d7d7e740da3c0ed0dc" + }, + { + "stage": 204, + "kind": "H", + "output_sha256": "b99654743154a8e0819285ed0b36b29967b57370e6dba540374c09b2ceb24bb9" + }, + { + "stage": 205, + "kind": "D", + "output_sha256": "4c0b40992758eda8d6f7ee0ce75ed8765d088f0ded756afdceb85a146547ef00" + }, + { + "stage": 206, + "kind": "H", + "output_sha256": "2ab2e0d6ac23600315755bd36e10c81d7ba90770bc7e08affcd89aca76096ff8" + }, + { + "stage": 207, + "kind": "D", + "output_sha256": "2ab2e0d6ac23600315755bd36e10c81d7ba90770bc7e08affcd89aca76096ff8" + }, + { + "stage": 208, + "kind": "H", + "output_sha256": "07c8487e2a2fc409f24604d25c7113e04963ab8d648503f56af18c26b2cb3dfd" + }, + { + "stage": 209, + "kind": "D", + "output_sha256": "e6c3413a2af8d0e769bcf30c32252c72f36e9e86b23a68f8bc56b678f0bd9b37" + }, + { + "stage": 210, + "kind": "H", + "output_sha256": "b06781e13e87ff2c2757af50dfca8d35c79494ebf88f9d5fe31d78f89bdb3b6a" + }, + { + "stage": 211, + "kind": "D", + "output_sha256": "b06781e13e87ff2c2757af50dfca8d35c79494ebf88f9d5fe31d78f89bdb3b6a" + } + ] + }, + { + "field_size": 4, + "active_indices": [ + 2 + ], + "adjoint": true, + "radius": "1", + "target_bits": 18, + "incoming_bits": 5, + "phase_bits": 3, + "data_bits": 5, + "observed_coefficient_bits": 0, + "counts": { + "logical_layers": 0, + "primitive_stages": 0, + "diagonal_stages": 0, + "hadamard_stages": 0 + }, + "layers": [], + "logical_plan_sha256": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945", + "reference_stages_sha256": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945", + "stored_stages_sha256": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945", + "source_original_ast_sha256": "15211aaf783ddbe8714fb7c5c039e932422028d729566ce763a4c8016a82e537", + "source_adapted_ast_sha256": "550954f4c90dde9cae269f71042d223a2cba81d5a91dcfa7219fb36f338d1313", + "tensor_ast_sha256": "2b5d66a710ef21aaa1bcfc1db64267067455a5ba465694876a1c2a57fda2f357", + "phases": { + "phase_bits": 3, + "oracle_bits": 70, + "certificates": [] + }, + "budget": { + "prefix_bound": 16384, + "phase_error": "0", + "coefficient_error": "0", + "rounding_error": "0", + "total_error": "0", + "amplitude_bound": "131072", + "coefficient_bits": 10, + "data_bits": 24, + "temporary_bits": 35 + }, + "label": "idle-field", + "input_sha256": "923aa57ec2df41ef1b2cde1ded5de8f5482031f2d1b329fe1486536fa554626c", + "output_sha256": "923aa57ec2df41ef1b2cde1ded5de8f5482031f2d1b329fe1486536fa554626c", + "rational_target_sha256": "923aa57ec2df41ef1b2cde1ded5de8f5482031f2d1b329fe1486536fa554626c", + "exact_matrix_sha256": "614d98fe389df0e75e09c4e7bc4f8713ec6cb246204b78ea87b22e5f329ad4d8", + "rounded_rational_error_squared_upper": "0", + "ideal_error_squared_upper": "0", + "nonzero_rounded_error": false, + "nonzero_spectator_error": false, + "spectator_error_squared_upper": "0", + "statistics": { + "real_products": 0, + "complex_roundings": 0, + "h_pair_calls": 0, + "maximum_data_numerator_bits": 0, + "maximum_temporary_numerator_bits": 0, + "maximum_temporary_fractional_bits": 0 + }, + "trace": [] + } + ], + "controls": [ + "omitted-native-scale-restoration", + "unnormalized-source-fft-word-is-not-rational-butterfly", + "twiddle-conjugation-alone-is-not-the-adjoint", + "discarded-pair-orientation", + "all-one-idle-padding", + "omitted-switch-half", + "source-zero-shear-assertion-active", + "source-zero-diagonal-assertion-active", + "duplicate-active-wire", + "boolean-wire-id", + "negative-wire-id", + "out-of-range-wire-id", + "nondyadic-field", + "nondyadic-active-FFT", + "floating-radius", + "underfunded-phase-precision", + "underfunded-native-grid", + "underdeclared-incoming-grid", + "underdeclared-input-radius", + "changed-prepared-coefficient-page", + "source-byte-corruption", + "inactive-word-error-is-paid", + "typed-receipt" + ], + "source_FFT_execution": true, + "source_Benes_execution": true, + "native_stage_arithmetic": true, + "physical_root_execution": false, + "physical_tape_execution": false, + "complete_tensor_execution": false, + "dyadic_programs_exact_inverse_pair": false, + "independent_transcendental_backend": false, + "universal_proof_kernel": false +} diff --git a/research/rational-fft-fixed-h/SOURCES.json b/research/rational-fft-fixed-h/SOURCES.json new file mode 100644 index 0000000000..f57c4d6364 --- /dev/null +++ b/research/rational-fft-fixed-h/SOURCES.json @@ -0,0 +1,18 @@ +{ + "schema_version": 1, + "base_commit": "12fa8c5c844be21bfefb38a19503fbd867a11244", + "files": [ + {"path": "docs/research/agent-task-catalog.json", "usage": "provenance", "git_blob": "64bfc5af6709ed9811171e0a2108f05e1219cb65", "sha256": "352a6184713b8843d96fd2c2071eb7aeaa655906b7c51d45ad444912666c8a96"}, + {"path": "certificates/selected-result.json", "usage": "provenance", "git_blob": "b1fea0c94436b236cc2b7d41a7be032811b94c81", "sha256": "bb2eaa58647b353f88d0aec2eafb9d30df1be53589231b23e12ceef3e4bad129"}, + {"path": "research/capped-phase-fusion/evidence/inplace_algebra_ultra/check_circuits.py", "usage": "input", "git_blob": "f80c141c8116b163c2bb5a028c28212077c8d5a9", "sha256": "06d1861bfe8af543908e26557ffda7e451ff176bceb9bacfaf0f04f234b336d5"}, + {"path": "research/capped-phase-fusion/evidence/inplace_algebra_ultra/check_tensor_compiler.py", "usage": "input", "git_blob": "5eb5c1ffd23932ba7ccaa0d7686a5b875a3b1809", "sha256": "dc4b1f1884489215a2c2d0e8978a241e99e6c8c9f1d2fa2460c73d2c7d4ba30a"}, + {"path": "research/cubic-cyclic-inverse/vendor/interval_kernel.py", "usage": "input", "git_blob": "1182175a55cb871481de0f56ea9ae56e474705fe", "sha256": "9b7bb24640a9a7d3f83c7951dfef483ec933db4c50de6c0130b85f450eeddfbe"}, + {"path": "research/cubic-cyclic-inverse/vendor/PR628-PROOF.md", "usage": "input", "git_blob": "fb8fe7cb3bd036c69047ae7b4f4009a51b11825b", "sha256": "595893609764c64a90d9b21b9cbd6d9e61980703f3deb43361105cf8c3d1d093"}, + {"path": "research/cubic-cyclic-inverse/vendor/PR628-NOTICE.md", "usage": "input", "git_blob": "22fbeb8ef0a28dd6b3feea718492091319ceb96e", "sha256": "abeacf1ad1491d5797cfcf1f3832799bbf3b24b99597229d7bc884059a51ec68"}, + {"path": "research/capped-phase-fusion/TENSOR-COMPILER.md", "usage": "input", "git_blob": "19efb9cb1c5a738e57caadf2dd6f5611af1bc78a", "sha256": "4d3b8466598a864a234b978e25976648d4e761840aad9153dd18d73d3dfe4d15"}, + {"path": "research/unconditional-batched-crt/GAUSSIAN.md", "usage": "input", "git_blob": "adfb28c93e6b06178c901caaac39ede41a9e541b", "sha256": "2f63c91c58f2d1cf31294812c75970ea390c61866a8da7ed700d4316a033a242"}, + {"path": "research/rational-fft-fixed-h/vendor/rational_fft/engine.py", "usage": "input", "git_blob": "e9f2f2b08dc2bc4c646e47dca92059351ca89384", "sha256": "9e36aee0835e6b1b62997433581f88b5a434ccab8ae43e5c25d1deaaf1ebf653", "pin": "head:e417b66e1106da6c44088a1aa63105fd776c9949:research/rational-fft-fixed-h/vendor/rational_fft/engine.py"}, + {"path": "research/rational-fft-fixed-h/vendor/rational_fft/exact.py", "usage": "input", "git_blob": "aae41e6acfb2e5a4fafdd85727891eb746b57b42", "sha256": "c9b89d7357210af69865690ba12e695366961f8b501a8fab9d0fefe3fb30c479", "pin": "head:e417b66e1106da6c44088a1aa63105fd776c9949:research/rational-fft-fixed-h/vendor/rational_fft/exact.py"}, + {"path": "research/rational-fft-fixed-h/vendor/PROVENANCE.json", "usage": "input", "git_blob": "22cf8bdcb94f8fff0d1f3f9a38ce9402cc0013df", "sha256": "302a23bacdb464ef8f1c5d6c87cf72ce846c52c34bd69d245a51c1972e9852f2", "pin": "head:e417b66e1106da6c44088a1aa63105fd776c9949:research/rational-fft-fixed-h/vendor/PROVENANCE.json"} + ] +} diff --git a/research/rational-fft-fixed-h/TASK.json b/research/rational-fft-fixed-h/TASK.json new file mode 100644 index 0000000000..b79a2e230e --- /dev/null +++ b/research/rational-fft-fixed-h/TASK.json @@ -0,0 +1,56 @@ +{ + "schema_version": 1, + "task_id": "uniform-transfer-audit", + "priority_revision": 7, + "base_commit": "12fa8c5c844be21bfefb38a19503fbd867a11244", + "original_card": { + "id": "uniform-transfer-audit", + "question": "Does one quantified step of the proposed #4100 all-size construction hold at its actual caller?", + "starting_points": ["docs/research/research-family-status.md", "certificates/selected-result.json", "research/unconditional-batched-crt/README.md"], + "methods": ["Prove one missing implication with explicit quantified hypotheses.", "Find an exact counterexample at the claimed interface boundary."], + "acceptance_gate": "Identify the proposition and what would change downstream; do not equate a finite replay with a universal proof.", + "first_step": { + "command": ["python3", "-B", "scripts/research_baseline.py"], + "expected": "PASS_RESEARCH_BASELINE_BINDINGS_ONLY", + "inspect": "Read PROOF.md and AUDIT.md in #4100. Select one distinct obligation: CRT total repair, native/free-algebra lifting, precision/conditioning, or complete fixed-tape cost. This is an author-submitted proof, not an accepted unconditional theorem.", + "scope": "Source-binding orientation only; no scientific replay, theorem acceptance or supplier admission. Budget any heavy replay separately." + }, + "first_experiment": "Check live handoffs; name one proposition, its caller, quantified domain and dependency closure. Independently prove the implication or exhibit a precise gap/counterexample. Prioritize CRT.md total repair or COMPLEX.md free-algebra lift only if unclaimed. Stop at the chosen obligation; do not substitute finite samples or root arithmetic for an all-size proof, or launch the complete package by default.", + "bottleneck_link": "Finite supplier improvements are useful only under the retained transfer obligations.", + "allowed_variations": ["One CRT repair, native lift, precision/conditioning or tape-cost proposition, with its exact caller."], + "scope_change_triggers": ["Replacing a quantified obligation with another finite smoke test.", "Treating archive intake, an author PASS receipt or a finite composed fixture as discharge of the universal hypotheses."], + "overlap_terms": ["uniform transfer", "all-size", "precision", "4100", "unconditional-batched-crt"], + "existing_checks": [{ + "scope": "PR #4100: proposed unconditional construction and finite checks, without independent acceptance.", + "evidence": "research/unconditional-batched-crt/README.md", + "remaining": "Independent proof audit of one caller-bound all-size implication; all other premises remain explicit.", + "status": "author-checked", + "source_commit": "337d04939571a637aeab54a0f58f54fde811663a", + "selected_record_sha256": "bb2eaa58647b353f88d0aec2eafb9d30df1be53589231b23e12ceef3e4bad129" + }] + }, + "scope_status": "refined", + "actual_scope": "Lower the actual rational FFT and its stored adjoint through retained six-H words and Benes routing, preserving stage counts and proving explicit coefficient, data-rounding and signed-width bounds.", + "scope_change_reason": "The retained standard FFT word does not equal the newer rational unitary butterfly. I preserve the completed producer, connect its actual gates to the existing word/routing compiler, and pay all active and inactive rounding sites. I replace the source-binding-only first experiment with the actual two-wire FFT, adjoint and fine-grid spectator checks.", + "bottleneck_link": "The Gaussian caller cannot use the fixed-H tensor compiler until its actual rational gates have a source-bound lowering and numerical entrance/output contract. This contribution addresses that local connection; physical root, tensor and tape admission remain separate.", + "budget_minutes": 120, + "stop_rule": "Stop at a wrong exact endpoint, pair orientation, inactive-word normalization, source-order mismatch, uncharged coefficient or data rounding term, or understated word width. Preserve the completed PR4205 checkpoint and do not infer physical execution from fixed-H arithmetic.", + "outcome": "completed", + "evidence": "PROOF.md derives the six-H rational butterfly identity, dimension-independent prefix bound K=2^14, complete forward/adjoint error below 3*2^(-t)/4 and O(F0+t+log N+log R) signed widths under the retained phase contract. RESULT.json records 13 field cases through 64 wires, 2,525 stages, 73,104 rounded outputs, 16 standalone words with 1,456 exact segments and their inverses, and 23 controls. A 512-bit spectator has nonzero rounding error within the budget. The verifier executes mathematical H/2 arithmetic; physical T74 execution remains open.", + "author": "Jose Manuel (jmbarrancoml)", + "ai_assistance": "Substantial OpenAI Codex assistance in mathematics, source analysis, implementation and writing. Internal source-analysis agents belong to the author process; no independent human or formal-kernel acceptance.", + "open_questions": [ + { + "question": "Can the actual physical tensor caller consume these coefficient bounds and stage signatures?", + "why_it_matters": "A fixed-H arithmetic program does not establish native-root input admission, complete-stream routing, page delivery or tape costs.", + "first_step": "Bind one emitted layer to the retained tensor coefficient protocol and normalized root, including incoming height, 2^g restoration, spectator preservation and the full movement bill.", + "blocked_by": "Physical source/caller integration, complete-record admission and setup/delivery costs." + }, + { + "question": "Can the completed rounded Gaussian core join the global core/halo comparison?", + "why_it_matters": "Finite section execution does not assign all global output rows or charge their analytic-reference error.", + "first_step": "Reuse the retained row-Neumann lemma with the current shared reference, updated gap constants, wrapped corrections and one owner per output.", + "blocked_by": "Current-reference geometry and a complete outer error and ownership ledger." + } + ] +} diff --git a/research/rational-fft-fixed-h/VERIFY.json b/research/rational-fft-fixed-h/VERIFY.json new file mode 100644 index 0000000000..532f08b1dc --- /dev/null +++ b/research/rational-fft-fixed-h/VERIFY.json @@ -0,0 +1,30 @@ +{ + "schema_version": 1, + "status": "ready", + "python": "3.12", + "requirements": [], + "inputs": [ + "research/capped-phase-fusion/evidence/inplace_algebra_ultra/check_circuits.py", + "research/capped-phase-fusion/evidence/inplace_algebra_ultra/check_tensor_compiler.py", + "research/cubic-cyclic-inverse/vendor/interval_kernel.py", + "research/cubic-cyclic-inverse/vendor/PR628-PROOF.md", + "research/cubic-cyclic-inverse/vendor/PR628-NOTICE.md", + "research/capped-phase-fusion/TENSOR-COMPILER.md", + "research/unconditional-batched-crt/GAUSSIAN.md", + "research/rational-fft-fixed-h/vendor/rational_fft/engine.py", + "research/rational-fft-fixed-h/vendor/rational_fft/exact.py", + "research/rational-fft-fixed-h/vendor/PROVENANCE.json" + ], + "commands": [ + { + "argv": ["{python}", "-I", "-B", "{package}/verify.py"], + "timeout_seconds": 120, + "checks": "Authenticate the unchanged FFT producer and fixed-H compiler; check exact word/route/full-circuit identities, all standalone word segments and inverses, rounded FFT and stored-adjoint errors, active/inactive data widths and calibrated controls; compare the complete typed receipt." + }, + { + "argv": ["{python}", "-I", "-O", "-B", "{package}/verify.py"], + "timeout_seconds": 120, + "checks": "Repeat the complete fixed-H lowering and rounded execution under optimized Python, retaining source assertions, exact input seals and full typed receipt equality." + } + ] +} diff --git a/research/rational-fft-fixed-h/lowering.py b/research/rational-fft-fixed-h/lowering.py new file mode 100644 index 0000000000..c96b3ed17b --- /dev/null +++ b/research/rational-fft-fixed-h/lowering.py @@ -0,0 +1,355 @@ +"""Source-bound rational FFT lowering to H/2 and rounded diagonal stages. + +Jose Manuel (jmbarrancoml), with substantial OpenAI Codex assistance. +Apache-2.0. Fixed words, Beneš routing and FFT schedule: Vlado Vojdanovski. +Rational phases: Chafik Boukhalfa and the retained PR628 lineage. +""" +import ast +import copy +from fractions import Fraction as Q +from hashlib import sha256 +import json +from pathlib import Path +import sys +from types import ModuleType, SimpleNamespace + +HERE = Path(__file__).resolve().parent +ROOT = HERE.parents[1] +PREFIX = "research/rational-fft-fixed-h/" +EXACT = PREFIX + "vendor/rational_fft/exact.py" +ENGINE = PREFIX + "vendor/rational_fft/engine.py" +PROVENANCE = PREFIX + "vendor/PROVENANCE.json" +CIRCUIT = "research/capped-phase-fusion/evidence/inplace_algebra_ultra/check_circuits.py" +TENSOR = "research/capped-phase-fusion/evidence/inplace_algebra_ultra/check_tensor_compiler.py" +ORACLE = "research/cubic-cyclic-inverse/vendor/interval_kernel.py" +K = 1 << 14 + + +def need(ok, message): + if not ok: + raise ValueError(message) + + +def canonical(value): + return json.dumps(value, sort_keys=True, separators=(",", ":")).encode() + + +def norm2(vector): + return sum((z.norm2() for z in vector), Q(0)) + + +def authenticate(overrides=None): + rows = json.loads((HERE / "SOURCES.json").read_text())["files"] + raw, seals = {}, [] + for row in rows: + if row["usage"] != "input": + continue + path = row["path"] + value = (overrides or {}).get(path) + if value is None: + value = (ROOT / path).read_bytes() + need(sha256(value).hexdigest() == row["sha256"], "source SHA256: " + path) + raw[path] = value + seals.append(dict(path=path, sha256=row["sha256"])) + provenance = json.loads(raw[PROVENANCE]) + for row in provenance["files"]: + need(sha256(raw[row["retained_path"]]).hexdigest() == row["sha256"], + "unchanged published FFT producer") + return raw, seals + + +class Sources: + def __init__(self, overrides=None): + self.raw, self.seals = authenticate(overrides) + self.e = ModuleType("_fixed_h_retained_exact") + exec(compile(self.raw[EXACT], "", "exec", optimize=0), + self.e.__dict__) + self.engine = ModuleType("_fixed_h_retained_engine") + previous = sys.modules.get("exact") + sys.modules["exact"] = self.e + try: + exec(compile(self.raw[ENGINE], "", "exec", optimize=0), + self.engine.__dict__) + finally: + if previous is None: + del sys.modules["exact"] + else: + sys.modules["exact"] = previous + names = {"benes", "D", "u3", "id2", "id3", "canonical", "gateword", + "matching_permutation", "local_layer"} + tree = ast.parse(self.raw[TENSOR]) + tree.body = [copy.deepcopy(node) for node in tree.body + if isinstance(node, ast.FunctionDef) and node.name in names] + need({node.name for node in tree.body} == names, "complete fixed-word compiler closure") + self.tensor_ast = sha256(ast.dump(tree).encode()).hexdigest() + C = self.e.C + scalar = SimpleNamespace(sympify=C.wrap, simplify=C.wrap, Integer=lambda n: C(n), + Rational=lambda a, b=1: C(Q(a, b)), I=C(0, 1)) + self.ns = dict(s=scalar) + exec(compile(tree, "", "exec", optimize=0), self.ns) + + def matrix_hash(self, matrix): + return sha256((str((len(matrix), len(matrix[0]) if matrix else 0)) + + self.e.vector_hash(x for row in matrix for x in row)).encode()).hexdigest() + + def word_endpoint(self, word): + C, Mat = self.e.C, self.e.Mat + matrix = Mat([[1, 0], [0, 1]]) + for operation in word: + left = Mat([[1, 1], [1, -1]]) if operation == "H" else Mat( + [[operation[0], 0], [0, operation[1]]]) + matrix = Mat([[sum((left[i][k] * matrix[k][j] for k in range(2)), C()) + for j in range(2)] for i in range(2)]) + return matrix + + def butterfly_word(self, a, b, phase, adjoint=False): + C = self.e.C + need(type(a) is Q and type(b) is Q and a >= Q(1, 2) and b >= Q(1, 2) + and a * a + b * b == 1 and phase.norm2() == 1, "bounded rational unit splitter") + r, t = C(b / a), phase * (b / a) + word = self.ns["canonical"](self.ns["u3"](t) + [self.ns["D"](a, -phase / a)] + + list(reversed(self.ns["u3"](r)))) + if adjoint: + word = [op if op == "H" else tuple(z.conjugate() for z in op) + for op in reversed(word)] + return word + + def gate_word(self, gate): + Mat = self.e.Mat + if gate == Mat([[0, 1], [1, 0]]): + kind, word = "swap", self.ns["gateword"]("swap") + elif gate[0][0].im == gate[1][0].im == 0 and min(gate[0][0].re, gate[1][0].re) >= Q(1, 2): + a, b = gate[0][0].re, gate[1][0].re + phase = gate[0][1] / b + kind, word = "butterfly", self.butterfly_word(a, b, phase) + else: + need(gate[0][0].im == gate[0][1].im == 0, "stored FFT adjoint orientation") + a, b = gate[0][0].re, gate[0][1].re + phase = (gate[1][0] / b).conjugate() if b != 0 else self.e.C() + kind, word = "adjoint", self.butterfly_word(a, b, phase, True) + need(len(word) == 13 and sum(op == "H" for op in word) == 6, + "six-H seven-diagonal shape") + need(self.word_endpoint(word) == gate, "exact endpoint equals the actual stored gate") + return kind, word + + +def stage_hash(source, stages): + rows = [(kind, value if kind == "H" else source.e.vector_hash(value)) for kind, value in stages] + return sha256(canonical(rows)).hexdigest() + + +def plan_hash(source, plan): + return sha256(canonical([[(list(ids), source.matrix_hash(gate)) for ids, gate in layer] + for layer in plan])).hexdigest() + + +class FFT: + def __init__(self, source, size, indices, radius, target, incoming=0, *, adjoint=False, + phase_bits=None, data_bits=None): + need(type(size) is int and size > 0 and size & (size - 1) == 0, "dyadic complete field") + need(indices and all(type(i) is int and 0 <= i < size for i in indices) + and len(set(indices)) == len(indices), "distinct oriented integer FFT wires") + n = len(indices) + need(n & (n - 1) == 0, "dyadic active FFT size") + need(type(radius) in (int, Q) and radius >= 1 and type(target) is int and target >= 1 + and type(incoming) is int and incoming >= 0 and type(adjoint) is bool, + "exact input radius, target, grid and direction") + self.source, self.e = source, source.e + self.size, self.indices, self.radius = size, tuple(indices), Q(radius) + self.target, self.incoming, self.adjoint = target, incoming, adjoint + d, field_d = n.bit_length() - 1, size.bit_length() - 1 + self.original_layers = d + 1 if d else 0 + self.stage_count = self.original_layers * (16 * field_d + 5) + self.diagonal_count = self.original_layers * (8 * field_d + 3) + self.h_count = self.original_layers * (8 * field_d + 2) + required_phase = max(3, target + self.e.ceil_log2(8 * d * (radius + 1))) if d else 3 + self.phase_bits = required_phase if phase_bits is None else phase_bits + need(type(self.phase_bits) is int and self.phase_bits >= required_phase, + "funded phase precision and splitter chart") + required_data = max(incoming, target + self.e.ceil_log2(16 * self.diagonal_count * K ** 2 * (radius + 1)), + target + self.e.ceil_log2(16 * K * self.stage_count * size)) if d else max(incoming, 1) + self.bits = required_data if data_bits is None else data_bits + need(type(self.bits) is int and self.bits >= required_data, "funded native coefficient/data grid") + self.phases = source.engine.Phases(self.phase_bits, source.raw[ORACLE]) + self.builder = source.engine.Builder(self.phases, self.bits, source.raw[CIRCUIT]) + forward = self.builder.namespace["fft"](list(indices)) + self.plan = self.builder.namespace["inverse"](forward) if adjoint else forward + need(len(self.plan) == self.original_layers, "retained FFT matching-layer count") + self.reference_hash = plan_hash(source, self.plan) + self.raw_stages, self.layers, self.words = [], [], [] + for layer in self.plan: + pairs, words, kinds, used = [], [], [], set() + for ids, gate in layer: + need(len(ids) == 2 and len(set(ids)) == 2 and not used.intersection(ids) + and all(type(i) is int and 0 <= i < size for i in ids), "matching wire ownership") + need(self.e.unitary(gate), "unitary completed FFT gate") + kind, word = source.gate_word(gate) + used.update(ids) + pairs.append(tuple(ids)) + words.append(word) + kinds.append(kind) + free = [i for i in range(size) if i not in used] + for j in range(0, len(free), 2): + pairs.append(tuple(free[j:j + 2])) + words.append(source.ns["gateword"]("diag", (1, 1))) + kinds.append("idle") + need(len(pairs) == len(words) == size // 2, "complete matching and inactive words") + permutation = source.ns["matching_permutation"](size, pairs) + network = source.ns["benes"](permutation) + self.check_network(permutation, network) + stages = source.ns["local_layer"](size, pairs, words) + need(len(stages) == 16 * field_d + 5, "retained source local-stage count") + begin = len(self.raw_stages) + self.raw_stages.extend(stages) + self.layers.append(dict(begin=begin, end=len(self.raw_stages), pairs=pairs, kinds=kinds, + permutation=permutation, route_layers=len(network))) + self.words.append(words) + self.reference_stages = [] + for i, (kind, value) in enumerate(self.raw_stages): + if kind == "H": + need(type(value) is int and 0 <= value < field_d + and i + 1 < len(self.raw_stages) and self.raw_stages[i + 1][0] == "D", + "Hadamard bit and immediate compensation stage") + self.reference_stages.append(("H", value)) + else: + need(kind == "D" and len(value) == size and all(z != 0 for z in value), + "complete nonzero coefficient table") + multiplier = 2 if i and self.raw_stages[i - 1][0] == "H" else 1 + page = self.e.Vec(multiplier * z for z in value) + need(all(z.norm2() <= 36 for z in page), "bounded native coefficient modulus") + need(all(self.e.qheight(part) <= 8 * self.phase_bits + 64 + for z in page for part in (z.re, z.im)), "rational coefficient setup height") + self.reference_stages.append(("D", page)) + self.stages = [(kind, value if kind == "H" else self.e.Vec(self.e.rounded(z, self.bits) for z in value)) + for kind, value in self.reference_stages] + self.coefficient_width = 0 + for kind, page in self.stages: + if kind == "D": + for z in page: + for part in (z.re, z.im): + integer = part * (1 << self.bits) + need(integer.denominator == 1, "stored coefficient grid") + self.coefficient_width = max(self.coefficient_width, abs(integer.numerator).bit_length() + 1) + need(self.coefficient_width <= self.bits + 5, "signed coefficient record width") + need(len(self.stages) == self.stage_count + and sum(kind == "D" for kind, _ in self.stages) == self.diagonal_count + and sum(kind == "H" for kind, _ in self.stages) == self.h_count, "complete native counts") + u = Q(1, 1 << self.bits) + self.phase_error = 2 * d * Q(1, 1 << self.phase_bits) * self.radius + self.coefficient_error = 4 * self.diagonal_count * K ** 2 * u * self.radius + self.rounding_error = 4 * K * self.stage_count * size * u + self.native_error = self.coefficient_error + self.rounding_error + self.total_error = self.phase_error + self.native_error + need(self.diagonal_count * K ** 2 * 2 * u < Q(1, 2) + and self.total_error < 3 * Q(1, 1 << target) / 4, "complete FFT precision budget") + self.amplitude = 4 * K * (self.radius + 1) + self.integer_bits = self.e.ceil_log2(self.amplitude) + 2 + self.temporary_bits = 2 * self.bits + self.integer_bits + 6 + self.stage_seal = stage_hash(source, self.stages) + self.reference_stage_seal = stage_hash(source, self.reference_stages) + for (kind, exact), (_, stored) in zip(self.reference_stages, self.stages): + if kind == "D": + need(all((a - b).norm2() <= (2 * u) ** 2 for a, b in zip(exact, stored)), + "quantized diagonal operator error") + + def check_network(self, permutation, network): + data = list(range(self.size)) + for layer in network: + used, bits = set(), set() + for i, j, flip in layer: + need(type(flip) is bool and i not in used and j not in used + and 0 <= i < self.size and 0 <= j < self.size, "source switch ownership") + mask = i ^ j + need(mask > 0 and mask & (mask - 1) == 0, "one-bit switch") + bits.add(mask) + used.update((i, j)) + if flip: + data[i], data[j] = data[j], data[i] + need(len(bits) == 1 and len(used) == self.size, "complete common-bit routing layer") + need(all(data[permutation[i]] == i for i in range(self.size)), "source routing orientation") + + def execute(self, vector, capture=False): + E, scale = self.e, 1 << self.bits + state = E.Vec(vector) + need(len(state) == self.size and norm2(state) <= self.radius ** 2, + "declared FFT input dimension and Euclidean radius") + need(all((part * (1 << self.incoming)).denominator == 1 + for z in state for part in (z.re, z.im)), "declared incoming data grid") + need(plan_hash(self.source, self.plan) == self.reference_hash + and stage_hash(self.source, self.reference_stages) == self.reference_stage_seal + and stage_hash(self.source, self.stages) == self.stage_seal, + "unchanged stored FFT and prepared stages") + borrowed = E.vector_hash(state) + stats = dict(real_products=0, complex_roundings=0, h_pair_calls=0, + maximum_data_numerator_bits=0, maximum_temporary_numerator_bits=0, + maximum_temporary_fractional_bits=0) + traces = [] + + def observe(value): + integer = value * (1 << (2 * self.bits)) + need(integer.denominator == 1, "exact native arithmetic temporary grid") + width = abs(integer.numerator).bit_length() + 1 + stats["maximum_temporary_numerator_bits"] = max(stats["maximum_temporary_numerator_bits"], width) + stats["maximum_temporary_fractional_bits"] = max( + stats["maximum_temporary_fractional_bits"], value.denominator.bit_length() - 1) + need(width <= self.temporary_bits and abs(value) <= 16 * self.amplitude, + "native arithmetic temporary allowance") + return value + + def store(value): + result = E.rounded(value, self.bits) + stats["complex_roundings"] += 1 + for part in (result.re, result.im): + integer = part * scale + need(integer.denominator == 1, "stored native common grid") + width = abs(integer.numerator).bit_length() + 1 + stats["maximum_data_numerator_bits"] = max(stats["maximum_data_numerator_bits"], width) + need(width <= self.bits + self.integer_bits, "signed data record width") + return result + + need(norm2(state) <= self.amplitude ** 2, "initial magnitude envelope") + for number, (kind, value) in enumerate(self.stages): + if kind == "D": + output = [] + for a, x in zip(value, state): + ar, ai = observe(a.re * x.re), observe(a.re * x.im) + br, bi = observe(a.im * x.re), observe(a.im * x.im) + stats["real_products"] += 4 + output.append(store(E.C(observe(ar - bi), observe(ai + br)))) + state = E.Vec(output) + else: + step = 1 << value + for i in range(self.size): + if not i & step: + a, b = state[i], state[i + step] + sr, si = observe(a.re + b.re), observe(a.im + b.im) + dr, di = observe(a.re - b.re), observe(a.im - b.im) + state[i] = store(E.C(observe(sr / 2), observe(si / 2))) + state[i + step] = store(E.C(observe(dr / 2), observe(di / 2))) + stats["h_pair_calls"] += 1 + need(norm2(state) <= self.amplitude ** 2, "actual native prefix magnitude") + if capture: + traces.append(dict(stage=number, kind=kind, output_sha256=E.vector_hash(state))) + need(borrowed == E.vector_hash(E.Vec(vector)), "borrowed input preserved") + need(stats["complex_roundings"] == self.stage_count * self.size + and stats["h_pair_calls"] == self.h_count * self.size // 2, + "all active and inactive rounding sites charged") + return state, stats, traces + + def record(self): + return dict(field_size=self.size, active_indices=list(self.indices), adjoint=self.adjoint, + radius=str(self.radius), target_bits=self.target, incoming_bits=self.incoming, + phase_bits=self.phase_bits, data_bits=self.bits, + observed_coefficient_bits=self.coefficient_width, + counts=dict(logical_layers=self.original_layers, primitive_stages=self.stage_count, + diagonal_stages=self.diagonal_count, hadamard_stages=self.h_count), + layers=self.layers, logical_plan_sha256=self.reference_hash, + reference_stages_sha256=self.reference_stage_seal, stored_stages_sha256=self.stage_seal, + source_original_ast_sha256=self.builder.original_ast, + source_adapted_ast_sha256=self.builder.adapted_ast, + tensor_ast_sha256=self.source.tensor_ast, phases=self.phases.record(), + budget=dict(prefix_bound=K, phase_error=str(self.phase_error), + coefficient_error=str(self.coefficient_error), rounding_error=str(self.rounding_error), + total_error=str(self.total_error), amplitude_bound=str(self.amplitude), + coefficient_bits=self.bits + 5, data_bits=self.bits + self.integer_bits, + temporary_bits=self.temporary_bits)) diff --git a/research/rational-fft-fixed-h/verify.py b/research/rational-fft-fixed-h/verify.py new file mode 100644 index 0000000000..7637cc85f6 --- /dev/null +++ b/research/rational-fft-fixed-h/verify.py @@ -0,0 +1,308 @@ +"""Check retained fixed-H words, routing and complete rounded FFT executions. + +Jose Manuel (jmbarrancoml), with substantial OpenAI Codex assistance. +Apache-2.0. This is finite evidence for the separately written proof. +""" +import argparse +from fractions import Fraction as Q +from hashlib import sha256 +import json +from pathlib import Path +import sys + +HERE = Path(__file__).resolve().parent +sys.path.insert(0, str(HERE)) +from lowering import FFT, K, Sources, TENSOR, canonical, need, norm2, stage_hash + + +def rejected(operation, label): + try: + operation() + except (ValueError, AssertionError): + return label + raise ValueError("control unexpectedly passed: " + label) + + +def exact_native(source, stages, vector, raw=False): + E = source.e + state = E.Vec(vector) + for kind, value in stages: + if kind == "D": + need(len(value) == len(state), "complete coefficient page") + state = E.Vec(a * x for a, x in zip(value, state)) + else: + step = 1 << value + for i in range(len(state)): + if not i & step: + a, b = state[i], state[i + step] + denominator = 1 if raw else 2 + state[i], state[i + step] = (a + b) / denominator, (a - b) / denominator + return state + + +def difference(a, b): + need(len(a) == len(b), "complete output comparison") + return [x - y for x, y in zip(a, b)] + + +def upper_report(source, value, allowance): + need(0 <= value <= allowance, "reported exact error allowance") + if allowance == 0: + return "0" + bits = max(160, source.e.ceil_log2(1 / allowance) + 16) + return str(min(allowance, source.e.upper(value, bits))) + + +def scale_interval(interval, scalar): + ends = [x * scalar for x in interval] + return min(ends), max(ends) + + +def add_interval(a, b): + return a[0] + b[0], a[1] + b[1] + + +def ideal_squared_error(program, vector, output): + source, indices = program.source, program.indices + n = len(indices) + normalization = source.engine.inverse_sqrt_box(n, program.phases.working_bits) + boxes = {i: ((z.re, z.re), (z.im, z.im)) for i, z in enumerate(vector)} + for row, physical_row in enumerate(indices): + real, imaginary = (Q(0), Q(0)), (Q(0), Q(0)) + for col, physical_col in enumerate(indices): + phase = program.phases.box(n, (1 if program.adjoint else -1) * row * col) + z = vector[physical_col] + real = add_interval(real, add_interval(scale_interval(phase[0], z.re), + scale_interval(phase[1], -z.im))) + imaginary = add_interval(imaginary, add_interval(scale_interval(phase[0], z.im), + scale_interval(phase[1], z.re))) + intervals = [] + for part in (real, imaginary): + corners = [a * b for a in part for b in normalization] + intervals.append((min(corners), max(corners))) + boxes[physical_row] = tuple(intervals) + error = Q(0) + for i, z in enumerate(output): + for value, interval in zip((z.re, z.im), boxes[i]): + error += max(abs(value - interval[0]), abs(value - interval[1])) ** 2 + return error + + +def basis_check(program): + E, source = program.e, program.source + columns = [] + for j in range(program.size): + vector = E.Vec(int(i == j) for i in range(program.size)) + expected = E.apply(program.plan, vector)[0] + actual = exact_native(source, program.reference_stages, vector) + need(actual == expected, "complete exact native matrix equals retained FFT") + columns.append(actual) + return E.vector_hash(z for column in columns for z in column) + + +def one_case(source, label, size, indices, target=18, incoming=0, radius=1, adjoint=False): + incoming = max(incoming, size.bit_length() + 2) + program = FFT(source, size, indices, radius, target, incoming, adjoint=adjoint) + E = source.e + vector = E.Vec(E.C(Q((3 * i) % 7 - 3, 8 * size), Q((5 * i) % 7 - 3, 8 * size)) + for i in range(size)) + if radius >= 2: + vector = E.Vec(z * (Q(radius) / 2) for z in vector) + if incoming >= 512: + fine = next((i for i in range(size) if i not in indices), 0) + vector[fine] = E.C(Q(1, 1 << incoming)) + expected = E.apply(program.plan, vector)[0] + exact = exact_native(source, program.reference_stages, vector) + need(exact == expected, "exact complete forward or stored-adjoint lowering") + output, statistics, trace = program.execute(vector, capture=True) + rational_error = norm2(difference(output, expected)) + need(rational_error <= program.native_error ** 2, "complete native error against rational FFT") + ideal_error = ideal_squared_error(program, vector, output) + need(ideal_error <= program.total_error ** 2, "complete independent-formula Fourier enclosure") + matrix_hash = basis_check(program) if size <= 8 else None + spectators = [i for i in range(size) if i not in indices] + spectator_error = norm2([output[i] - vector[i] for i in spectators]) + record = program.record() + record.update(label=label, input_sha256=E.vector_hash(vector), output_sha256=E.vector_hash(output), + rational_target_sha256=E.vector_hash(expected), exact_matrix_sha256=matrix_hash, + rounded_rational_error_squared_upper=upper_report(source, rational_error, program.native_error ** 2), + ideal_error_squared_upper=upper_report(source, ideal_error, program.total_error ** 2), + nonzero_rounded_error=rational_error > 0, + nonzero_spectator_error=spectator_error > 0, + spectator_error_squared_upper=upper_report(source, spectator_error, program.native_error ** 2), + statistics=statistics, trace=trace) + print("CHECK_FIXED_H_FFT", label, flush=True) + return record, program, vector, output + + +def segment_envelopes(source, word): + E, matrices = source.e, [] + for i, operation in enumerate(word): + if operation == "H": + matrices.append(E.Mat([[Q(1, 2), Q(1, 2)], [Q(1, 2), Q(-1, 2)]])) + else: + scale = 2 if i and word[i - 1] == "H" else 1 + matrices.append(E.Mat([[scale * operation[0], 0], [0, scale * operation[1]]])) + forward, inverse, count = Q(0), Q(0), 0 + for first in range(len(matrices)): + product = E.Mat([[1, 0], [0, 1]]) + for matrix in matrices[first:]: + product = E.Mat([[sum((matrix[i][k] * product[k][j] for k in range(2)), E.C()) + for j in range(2)] for i in range(2)]) + a, b = product[0] + c, d = product[1] + determinant = a * d - b * c + need(determinant != 0, "invertible exact native segment") + inv = E.Mat([[d / determinant, -b / determinant], [-c / determinant, a / determinant]]) + forward = max(forward, sum(z.norm2() for row in product for z in row)) + inverse = max(inverse, sum(z.norm2() for row in inv for z in row)) + count += 1 + need(max(forward, inverse) <= 4096 ** 2, "independent Frobenius segment envelope") + return dict(segments=count, forward_frobenius_squared_upper=str(E.upper(forward)), + inverse_frobenius_squared_upper=str(E.upper(inverse))) + + +def word_cases(source): + E, records = source.e, [] + for a, b in ((Q(3, 5), Q(4, 5)), (Q(33, 65), Q(56, 65))): + for w in (E.C(1), E.C(-1), E.C(0, 1), E.C(3, 4) / 5): + for inverse in (False, True): + word = source.butterfly_word(a, b, w, inverse) + wanted = E.Mat([[a, b * w], [b, -a * w]]) + if inverse: + wanted = E.adjoint(wanted) + need(source.word_endpoint(word) == wanted, "standalone six-H butterfly identity") + coefficients = [z for op in word if op != "H" for z in op] + need(all(z.norm2() <= 9 and (1 / z).norm2() <= 400 ** 2 for z in coefficients), + "raw direct and reciprocal coefficient bounds") + records.append(dict(a=str(a), b=str(b), phase=w.record(), adjoint=inverse, + endpoint_sha256=source.matrix_hash(wanted), + envelopes=segment_envelopes(source, word))) + return records + + +def controls(source, cases): + E, results = source.e, [] + program = next(row[1] for row in cases if row[1].size == 4 and not row[1].adjoint + and len(row[1].indices) == 4) + row = next(row for row in cases if row[1] is program) + vector = row[2] + expected = E.apply(program.plan, vector)[0] + wrong = exact_native(source, program.raw_stages, vector) + results.append(rejected(lambda: need(wrong == expected, "missing H0 compensation"), + "omitted-native-scale-restoration")) + a, b, w = Q(3, 5), Q(4, 5), E.C(3, 4) / 5 + actual = E.Mat([[a, b * w], [b, -a * w]]) + old_word = source.ns["gateword"]("fft", w) + results.append(rejected(lambda: need(source.word_endpoint(old_word) == actual, "old FFT shape"), + "unnormalized-source-fft-word-is-not-rational-butterfly")) + wrong_adjoint = source.butterfly_word(a, b, w.conjugate()) + results.append(rejected(lambda: need(source.word_endpoint(wrong_adjoint) == E.adjoint(actual), "adjoint orientation"), + "twiddle-conjugation-alone-is-not-the-adjoint")) + pairs = [(3, 1), (0, 2)] + words = [source.butterfly_word(a, b, w), source.ns["gateword"]("diag", (1, 1))] + routed = source.ns["local_layer"](4, pairs, words) + expected_partial = E.apply([[(pairs[0], actual)]], vector)[0] + need(exact_native(source, routed, vector, raw=True) == expected_partial, "oriented noninvolutive route") + sorted_route = source.ns["local_layer"](4, [tuple(sorted(p)) for p in pairs], words) + results.append(rejected(lambda: need(exact_native(source, sorted_route, vector, raw=True) + == expected_partial, "sorted pair changes gate"), "discarded-pair-orientation")) + all_one = [(E.C(1), E.C(1)) if op != "H" else op for op in words[1]] + bad_idle = source.ns["local_layer"](4, pairs, [words[0], all_one]) + results.append(rejected(lambda: need(exact_native(source, bad_idle, vector, raw=True) + == expected_partial, "idle word needs compensation"), "all-one-idle-padding")) + missing_half = list(routed) + half_index = next(i for i, (kind, value) in enumerate(missing_half) + if kind == "D" and all(z == Q(1, 2) for z in value)) + missing_half[half_index] = ("D", E.Vec([1] * 4)) + results.append(rejected(lambda: need(exact_native(source, missing_half, vector, raw=True) + == expected_partial, "switch half"), "omitted-switch-half")) + results.append(rejected(lambda: source.ns["u3"](E.C(0)), "source-zero-shear-assertion-active")) + results.append(rejected(lambda: source.ns["gateword"]("diag", (0, 1)), "source-zero-diagonal-assertion-active")) + results.append(rejected(lambda: FFT(source, 4, [0, 0], 1, 18), "duplicate-active-wire")) + results.append(rejected(lambda: FFT(source, 4, [False, 1], 1, 18), "boolean-wire-id")) + results.append(rejected(lambda: FFT(source, 4, [-1, 1], 1, 18), "negative-wire-id")) + results.append(rejected(lambda: FFT(source, 4, [0, 4], 1, 18), "out-of-range-wire-id")) + results.append(rejected(lambda: FFT(source, 3, [0, 1], 1, 18), "nondyadic-field")) + results.append(rejected(lambda: FFT(source, 4, [0, 1, 2], 1, 18), "nondyadic-active-FFT")) + results.append(rejected(lambda: FFT(source, 4, [0, 1], 1.0, 18), "floating-radius")) + results.append(rejected(lambda: FFT(source, 4, [0, 1], 1, 18, phase_bits=3), "underfunded-phase-precision")) + results.append(rejected(lambda: FFT(source, 4, [0, 1], 1, 18, data_bits=8), "underfunded-native-grid")) + bad_input = E.Vec(vector) + bad_input[0] = E.C(Q(1, 1 << (program.incoming + 1))) + results.append(rejected(lambda: program.execute(bad_input), "underdeclared-incoming-grid")) + bad_input[0] = E.C(2) + results.append(rejected(lambda: program.execute(bad_input), "underdeclared-input-radius")) + first_diagonal = next(i for i, (kind, _) in enumerate(program.stages) if kind == "D") + old_page = program.stages[first_diagonal] + replacement = E.Vec(old_page[1]) + replacement[0] += 1 + program.stages[first_diagonal] = ("D", replacement) + results.append(rejected(lambda: program.execute(vector), "changed-prepared-coefficient-page")) + program.stages[first_diagonal] = old_page + results.append(rejected(lambda: Sources({TENSOR: source.raw[TENSOR] + b"\n# changed\n"}), + "source-byte-corruption")) + fine = next(row for row in cases if row[0]["label"] == "spectator-fine") + need(fine[0]["nonzero_spectator_error"], "inactive rounding has a nonzero error witness") + results.append("inactive-word-error-is-paid") + need(canonical({"count": 1}) != canonical({"count": True}), "typed scientific receipt") + return results + ["typed-receipt"] + + +def run(quick=False): + source = Sources() + specifications = [ + ("singleton", 1, [0], 18, 0, 1, False), + ("two-forward", 2, [0, 1], 18, 0, 1, False), + ("two-adjoint", 2, [0, 1], 18, 0, 1, True), + ("spectator-fine", 4, [3, 1], 18, 512, 1, False), + ("four-forward", 4, [0, 1, 2, 3], 18, 0, 1, False), + ("four-reversed-adjoint", 4, [3, 2, 1, 0], 24, 0, 1, True), + ("eight-permuted", 8, [5, 1, 7, 3, 0, 6, 2, 4], 22, 0, 1, False), + ("eight-partial-adjoint", 8, [6, 1, 4, 3], 20, 0, 1, True), + ("sixteen-forward", 16, list(range(16)), 24, 0, 1, False), + ("thirtytwo-adjoint", 32, list(reversed(range(32))), 20, 0, 1, True), + ("sixtyfour-forward", 64, list(range(64)), 18, 0, 1, False), + ("large-radius", 8, list(range(8)), 18, 0, 1 << 20, False), + ("idle-field", 4, [2], 18, 0, 1, True), + ] + if quick: + specifications = specifications[:4] + cases = [one_case(source, *spec) for spec in specifications] + if quick: + return dict(cases=[row[0] for row in cases]) + need(any(row[0]["nonzero_rounded_error"] for row in cases), "nonzero native rounding evidence") + return dict(schema_version=1, scope="retained rational FFT and stored-adjoint fixed-H stage lowering", + sources=source.seals, tensor_ast_sha256=source.tensor_ast, + word_cases=word_cases(source), cases=[row[0] for row in cases], + controls=controls(source, cases), + source_FFT_execution=True, source_Benes_execution=True, native_stage_arithmetic=True, + physical_root_execution=False, physical_tape_execution=False, + complete_tensor_execution=False, dyadic_programs_exact_inverse_pair=False, + independent_transcendental_backend=False, universal_proof_kernel=False) + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--write-result", action="store_true") + parser.add_argument("--quick", action="store_true") + args = parser.parse_args() + need(not (args.quick and args.write_result), "diagnostic replay cannot replace the full receipt") + result = run(args.quick) + if args.quick: + print(json.dumps(dict(status="PASS_FIXED_H_DIAGNOSTIC", cases=len(result["cases"])))) + return + path = HERE / "RESULT.json" + if args.write_result: + path.write_text(json.dumps(result, indent=2) + "\n") + else: + need(canonical(result) == canonical(json.loads(path.read_text())), "complete typed native FFT receipt") + print(json.dumps(dict(status="PASS_RATIONAL_FFT_FIXED_H", cases=len(result["cases"]), + word_cases=len(result["word_cases"]), controls=len(result["controls"]), + native_stages=sum(row["counts"]["primitive_stages"] for row in result["cases"]), + rounded_outputs=sum(row["statistics"]["complex_roundings"] for row in result["cases"]), + result_sha256=sha256(canonical(result)).hexdigest()), sort_keys=True)) + + +if __name__ == "__main__": + main() From 1c707019535965f1d0d5d1be363e0a161b0b4731 Mon Sep 17 00:00:00 2001 From: Jose Manuel <118126596+jmbarrancoml@users.noreply.github.com> Date: Tue, 20 Oct 2026 23:54:51 +0200 Subject: [PATCH 3/5] Retain the conditioned Toeplitz source for fixed-H integration --- .../vendor/full_source/FULL-PROOF.md | 374 ++++++++++++++++++ .../vendor/full_source/GENERATOR-PROOF.md | 277 +++++++++++++ .../vendor/full_source/PROOF.md | 349 ++++++++++++++++ .../vendor/full_source/PROVENANCE.json | 19 + .../vendor/full_source/TRIANGLE-PROOF.md | 256 ++++++++++++ .../vendor/full_source/full.py | 243 ++++++++++++ .../vendor/full_source/generator.py | 233 +++++++++++ .../vendor/full_source/triangular.py | 200 ++++++++++ .../full_source/vendor/STEIN-PROVENANCE.json | 14 + .../full_source/vendor/stein_rational.py | 196 +++++++++ 10 files changed, 2161 insertions(+) create mode 100644 research/rational-fft-fixed-h/vendor/full_source/FULL-PROOF.md create mode 100644 research/rational-fft-fixed-h/vendor/full_source/GENERATOR-PROOF.md create mode 100644 research/rational-fft-fixed-h/vendor/full_source/PROOF.md create mode 100644 research/rational-fft-fixed-h/vendor/full_source/PROVENANCE.json create mode 100644 research/rational-fft-fixed-h/vendor/full_source/TRIANGLE-PROOF.md create mode 100644 research/rational-fft-fixed-h/vendor/full_source/full.py create mode 100644 research/rational-fft-fixed-h/vendor/full_source/generator.py create mode 100644 research/rational-fft-fixed-h/vendor/full_source/triangular.py create mode 100644 research/rational-fft-fixed-h/vendor/full_source/vendor/STEIN-PROVENANCE.json create mode 100644 research/rational-fft-fixed-h/vendor/full_source/vendor/stein_rational.py diff --git a/research/rational-fft-fixed-h/vendor/full_source/FULL-PROOF.md b/research/rational-fft-fixed-h/vendor/full_source/FULL-PROOF.md new file mode 100644 index 0000000000..e650f46863 --- /dev/null +++ b/research/rational-fft-fixed-h/vendor/full_source/FULL-PROOF.md @@ -0,0 +1,374 @@ +# Full Toeplitz recursion with a polynomial conditioning envelope + +Jose Manuel (`jmbarrancoml`), with substantial OpenAI Codex assistance. +Apache-2.0. + +## 1. Domain, result and predecessor scope + +Let \(N=2^d\), and let \(T\in\mathbb Q(i)^{N\times N}\) be Toeplitz. +Write \(T_b=T[0:b,0:b]\). I assume +\[ +\Lambda,Q\ge1,\qquad \|T\|_2\le\Lambda,\qquad +\|T_b^{-1}\|_2\le Q\quad(1\le b\le N). +\tag{1} +\] +The full inverse bound alone would not suffice: the Toeplitz matrix +\(\left[\begin{smallmatrix}0&1\\1&0\end{smallmatrix}\right]\) is invertible +but has a singular first section. I include it as an admission control. +I allow indefinite and non-Hermitian matrices satisfying (1). + +I execute the retained `full_plan` on exactly \(N\) logical complex wires, +using the completed generator circuit and the same stored gates in reverse +for inversion. For input norm at most \(R\ge1\), incoming grid +\(F_0\in\mathbb Z_{\ge0}\) and target \(2^{-t}\), \(t\in\mathbb Z_{\ge1}\), +I prove forward and inverse error at most \(2^{-t}\) +with online widths +\[ +O(F_0+t+\log N+\log\Lambda+\log Q+\log R). +\tag{2} +\] +The circuit has \(O(\log^4N)\) layers and \(O(N\log^4N)\) gates. +I give explicit constants below. + +Vlado/PR1673 supplied the recursive compiler and displacement identities. +The retained `GAUGEFREE-INTERIORS.md`, Theorem 4.1, supplies a +conditioning-dependent guard of +\(O(\log N\log(2+\Lambda/\mu))\) for its accretive domain. +I use the scalar unit-LDU factors of legal completed-call sets to obtain +a joint polynomial envelope in dimension and conditioning. This +sharpens the sufficient guard's conditioning dependence under (1). +I leave the selected multiplication exponent unchanged. + +ToikY's [PR4209](https://github.com/CrocSwap/integer-mult-bounds/pull/4209) +at `ccc33bfde8baadef7979fac81e28c0a6f6f278c4` supplies sharper local +Schur closure under a row/column near-identity majorant. I retain that +distinct credit. I do not infer its hypothesis from (1) or use its +sharper constants in the present allocation. + +### Executable admission + +`admission()` computes exact inverses of the same root's leading sections. +It returns \(\lambda_c,Q_c\), each at least one, using the maximum row +and column sums of \(|\Re z|+|\Im z|\). These bound the corresponding +operator norms and also support the executable component-envelope guards. +The verifier binds them to the unchanged root passed to `Full.plan()`. +That lower-level factory does not repeat the complete admission. + +If (1) is supplied as operator-norm information, then +\[ +\lambda_c\le\sqrt{2N}\Lambda,\qquad +Q_c\le\sqrt{2N}Q. +\tag{3} +\] +I use the executable envelopes in its explicit constants. The inflation +in (3) preserves (2). The written operator lemma below uses any valid +\(\Lambda,Q\); passing uninflated operator bounds directly to the +component-guarded factory need not satisfy its stronger guards. + +Exact admission and Schur preparation are offline rational computations. +I do not equate their denominators with online data words or claim a +complete physical preparation/delivery tariff. + +## 2. Contiguous descendants, shears and rank + +The node on logical interval \([a,b)\) has reference matrix +\[ +M_{a,b}=S(a,b)=T_b/T_a, +\] +with the empty prefix convention at \(a=0\). Its children are \(S(a,c)\) +and \(S(c,b)\), where \(c=(a+b)/2\), by the Schur quotient identity. +Consequently +\[ +\|M_{a,b}\|\le U:=\Lambda+\Lambda^2Q,\qquad +\|M_{a,b}^{-1}\|\le Q. +\tag{4} +\] +The inverse is a principal block of \(T_b^{-1}\); the direct bound follows +from the Schur formula and restrictions of the original \(T\). + +At a split, write \(M=\left[\begin{smallmatrix}A&B\\C&D\end{smallmatrix}\right]\), +\(K=A^{-1}B\), \(L=CA^{-1}\). Let \(R_a\) select the coordinates +\([a,c)\) from \([0,c)\). The block inverse identities give +\[ +K=R_aT_c^{-1}T[0:c,c:b],\qquad +L=T[c:b,0:c]T_c^{-1}R_a^T. +\] +Thus, with \(\chi=\Lambda Q\), +\[ +\|K\|,\|L\|\le\chi. +\tag{5} +\] +The component-envelope versions follow under the executable admission. +The source computes \(L\) as `solve(A.T, C.T).T`. I preserve ordinary +transpose in this complex identity. + +The retained `SHALLOW-TOEPLITZ.md`, Sections 4–6, gives commutator rank +at most \(2+\text{depth}\) for the Schur nodes. Its rectangular identities +bound the shear commutator ranks by \(2\,\text{depth}+5\) and +\(2\,\text{depth}+7\). Conversion to +\(E_X=X-ZXZ^T\) adds at most one rank. I use the uniform allowance +\[ +r_*=2d+8. +\tag{6} +\] +The exact rational producer retains that rank; I do not use the numerical +source's floating SVD threshold as a universal rank argument. +The executable also checks exact generator rank against separate +elimination in its finite fixtures. + +## 3. Uniform scalar-LDU bounds + +Write \(M_J=\ell_J\delta_Ju_J\) for the scalar unit-LDU factors of a +contiguous descendant. All its leading sections are further \(S(a,c)\), +so (4) also applies during scalar elimination. +For \(A_k=M_J[0:k,0:k]\), the last row of +\(A_k^{-1}M_J[0:k,k:]\) is the corresponding unit-upper row tail. +The last column of \(M_J[k:,0:k]A_k^{-1}\) is the unit-lower column tail. +Each therefore has norm at most +\[ +UQ=\chi+\chi^2\le2\chi^2. +\] +The Frobenius estimate therefore permits +\[ +\|\ell_J\|,\|u_J\|\le W:=3N\chi^2. +\] +The pivot diagonal has norm at most \(U\) and inverse norm at most \(Q\). +From +\[ +u_J^{-1}=M_J^{-1}\ell_J\delta_J,\qquad +\ell_J^{-1}=\delta_Ju_JM_J^{-1} +\] +I obtain +\[ +\|\ell_J^{-1}\|,\|u_J^{-1}\|\le V:=6N\chi^4, +\tag{7} +\] +using \(QU\le2\chi^2\). A diagonal containing some completed pivots +and otherwise ones has direct and inverse norms at most \(2\chi^2\). + +## 4. Exact downsets and the upper frontier + +At an internal node \(v\), denote the upper and lower atomic calls by +\[ +R_v=\begin{pmatrix}I&K_v\\0&I\end{pmatrix},\qquad +B_v=\begin{pmatrix}I&0\\L_v&I\end{pmatrix}. +\] +The source executes \(R_v\), its two child programs in parallel, then +\(B_v\). A leaf executes its scalar pivot. +The atomic partial order places \(R_v\) before both children and both +children before \(B_v\). Incomparable calls act on disjoint intervals +and commute. I count identity shears as calls even when they emit zero layers. + +For a downset \(I\), let \(Q(I)\) be its product in any legal linearization. +At a node, the restricted downset is empty; or it contains \(R_v\) and +child downsets \(I_0,I_1\) but not \(B_v\); or it contains the whole node. +For an empty node set all three factors to identity. At a completed leaf +set them to \(I,d_i,I\). Otherwise define +\[ +\begin{aligned} +\mathcal L(I)&=B_v^\epsilon + \operatorname{diag}(\mathcal L(I_0),\mathcal L(I_1)),\\ +\mathcal D(I)&=\operatorname{diag}(\mathcal D(I_0),\mathcal D(I_1)),\\ +\mathcal U(I)&=\operatorname{diag}(\mathcal U(I_0),\mathcal U(I_1))R_v, +\end{aligned} +\tag{8} +\] +where \(\epsilon=1\) exactly when the lower call has completed. +Then both children are complete. Substituting the child identities gives +\[ +\boxed{Q(I)=\mathcal L(I)\mathcal D(I)\mathcal U(I).} +\tag{9} +\] +This induction never commutes overlapping factors. + +Uniqueness of scalar unit-LDU gives +\[ +\ell_v=B_v\operatorname{diag}(\ell_{v0},\ell_{v1}),\quad +\delta_v=\operatorname{diag}(\delta_{v0},\delta_{v1}),\quad +u_v=\operatorname{diag}(u_{v0},u_{v1})R_v. +\] +Hence \(\mathcal L(I)\) is the direct sum of full lower factors on the +maximal completed subtrees, with identity elsewhere. The partial diagonal +contains completed pivots and otherwise ones. + +For the upper frontier, stop at a node whose upper call has not completed; +otherwise descend to its two children. Retain singleton leaves. +The resulting intervals partition the coordinates. With +\(U_{\mathcal F}=\bigoplus_{v\in\mathcal F}u_v\), induction gives +\[ +u_{\rm root}=U_{\mathcal F}\mathcal U(I),\qquad +\mathcal U(I)=U_{\mathcal F}^{-1}u_{\rm root}. +\tag{10} +\] +At an unvisited node the identity is \(u_v=u_vI\); at a visited node, +substitute the two child identities and multiply by \(R_v\). + +Equations (7)–(10) bound the lower factor and its inverse by \(V\), +the partial diagonal and its inverse by \(2\chi^2\), and the upper +factor and its inverse by \(VW\). Thus +\[ +\boxed{\|Q(I)\|,\|Q(I)^{-1}\| +\le216N^3\chi^{12}<\mathcal B:=256N^3\chi^{12}.} +\tag{11} +\] +I use a fixed number of polynomial factors, rather than multiplying +conditioning factors through the recursion depth. + +## 5. Approximate atomic calls and physical cuts + +There are \(J=3N-2\) atomic calls: two shears per internal node and one +scalar per leaf. Approximate each by operator error at most \(\eta\). +For any legal linearization, set +\[ +G_j=Q_j^{-1}(\widehat A_j-A_j)Q_{j-1},\qquad +\theta=J\mathcal B^2\eta. +\] +The downset bound (11) applies to its prefixes. +If \(\theta\le1/4\), the product of \(I+G_j\), or its inverse, has norm +below two and distance from identity at most \(2\theta\). +Using \(\Lambda,Q\le\mathcal B\), I obtain +\[ +\|\widehat T-T\|,\|\widehat T^{-1}-T^{-1}\| +\le e:=2J\mathcal B^3\eta. +\tag{12} +\] +Completed approximate prefixes and inverse prefixes have norm at most +\(2\mathcal B\). Remaining suffixes and inverse suffixes have norm at most +\(2L_0\mathcal B\), where \(L_0=\max(1,\Lambda,Q)\). +I apply the exact LDU identities to the ideal calls, not to the +approximate endpoints. + +At a physical gate cut, completed calls form a downset \(I\). +Started but unfinished calls form a pairwise incomparable set \(A\): +the source finishes an upper call before starting its descendants and +finishes those descendants before its lower call. Active supports are +therefore disjoint, even when sibling ranks and lengths differ. + +Write each active stored endpoint as \(\widehat A_a=T_aF_a\), with executed +prefix \(F_a\) and remaining suffix \(T_a\). A completed call executed +after an active call began must act on a disjoint subtree, so I may commute +only that disjoint work. I obtain the exact identities +\[ +C_{\rm prefix}=(\bigoplus_{a\in A}F_a\oplus I)\widehat Q(I),\qquad +C_{\rm suffix}=\widehat Q_{\rm remaining} + (\bigoplus_{a\in A}T_a\oplus I). +\tag{13} +\] +The set \(I\cup A\) is also a downset, so I may order \(I\), then \(A\), +then the remaining calls in the suffix argument. +A direct sum contributes the largest fragment norm. I do not require +aligned child macro boundaries. A zero-layer identity completes at its +position in the source schedule and contributes no active fragment. + +## 6. Child, scalar and data bounds + +The component envelope used by a shear's exact producer satisfies +\(B_E\le4N\chi\): its displacement norm is at most \(2\chi\), and a +component row/column sum is at most \(\sqrt{2m}\) times that norm. +Substituting \(m\le N\), \(r\le r_*\), \(B_E\le4N\chi\) in +[GENERATOR-PROOF.md](GENERATOR-PROOF.md), put +\[ +\alpha_*=8r_*N^2\chi,\quad K_{G,*}=2N+64N^2\chi, +\] +\[ +H_*=\max(3200N^3,2+2K_{G,*})(10+4\alpha_*+2K_{G,*}). +\] +The generator's radius-one allocation supplies an unrounded operator +defect. I discard its local data grid and execute the flattened full +program on one global grid. + +A scalar pivot has \(1/Q\le|a|\le U\). I round it at \(s\) bits, +with \(\eta=2^{-s}\le1/(2Q)\), and invert the same stored value. +Then \(|\widehat a|\ge1/(2Q)\), its direct norm is at most \(U+1\), +and its inverse norm is at most \(2Q\). +Consequently +\[ +\mathcal H=\max(H_*,U+1,2Q),\qquad +K_{\rm phys}=2L_0\mathcal B\mathcal H +\tag{14} +\] +bounds physical prefixes, suffixes and their inverses. +An arbitrary segment needs the conservative bound \(K_{\rm phys}^2\). + +The unchanged source schedule permits +\[ +D_*=1+2dr_*(8d^2+32d+18),\qquad +G_*=N[1+dr_*(4d^2+24d+22)]. +\tag{15} +\] +I sum two generator calls per level and the \(N\) scalar leaves; parallel +siblings contribute their maximum depth. +Choose +\[ +s=t+\lceil\log_2(4J\mathcal B^3(R+1))\rceil,\quad +F=\max(F_0,t+\lceil\log_2(2D_*K_{\rm phys}N)\rceil). +\tag{16} +\] +These choices ensure the perturbation and scalar margins above. +One layer's rounding error is at most \(N2^{-F}\). Thus either direction +has error at most +\[ +eR+D_*K_{\rm phys}N2^{-F}\le2^{-t}, +\tag{17} +\] +and intermediate amplitude at most +\[ +A=K_{\rm phys}R+D_*K_{\rm phys}^2N2^{-F}. +\tag{18} +\] +The inverse direction uses the exact stored inverse program on its own +input satisfying the same \(R,F_0\) contract. I claim no exact rounded +forward/inverse round trip. + +If \(\widehat a=(a+ib)/2^s\) is a scalar leaf, its reciprocal +\(2^s(a-ib)/(a^2+b^2)\) has component height at most +\(2s+2\lceil\log_2(U+2)\rceil+8\). +I take the maximum of this bound and the generator children's declared +coefficient bounds, all fixed before online execution. +With \(I=\max(1,\lceil\log_2\max(1,A)\rceil)+2\), signed grid words fit +\(F+I\) bits and constant-size gate temporaries fit +\[ +2F+8C_{\rm bits}+2I+32. +\] +The constants in (6), (11), (14) and (15) are polynomial in \(N,\Lambda,Q\). +The child precision formulas and (16) therefore give (2), including the +executable envelope inflation (3). + +## 7. Source binding, finite evidence and limits + +I authenticate and execute the unmodified `full_plan`, `parallel` and +`inverse` ASTs. I supply exact rational matrix slicing, ordinary transpose, +solve, subtraction and multiplication; wrap recursive calls only to +record their exact reference matrices; and bind `lowdisp_shear` to the +completed generator program. I preserve source assertions in its +dependencies under optimized Python. + +The verifier checks direct full matrices and separate inverse references, +exact stored inversion, leading-section bounds, scalar-LDU identities, +legal downsets and upper-frontier identities. It enumerates all downsets +through size four and checks source-timed downsets on larger fixtures. +Selected physical cuts compare both identities in (13), including +simultaneous nonempty active fragments. Timing checks explicitly cover +unequal sibling lengths and zero-layer calls. + +I test indefinite and half-shift Gaussian matrices, complex inputs, +small and large scalar pivots, reversed wire labels, a nonzero 512-bit +incoming fixture and a size-16 identity with zero-layer shear calls. +The finite Frobenius inequalities include the dimension factor \(N\); +they corroborate consequences of the written operator proof rather than +independently establish its sharper bounds. +Exact dense matrices remain checker oracles outside the online +representation claim. Observed heights describe completed rational +components rather than exhaustive `Fraction` internals. + +I preserve the earlier FFT, triangular and generator receipts and the +fixed-head scope of James Reed's finite budget/source-seal audit at +`fdcdc269`. That audit excludes gate replay and universal-proof acceptance. +I credit Vlado Vojdanovski/PR1673 and the retained gauge-free source lineage +for the original recursive, displacement and conditioning arguments; +Chafik Boukhalfa/PR628 for certified phases; Cinna Davis for the later caller; +ToikY for the distinct same-rho Schur theorem; and classical LU/Schur methods. +Internal agents belong to the author process. + +Complete Gaussian assembly, physical coefficient setup/delivery, fixed-tape +costs and independent mathematical acceptance remain open. diff --git a/research/rational-fft-fixed-h/vendor/full_source/GENERATOR-PROOF.md b/research/rational-fft-fixed-h/vendor/full_source/GENERATOR-PROOF.md new file mode 100644 index 0000000000..8bef383eec --- /dev/null +++ b/research/rational-fft-fixed-h/vendor/full_source/GENERATOR-PROOF.md @@ -0,0 +1,277 @@ +# Complete rounded bounded-generator circuits + +Jose Manuel (`jmbarrancoml`), with substantial OpenAI Codex assistance. +Apache-2.0. + +## 1. Input, output and inherited generator identity + +I consider a rational complex matrix \(T\) of dyadic size \(m=2^d\). +Let \(Z\) be the nilpotent lower shift and \(E=T-ZTZ^T\), with rank \(r\). +The target is the dirty shear +\[ +S(T)(x,y)=(x,y+Tx) +\] +on exactly \(2m\) existing complex wires. I require no zero bank. +The input lies on an \(F_0\)-bit dyadic grid and has norm at most \(R\ge1\); +the requested output error is \(2^{-t}\), with integer \(t\ge1\). +I use a rational bound \(B_E\ge\|E\|_2\). The executable takes the maximum +of the row and column component sums, which bounds both induced norms. + +I execute the frozen PR4198 rational producer. For each nonzero orthogonal +residual \(v_j\) of \(E\), it chooses a dyadic \(c_j\) with +\(\|v_j\|\le c_j<2\|v_j\|\), then emits +\[ +g_j=v_j/c_j,\qquad +a_j=\frac{c_j}{v_j^*v_j}v_j^*E. +\] +The orthogonal projectors sum to the identity on the column space of \(E\). +Thus +\[ +E=\sum_{j=1}^r g_ja_j,\quad +\|g_j\|\le1,\quad \|a_j\|<2B_E,\quad +T=\sum_{j=1}^r L(g_j)U(a_j). +\tag{1} +\] +The last identity follows by telescoping +\(T=\sum_{k=0}^{m-1}Z^kE(Z^T)^k\). The \(a_j\) are coefficient rows; +I apply no further conjugation. + +I retain the producer's scale +\[ +\Gamma_j=\min\{2^e:2^e\ge\max(1,2\ell(a_j))\},\quad +\ell(a)=\sum_k(|\Re a_k|+|\Im a_k|), +\] +and put \(P_j=I+U(a_j)/\Gamma_j\), \(G_j=\Gamma_jL(g_j)\). +Then \(P_j\) satisfies the component-l1 admission used in +[TRIANGLE-PROOF.md](TRIANGLE-PROOF.md), and +\(\|P_j\|\le3/2,\ \|P_j^{-1}\|\le2\). +The source realizes the upper triangular map by reversing its source wires. + +I use the rational bounds +\[ +\alpha=2rmB_E,\qquad K_G=2m+16mB_E. +\tag{2} +\] +Indeed \(\|L(g_j)U(a_j)\|\le2mB_E\), and +\[ +\Gamma_j\sqrt m + <2\sqrt m+8\sqrt2\,mB_E\le K_G. +\] +The scaled shear's coefficient component sum is at most +\(\sqrt2K_G<2K_G\). I budget the approximation of \(G_j\) itself; +approximating \(L(g_j)\) first and multiplying by an uncharged +\(\Gamma_j\) would not meet this contract. + +## 2. Paired compensation and additive defects + +I retain the source's four calls: +\[ +P_j;\quad S(G_j);\quad P_j^{-1};\quad S(-G_j). +\tag{3} +\] +I compile \(\widehat P_j\) and reuse its exact stored inverse. +For the positive shear I use the certified FFT construction. +For its compensation I reuse the same unitary tables and negate the +stored spectral multipliers, preserving the source's cyclic-then-negacyclic +order. The two unrounded shear endpoints are exactly +\(S(\widehat G_j)\) and \(S(-\widehat G_j)\). + +Negating a nearest-grid value gives a nearest-grid value of the negative +exact quantity, so this paired rule retains the same multiplier-error +bound. At half-grid ties it need not agree with independent rounding +toward positive infinity. The verifier includes that discrepancy as a +control. I do not replace the negative child with a reversed whole +positive-shear program. + +For \(\|\widehat P_j-P_j\|,\|\widehat G_j-G_j\|\le\eta\le1/4\), +the exact stored-coefficient program has endpoint +\[ +(x,y)\longmapsto(x,y+\widehat G_j(\widehat P_j-I)x). +\] +Write \(T_j=G_j(P_j-I)\) and +\(\widehat T_j=\widehat G_j(\widehat P_j-I)\). Then +\[ +\|\widehat T_j-T_j\| +\le K_G\eta+(1/2+\eta)\eta\le(K_G+1)\eta. +\] +The completed terms restore the same source bank, so their endpoints +compose to \(S(\sum_j\widehat T_j)\). Consequently +\[ +\boxed{\|\sum_j\widehat T_j-T\|\le +\Delta:=r(K_G+1)\eta.} +\tag{4} +\] +I need no generic product-of-perturbed-matrices bound across completed +generator terms. This additive estimate uses exact stored-coefficient +restoration; data-rounding errors receive a separate bound below. + +## 3. Checkpoint prefixes and suffixes + +Assume \(\Delta\le1\). Any preceding or remaining sum of approximate terms +has norm at most \(a_*=\alpha+1\). +For the current term write \(p=\widehat P_j\), \(h=\widehat G_j\), +\(A=\sum_{i2/3\), while the endpoint error is below \(1/6\). +For the true rotated phase \(v_0\), put +\[ +\tau=\Im(v_0)/(1+\Re(v_0)). +\] +The denominator is at least \(3/2\). Compute quotient extrema at the box +corners, round their midpoint to the nearest \((P+4)\)-grid value \(t_0\), +and form +\[ +\sigma=C\frac{1-t_0^2+2it_0}{1+t_0^2}. +\] +Then \(|\sigma|=1\) exactly, \(|t_0|<1\), and +\[ +|\sigma-e^{2\pi ik/n}|\le4E_B+2^{-P-4}. +\] +This follows from the quotient bound \(2E_B\) and the stereographic +derivative bound \(2/(1+t^2)\le2\). + +The executable checks the **maximum endpoint** component-\(\ell^1\) +distance from \(\sigma\) to the entire oracle box. That distance is at +most \(10E_B+2^{-P-3}<\nu\). A minimum distance to the box would not +certify the approximation. + +The parameter denominator is at most \(2^{P+4}\). Unit-phase components +therefore have numerator/denominator height at most \(2P+9\), with +slightly larger allowances in the code. The oracle's offline exact +Machin sums, factorials and phase-description arithmetic use polynomial +time and space in \(P\) and the input description length. A long external +phase numerator is an input cost, not a free oracle argument. + +## 3. Exactly unitary butterflies and FFT approximation + +Use the certified phase \(a+ib\) approximating \(e^{i\pi/4}\), and a +certified twiddle \(w\). Define +\[ +B(a,b,w)= +\begin{pmatrix}a&bw\\b&-aw\end{pmatrix} += +\begin{pmatrix}a&b\\b&-a\end{pmatrix}\operatorname{diag}(1,w). +\] +Since \(a^2+b^2=|w|^2=1\), this matrix is exactly unitary. +Its adjoint is +\(\operatorname{diag}(1,\bar w)\left[\begin{smallmatrix}a&b\\b&-a\end{smallmatrix}\right]\). +It is generally not the same expression with \(w\) merely conjugated. + +The splitter difference from the ideal \(1/\sqrt2\) splitter has norm +\(|(a+ib)-e^{i\pi/4}|\). Hence each butterfly differs from its ideal gate +by at most \(2\nu\). Disjoint gates give the same layer bound. I retain +the source's exact bit reversal and its \(d\) butterfly layers, so +\[ +\boxed{\|\widetilde F-F\|_2\le2d\nu,\qquad +F=\mathrm{DFT}_{-}/\sqrt n.} +\] +We telescope products of unitary layers, so no amplification factor +appears. Every exact FFT prefix and suffix is unitary. Reverse the layers +and adjoint the stored gates to obtain \(\widetilde F^*\); do not generate +a new approximate inverse phase table. + +## 4. Spectral preparation and Toeplitz approximation + +For a kernel \(k\), the ideal circulant eigenvalues are the +**unnormalized** DFT +\[ +\lambda_\ell=\sum_j k_j e^{-2\pi i\ell j/n}. +\] +I approximate each root independently by a certified rational unit, +sum exactly offline, and round each multiplier component once to the +nearest \(S\)-grid value. If \(\|k\|_1\le M_k\), then +\[ +\|\widehat\lambda-\lambda\|_\infty\le M_k\nu+v,\qquad +\|\widehat\lambda\|_\infty\le M_k+v. +\] +The second bound uses exact unit modulus before rounding. It does not +add a spurious phase-error magnitude factor. + +I store the rounded multipliers before online use. The exact offline +sum can have a denominator whose size grows with \(n\); carrying that +sum into data gates would violate the stated coefficient-width bound. + +The actual circulant child applies +\[ +\widetilde C_k=\widetilde F^*\operatorname{diag}(\widehat\lambda)\widetilde F, +\] +so +\[ +\|\widetilde C_k-C_k\|_2 +\le M_k\nu+v+2M_k\|\widetilde F-F\|_2. +\] +Exact unitarity alone does not make \(\widetilde F\) an exact diagonalizer. + +For \(D=\operatorname{diag}(e^{\pi ij/n})\), the source decomposition is +\[ +T=C_g+D^*C_{Dh}D. +\] +I generate each diagonal entry of \(\widetilde D\) independently. Thus +\(\|\widetilde D-D\|_2\le\nu\), without a powers' accumulated error or +an \(nP\)-bit phase representation. The actual schedule is the first +circulant shear, the common twist \(\widetilde D\) on both banks, the +circulant shear prepared from \(\widetilde D h\), and the inverse twist. + +Twisting preserves \(\|h\|_1\). Charge \(M_h\nu\) for changing the +second kernel and \(2M_h\nu\) for its two exterior twists. Combining +these terms with the two circulant estimates gives +\[ +\|\widetilde T-T\|_2 +\le(4d+1)M_g\nu+(4d+4)M_h\nu+2v +\le\boxed{\delta}. +\] +In exact rational arithmetic the complete map is +\((x,y)\mapsto(x,y+\widetilde T x)\). The input matrix may be zero +or singular because the pointwise shear gates remain invertible. + +## 5. Prefix bounds and rounded execution + +Every non-spectral gate stays within one bank and is unitary. +Each of the two spectral layers has orientation +\[ +S(A)=\begin{pmatrix}I&0\\A&I\end{pmatrix}. +\] +For a bank unitary \(U=\operatorname{diag}(U_x,U_y)\), +\[ +US(A)U^*=S(U_yAU_x^*). +\] +Move the bank unitaries to the ends of any contiguous gate segment. +The remaining shear matrix is a sum of at most two unitarily transformed +spectral matrices. Their norms are at most \(M_g+v\) and \(M_h+v\). +Consequently every segment, inverse segment, prefix and suffix has norm +at most +\[ +\boxed{H=1+M_g+M_h+2v.} +\] +Masked partial spectral layers satisfy the same estimate. +I do not multiply a shear bound once per stage. + +Nearest component rounding has error at most \(u/2\); a complex output +has error at most \(u/\sqrt2\). A disjoint layer updates at most \(2n\) +complex wires, so its error vector has norm at most \(\sqrt n\,u\). +The source schedule has at most \(L=4d+8\) layers, including empty +bit-reversal layers. Transporting each local residual through its +remaining exact suffix gives +\[ +\|\widehat z-\widetilde S z_0\|_2 +\le LH\sqrt n\,u\le LHnu. +\] +Every pre-round and rounded state has amplitude at most +\[ +A=H(R+Lnu). +\] +The source-bank error receives no coefficient-approximation term, +because the unrounded rational circuit restores that bank exactly. +Fixed-grid execution can still have nonzero source-restoration error; +the verifier includes a small-grid witness. + +The precision choices in Section 1 close the requested budget: +\[ +4(d+1)M\nu R<2^{-t}/4,\quad 2vR<2^{-t}/4,\quad +LHnu<2^{-t}/2. +\] +Here \(v\le1/32\) and \(H 0 and n & (n - 1) == 0 and matrix.shape == (n, n), "dyadic full Toeplitz shape") + need(all(matrix[i][j] == (matrix[i - j][0] if i >= j else matrix[0][j - i]) + for i in range(n) for j in range(n)), "exact full Toeplitz admission") + leading = [] + for b in range(1, n + 1): + inverse = solve(matrix[:b, :b], Matrix(eye(b))) + leading.append((b, norm_upper(inverse))) + return max(Q(1), norm_upper(matrix)), max(Q(1), *(v for _, v in leading)), leading + + +def allocation(n, lam, inverse_bound, radius, target, incoming): + need(type(n) is int and n > 0 and n & (n - 1) == 0, "full dyadic dimension") + need(all(type(x) in (int, Q) and x >= 1 for x in (lam, inverse_bound, radius)), + "exact full conditioning and radius bounds") + need(type(target) is int and target >= 1 and type(incoming) is int and incoming >= 0, + "full target and incoming precision") + lam, inverse_bound, radius = (Q(x) for x in (lam, inverse_bound, radius)) + d, chi = n.bit_length() - 1, lam * inverse_bound + descendant = lam + lam ** 2 * inverse_bound + b = 256 * n ** 3 * chi ** 12 + calls, rank = 3 * n - 2, 2 * d + 8 + alpha, kg = 8 * rank * n ** 2 * chi, 2 * n + 64 * n ** 2 * chi + generator = max(Q(3200 * n ** 3), 2 + 2 * kg) * (10 + 4 * alpha + 2 * kg) + fragment = max(generator, descendant + 1, 2 * inverse_bound) + execution = 2 * max(Q(1), lam, inverse_bound) * b * fragment + layers = 1 + 2 * d * rank * (8 * d * d + 32 * d + 18) + gates = n * (1 + d * rank * (4 * d * d + 24 * d + 22)) + s = target + ceil_log2(4 * calls * b ** 3 * (radius + 1)) + eta = Q(1, 1 << s) + theta = calls * b ** 2 * eta + data = max(incoming, target + ceil_log2(2 * layers * execution * n)) + coefficient = 2 * calls * b ** 3 * eta + rounding = layers * execution * n * Q(1, 1 << data) + need(theta <= Q(1, 4) and eta <= 1 / (2 * inverse_bound) + and coefficient * radius + rounding <= Q(1, 1 << target), "complete full precision budget") + amplitude = execution * radius + layers * execution ** 2 * n * Q(1, 1 << data) + integer = max(1, ceil_log2(max(Q(1), amplitude))) + 2 + scalar_height = 2 * s + 2 * ceil_log2(descendant + 2) + 8 + return dict(n=n, lam=lam, inverse_bound=inverse_bound, radius=radius, + target_bits=target, incoming_bits=incoming, conditioning=chi, + descendant_bound=descendant, completed_prefix_bound=b, + atomic_calls=calls, rank_bound=rank, displacement_bound=4 * n * chi, + generator_fragment_bound=generator, fragment_bound=fragment, + execution_bound=execution, segment_bound=execution ** 2, + layer_bound=layers, gate_bound=gates, child_target_bits=s, eta=eta, + theta=theta, data_bits=data, coefficient_error=coefficient, + rounding_error=rounding, total_error=coefficient * radius + rounding, + amplitude_bound=amplitude, integer_bits=integer, + scalar_height_bound=scalar_height, coefficient_height_bound=scalar_height) + + +class Plan(list): + def __init__(self, layers, atoms): + super().__init__(layers) + self.atoms = atoms + + def __add__(self, other): + need(isinstance(other, Plan), "typed full-plan composition") + return Plan(list(self) + list(other), [dict(a) for a in self.atoms] + + [dict(a, start=a["start"] + len(self), stop=a["stop"] + len(self)) + for a in other.atoms]) + + +class Full: + def __init__(self, bound, raw): + self.bound, self.raw = dict(bound), raw + self.producer = load_producer(raw) + self.phase_pool, self.nodes = {}, {} + selected = {"full_plan", "parallel", "inverse"} + tree = ast.parse(raw[SOURCE + "check_circuits.py"]) + tree.body = [copy.deepcopy(node) for node in tree.body + if isinstance(node, ast.FunctionDef) and node.name in selected] + need({node.name for node in tree.body} == selected, "complete full source function set") + self.source_ast = sha256(ast.dump(tree).encode()).hexdigest() + self.stats = {"full_nodes": 0} + self.namespace = dict(STATS=self.stats, + np=SimpleNamespace(linalg=SimpleNamespace(solve=solve, inv=inverse_gate)), + lowdisp_shear=self.shear, diag=self.leaf) + exec(compile(tree, "", "exec", optimize=0), + self.namespace) + self.source_full = self.namespace["full_plan"] + self.source_parallel = self.namespace["parallel"] + self.source_inverse = self.namespace["inverse"] + self.namespace["parallel"] = self.parallel + self.namespace["full_plan"] = self.node + + def interval(self, indices): + positions = [self.positions[i] for i in indices] + a, b = min(positions), max(positions) + 1 + need(positions == list(range(a, b)), "ordered contiguous logical interval") + return a, b + + def node(self, indices, matrix): + interval = self.interval(indices) + need(interval not in self.nodes, "one exact Schur reference per node") + self.nodes[interval] = dict(indices=list(indices), matrix=Matrix(matrix)) + need(norm_upper(matrix) <= self.bound["descendant_bound"], "component descendant bound") + result = self.source_full(indices, matrix) + self.nodes[interval]["layers"] = len(result) + return result + + def leaf(self, indices, values): + need(len(indices) == len(values) == 1, "scalar full leaf") + intended = values[0] + need(intended.norm2() >= 1 / self.bound["inverse_bound"] ** 2 + and intended.norm2() <= self.bound["descendant_bound"] ** 2, "full pivot margins") + stored = rounded(intended, self.bound["child_target_bits"]) + need((stored - intended).norm2() <= self.bound["eta"] ** 2 + and stored.norm2() >= 1 / (4 * self.bound["inverse_bound"] ** 2), "stored full pivot margin") + gate = Mat([[stored]]) + need(stored * inverse_gate(gate)[0][0] == 1, "same stored full scalar inverse") + a, b = self.interval(indices) + atom = dict(id=f"D:{a}", kind="leaf", interval=(a, b), indices=list(indices), + start=0, stop=1, ideal=Mat([[intended]]), + local_plan=[[((0,), gate)]], error=self.bound["eta"], + coefficient_height=self.bound["scalar_height_bound"]) + return Plan([[(tuple(indices), gate)]], [atom]) + + def shear(self, target, source, matrix): + m = len(source) + positions = sorted(self.positions[i] for i in source + target) + a, b = min(positions), max(positions) + 1 + need(positions == list(range(a, b)) and b - a == 2 * m, "owned full shear interval") + upper = self.positions[target[0]] < self.positions[source[0]] + need([self.positions[i] for i in target] == list(range(a if upper else a + m, + a + m if upper else b)) + and [self.positions[i] for i in source] == list(range(a + m if upper else a, + b if upper else a + m)), + "source full shear orientation") + need(norm_upper(matrix) <= self.bound["conditioning"], "full K/L conditioning") + items, displacement, be, heights = prepare(matrix, self.producer) + need(len(items) <= self.bound["rank_bound"] and be <= self.bound["displacement_bound"], + "retained displacement rank and envelope") + child, triangle = generator_allocation(m, len(items), be, 1, + self.bound["child_target_bits"], 0) + need(child["coefficient_error"] <= self.bound["eta"] + and child["execution_bound"] <= self.bound["generator_fragment_bound"], + "full atomic generator contract") + p = child["phase_bits"] + if p not in self.phase_pool: + self.phase_pool[p] = Phases(p, self.raw[ORACLE]) + program = Program(child, triangle, self.raw, self.phase_pool[p]) + local = program.plan(items) + mapping = source + target + plan = [[(tuple(mapping[i] for i in ids), gate) for ids, gate in layer] for layer in local] + kind = "upper" if upper else "lower" + atom = dict(id=f"{'R' if upper else 'L'}:{a}:{b}", kind=kind, + interval=(a, b), indices=list(mapping), start=0, stop=len(plan), + ideal=Mat(matrix), local_plan=local, error=child["coefficient_error"], + coefficient_height=child["coefficient_height_bound"], + program=program, generator_items=items, displacement=displacement, + producer_heights=heights) + return Plan(plan, [atom]) + + def parallel(self, left, right): + left_ids = {i for a in left.atoms for i in a["indices"]} + right_ids = {i for a in right.atoms for i in a["indices"]} + need(not left_ids.intersection(right_ids), "disjoint full sibling supports") + return Plan(self.source_parallel(left, right), + [dict(a) for a in left.atoms] + [dict(a) for a in right.atoms]) + + def plan(self, matrix, indices=None): + n = len(matrix) + need(n == self.bound["n"], "allocated full dimension") + indices = list(range(n)) if indices is None else list(indices) + need(all(type(i) is int for i in indices) and sorted(indices) == list(range(n)), + "full root wire permutation") + self.positions = {wire: pos for pos, wire in enumerate(indices)} + result = self.node(indices, Matrix(matrix)) + need(self.stats["full_nodes"] == 2 * n - 1 and len(result.atoms) == 3 * n - 2 + and len({a["id"] for a in result.atoms}) == len(result.atoms), "complete full recursion") + need(len(result) <= self.bound["layer_bound"] + and sum(map(len, result)) <= self.bound["gate_bound"], "full source schedule bounds") + self.bound["coefficient_height_bound"] = max(a["coefficient_height"] for a in result.atoms) + self.bound["temporary_bits"] = (2 * self.bound["data_bits"] + + 8 * self.bound["coefficient_height_bound"] + 2 * self.bound["integer_bits"] + 32) + return result + + def inverse(self, plan): + return self.source_inverse(plan) diff --git a/research/rational-fft-fixed-h/vendor/full_source/generator.py b/research/rational-fft-fixed-h/vendor/full_source/generator.py new file mode 100644 index 0000000000..d761d3c88b --- /dev/null +++ b/research/rational-fft-fixed-h/vendor/full_source/generator.py @@ -0,0 +1,233 @@ +"""Exact generators connected to the retained compensated gate program. + +Jose Manuel (jmbarrancoml), with substantial OpenAI Codex assistance. +Apache-2.0. Macro/compiler: Vlado/PR1673; certified phases: Chafik/PR628. +""" +import ast +import copy +from fractions import Fraction as Q +from hashlib import sha256 +import json + +from exact import C, Mat, Vec, ceil_log2, component_l1, inverse_gate, need, norm2 +from engine import Builder, Phases, split_kernel +from triangular import Triangle, allocation as triangle_allocation + +SOURCE = "research/capped-phase-fusion/evidence/inplace_algebra_ultra/" +PRODUCER = "research/rational-unitary-fft/vendor/stein_rational.py" +PROVENANCE = "research/rational-unitary-fft/vendor/STEIN-PROVENANCE.json" +ORACLE = "research/cubic-cyclic-inverse/vendor/interval_kernel.py" + + +def load_producer(raw): + record = json.loads(raw[PROVENANCE]) + need(record["source_commit"] == "e457d5e912a27307d725827aeca7198169320b84" + and record["source_git_blob"] == "71b240a460a185ee2fe926cd189b56aeac6f997f" + and sha256(raw[PRODUCER]).hexdigest() == record["sha256"], + "original producer identity and retained bytes") + namespace = {"__name__": "_frozen_rational_stein"} + exec(compile(raw[PRODUCER], "", "exec", optimize=0), namespace) + return namespace + + +def lower(vector): + return Mat([[vector[i - j] if i >= j else C() for j in range(len(vector))] + for i in range(len(vector))]) + + +def prepare(matrix, producer): + matrix = Mat(matrix) + m = len(matrix) + need(m > 0 and m & (m - 1) == 0 and matrix.shape == (m, m), "dyadic generator matrix") + displacement = Mat([[matrix[i][j] - (matrix[i - 1][j - 1] if i and j else C()) + for j in range(m)] for i in range(m)]) + old_c = producer["C"] + old_e = producer["Matrix"]([[old_c(x.re, x.im) for x in row] for row in displacement]) + old_items, heights = producer["generators"](old_e) + items = [dict(column=item["column"], gamma=item["gamma"], + scale=item["scale"], scale_exponent=item["scale_exponent"], + g=Vec(C(x.re, x.im) for x in item["g"]), + row=Vec(C(x.re, x.im) for x in item["row"])) for item in old_items] + bound_e = max(max(component_l1(row) for row in displacement), + max(component_l1(column) for column in zip(*displacement))) + need(all(norm2(item["g"]) <= 1 and norm2(item["row"]) < 4 * bound_e ** 2 + and 2 * component_l1(item["row"]) <= item["gamma"] for item in items), + "actual bounded rational generator output") + return items, displacement, bound_e, heights + + +def allocation(m, rank, bound_e, radius, target, incoming): + need(type(m) is int and m > 0 and m & (m - 1) == 0, "dyadic macro size") + need(type(rank) is int and 0 <= rank <= m and type(bound_e) in (int, Q) + and bound_e >= 0, "generator count and exact displacement bound") + need(type(radius) in (int, Q) and radius >= 1 and type(target) is int + and target >= 1 and type(incoming) is int and incoming >= 0, "global generator input") + d = m.bit_length() - 1 + kg, alpha = 2 * m + 16 * m * bound_e, 2 * rank * m * bound_e + checkpoint = 10 + 4 * alpha + 2 * kg + child = max(Q(3200 * m ** 3), 2 + 2 * kg) + execution = child * checkpoint + depth = rank * (8 * d * d + 32 * d + 18) + gates = rank * m * (4 * d * d + 24 * d + 22) + s = target + ceil_log2(4 * (rank + 1) * (kg + 1) * (radius + 1)) + eta = Q(1, 1 << s) + triangle = triangle_allocation(m, 1, s) + envelope = max(Q(6), 2 * kg) + p = max(triangle["phase_bits"], s + ceil_log2(32 * (d + 1) * (envelope + 1))) + mult = max(triangle["multiplier_bits"], s + 4) + triangle = dict(triangle, phase_bits=p, multiplier_bits=mult, + coefficient_height_bound=max(4 * p + 24, mult + 5, + 2 * triangle["leaf_bits"] + 16)) + data = max(incoming, target + ceil_log2(max(Q(1), 2 * depth * execution * m))) + u = Q(1, 1 << data) + defect = rank * (kg + 1) * eta + rounding = depth * execution * m * u + need(defect <= 1 and defect * radius + rounding <= Q(1, 1 << target), + "complete compensated-generator target budget") + amplitude = execution * radius + depth * execution ** 2 * m * u + integer = max(1, ceil_log2(max(Q(1), amplitude))) + 2 + height = max(4 * p + 24, mult + ceil_log2(envelope + 2) + 2, + 2 * triangle["leaf_bits"] + 16) + return dict(m=m, rank=rank, displacement_bound=bound_e, radius=radius, + target_bits=target, incoming_bits=incoming, kg=kg, alpha=alpha, + checkpoint_bound=checkpoint, child_bound=child, execution_bound=execution, + segment_bound=execution ** 2, layer_bound=depth, gate_bound=gates, + child_target_bits=s, eta=eta, phase_bits=p, multiplier_bits=mult, + leaf_bits=triangle["leaf_bits"], data_bits=data, + multiplier_envelope=envelope, coefficient_error=defect, + rounding_error=rounding, total_error=defect * radius + rounding, + amplitude_bound=amplitude, integer_bits=integer, + coefficient_height_bound=height, + temporary_bits=2 * data + 8 * height + 2 * integer + 32), triangle + + +def macro_template(source): + tree = ast.parse(source) + function = next(n for n in tree.body if isinstance(n, ast.FunctionDef) + and n.name == "lowdisp_shear") + loop = next(n for n in function.body if isinstance(n, ast.For)) + start = next(i for i, n in enumerate(loop.body) if isinstance(n, ast.Assign) + and isinstance(n.targets[0], ast.Name) and n.targets[0].id == "p") + tail = copy.deepcopy(loop.body[start:]) + need([type(n).__name__ for n in tail] == + ["Assign", "AugAssign", "Assign", "AugAssign", "AugAssign", "AugAssign", "AugAssign"], + "retained seven-statement macro") + identity = sha256(ast.dump(ast.Module(body=tail, type_ignores=[])).encode()).hexdigest() + need(identity == "2a2e0f16a779597fa555857307451831bace11e66861fdc3caf26d2373a21210", + "unchanged source macro identity") + function = ast.FunctionDef( + name="emit", args=ast.arguments(posonlyargs=[], args=[ast.arg(arg=n) for n in + ("target", "source", "g", "h", "gamma")], vararg=None, kwonlyargs=[], + kw_defaults=[], kwarg=None, defaults=[]), + body=[ast.Assign(targets=[ast.Name(id="result", ctx=ast.Store())], + value=ast.List(elts=[], ctx=ast.Load()))] + tail + + [ast.Return(value=ast.Name(id="result", ctx=ast.Load()))], + decorator_list=[], type_params=[]) + module = ast.fix_missing_locations(ast.Module(body=[function], type_ignores=[])) + return compile(module, "", "exec", optimize=0), identity + + +class PairedNegative(Builder): + def __init__(self, positive, source): + super().__init__(positive.phases, positive.multiplier_bits, source) + self.positive = positive + + def spectrum(self, kernel): + row = self.positive.spectra[len(self.spectra)] + need(Vec(kernel) == Vec(-x for x in row["kernel"]), "paired negative spectral kernel") + result = Vec(-x for x in row["multipliers"]) + bound = self.bounds[len(self.spectra)] + need(bound == row["bound"], "paired spectral envelope") + v = Q(1, 1 << self.multiplier_bits) + need(all(x.norm2() <= (bound + v) ** 2 for x in result), "negative stored multiplier bound") + self.spectra.append(dict(kernel=Vec(kernel), multipliers=result, bound=bound)) + return result + + +class Program: + def __init__(self, bound, triangle_bound, raw, phase_oracle=None): + self.bound, self.triangle_bound, self.raw = bound, triangle_bound, raw + self.phases = phase_oracle if phase_oracle is not None else Phases(bound["phase_bits"], raw[ORACLE]) + need(self.phases.bits == bound["phase_bits"], "common generator phase precision") + self.source = list(range(bound["m"])) + self.target = list(range(bound["m"], 2 * bound["m"])) + self.stages, self.position, self.calls = [], 0, [] + self.pending = None + self.last_triangle = None + self.triangles, self.shears = [], [] + code, self.macro_ast = macro_template(raw[SOURCE + "check_circuits.py"]) + namespace = dict(triangle_plan=self.triangle, toeplitz_shear=self.shear, + inverse=self.inverse, lower=lower) + exec(code, namespace) + self.emit = namespace["emit"] + + def record(self, kind, plan, **details): + self.calls.append(kind) + self.stages.append(dict(kind=kind, start=self.position, stop=self.position + len(plan), + **details)) + self.position += len(plan) + return plan + + def triangle(self, indices, coefficients): + builder = Triangle(self.triangle_bound, self.raw[SOURCE + "check_circuits.py"], + self.raw[ORACLE], self.phases) + local_indices = [self.source.index(i) for i in indices] + local = builder.plan(coefficients, local_indices) + plan = [[(tuple(self.source[i] for i in ids), gate) for ids, gate in layer] for layer in local] + need(builder.bound["coefficient_error"] <= self.bound["eta"], "triangle operator allowance") + self.last_triangle = plan + self.triangles.append(builder) + return self.record("triangle", plan, symbol=Vec(coefficients), indices=list(indices), + operator_error=builder.bound["coefficient_error"]) + + def inverse(self, plan): + need(plan is self.last_triangle, "inverse of the same stored triangle") + result = [[(ids, inverse_gate(gate)) for ids, gate in layer] for layer in reversed(plan)] + return self.record("inverse", result) + + def shear(self, target, source, matrix): + need(target == self.target and source == self.source, "literal complete dirty banks") + if self.pending is None: + builder = Builder(self.phases, self.bound["multiplier_bits"], + self.raw[SOURCE + "check_circuits.py"]) + local = builder.plan(matrix) + self.pending = (builder, matrix, local) + kind = "positive" + else: + positive, original, positive_plan = self.pending + need(matrix == -1 * original, "literal negative compensation matrix") + builder = PairedNegative(positive, self.raw[SOURCE + "check_circuits.py"]) + local = builder.plan(matrix) + m = len(source) + need(len(local) == len(positive_plan), "same compensation layer schedule") + for a, b in zip(positive_plan, local): + need(len(a) == len(b), "same compensation gate schedule") + for (ids, g), (other_ids, h) in zip(a, b): + crossing = len(ids) == 2 and ids[0] < m <= ids[1] + expected = Mat([[1, 0], [-g[1][0], 1]]) if crossing else g + need(ids == other_ids and h == expected, "paired coefficients preserve source order") + self.pending = None + kind = "compensation" + g, h = split_kernel(matrix) + envelope = component_l1(g) + component_l1(h) + defect = (4 * len(source).bit_length() * envelope * self.phases.nu + + Q(2, 1 << self.bound["multiplier_bits"])) + need(envelope <= self.bound["multiplier_envelope"] and defect <= self.bound["eta"], + "scaled shear absolute operator allowance") + self.shears.append(builder) + mapping = source + target + plan = [[(tuple(mapping[i] for i in ids), gate) for ids, gate in layer] for layer in local] + return self.record(kind, plan, matrix=matrix, operator_error=defect, envelope=envelope) + + def plan(self, items): + result = [] + for item in items: + before = Vec(item["row"]) + result += self.emit(self.target, self.source, item["g"], item["row"], item["gamma"]) + need(before == item["row"], "fresh division preserves generator row") + need(self.pending is None and self.calls == + ["triangle", "positive", "inverse", "compensation"] * len(items), + "complete retained compensated call sequence") + need(self.position == len(result) <= self.bound["layer_bound"] + and sum(map(len, result)) <= self.bound["gate_bound"], "full program gate/layer budget") + return result diff --git a/research/rational-fft-fixed-h/vendor/full_source/triangular.py b/research/rational-fft-fixed-h/vendor/full_source/triangular.py new file mode 100644 index 0000000000..2bd8de01a7 --- /dev/null +++ b/research/rational-fft-fixed-h/vendor/full_source/triangular.py @@ -0,0 +1,200 @@ +"""Source-bound rational parity recursion with a common precision allocation. + +Jose Manuel (jmbarrancoml), with substantial OpenAI Codex assistance. +Apache-2.0. Parity recursion and its stability premise: Vlado/PR1673. +""" +import ast +import copy +from fractions import Fraction as Q +from hashlib import sha256 +from types import SimpleNamespace + +from exact import (C, Mat, Vec, ceil_log2, component_l1, inverse_gate, need, + rounded) +from engine import Builder, Phases, split_kernel + + +def allocation(n, radius, target, incoming=0): + need(type(n) is int and n > 0 and n & (n - 1) == 0, "dyadic triangle size") + need(type(radius) in (int, Q) and radius >= 1, "exact triangle radius") + need(type(target) is int and target >= 1, "positive triangle target") + need(type(incoming) is int and incoming >= 0, "incoming triangle grid") + d = n.bit_length() - 1 + q, depth, bound = 2 * d + 1, 4 * d * d + 12 * d + 1, 100 * n ** 3 + s = target + ceil_log2(4 * q * bound ** 3 * (radius + 1)) + p = s + ceil_log2(48 * (d + 1)) + multiplier = s + 2 + data = max(incoming, target + ceil_log2(64 * depth * bound * n)) + epsilon, u = Q(1, 1 << s), Q(1, 1 << data) + theta = q * bound ** 2 * epsilon + coefficient = 2 * q * bound ** 3 * epsilon + rounding = 32 * depth * bound * n * u + need(theta <= Q(1, 4) and coefficient * radius + rounding <= Q(1, 1 << target), + "complete triangular error allocation") + amplitude = 32 * bound * radius + 1024 * depth * bound ** 2 * n * u + integer = max(1, ceil_log2(max(Q(1), amplitude))) + 2 + height = max(4 * p + 24, multiplier + 5, 2 * s + 16) + return dict(n=n, radius=radius, target_bits=target, incoming_bits=incoming, + ideal_bound=bound, macro_layers=q, layer_bound=depth, + gate_bound=n * (2 * d * d + 8 * d + 1), + leaf_bits=s, phase_bits=p, multiplier_bits=multiplier, + data_bits=data, epsilon=epsilon, theta=theta, + coefficient_error=coefficient, rounding_error=rounding, + total_error=coefficient * radius + rounding, + physical_prefix_suffix_bound=32 * bound, + segment_bound=1024 * bound ** 2, amplitude_bound=amplitude, + integer_bits=integer, coefficient_height_bound=height, + temporary_bits=2 * data + 8 * height + 2 * integer + 32) + + +class Plan(list): + """Actual layers plus consecutive, disjoint-support macro partitions.""" + def __init__(self, layers, blocks): + super().__init__(layers) + self.blocks = blocks + + def __add__(self, other): + need(isinstance(other, Plan), "typed triangular composition") + offset = len(self) + blocks = [dict(block) for block in self.blocks] + blocks += [dict(start=b["start"] + offset, stop=b["stop"] + offset, + pieces=list(b["pieces"])) for b in other.blocks] + return Plan(list(self) + list(other), blocks) + + +class Concatenate: + def __getitem__(self, parts): + values = [] + for part in parts: + values.extend(part if isinstance(part, (list, tuple)) else [part]) + return Vec(values) + + +def convolution(a, b): + return Vec(sum((a[j] * b[k - j] for j in range(len(a)) + if 0 <= k - j < len(b)), C()) + for k in range(len(a) + len(b) - 1)) + + +class AdaptTriangle(ast.NodeTransformer): + def __init__(self): + self.changes = [] + + def visit_Assign(self, node): + if (len(node.targets) == 1 and isinstance(node.targets[0], ast.Subscript) + and isinstance(node.targets[0].slice, ast.Constant) + and node.targets[0].slice.value == "max_triangle_coefficient"): + self.changes.append("exact-component-diagnostic") + node.value = ast.parse( + "max(STATS['max_triangle_coefficient'], component_l1(f))", + mode="eval").body + return node + return self.generic_visit(node) + + def visit_Return(self, node): + if (isinstance(node.value, ast.Call) and isinstance(node.value.func, ast.Name) + and node.value.func.id == "diag"): + self.changes.append("stored-rounded-leaf") + node.value.func.id = "leaf_diag" + return self.generic_visit(node) + + +class Triangle: + def __init__(self, bound, circuit_source, oracle_source, phase_oracle=None): + self.bound, self.circuit_source = bound, circuit_source + self.phases = phase_oracle if phase_oracle is not None else Phases(bound["phase_bits"], oracle_source) + need(self.phases.bits == bound["phase_bits"], "common triangular phase precision") + base = Builder(self.phases, bound["multiplier_bits"], circuit_source) + self.source_parallel = base.namespace["parallel"] + self.source_inverse = base.namespace["inverse"] + self.children, self.leaves = [], [] + selected = {"toep", "lower", "invseries", "conv", "triangle_plan"} + tree = ast.parse(circuit_source) + tree.body = [copy.deepcopy(node) for node in tree.body + if isinstance(node, ast.FunctionDef) and node.name in selected] + need({node.name for node in tree.body} == selected, "complete parity source") + self.original_ast = sha256(ast.dump(tree).encode()).hexdigest() + adapter = AdaptTriangle() + tree = ast.fix_missing_locations(adapter.visit(tree)) + need(adapter.changes == ["exact-component-diagnostic", "stored-rounded-leaf"], + "exact declared parity adaptations") + self.adapted_ast = sha256(ast.dump(tree).encode()).hexdigest() + facade = SimpleNamespace(asarray=lambda a, dtype=None: Vec(a), + array=lambda a, dtype=None: Mat(a), + zeros=lambda n, dtype=None: Vec([0] * n), + convolve=convolution, r_=Concatenate()) + self.stats = {"triangle_nodes": 0, "max_triangle_coefficient": Q(0)} + self.namespace = dict(np=facade, STATS=self.stats, component_l1=component_l1, + leaf_diag=self.leaf, parallel=self.parallel, + toeplitz_shear=self.shear) + exec(compile(tree, "", "exec", optimize=0), + self.namespace) + + def leaf(self, indices, values): + need(len(indices) == len(values) == 1, "scalar triangular leaf") + wanted = values[0] + stored = rounded(wanted, self.bound["leaf_bits"]) + epsilon = self.bound["epsilon"] + need(Q(1, 4) <= wanted.norm2() <= 4, "ideal scalar leaf margin") + need((stored - wanted).norm2() <= epsilon ** 2 + and stored.norm2() >= Q(1, 16), "stored scalar leaf margin") + gate = Mat([[stored]]) + inverse = inverse_gate(gate) + need(stored * inverse[0][0] == 1, "same stored scalar reciprocal") + piece = dict(kind="leaf", ids=list(indices), ideal=Mat([[wanted]]), + error=epsilon, stored=stored, reciprocal=inverse[0][0]) + self.leaves.append(piece) + return Plan([[(tuple(indices), gate)]], + [dict(start=0, stop=1, pieces=[piece])]) + + def shear(self, target, source, matrix): + n = len(source) + need(len(set(source + target)) == 2 * n, "owned disjoint parity banks") + child = Builder(self.phases, self.bound["multiplier_bits"], self.circuit_source) + local = child.plan(matrix) + g, h = split_kernel(matrix) + envelope = component_l1(g) + component_l1(h) + v = Q(1, 1 << self.bound["multiplier_bits"]) + defect = 4 * (n.bit_length()) * envelope * self.phases.nu + 2 * v + need(envelope + 2 * v <= 6 and defect <= self.bound["epsilon"], + "bounded parity child and allocated operator defect") + mapping = source + target + layers = [[(tuple(mapping[i] for i in ids), gate) for ids, gate in layer] + for layer in local] + piece = dict(kind="shear", ids=list(mapping), ideal=matrix, error=defect, + envelope=envelope, source_ast=child.original_ast, + adapted_ast=child.adapted_ast, local_layers=len(local)) + self.children.append(piece) + return Plan(layers, [dict(start=0, stop=len(layers), pieces=[piece])]) + + def parallel(self, left, right): + need([(b["start"], b["stop"]) for b in left.blocks] + == [(b["start"], b["stop"]) for b in right.blocks], + "equal sibling macro boundary partitions") + blocks = [] + for a, b in zip(left.blocks, right.blocks): + pieces = a["pieces"] + b["pieces"] + ids = [i for piece in pieces for i in piece["ids"]] + need(len(ids) == len(set(ids)), "disjoint sibling macro supports") + blocks.append(dict(start=a["start"], stop=a["stop"], pieces=pieces)) + return Plan(self.source_parallel(left, right), blocks) + + def plan(self, symbol, indices=None): + symbol = Vec(symbol) + n = len(symbol) + need(n == self.bound["n"], "allocated triangle dimension") + need(component_l1(symbol - Vec([1] + [0] * (n - 1))) <= Q(1, 2), + "component-l1 near-identity admission") + indices = list(range(n)) if indices is None else list(indices) + need(len(indices) == n and sorted(indices) == list(range(n)), "triangle wire permutation") + result = self.namespace["triangle_plan"](indices, symbol) + need(self.stats["triangle_nodes"] == 2 * n - 1, "complete parity recursion tree") + need(len(result.blocks) == self.bound["macro_layers"] + and len(result) <= self.bound["layer_bound"] + and sum(map(len, result)) <= self.bound["gate_bound"], "complete schedule bounds") + return result + + def inverse(self, plan): + # Forward pieces certify forward defects. Inverse endpoint bounds use + # the inverse-product proof, not relabelled forward macro certificates. + return self.source_inverse(plan) diff --git a/research/rational-fft-fixed-h/vendor/full_source/vendor/STEIN-PROVENANCE.json b/research/rational-fft-fixed-h/vendor/full_source/vendor/STEIN-PROVENANCE.json new file mode 100644 index 0000000000..c602fb5bb3 --- /dev/null +++ b/research/rational-fft-fixed-h/vendor/full_source/vendor/STEIN-PROVENANCE.json @@ -0,0 +1,14 @@ +{ + "schema_version": 1, + "source_pr": "https://github.com/CrocSwap/integer-mult-bounds/pull/4198", + "source_commit": "e457d5e912a27307d725827aeca7198169320b84", + "source_path": "research/rational-stein-generators/rational.py", + "source_git_blob": "71b240a460a185ee2fe926cd189b56aeac6f997f", + "sha256": "3065fc5d6d22ec44de533b08fb0c639603449456383668e561dc46629e641502", + "retained_path": "research/rational-unitary-fft/vendor/stein_rational.py", + "byte_comparison": "I compared the retained bytes with git show at the original source commit before the local archive commit.", + "usage": "Execute the exact bounded rational generator producer as a coefficient-preparation dependency of the complete gate program.", + "proof": "https://github.com/CrocSwap/integer-mult-bounds/blob/e457d5e912a27307d725827aeca7198169320b84/research/rational-stein-generators/PROOF.md", + "credit": "Jose Manuel (jmbarrancoml), with substantial OpenAI Codex assistance. The producer refines Vlado Vojdanovski/PR1673's rational Gram-Schmidt route; Cinna Davis supplied the later caller. Apache-2.0.", + "history_boundary": "The original sibling PR commit is not an ancestor of PR4205. SOURCES.json will pin these local retained bytes at their archive commit, separately from this original-source identity. The later integration does not claim original sibling-branch ancestry." +} diff --git a/research/rational-fft-fixed-h/vendor/full_source/vendor/stein_rational.py b/research/rational-fft-fixed-h/vendor/full_source/vendor/stein_rational.py new file mode 100644 index 0000000000..71b240a460 --- /dev/null +++ b/research/rational-fft-fixed-h/vendor/full_source/vendor/stein_rational.py @@ -0,0 +1,196 @@ +"""Exact dyadically scaled Stein generators over Q(i). + +Jose Manuel (jmbarrancoml), with substantial OpenAI Codex assistance. +Apache-2.0. The construction refines the retained rational Gram-Schmidt route. +""" +from fractions import Fraction as Q + +MAX_HEIGHT = 0 + + +def need(ok, message): + if not ok: + raise ValueError(message) + + +def observe(x): + global MAX_HEIGHT + x = Q(x) + MAX_HEIGHT = max(MAX_HEIGHT, abs(x.numerator).bit_length(), x.denominator.bit_length()) + return x + + +class C: + __slots__ = ("re", "im") + + def __init__(self, re=0, im=0): + need(type(re) in (int, Q) and type(im) in (int, Q), "exact complex rational components") + self.re, self.im = observe(re), observe(im) + + @staticmethod + def wrap(x): + return x if isinstance(x, C) else C(x) + + def __add__(self, other): + other = C.wrap(other) + return C(self.re + other.re, self.im + other.im) + + __radd__ = __add__ + + def __neg__(self): + return C(-self.re, -self.im) + + def __sub__(self, other): + return self + -C.wrap(other) + + def __rsub__(self, other): + return C.wrap(other) + -self + + def __mul__(self, other): + other = C.wrap(other) + return C(self.re * other.re - self.im * other.im, + self.re * other.im + self.im * other.re) + + __rmul__ = __mul__ + + def conjugate(self): + return C(self.re, -self.im) + + def norm2(self): + return observe(self.re ** 2 + self.im ** 2) + + def __truediv__(self, other): + other = C.wrap(other) + denominator = other.norm2() + need(denominator != 0, "nonzero complex divisor") + product = self * other.conjugate() + return C(product.re / denominator, product.im / denominator) + + def __rtruediv__(self, other): + return C.wrap(other) / self + + def __bool__(self): + return bool(self.re or self.im) + + def __eq__(self, other): + if not isinstance(other, C) and type(other) not in (int, Q): + return False + other = C.wrap(other) + return self.re == other.re and self.im == other.im + + def record(self): + return [str(self.re), str(self.im)] + + +class Vector(list): + def __truediv__(self, scalar): + return Vector(C.wrap(x) / scalar for x in self) + + +class Matrix(list): + def __init__(self, rows): + super().__init__([[C.wrap(x) for x in row] for row in rows]) + + def __rmul__(self, scalar): + return Matrix([[C.wrap(x) * scalar for x in row] for row in self]) + + +def inner(left, right): + return sum((C.wrap(x).conjugate() * C.wrap(y) for x, y in zip(left, right)), C()) + + +def norm2(vector): + return observe(sum((C.wrap(x).norm2() for x in vector), Q(0))) + + +def component_l1(vector): + return observe(sum((abs(C.wrap(x).re) + abs(C.wrap(x).im) for x in vector), Q(0))) + + +def pow2(exponent): + return Q(1 << exponent) if exponent >= 0 else Q(1, 1 << -exponent) + + +def norm_scale(squared): + need(squared > 0, "positive residual squared norm") + exponent = (squared.numerator.bit_length() - squared.denominator.bit_length()) // 2 + scale = pow2(exponent) + while scale * scale < squared: + exponent += 1 + scale *= 2 + while scale * scale / 4 >= squared: + exponent -= 1 + scale /= 2 + need(squared <= scale * scale < 4 * squared, "dyadic norm bracket") + observe(scale) + return scale, exponent + + +def upper_dyadic(value): + need(value > 0, "positive dyadic upper target") + exponent = value.numerator.bit_length() - value.denominator.bit_length() + result = pow2(exponent) + while result < value: + result *= 2 + while result / 2 >= value: + result /= 2 + return observe(result) + + +def height(matrix): + return max([1] + [max(abs(x.numerator).bit_length(), x.denominator.bit_length()) + for row in matrix for entry in row + for x in (C.wrap(entry).re, C.wrap(entry).im)]) + + +def generators(displacement): + """Return column g, explicit coefficient ROW r, and a dyadic admission scale.""" + global MAX_HEIGHT + displacement = Matrix(displacement) + size = len(displacement) + need(size > 0 and all(len(row) == size for row in displacement), "nonempty square displacement") + input_height = height(displacement) + MAX_HEIGHT = input_height + columns = [[displacement[i][j] for i in range(size)] for j in range(size)] + residuals, result = [], [] + for column_index, column in enumerate(columns): + residual = list(column) + for old, squared in residuals: + factor = inner(old, residual) / squared + residual = [x - factor * y for x, y in zip(residual, old)] + squared = norm2(residual) + if squared == 0: + continue + scale, exponent = norm_scale(squared) + g = Vector(x / scale for x in residual) + row = Vector(inner(residual, c) * (scale / squared) for c in columns) + gamma = upper_dyadic(max(Q(1), 2 * component_l1(row))) + need(norm2(g) <= 1 and 2 * component_l1(row) <= gamma, "bounded generator admission") + residuals.append((residual, squared)) + result.append({"column": column_index, "residual": residual, "squared_norm": squared, + "scale": scale, "scale_exponent": exponent, "g": g, "row": row, + "gamma": gamma}) + return result, {"input_height": input_height, "max_observed_height": MAX_HEIGHT} + + +def lower(vector): + return Matrix([[vector[i - j] if i >= j else C() for j in range(len(vector))] + for i in range(len(vector))]) + + +def transpose(matrix): + return Matrix(zip(*matrix)) + + +def frobenius2(matrix): + return observe(sum((C.wrap(x).norm2() for row in matrix for x in row), Q(0))) + + +def norm_bound(matrix): + """Rational upper bound for the induced 2-norm.""" + return max(max(component_l1(row) for row in matrix), + max(component_l1(column) for column in zip(*matrix))) + + +def exact_record(matrix): + return [[C.wrap(x).record() for x in row] for row in matrix] From 9eec608bc90665d5fec3f2d6bf1503007d434a48 Mon Sep 17 00:00:00 2001 From: Jose Manuel <118126596+jmbarrancoml@users.noreply.github.com> Date: Wed, 21 Oct 2026 00:19:48 +0200 Subject: [PATCH 4/5] Lower conditioned Toeplitz programs to fixed Hadamard stages --- research/rational-fft-fixed-h/DENSE-PROOF.md | 336 +++ .../rational-fft-fixed-h/DENSE-RESULT.json | 2591 +++++++++++++++++ research/rational-fft-fixed-h/README.md | 65 +- research/rational-fft-fixed-h/SOURCES.json | 14 +- research/rational-fft-fixed-h/TASK.json | 6 +- research/rational-fft-fixed-h/VERIFY.json | 24 +- research/rational-fft-fixed-h/dense.py | 321 ++ research/rational-fft-fixed-h/lowering.py | 13 +- research/rational-fft-fixed-h/verify_dense.py | 323 ++ 9 files changed, 3681 insertions(+), 12 deletions(-) create mode 100644 research/rational-fft-fixed-h/DENSE-PROOF.md create mode 100644 research/rational-fft-fixed-h/DENSE-RESULT.json create mode 100644 research/rational-fft-fixed-h/dense.py create mode 100644 research/rational-fft-fixed-h/verify_dense.py diff --git a/research/rational-fft-fixed-h/DENSE-PROOF.md b/research/rational-fft-fixed-h/DENSE-PROOF.md new file mode 100644 index 0000000000..3ee98912ec --- /dev/null +++ b/research/rational-fft-fixed-h/DENSE-PROOF.md @@ -0,0 +1,336 @@ +# Conditioned Toeplitz programs on fixed Hadamard stages + +I extend the completed FFT connection to the actual stored full Toeplitz +program and its stored inverse at PR4205 head +78c72e563173f3822fcb4efed9ceeccf05630258. I retain its source and proof +bytes unchanged in [full_source](vendor/full_source/PROVENANCE.json). +I use Vlado Vojdanovski's existing zero-safe words and routing algorithm. +I add the nonunitary amplification argument and bind its parameters to +the admitted root, coefficient preparation and executed stages. + +## Generic domain + +Take a field of $N=2^m$ coordinates and an ordered program of $L$ +matching layers. In each layer, allow disjoint one-wire nonzero scalars, +upper or lower shears, invertible diagonal pairs, swaps and the rational +unitary butterflies or stored adjoints from [PROOF.md](PROOF.md). +The caller supplies exact rational bounds $\Pi,E_0,R\ge1$ such that: + +- Every original logical prefix and its inverse has norm at most $\Pi$. +- The exact stored endpoint $U$ has norm at most $E_0$. +- The incoming vector satisfies $\|x\|_2\le R$ and has complex components + on the $2^{-F_0}$ grid, for integer $F_0\ge0$. + +I use Euclidean vector norms and induced operator norms. These premises +concern linear maps with the stored coefficients and unrounded data. +The rounded execution itself is nonlinear. + +For $N\ge2$, I retain +\[ +J=L(16m+5),\qquad M=L(8m+3),\qquad h=L(8m+2), +\] +for the primitive, diagonal and whole-field Hadamard stage counts. +For $N=1$, I execute each scalar or idle layer as one diagonal: +$J=M=L$ and $h=0$. I make no bit-zero Hadamard call. +Put +\[ +\Gamma=2^{\lceil\log_2(\Pi^2)\rceil},\qquad +C=2^{14}\Gamma\Pi. +\tag{1} +\] +At a logical layer boundary, $A_j=P_jP_{j-1}^{-1}$ gives +$\|A_j\|,\|A_j^{-1}\|\le\Pi^2\le\Gamma$. Since the layer is a +direct sum, each scalar and its reciprocal has modulus at most $\Gamma$, +and each shear parameter has modulus at most $\Gamma$. + +For target integer $t\ge1$ and $L>0$, I choose +\[ +F=\max\left\{F_0,\ +t+\left\lceil\log_2(16E_0MC^2(R+1))\right\rceil,\ +t+\left\lceil\log_2(16E_0CJN)\right\rceil\right\}. +\tag{2} +\] +I prepare the exact reference words, replace each $H$ by $H_0=H/2$, +double its following diagonal, then round the diagonal components to +the $F$ grid. I round the data after each emitted stage, including +routing and idle words. I retain distinct adjacent diagonal stages. +I prove the following error against the stored logical endpoint: +\[ +\|\widehat y-Ux\|_2 +\le 4E_0MC^2\,2^{-F}R+4E_0CJN\,2^{-F} +<\tfrac12\,2^{-t}. +\tag{3} +\] +For $L=0$, I return the input, choose $F=\max(F_0,1)$, and incur zero +error. I give the connection to the exact Toeplitz root below. + +## Zero-safe shear and scalar words + +For an upper shear parameter $v$, set $c=2\Gamma+1$ and $z=v+c$. +The reverse triangle inequality gives +\[ +\Gamma+1\le |z|\le3\Gamma+1, +\] +so the retained construction can call its nonzero helper twice, even +at $v=0$. In execution order it uses the seven diagonals +\[ +(-5/(4c),1),\quad(-3,1),\quad(2,1),\quad +(c/(8z),-1/6),\quad(-3,1),\quad(2,1),\quad(-z/10,-1/6) +\tag{4} +\] +with a raw $H$ between neighbors. The two helper endpoints compose +as $U(z)U(-c)=U(v)$. Reversing the symmetric factors gives the +ordinary transpose $U(v)^T$, hence the lower shear. I do not conjugate +the complex parameter. + +I bound contiguous segments by products of factor norms, replacing +factors smaller than one by one. In (4), the middle diagonal has +norm at most $1/4$ and inverse norm at most 12. The last diagonal +has norm at most $(3\Gamma+1)/10\le\Gamma$, and inverse norm at most +six. The first inverse diagonal has norm at most $3\Gamma$. +Together with $\|H\|=\sqrt2$ and $\|H^{-1}\|=1/\sqrt2$, I obtain +raw segment bounds $288\Gamma$ and $216\Gamma$ for the direct and +inverse maps. The same bounds hold after word reversal, because +ordinary transposition preserves the spectral norm. + +After the $H_0$ compensation, a contiguous segment differs from its +raw counterpart by a scalar in $\{1/2,1,2\}$. Thus $1024\Gamma$ +bounds the native shear segments and their inverses. For a diagonal +pair, the source appends three complete two-H identity words; +the raw segment and inverse bounds are $8\Gamma$, and the native +bounds are $16\Gamma$. Swaps and idle pairs have smaller bounds. +For rational butterflies and their stored adjoints, I use the 4096 +bound from PROOF.md. Therefore +\[ +4096\Gamma +\tag{5} +\] +bounds each native central word segment and its inverse. + +The compensated diagonal entries have modulus at most $6\Gamma$ +and reciprocal modulus at most $200\Gamma$. I complete each mixed +layer's unused wires in pairs, using its actual singleton scalars +and identity values on idle wires. I preserve the oriented order +of each existing two-wire gate. All-one diagonal padding would +multiply the inactive pair by eight, so I use complete identity words. + +The source routes input $i$ to output $p[i]$. Its $2m-1$ switch +layers have unitary completed endpoints and native prefix/inverse +norms at most $\sqrt2$, as proved in PROOF.md. I use the reversed +switch schedule for the return route. Within a logical layer, +the central word and the two routes contribute less than +$2^{14}\Gamma$ to a partial prefix or inverse prefix. The completed +earlier logical program contributes at most $\Pi$. Equation (1) +therefore bounds exact compiled prefixes and their inverses by $C$. +I do not multiply the fragment allowance once per logical layer. + +## Nonunitary endpoint and rounding + +Let $P_j$ be the exact compiled prefix. An exact suffix is +$UP_j^{-1}$, so I must retain its bound $E_0C$. +For a rounded diagonal perturbation $\Delta_j$, put $u=2^{-F}$ +and $\varepsilon=2u$. Component rounding implies +$\|\Delta_j\|\le\varepsilon$, regardless of the field size. +In exact-prefix coordinates, +\[ +T_j=P_j^{-1}\Delta_jP_{j-1},\qquad +\|T_j\|\le C^2\varepsilon,\qquad +v:=MC^2\varepsilon<1/2. +\] +For any consecutive subproduct of the factors $I+T_j$, its norm +is at most $e^v<2$ and its distance from identity is at most $2v$. +Multiplying back by the endpoints gives: +\[ +\|\widehat U-U\|\le2E_0MC^2\varepsilon,\quad +\|\widehat P_j\|\le2C,\quad +\|\widehat S_j\|\le2E_0C,\quad +\|\widehat P_{b:a}\|\le2C^2. +\tag{6} +\] +Here the hatted maps use rounded coefficients and unrounded data. +The segment assertion follows by writing the segment in the same +exact-prefix coordinates; it does not require inverting a rounded +prefix. + +Each data rounding changes at most $N$ complex entries, with +Euclidean error at most $2Nu$. I propagate those residuals through +the perturbed suffixes in (6). I obtain (3), including the errors +from the completed identity words. In (2), the first precision +term pays strictly less than $2^{-t}/4$, because $R/(R+1)<1$; +the second pays at most $2^{-t}/4$. + +I retain a discriminating counterexample to omission of $E_0$. +Take $q=2^{16}$ and the three two-wire logical layers +\[ +\operatorname{diag}(q^{-1},q),\quad U(0),\quad +\operatorname{diag}(q^2,q^{-2}). +\] +The logical prefix and inverse-prefix bound is $\Pi=q$ and the +endpoint is $U=\operatorname{diag}(q,q^{-1})$, with $E_0=q$. +Use $\Gamma=q^2$, $c=2q^2+1$, and the upper word for the zero shear. +After its first central diagonal, the exact prefix is +\[ +P=\operatorname{diag}(-5/(4cq),q). +\] +Consequently +\[ +\|UP^{-1}\|=\frac{4cq^2}{5},\qquad +\frac{\|UP^{-1}\|}{C} +=\frac{32}{5}+\frac{1}{5\cdot2^{28}}>1. +\tag{7} +\] +The corrected bound $E_0C$ covers this suffix. I check the actual +retained word and routing prefix at this cut. This example refutes +the attempted unit-endpoint extension; it does not contradict the +completed FFT result. + +## Connection to the retained full program + +I admit an exact rational Toeplitz matrix $T$ of dyadic size $N$. +The retained admission routine checks its Toeplitz shape, inverts +each leading principal section and obtains component row/column +envelopes $\lambda,Q\ge1$. These imply +$\|T\|\le\lambda$ and inverse norm at most $Q$ for each leading +section. An invertible full matrix with a singular leading section +does not meet this admission. + +I invoke the unchanged full allocation and actual recursive plan +at target $t$ and radius $R$. I bind their matrix, budget, wire +order and both stored plans. Let $\chi=\lambda Q$, +$\mathcal B=256N^3\chi^{12}$ and $a=3N-2$. +The retained [FULL-PROOF.md](vendor/full_source/FULL-PROOF.md), +equations (12) and (14), gives +\[ +\|\widetilde T-T\|,\|\widetilde T^{-1}-T^{-1}\| +\le e=2a\mathcal B^3\eta,\qquad +\Pi=2\max(1,\lambda,Q)\mathcal B\mathcal H. +\tag{8} +\] +Here $\mathcal H$ is the retained generator/scalar fragment bound. +The source field execution_bound supplies $\Pi$ for stored logical +prefixes, suffixes and their inverses, in either direction. +I retain that author-proved dependency rather than interpret the +source's rounded-data amplitude field as an operator norm. + +I use $E_0=\lambda+e$ for the forward program and $E_0=Q+e$ for +its stored inverse. I compile that inverse's actual reversed gate +schedule. Nonunitary scalar leaves require reciprocals, so a global +adjoint would give a different endpoint. + +The retained choice +$\eta=2^{-s}$, with +$s=t+\lceil\log_2(4a\mathcal B^3(R+1))\rceil$, implies +\[ +eR\le\frac{2^{-t}R}{2(R+1)}<\tfrac12\,2^{-t}. +\] +I add this operator defect times $R$ to (3), obtaining +\[ +\boxed{\|\widehat y-T_I^{\pm1}x\|_2 +\le eR+4E_0MC^2uR+4E_0CJNu<2^{-t}.} +\tag{9} +\] +For the declared ordered physical wires $I$, I write $T_I$ for +the conjugate of $T$ by that coordinate permutation. The forward +direction uses $T_I$ and the reverse uses $T_I^{-1}$. This identification +preserves the norms and applies the exact root to the intended wire order. +I discard the predecessor's data-rounding allowance for this purpose; +the new stage schedule incurs the rounding term in (9). +I authenticate the source bytes and preserve source assertions under +optimized Python. Runtime seals reject changes to the admitted root, +request bounds, logical plans, prepared pages and native precision contract. + +## Widths, setup and remaining physical obligations + +Using the segment bound in (6), I bound actual states by +\[ +2CR+4C^2JNu +\le 2CR+\frac{C2^{-t}}{4E_0} +", "exec", optimize=0), module.__dict__) + loaded[name] = module + finally: + for name, old in previous.items(): + if old is None: + sys.modules.pop(name, None) + else: + sys.modules[name] = old + self.full = loaded["full"] + self.raw = MappingProxyType(dict(self.raw)) + + +class NativeProgram(FFT): + """A prefix-bound compiler; callers must establish the declared logical bound.""" + CONTRACT_FIELDS = ("size", "radius", "target", "incoming", "prefix", "endpoint", "upstream_error", + "logical_layers", "stage_count", "diagonal_count", "h_count", "gamma_bits", "gamma", + "compiled_bound", "bits", "coefficient_bits", "coefficient_error", "rounding_error", + "native_error", "total_error", "amplitude", "temporary_amplitude", "integer_bits", + "temporary_bits") + + def __init__(self, source, size, plan, prefix, endpoint, radius, target, incoming=0, *, + upstream_error=0, context=None, data_bits=None): + need(type(size) is int and size > 0 and size & (size - 1) == 0, "dyadic native field") + need(all(type(x) in (int, Q) and x >= 1 for x in (prefix, endpoint, radius)), + "exact positive circuit envelopes") + need(type(target) is int and target >= 1 and type(incoming) is int and incoming >= 0, + "native target and incoming grid") + need(type(upstream_error) in (int, Q) and upstream_error >= 0, "upstream operator defect") + self.source, self.e, self.context = source, source.e, context + self.size, self.radius, self.target, self.incoming = size, Q(radius), target, incoming + self.prefix, self.endpoint, self.upstream_error = Q(prefix), Q(endpoint), Q(upstream_error) + self.plan = [list(layer) for layer in plan] + self.reference_hash = plan_hash(source, self.plan) + self.logical_layers = len(self.plan) + m = size.bit_length() - 1 + self.stage_count = self.logical_layers * (16 * m + 5) if m else self.logical_layers + self.diagonal_count = self.logical_layers * (8 * m + 3) if m else self.logical_layers + self.h_count = self.logical_layers * (8 * m + 2) if m else 0 + self.gamma_bits = max(0, self.e.ceil_log2(self.prefix ** 2)) + self.gamma = 1 << self.gamma_bits + self.compiled_bound = (1 << 14) * self.gamma * self.prefix + c, e0, r = self.compiled_bound, self.endpoint, self.radius + minimum = max(incoming, target + self.e.ceil_log2(16 * e0 * self.diagonal_count * c ** 2 * (r + 1)), + target + self.e.ceil_log2(16 * e0 * c * self.stage_count * size)) if self.logical_layers else max(incoming, 1) + self.bits = minimum if data_bits is None else data_bits + need(type(self.bits) is int and self.bits >= minimum, "funded nonunitary native grid") + self.raw_stages, self.layers = [], [] + self.kinds = Counter() + self.input_height = 1 + self.word_count = 0 + for layer in self.plan: + used, pairs, words, singles, kinds = set(), [], [], {}, [] + for ids, gate in layer: + need(len(ids) == len(gate) in (1, 2) and all(len(row) == len(ids) for row in gate), + "one- or two-wire source gate") + need(len(set(ids)) == len(ids) and not used.intersection(ids) + and all(type(i) is int and 0 <= i < size for i in ids), "disjoint oriented source ownership") + used.update(ids) + self.input_height = max(self.input_height, *(self.e.qheight(p) + for row in gate for z in row for p in (z.re, z.im))) + if len(ids) == 1: + self.scalar(gate[0][0]) + singles[ids[0]] = gate[0][0] + else: + kind, word = self.gate_word(gate) + pairs.append(tuple(ids)) + words.append(word) + kinds.append(kind) + if size == 1: + value = singles.get(0, self.e.C(1)) + self.raw_stages.append(("D", self.e.Vec([value]))) + self.layers.append(dict(begin=len(self.raw_stages) - 1, end=len(self.raw_stages), + pairs=[], kinds=["scalar" if singles else "idle"])) + self.kinds.update(self.layers[-1]["kinds"]) + continue + paired = {i for pair in pairs for i in pair} + free = [i for i in range(size) if i not in paired] + for j in range(0, len(free), 2): + pair = tuple(free[j:j + 2]) + values = tuple(singles.get(i, self.e.C(1)) for i in pair) + for value in values: + self.scalar(value) + word = source.ns["gateword"]("diag", values) + need(source.word_endpoint(word) == self.e.Mat([[values[0], 0], [0, values[1]]]), + "paired scalar endpoint") + pairs.append(pair) + words.append(word) + kinds.append("scalar-pair" if any(i in singles for i in pair) else "idle") + need(len(pairs) == len(words) == size // 2, "complete mixed matching") + permutation = source.ns["matching_permutation"](size, pairs) + self.check_network(permutation, source.ns["benes"](permutation)) + stages = source.ns["local_layer"](size, pairs, words) + need(len(stages) == 16 * m + 5, "source matching-layer stage count") + begin = len(self.raw_stages) + self.raw_stages.extend(stages) + self.layers.append(dict(begin=begin, end=len(self.raw_stages), pairs=pairs, + kinds=kinds, permutation=permutation)) + self.kinds.update(kinds) + self.word_count += len(words) + self.reference_stages = [] + self.setup_height = 1 + for j, (kind, value) in enumerate(self.raw_stages): + if kind == "H": + need(type(value) is int and 0 <= value < m + and j + 1 < len(self.raw_stages) and self.raw_stages[j + 1][0] == "D", + "native bit and following compensation") + self.reference_stages.append((kind, value)) + else: + need(kind == "D" and len(value) == size and all(z != 0 for z in value), + "complete nonzero reference page") + scale = 2 if j and self.raw_stages[j - 1][0] == "H" else 1 + page = self.e.Vec(scale * z for z in value) + need(all(z.norm2() <= (6 * self.gamma) ** 2 + and (1 / z).norm2() <= (200 * self.gamma) ** 2 for z in page), + "native direct/reciprocal coefficient envelope") + self.setup_height = max(self.setup_height, *(self.e.qheight(p) + for z in page for p in (z.re, z.im))) + self.reference_stages.append((kind, page)) + self.setup_allowance = 32 * (self.input_height + self.gamma_bits + 8) + need(self.setup_height <= self.setup_allowance, "reduced rational setup height") + self.stages = [(kind, value if kind == "H" else self.e.Vec(self.e.rounded(z, self.bits) for z in value)) + for kind, value in self.reference_stages] + need(len(self.stages) == self.stage_count + and sum(kind == "D" for kind, _ in self.stages) == self.diagonal_count + and sum(kind == "H" for kind, _ in self.stages) == self.h_count, "full native stage counts") + self.coefficient_width = 0 + u = Q(1, 1 << self.bits) + for (kind, exact), (_, page) in zip(self.reference_stages, self.stages): + if kind == "D": + for a, z in zip(exact, page): + need((a - z).norm2() <= (2 * u) ** 2, "native diagonal approximation") + for part in (z.re, z.im): + integer = part * (1 << self.bits) + need(integer.denominator == 1, "native coefficient grid") + self.coefficient_width = max(self.coefficient_width, abs(integer.numerator).bit_length() + 1) + self.coefficient_bits = self.bits + self.gamma_bits + 5 + need(self.coefficient_width <= self.coefficient_bits, "signed nonunitary coefficient width") + self.coefficient_error = 4 * e0 * self.diagonal_count * c ** 2 * u * r + self.rounding_error = 4 * e0 * c * self.stage_count * size * u + self.native_error = self.coefficient_error + self.rounding_error + self.total_error = self.upstream_error * r + self.native_error + need(self.diagonal_count * c ** 2 * 2 * u < Q(1, 2) + and self.native_error < Q(1, 1 << (target + 1)) + and self.total_error <= Q(1, 1 << target), "complete conditioned target budget") + self.amplitude = 4 * c * (r + 1) + self.temporary_amplitude = self.gamma * self.amplitude + self.integer_bits = self.e.ceil_log2(self.amplitude) + 2 + self.temporary_bits = 2 * self.bits + self.integer_bits + self.gamma_bits + 6 + self.stage_seal = stage_hash(source, self.stages) + self.reference_stage_seal = stage_hash(source, self.reference_stages) + self.contract_seal = self.contract_hash() + + def contract_hash(self): + return budget_hash(self.source, {name: getattr(self, name) for name in self.CONTRACT_FIELDS}) + + def scalar(self, value): + need(value != 0 and value.norm2() <= self.gamma ** 2 + and (1 / value).norm2() <= self.gamma ** 2, "logical scalar and reciprocal admission") + + def gate_word(self, gate): + E, source = self.e, self.source + if gate[0][0] == gate[1][1] == 1 and gate[1][0] == 0: + kind, value = "upper", gate[0][1] + need(value.norm2() <= self.gamma ** 2, "upper shear coefficient admission") + word = source.ns["gateword"](kind, value, self.gamma) + elif gate[0][0] == gate[1][1] == 1 and gate[0][1] == 0: + kind, value = "lower", gate[1][0] + need(value.norm2() <= self.gamma ** 2, "lower shear coefficient admission") + word = source.ns["gateword"](kind, value, self.gamma) + elif gate[0][1] == gate[1][0] == 0: + kind = "diagonal" + values = gate[0][0], gate[1][1] + for value in values: + self.scalar(value) + word = source.ns["gateword"]("diag", values) + else: + kind, word = source.gate_word(gate) + need(len(word) == 13 and sum(op == "H" for op in word) == 6 + and source.word_endpoint(word) == E.Mat(gate), "actual six-H source gate endpoint") + return kind, word + + def execute(self, vector, capture=False): + need(self.contract_hash() == self.contract_seal, "unchanged native precision and magnitude contract") + if self.context is not None: + self.context.validate() + return super().execute(vector, capture) + + def record(self): + need(self.contract_hash() == self.contract_seal, "unchanged recorded native contract") + if self.context is not None: + self.context.validate() + exact_values = dict(prefix=self.prefix, endpoint=self.endpoint, compiled=self.compiled_bound, + radius=self.radius, upstream=self.upstream_error, + coefficient=self.coefficient_error, rounding=self.rounding_error, + native=self.native_error, total=self.total_error, amplitude=self.amplitude) + tau = Q(1, 1 << self.target) + return dict(size=self.size, logical_layers=self.logical_layers, word_count=self.word_count, + kinds=dict(sorted(self.kinds.items())), layer_mapping_sha256=sha256(canonical(self.layers)).hexdigest(), + logical_plan_sha256=self.reference_hash, reference_stages_sha256=self.reference_stage_seal, + stored_stages_sha256=self.stage_seal, tensor_ast_sha256=self.source.tensor_ast, + counts=dict(primitive_stages=self.stage_count, diagonal_stages=self.diagonal_count, + hadamard_stages=self.h_count), + budget=dict(prefix_upper=reported(self.source, self.prefix), + endpoint_upper=reported(self.source, self.endpoint), + gamma_bits=self.gamma_bits, compiled_prefix_upper=reported(self.source, self.compiled_bound), + radius=str(self.radius), target_bits=self.target, incoming_bits=self.incoming, + data_grid_bits=self.bits, coefficient_bits=self.coefficient_bits, + data_bits=self.bits + self.integer_bits, temporary_bits=self.temporary_bits, + coefficient_error_upper=reported(self.source, self.coefficient_error, tau / 2), + rounding_error_upper=reported(self.source, self.rounding_error, tau / 2), + native_error_upper=reported(self.source, self.native_error, tau / 2), + total_error_upper=reported(self.source, self.total_error, tau), + amplitude_upper=reported(self.source, self.amplitude), + exact_budget_sha256=budget_hash(self.source, exact_values)), + setup=dict(input_component_height=self.input_height, reduced_coefficient_height=self.setup_height, + reduced_height_allowance=self.setup_allowance, + observed_stored_coefficient_bits=self.coefficient_width)) + + +class FullRoot: + def __init__(self, source, matrix, radius, target, indices=None): + self.source, self.e = source, source.e + self.matrix = self.e.Mat(matrix) + self.matrix_seal = source.matrix_hash(self.matrix) + self.lam, self.q, self.leading = source.full.admission(self.matrix) + budget = source.full.allocation(len(matrix), self.lam, self.q, radius, target, 0) + self.builder = source.full.Full(budget, source.raw) + self.plan = self.builder.plan(self.matrix, indices) + self.inverse_plan = self.builder.inverse(self.plan) + self.bound = dict(self.builder.bound) + self.budget_seal = budget_hash(source, self.bound) + self.plan_seal, self.inverse_seal = plan_hash(source, self.plan), plan_hash(source, self.inverse_plan) + self.radius, self.target = Q(radius), target + self.indices = list(range(len(matrix))) if indices is None else list(indices) + self.request_seal = self.request_state() + need(source.matrix_hash(self.matrix) == self.matrix_seal, "borrowed exact root preserved during preparation") + + def request_state(self): + return (self.lam, self.q, self.radius, self.target, tuple(self.indices), tuple(self.leading)) + + def validate(self): + need(self.request_state() == self.request_seal + and self.lam == self.bound["lam"] and self.q == self.bound["inverse_bound"] + and self.radius == self.bound["radius"] and self.target == self.bound["target_bits"] + and self.source.matrix_hash(self.matrix) == self.matrix_seal + and budget_hash(self.source, self.builder.bound) == self.budget_seal + and budget_hash(self.source, self.bound) == self.budget_seal + and plan_hash(self.source, self.plan) == self.plan_seal + and plan_hash(self.source, self.inverse_plan) == self.inverse_seal, + "same admitted root, stored plan and full prefix contract") + + def lower(self, inverse=False, incoming=0): + need(type(inverse) is bool, "declared full direction") + self.validate() + defect = self.bound["coefficient_error"] + endpoint = (self.q if inverse else self.lam) + defect + need(endpoint <= self.bound["execution_bound"], "endpoint bound fits the retained full envelope") + return NativeProgram(self.source, len(self.matrix), self.inverse_plan if inverse else self.plan, + self.bound["execution_bound"], endpoint, self.radius, self.target, incoming, + upstream_error=defect, context=self) + + def record(self): + self.validate() + return dict(n=len(self.matrix), indices=self.indices, root_sha256=self.matrix_seal, + full_source_ast_sha256=self.builder.source_ast, + full_budget_sha256=self.budget_seal, + lambda_upper=reported(self.source, self.lam), inverse_upper=reported(self.source, self.q), + leading=[dict(size=n, inverse_upper=reported(self.source, value)) for n, value in self.leading], + stored_prefix_upper=reported(self.source, self.bound["execution_bound"]), + upstream_operator_error_upper=reported(self.source, self.bound["coefficient_error"]), + target_bits=self.target, radius=str(self.radius), + forward_plan_sha256=self.plan_seal, inverse_plan_sha256=self.inverse_seal) diff --git a/research/rational-fft-fixed-h/lowering.py b/research/rational-fft-fixed-h/lowering.py index c96b3ed17b..5c2adcfd96 100644 --- a/research/rational-fft-fixed-h/lowering.py +++ b/research/rational-fft-fixed-h/lowering.py @@ -22,6 +22,9 @@ CIRCUIT = "research/capped-phase-fusion/evidence/inplace_algebra_ultra/check_circuits.py" TENSOR = "research/capped-phase-fusion/evidence/inplace_algebra_ultra/check_tensor_compiler.py" ORACLE = "research/cubic-cyclic-inverse/vendor/interval_kernel.py" +DENSE_PREFIX = PREFIX + "vendor/full_source/" +DENSE_CONTEXT = {"research/unconditional-batched-crt/vendor/GAUGEFREE-INTERIORS.md", + "research/unconditional-batched-crt/vendor/SHALLOW-TOEPLITZ.md"} K = 1 << 14 @@ -59,8 +62,11 @@ def authenticate(overrides=None): class Sources: - def __init__(self, overrides=None): - self.raw, self.seals = authenticate(overrides) + def __init__(self, overrides=None, include_dense=False): + need(type(include_dense) is bool, "declared source inventory") + self.raw, all_seals = authenticate(overrides) + self.seals = [row for row in all_seals if include_dense + or not (row["path"].startswith(DENSE_PREFIX) or row["path"] in DENSE_CONTEXT)] self.e = ModuleType("_fixed_h_retained_exact") exec(compile(self.raw[EXACT], "", "exec", optimize=0), self.e.__dict__) @@ -292,7 +298,8 @@ def observe(value): stats["maximum_temporary_numerator_bits"] = max(stats["maximum_temporary_numerator_bits"], width) stats["maximum_temporary_fractional_bits"] = max( stats["maximum_temporary_fractional_bits"], value.denominator.bit_length() - 1) - need(width <= self.temporary_bits and abs(value) <= 16 * self.amplitude, + need(width <= self.temporary_bits + and abs(value) <= 16 * getattr(self, "temporary_amplitude", self.amplitude), "native arithmetic temporary allowance") return value diff --git a/research/rational-fft-fixed-h/verify_dense.py b/research/rational-fft-fixed-h/verify_dense.py new file mode 100644 index 0000000000..f291736487 --- /dev/null +++ b/research/rational-fft-fixed-h/verify_dense.py @@ -0,0 +1,323 @@ +"""Check complete conditioned Toeplitz programs on the fixed-H grammar. + +Jose Manuel (jmbarrancoml), with substantial OpenAI Codex assistance. +Apache-2.0. The retained compiler and source identities belong to their +credited authors. Finite checks support the separate written argument. +""" +import argparse +from fractions import Fraction as Q +from hashlib import sha256 +import json +from pathlib import Path +import sys + +HERE = Path(__file__).resolve().parent +sys.path.insert(0, str(HERE)) +from dense import DenseSources, FullRoot, NativeProgram +from lowering import DENSE_PREFIX, canonical, need, norm2 +from verify import basis_check, difference, exact_native, rejected, upper_report + + +def identity(E, n): + return E.Mat([[int(i == j) for j in range(n)] for i in range(n)]) + + +def multiply(E, a, b): + return E.Mat([[sum((a[i][k] * b[k][j] for k in range(len(b))), E.C()) + for j in range(len(b[0]))] for i in range(len(a))]) + + +def inverse(E, matrix): + """Separate exact elimination, with both inverse identities checked.""" + n = len(matrix) + rows = [list(row) + list(identity(E, n)[i]) for i, row in enumerate(matrix)] + for column in range(n): + pivot = next(i for i in range(column, n) if rows[i][column] != 0) + rows[column], rows[pivot] = rows[pivot], rows[column] + value = rows[column][column] + rows[column] = [z / value for z in rows[column]] + for i in range(n): + if i != column: + value = rows[i][column] + rows[i] = [a - value * b for a, b in zip(rows[i], rows[column])] + result = E.Mat([row[n:] for row in rows]) + need(multiply(E, matrix, result) == multiply(E, result, matrix) == identity(E, n), + "two exact inverse reference identities") + return result + + +def apply_matrix(E, matrix, vector, indices): + result = E.Vec(vector) + for i, physical in enumerate(indices): + result[physical] = sum((matrix[i][j] * vector[address] + for j, address in enumerate(indices)), E.C()) + return result + + +def operator(E, plan, n): + columns = [E.apply(plan, E.Vec(int(i == j) for i in range(n)))[0] for j in range(n)] + return E.Mat(zip(*columns)) + + +def check_execution(program, vector, reference): + E = program.e + stored = E.apply(program.plan, vector)[0] + output, statistics, trace = program.execute(vector) + need(not trace, "compact execution omits per-stage hashes") + native_error = norm2(difference(output, stored)) + upstream_error = norm2(difference(stored, reference)) + total_error = norm2(difference(output, reference)) + need(native_error <= program.native_error ** 2, "new rounded execution against stored logical program") + need(upstream_error <= (program.upstream_error * program.radius) ** 2, + "source coefficient defect against same exact root") + need(total_error <= program.total_error ** 2, "complete native-to-root error") + return dict(input_sha256=E.vector_hash(vector), stored_output_sha256=E.vector_hash(stored), + output_sha256=E.vector_hash(output), reference_sha256=E.vector_hash(reference), + native_squared_error_upper=upper_report(program.source, native_error, program.native_error ** 2), + upstream_squared_error_upper=upper_report(program.source, upstream_error, + (program.upstream_error * program.radius) ** 2), + total_squared_error_upper=upper_report(program.source, total_error, program.total_error ** 2), + nonzero_native_error=native_error > 0, statistics=statistics) + + +def full_case(source, label, matrix, reverse=False, fine=False): + E, n = source.e, len(matrix) + indices = list(reversed(range(n))) if reverse else list(range(n)) + root = FullRoot(source, matrix, 4, 18, indices) + inverse_matrix = inverse(E, matrix) + incoming = 512 if fine else n.bit_length() + 6 + vector = E.Vec(E.C(Q((3 * i) % 7 - 3, 8 * n), Q((5 * i) % 7 - 2, 8 * n)) + for i in range(n)) + if fine: + vector[indices[0]] += E.C(Q(1, 1 << incoming)) + record = dict(label=label, **root.record(), directions=[]) + for backward, reference_matrix in ((False, matrix), (True, inverse_matrix)): + program = root.lower(backward, incoming) + exact = apply_matrix(E, reference_matrix, vector, indices) + row = dict(inverse=backward, **program.record(), execution=check_execution(program, vector, exact)) + if n <= 2: + row["complete_exact_basis_sha256"] = basis_check(program) + record["directions"].append(row) + print("CHECK_NATIVE_FULL", label, flush=True) + return record + + +def logical_envelopes(source, plan, n): + E, maximum = source.e, Q(1) + for stop in range(len(plan) + 1): + matrix = operator(E, plan[:stop], n) + maximum = max(maximum, source.full.norm_upper(matrix), source.full.norm_upper(inverse(E, matrix))) + return maximum, max(Q(1), source.full.norm_upper(operator(E, plan, n))) + + +def generic_cases(source): + E = source.e + specifications = [ + ("mixed-oriented", 4, [[((3, 0), E.Mat([[1, 0], [E.C(1, 2), 1]])), + ((2,), E.Mat([[E.C(2, -1)]]))], []]), + ("zero-and-tiny", 2, [[((0, 1), E.Mat([[1, 0], [0, 1]]))], + [((1, 0), E.Mat([[1, 0], [E.C(Q(1, 1 << 80), Q(-1, 1 << 81)), 1]]))]]), + ("one-wire-idle", 1, [[]]), + ("empty-program", 4, []), + ] + rows = [] + for label, n, plan in specifications: + prefix, endpoint = logical_envelopes(source, plan, n) + program = NativeProgram(source, n, plan, prefix, endpoint, 1, 18, 512) + vector = E.Vec(E.C(Q(i + 1, 16 * n), Q(-1, 32 * n)) for i in range(n)) + vector[-1] += E.C(Q(1, 1 << 512)) + reference = E.apply(plan, vector)[0] + need(exact_native(source, program.reference_stages, vector) == reference, + "complete generic native endpoint") + rows.append(dict(label=label, **program.record(), complete_exact_basis_sha256=basis_check(program), + execution=check_execution(program, vector, reference))) + return rows + + +def segment_cases(source): + E, records = source.e, [] + for gamma in (1, 16, 1 << 32): + values = (E.C(0), E.C(gamma), E.C(0, -gamma), E.C(Q(1, 1 << 80), Q(-1, 1 << 81))) + for kind in ("upper", "lower"): + for value in values: + word = source.ns["gateword"](kind, value, gamma) + wanted = E.Mat([[1, value], [0, 1]]) if kind == "upper" else E.Mat([[1, 0], [value, 1]]) + need(source.word_endpoint(word) == wanted, "zero-safe exact shear endpoint") + matrices = [] + for i, op in enumerate(word): + if op == "H": + matrices.append(E.Mat([[Q(1, 2), Q(1, 2)], [Q(1, 2), Q(-1, 2)]])) + else: + scale = 2 if i and word[i - 1] == "H" else 1 + matrices.append(E.Mat([[scale * op[0], 0], [0, scale * op[1]]])) + direct, reciprocal, count = Q(0), Q(0), 0 + for start in range(len(matrices)): + product = identity(E, 2) + for matrix in matrices[start:]: + product = multiply(E, matrix, product) + direct = max(direct, source.full.norm_upper(product)) + reciprocal = max(reciprocal, source.full.norm_upper(inverse(E, product))) + count += 1 + need(max(direct, reciprocal) <= 4096 * gamma, "native shear segments and inverse segments") + records.append(dict(kind=kind, gamma=str(gamma), value=value.record(), segments=count, + direct_component_envelope=str(direct), inverse_component_envelope=str(reciprocal))) + return records + + +def endpoint_control(source): + E, q = source.e, 1 << 16 + plan = [[((0, 1), E.Mat([[Q(1, q), 0], [0, q]]))], + [((0, 1), identity(E, 2))], + [((0, 1), E.Mat([[q * q, 0], [0, Q(1, q * q)]]))]] + prefix, endpoint = logical_envelopes(source, plan, 2) + need(prefix == endpoint == q, "exact scaled logical prefix and endpoint bounds") + program = NativeProgram(source, 2, plan, prefix, endpoint, 1, 18, 8) + stop = program.layers[1]["begin"] + 5 + columns = [exact_native(source, program.reference_stages[:stop], E.Vec(int(i == j) for i in range(2))) + for j in range(2)] + partial = E.Mat(zip(*columns)) + c = 2 * q * q + 1 + need(partial == E.Mat([[Q(-5, 4 * c * q), 0], [0, q]]), "actual zero-shear intermediate prefix") + suffix = multiply(E, operator(E, plan, 2), inverse(E, partial)) + suffix_bound = source.full.norm_upper(suffix) + need(suffix_bound == Q(4 * c * q * q, 5) > program.compiled_bound, + "unit-endpoint suffix allowance fails on admitted nonunitary program") + need(suffix_bound <= endpoint * program.compiled_bound, "corrected endpoint suffix allowance") + vector = E.Vec([Q(1, 16), Q(-1, 32)]) + return dict(q=q, logical_prefix=str(prefix), endpoint=str(endpoint), native_prefix=str(program.compiled_bound), + intermediate_sha256=source.matrix_hash(partial), suffix_norm=str(suffix_bound), + ratio_to_invalid_allowance=str(suffix_bound / program.compiled_bound), + execution=check_execution(program, vector, E.apply(plan, vector)[0])) + + +def controls(source): + E, rows = source.e, [] + rows.append(rejected(lambda: FullRoot(source, E.Mat([[0, 1], [1, 0]]), 1, 18), "singular-leading-section")) + rows.append(rejected(lambda: FullRoot(source, E.Mat([[1, 2], [3, 4]]), 1, 18), "non-Toeplitz-root")) + root = FullRoot(source, E.Mat([[E.C(Q(1, 3), Q(1, 7))]]), 1, 18) + forward, backward = root.lower(False, 8), root.lower(True, 8) + vector = E.Vec([Q(1, 16)]) + a = root.plan[0][0][1][0][0] + need(root.inverse_plan[0][0][1][0][0] == 1 / a and a.conjugate() != 1 / a, + "stored reciprocal differs from global adjoint") + rows.append("stored-inverse-requires-reciprocals") + rows.append(rejected(lambda: forward.execute(E.Vec([Q(1, 1 << 9)])), "underdeclared-incoming-grid")) + rows.append(rejected(lambda: forward.execute(E.Vec([2])), "underdeclared-radius")) + rows.append(rejected(lambda: root.lower(False, True), "boolean-incoming-grid")) + rows.append(rejected(lambda: NativeProgram(source, 2, [[((0, 1), E.Mat([[1, 2], [3, 4]]))]], + 16, 16, 1, 18), "unsupported-two-wire-gate")) + rows.append(rejected(lambda: NativeProgram(source, 2, [[((0, 0), identity(E, 2))]], + 1, 1, 1, 18), "duplicate-wire-ownership")) + rows.append(rejected(lambda: NativeProgram(source, 2, [[]], 1, 1, 1, 18, data_bits=8), "underfunded-native-grid")) + rows.append(rejected(lambda: NativeProgram(source, 1, [[((0,), E.Mat([[0]]))]], 1, 1, 1, 18), "zero-scalar")) + rows.append(rejected(lambda: source.ns["u3"](E.C(0)), "unshifted-zero-shear-division")) + z = E.C(1, 2) + lower = source.ns["gateword"]("lower", z, 4) + wrong = [op if op == "H" else tuple(a.conjugate() for a in op) for op in lower] + need(source.word_endpoint(wrong) != source.word_endpoint(lower), "conjugate transpose changes complex lower shear") + rows.append("ordinary-transpose-is-required") + old = root.matrix[0][0] + root.matrix[0][0] += 1 + rows.append(rejected(lambda: forward.execute(vector), "changed-admitted-root")) + root.matrix[0][0] = old + old = root.builder.bound["execution_bound"] + root.builder.bound["execution_bound"] += 1 + rows.append(rejected(lambda: backward.execute(vector), "changed-full-prefix-contract")) + root.builder.bound["execution_bound"] = old + for name in ("lam", "q", "radius", "target"): + old = getattr(root, name) + setattr(root, name, old + 1) + rows.append(rejected(lambda: root.lower(), "changed-root-" + name)) + setattr(root, name, old) + old = root.indices[:] + root.indices[0] = 1 + rows.append(rejected(lambda: root.lower(), "changed-root-wire-order")) + root.indices = old + old = backward.endpoint + backward.endpoint = 1 + rows.append(rejected(lambda: backward.execute(vector), "changed-native-endpoint-envelope")) + backward.endpoint = old + old = root.plan[0][0] + root.plan[0][0] = ((0,), E.Mat([[1]])) + rows.append(rejected(lambda: forward.execute(vector), "changed-stored-logical-plan")) + root.plan[0][0] = old + old = forward.stages[0] + forward.stages[0] = ("D", E.Vec([1])) + rows.append(rejected(lambda: forward.execute(vector), "changed-prepared-diagonal-page")) + forward.stages[0] = old + rows.append(rejected(lambda: DenseSources({DENSE_PREFIX + "full.py": source.raw[DENSE_PREFIX + "full.py"] + b"\n"}), + "changed-frozen-full-source")) + try: + source.raw[DENSE_PREFIX + "full.py"] = b"changed" + except TypeError: + rows.append("authenticated-byte-map-is-read-only") + else: + raise ValueError("authenticated source map accepted a replacement") + need(canonical({"n": 1}) != canonical({"n": True}), "typed dense receipt") + rows.append("typed-receipt") + return rows + + +def run(quick=False): + source = DenseSources() + E = source.e + fixtures = [("complex-scalar", E.Mat([[E.C(Q(1, 3), Q(1, 7))]]), False, False), + ("small-pivot", E.Mat([[Q(1, 1 << 80)]]), False, False), + ("large-scalar", E.Mat([[E.C(1 << 30, -(1 << 28))]]), False, False)] + for n in (2, 4, 8): + matrix = E.Mat([[E.C(1, Q(1, 16)) if i == j else + E.C(Q(-1 if (i - j) % 2 else 1, 32 * n), Q(i - j, 64 * n)) + for j in range(n)] for i in range(n)]) + fixtures.append(("complex-near-identity-" + str(n), matrix, n >= 4, n == 4)) + for n in (2, 4): + fixtures.append(("indefinite-" + str(n), E.Mat([[1 if i == j else 2 if abs(i - j) == 1 else 0 + for j in range(n)] for i in range(n)]), True, False)) + fixtures.append(("half-shift-Gaussian", E.Mat([[Q(1, 2) ** ((i - j) ** 2 - (i - j)) + for j in range(4)] for i in range(4)]), False, False)) + fixtures.append(("unequal-subtrees", E.Mat([[1 if i == j else Q(1, 16) if abs(i - j) == 4 + else Q(1, 32) if abs(i - j) == 5 else 0 + for j in range(8)] for i in range(8)]), False, False)) + fixtures.append(("zero-call-identity-16", identity(E, 16), True, False)) + if quick: + fixtures = [fixtures[0], fixtures[3]] + cases = [full_case(source, *fixture) for fixture in fixtures] + result = dict(schema_version=1, scope="actual conditioned full Toeplitz and stored inverse fixed-H execution", + sources=source.seals, cases=cases, generic_cases=generic_cases(source), + endpoint_factor_control=endpoint_control(source)) + if not quick: + result.update(word_cases=segment_cases(source), controls=controls(source), + actual_full_source_execution=True, native_stage_arithmetic=True, + physical_root_execution=False, physical_tape_execution=False, + complete_tensor_execution=False, dyadic_programs_exact_inverse_pair=False, + independent_transcendental_backend=False, universal_proof_kernel=False) + need(any(d["execution"]["nonzero_native_error"] for row in cases for d in row["directions"]), + "nonzero complete rounded error witness") + return result + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--quick", action="store_true") + parser.add_argument("--write-result", action="store_true") + args = parser.parse_args() + need(not (args.quick and args.write_result), "diagnostic cannot replace complete receipt") + result = run(args.quick) + if args.quick: + print("PASS_NATIVE_FULL_DIAGNOSTIC", len(result["cases"])) + return + path = HERE / "DENSE-RESULT.json" + if args.write_result: + path.write_text(json.dumps(result, indent=2) + "\n") + else: + need(canonical(result) == canonical(json.loads(path.read_text())), "complete typed conditioned native receipt") + directions = [d for row in result["cases"] for d in row["directions"]] + print(json.dumps(dict(status="PASS_CONDITIONED_TOEPLITZ_FIXED_H", cases=len(result["cases"]), + directions=len(directions), generic_cases=len(result["generic_cases"]), + word_cases=len(result["word_cases"]), controls=len(result["controls"]), + native_stages=sum(d["counts"]["primitive_stages"] for d in directions), + rounded_outputs=sum(d["execution"]["statistics"]["complex_roundings"] for d in directions), + result_sha256=sha256(canonical(result)).hexdigest()), sort_keys=True)) + + +if __name__ == "__main__": + main() From ac14c1409c261d64d9856a5a473d8b7f2be8c302 Mon Sep 17 00:00:00 2001 From: Jose Manuel <118126596+jmbarrancoml@users.noreply.github.com> Date: Wed, 21 Oct 2026 00:27:46 +0200 Subject: [PATCH 5/5] Retry hosted checks after temporary Git cleanup failure