exact_scalar
Exact scalar arithmetic for ZX-calculus phase computations.
Implements exact arithmetic for complex numbers of the form
(a + be^(ipi/4) + ci + de^(-i*pi/4)) * 2^power
This representation enables exact computation of phases in ZX-calculus graphs without floating-point errors.
ExactScalarArray
ExactScalarArray(coeffs: Array, power: Array | None = None)
Bases: Module
flowchart TD
tsim.core.exact_scalar.ExactScalarArray[ExactScalarArray]
click tsim.core.exact_scalar.ExactScalarArray href "" "tsim.core.exact_scalar.ExactScalarArray"
Exact scalar array for ZX-calculus phase arithmetic using dyadic representation.
Represents values of the form (c_0 + c_1·ω + c_2·ω² + c_3·ω³) × 2^power where ω = e^(iπ/4). This enables exact computation without floating-point errors.
Attributes:
| Name | Type | Description |
|---|---|---|
coeffs | Array | Array of shape (..., 4) containing dyadic coefficients. |
power | Array | Array of powers of 2 for scaling. |
The value represented is (c_0 + c_1omega + c_2omega^2 + c_3omega^3) * 2^power where omega = e^{ipi/4}.
Source code in src/tsim/core/exact_scalar.py
62 63 64 65 66 67 68 69 70 71 72 | |
__mul__
__mul__(other: ExactScalarArray) -> ExactScalarArray
Element-wise multiplication.
Source code in src/tsim/core/exact_scalar.py
74 75 76 77 78 | |
prod
prod(axis: int = -1) -> ExactScalarArray
Compute product along the specified axis using associative scan.
Returns identity (1+0i with power 0) for empty reductions.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
axis | int | The axis along which to compute the product. | -1 |
Returns:
| Type | Description |
|---|---|
ExactScalarArray | ExactScalarArray with the product computed along the axis. |
Source code in src/tsim/core/exact_scalar.py
120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 | |
reduce
reduce() -> ExactScalarArray
Reduce power by dividing coefficients by 2 while they are all even.
Source code in src/tsim/core/exact_scalar.py
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 | |
sum
sum() -> ExactScalarArray
Sum elements along the last axis (axis=-2).
Aligns powers to the minimum power before summing.
Source code in src/tsim/core/exact_scalar.py
106 107 108 109 110 111 112 113 114 115 116 117 118 | |
to_complex
to_complex() -> jax.Array
Convert to complex number.
Source code in src/tsim/core/exact_scalar.py
152 153 154 155 156 | |