Skip to content

ImpairmentsOptical ​

Fibre and transmitter impairments with an excess-noise form

19/19 passed in 799ms

TestWhat it doesResult
test_carrier_beatTwo declared carriers move v_err through q.LocalLO.beat(laser), one carrier alone is refused naming the other end, and an offset past Nyquist is refused.✅ pass
test_charged_both_pathsEvery Gaussian-modulation impairment raises the budget and costs key on both paths, less sampled than closed (1.33e-2 against 1.89e-2 bit/symbol at 25 km, four channels), and 1, 2, 4, 8 channels give a rising total and a falling rate.✅ pass
test_charged_off_pipelineOne measurement claims with and without impairment rows on the same recovered channel, xi_claimed sitting above est.xi when charged and equal to it when not.✅ pass
test_coherence_formcoherence(lw, tau) equals exp(-pilwtau) and exp(-V/2) to 1e-15 (lw in Hz, tau in s), the mean cosine of 200000 phase draws to 5e-3, squares when tau doubles, and reads 0.9690724263048106 at 10 kHz over 1 us.✅ pass
test_demux_cancelsraman_photons is linear in the demux (Kumar Eq. (6)'s eta_D), raman divides it back out to 1e-15, and q.Link refuses a demux other than 1.0.✅ pass
test_dephasing_formimpairments.dephasing is budget.phase's estimator form, 6.2871e-3 SNU at 20 kHz over 10 ns (V_phi = 1.257e-3 rad^2) against the literature form's smaller 6.2812e-3, and q.Dephasing charges that row.✅ pass
test_drift_still_runsq.Polarisation and q.Modulator carrying only charged fields reach the budget as polarisation and imbalance.✅ pass
test_dropped_rowsA PMD coefficient and a modulator extinction ratio are refused by name on a quadrature link and still reported by security() as dgd and extinction.✅ pass
test_fading_costs_rateOn a noiseless T = 0.5, leaving the transmittance unattenuated over-claims the rate by 0.83%, 3.34% and 22.16% at j/w = 0.1, 0.2 and 0.5, and 0.07%, 0.42% and 1.68% at a polarisation drift of 0.02, 0.05 and 0.1 rad.✅ pass
test_fading_identityfading_factor is the transmittance half of polarisation() and timing() (1.0 undescribed, <sqrt(eta)>^2 per row, their product for both), and q.Link closes T_claimed*(V_A + xi) = TV_A<eta> to 1e-14, where the noise half alone reads 2.50003094 against 2.48759298 at j/w = 0.1.✅ pass
test_fading_noisePolarisation noise is zero when aligned and rises as V_As^4/2 (Usenko's fading identity), and sampling-jitter noise is zero at zero jitter, depends on j/w alone and rises as V_Au^2/8 with u = (j/w)^2.✅ pass
test_imbalance_anchorPublished anchor, fitted V_A = 5.25 SNU: arXiv:2503.10168 Eq. (E1) at d = 1 reproduces their 0.02 SNU imbalance noise "within a deviation angle range of +/- 5 degrees", zero for a balanced modulator, rising with imbalance and bias, and under 1e-4 SNU at their measured d = 0.9937 and V_A = 5.✅ pass
test_omitted_hardwareAn undescribed row emits no entry, a perfect modulator emits 0.0, entries keep catalogue order, and V_A or T out of range or a Raman entry without a fibre length is refused.✅ pass
test_raman_anchorPublished anchor: Kumar, Qin and Alleaume (arXiv:1412.1403) Eq. (6) at 0 dBm, 25 km, beta = 3e-9 /(km nm), 1531.12 nm and 0.5 dB add/drop reproduces their 1.3e-3 SNU forward and 1.6e-3 backward at Bob to 3%.✅ pass
test_raman_growthRaman xi grows monotonically with launch power and linearly with channel count.✅ pass
test_raman_planeThe Raman entry reads xi_input = xi_Bob / T, and the demux cancels between Kumar Eqs. (6) and (7).✅ pass
test_rayleigh_saturatesThe Rayleigh return fraction rises with length to coeff/(alpha v_g), about -31 dB for SMF-28 at 1550 nm and less for ULL (arXiv:2407.08009), and q.Backscatter charges assemble_extra's row alone, input-referred noise unmoved by a receive coupling and raised by exactly the decibels of a launch coupling.✅ pass
test_rin_chargedA declared RIN and detection bandwidth emit rin_sig and rin_lo rows matching explain's, xi_total rises with RIN, and -100 dBc/Hz leaves no key.✅ pass
test_rin_halfA RIN without a detection bandwidth, or a bandwidth without a RIN, is refused naming the missing end.✅ pass