What you’ll build in this tutorial
A complete numerical baseline solution from one real Qelaro execution: every observation, matrix, and diagnostic remains inspectable.
One epoch, fully traced
Start with two receivers observing the same GPS satellites. Subtract within each receiver, then between receivers, to isolate the relative geometry. Build the covariance alongside the observations, solve float unknowns, search integer ambiguities, and inspect the constrained result.
Numbers before abstraction: first G04 relative to G09, then the full system.
Double-difference processing pipeline
Inputs and sign convention
2024-11-14 09:00:00 GPS. GPS L1, C1C metres, L1C cycles. λ = 0.19029367279836487 m/cycle.
Where this lesson ends
Candidate baseline length: 810.359239 m. Integer candidate: [13, 7, 27, 1]. Ratio diagnostic: 1.445276.
1. Problem and model
Code measures a travel-time-based distance. Carrier phase measures a fractional wave plus an unknown whole-cycle count; multiplying by wavelength expresses it in metres.
Code pseudorange
Code gives the distance scale without a whole-cycle ambiguity, but is noisier than phase.
Carrier phase in metres
Phase is precise, but the integer N must be estimated. The ionosphere enters code and phase with opposite signs.
Read the observation equation
| Symbol | Meaning | Unit |
|---|---|---|
| r / s | receiver / satellite | — |
| ρ | exact geometric range ‖satellite − receiver‖ | m |
| c | speed of light, 299792458 | m/s |
| δtᵣ / δtˢ | receiver / satellite clock offset | s |
| T / I | tropospheric / ionospheric delay | m |
| λ / Φ | wavelength / measured phase | m/cycle / cycle |
| N | whole-cycle ambiguity | cycle |
| ε | measurement noise and remaining error | m |
2. Input data (RINEX)
Read the real observation files, extract the shared epoch, and propagate broadcast navigation parameters to satellite states.
Base observations · 36.24O
RINEX 3.02. The first GPS observation fields are C1C (m), then L1C (cycles); trailing digits encode signal quality.
3.02 OBSERVATION DATA M (MIXED) RINEX VERSION / TYPE 3246705.6964 4052996.6836 3692516.1666 APPROX POSITION XYZ G 16 C1C L1C D1C S1C C2W L2W D2W S2W C2S L2S D2S S2S C5Q SYS / # / OBS TYPES > 2024 11 14 09 00 0.0000000 0 39 0.000000000000 G04 21325621.891 8 112066897.717 8 -1691.258 8 48.383 8 21325630.250 9 87324885.628 9 -1317.838 9 56.226 9 21325630.336 8 87324885.635 8 -1317.857 8 53.559 8 21325634.332 8 83686366.378 8 -1262.959 8 51.124 8 G09 20149741.844 8 105887607.793 8 -95.203 8 52.968 8 20149748.410 9 82509850.730 9 -74.205 9 56.226 9 20149748.785 9 82509851.734 9 -74.146 9 54.030 9 20149749.148 9 79071943.958 9 -70.984 9 54.060 9
Rover observations · 15.24O
RINEX 3.02. The first GPS observation fields are C1C (m), then L1C (cycles); trailing digits encode signal quality.
3.02 OBSERVATION DATA M (MIXED) RINEX VERSION / TYPE 3246374.5864 4052665.3939 3693176.0609 APPROX POSITION XYZ G 16 C1C L1C D1C S1C C2W L2W D2W S2W C2S L2S D2S S2S C5Q SYS / # / OBS TYPES > 2024 11 14 09 00 0.0000000 0 33 0.000000000000 G04 21325674.301 8 112067164.390 8 -1691.398 8 51.422 8 21325680.582 9 87325076.873 9 -1318.094 9 56.226 9 21325680.453 9 87325081.886 9 -1318.113 9 54.067 9 21325684.051 8 83686546.923 8 -1262.975 8 52.228 8 G09 20149603.512 8 105886884.690 8 -95.852 8 52.498 8 20149608.793 9 82509277.969 9 -74.344 9 56.226 9 20149609.379 8 82509273.972 8 -74.344 8 53.030 8 20149608.891 8 79071387.938 8 -71.197 8 53.381 8
Convert cycles into metres
Base G04 phase
The phase is now in the same length unit as code. This does not remove its integer ambiguity.
Base navigation · 36.24N
Actual G04 broadcast ephemeris excerpt. D denotes a decimal exponent. These parameters feed the Kepler propagation, not the final DD solver directly.
3.02 N: GNSS NAV DATA G: GPS RINEX VERSION / TYPE
G04 2024 11 14 10 00 00 0.479244161397D-03 0.648014975013D-11 0.000000000000D+00
0.115000000000D+03 0.178125000000D+02 0.498413618071D-08-0.136268651039D+00
0.728294253349D-06 0.314607680775D-02 0.479444861412D-05 0.515367835236D+04
0.381600000000D+06 0.745058059692D-08 0.114317989652D+01 0.167638063431D-07
0.965789022041D+00 0.288125000000D+03-0.300042464309D+01-0.830748889740D-08
0.106790162525D-09 0.100000000000D+01 0.234000000000D+04 0.000000000000D+00
0.200000000000D+01 0.000000000000D+00-0.465661287308D-08 0.115000000000D+03
0.374406000000D+06 0.400000000000D+01 0.000000000000D+00 0.000000000000D+00
Rover navigation · 15.24N
Actual G04 broadcast ephemeris excerpt. D denotes a decimal exponent. These parameters feed the Kepler propagation, not the final DD solver directly.
3.02 N: GNSS NAV DATA G: GPS RINEX VERSION / TYPE
G04 2024 11 14 10 00 00 0.479244161397D-03 0.648014975013D-11 0.000000000000D+00
0.115000000000D+03 0.178125000000D+02 0.498413618071D-08-0.136268651039D+00
0.728294253349D-06 0.314607680775D-02 0.479444861412D-05 0.515367835236D+04
0.381600000000D+06 0.745058059692D-08 0.114317989652D+01 0.167638063431D-07
0.965789022041D+00 0.288125000000D+03-0.300042464309D+01-0.830748889740D-08
0.106790162525D-09 0.100000000000D+01 0.234000000000D+04 0.000000000000D+00
0.200000000000D+01 0.000000000000D+00-0.465661287308D-08 0.115000000000D+03
0.376896000000D+06 0.400000000000D+01 0.000000000000D+00 0.000000000000D+00
NAV → transmit time → ECEF → LOS
The Qelaro wrench path estimates signal transmit time from code and broadcast clock information, selects ephemeris, and propagates satellite ECEF coordinates. For base G04:
Epoch satellite state
The signal time difference above is from the traced path; it is not simply P/c. Its clock handling belongs to satellite-state propagation.
NAV orbit tracks
Oblique ECEF projection, not a skyplot. NAV propagated every 120 s over ±30 min; large dots show epoch GPS time. DD states use signal transmit time instead.
A numeric line of sight
The design model uses base-frame satellite states and the fixed rover coordinates, exactly as geometry_row does. Normalize the ECEF difference to obtain u.
G04: three subtractions, a norm, three divisions
A unit direction is dimensionless. Rotate a receiver-specific LOS to ENU; azimuth = atan2(E,N), elevation = asin(U). The receiver-frame Az/El determines weights and reference choice.
All satellite states at transmit time
| Receiver | PRN | t transmit | X | Y | Z | Az | El |
|---|---|---|---|---|---|---|---|
| Base | G04 | 377999.928386 | 846359.717514 | 24131563.233674 | 10905032.092228 | 99.187117 | 47.102246 |
| Base | G07 | 377999.929523 | 16535451.776103 | 9559024.856856 | 19168552.314801 | 307.453856 | 65.599553 |
| Base | G08 | 377999.921132 | -5883706.490332 | 25640105.566921 | 582780.305009 | 113.553399 | 17.923853 |
| Base | G09 | 377999.932345 | 8585785.851513 | 17860591.721371 | 17557100.591124 | 55.056628 | 74.419671 |
| Base | G16 | 377999.921858 | -10291804.145127 | 11037476.839404 | 21489206.413478 | 42.581565 | 19.597189 |
| Base | G20 | 377999.920802 | 14572581.830868 | -7889378.980343 | 20804966.630072 | 313.072698 | 19.924584 |
| Base | G30 | 377999.925168 | 24270697.178789 | 1612147.408554 | 11130157.986078 | 268.557928 | 36.899820 |
| Rover | G04 | 377999.928386 | 846359.717622 | 24131563.233453 | 10905032.092712 | 99.198397 | 47.101383 |
| Rover | G07 | 377999.929523 | 16535451.774717 | 9559024.857325 | 19168552.315762 | 307.436441 | 65.604710 |
| Rover | G09 | 377999.932345 | 8585785.851206 | 17860591.722367 | 17557100.590263 | 55.084021 | 74.425578 |
| Rover | G16 | 377999.921860 | -10291804.148830 | 11037476.835244 | 21489206.413922 | 42.584842 | 19.603357 |
| Rover | G30 | 377999.925168 | 24270697.179019 | 1612147.408434 | 11130157.985592 | 268.550240 | 36.899059 |
3. Satellite selection
A double difference needs both receivers to observe the target and the reference at the same epoch.
Common-satellite filtering
Base · 7 satellites
∩ Rover · 5 satellites
= Common · 5 satellites
G08 and G20 disappear because no usable matching rover observation exists in this epoch. They cannot form DD pairs.
Choose the highest common base elevation
| Satellite | Base elevation (°) | Rover elevation (°) | Selection |
|---|---|---|---|
| G04 | 47.102246 | 47.101383 | Selected target |
| G07 | 65.599553 | 65.604710 | Selected target |
| G09 | 74.419671 | 74.425578 | ★ Reference |
| G16 | 19.597189 | 19.603357 | Selected target |
| G30 | 36.899820 | 36.899059 | Selected target |
Maximum over the intersection
A high-elevation reference has smaller assumed measurement noise. G09 is reused in every DD, so its noise will also create correlations.
Skyplot / reference selection
Zenith is at the center. Radius = 90° − elevation. Dashed ring: 15° mask. G09 ★ is the selected reference.
4. Single differences from scratch
At one receiver, subtract reference G09 from target G04. This is satellite-to-satellite differencing, not a between-receiver single difference.
Same receiver, two satellites
Both measurements contain the same receiver-clock term cδtᵣ, so it cancels. The satellite-clock difference remains until the second subtraction.
Code worked example: G04 − G09
Base code SD
Rover code SD
The similar million-metre SDs mostly describe the satellite geometry. Their difference will be only hundreds of metres.
Phase worked example: cycles first
Base phase SD
Rover phase SD
The trace converts each phase observation before differencing. Subtracting cycles first is algebraically equivalent but can differ by a few nanometres in floating-point arithmetic.
All single differences in the trace
| Target | Base code SD | Rover code SD | Base phase SD | Rover phase SD |
|---|---|---|---|---|
| G04 | 1175880.047000 | 1176070.789000 | 1175879.774924 | 1176068.123034 |
| G07 | 984870.074000 | 984818.992000 | 984870.257671 | 984817.818253 |
| G08 | 3370389.133000 | No matching rover | 3370393.154134 | No matching rover |
| G16 | 3315272.558000 | 3314817.668000 | 3315272.828546 | 3314813.173228 |
| G20 | 3482779.679000 | No matching rover | 3482778.495685 | No matching rover |
| G30 | 2368905.371000 | 2369098.687000 | 2368905.139357 | 2369098.361649 |
Single-difference observation view
The numerical values are available in the accompanying tables. The interactive chart loads as you approach it.
What one subtraction achieves
5. Double differences and differencing matrix
Subtract rover SD from base SD. The same reference G09 appears in each pair; retain the exact sign convention throughout the observations and covariance.
Double-difference definition
Under simultaneous observations, the satellite-clock terms remaining in the SD cancel between receivers. Atmospheric and orbit effects are only reduced according to how correlated they are.
Worked G04 double differences
Code DD
Phase DD
Phase − code = 2.393889714 m. This contains ambiguity plus code/phase noise and remaining model differences; it is not ambiguity alone.
All real DD observations
| Target | Code DD | Phase DD | Phase − code |
|---|---|---|---|
| G04 | -190.742000 | -188.348110 | 2.393890 |
| G07 | 51.082000 | 52.439418 | 1.357418 |
| G16 | 454.890000 | 459.655318 | 4.765318 |
| G30 | -193.316000 | -193.222292 | 0.093708 |
DD observation plots
The numerical values are available in the accompanying tables. The interactive chart loads as you approach it.
Differencing matrix D · exact 8 × 20 structure
Stack the 20 independent undifferenced observations in the exported order. A row of D selects four measurements; every other coefficient is zero. Phase and code rows alternate for G04, G07, G16, G30.
| Row / column | B G04 Φ | R G04 Φ | B G09 Φ | R G09 Φ | B G04 P | R G04 P | B G09 P | R G09 P | B G07 Φ | R G07 Φ | B G07 P | R G07 P | B G16 Φ | R G16 Φ | B G16 P | R G16 P | B G30 Φ | R G30 Φ | B G30 P | R G30 P |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| G04 phase | ||||||||||||||||||||
| G04 code | ||||||||||||||||||||
| G07 phase | ||||||||||||||||||||
| G07 code | ||||||||||||||||||||
| G16 phase | ||||||||||||||||||||
| G16 code | ||||||||||||||||||||
| G30 phase | ||||||||||||||||||||
| G30 code |
G04 phase × B G04 Φ = 1
Show full mathematical matrix
G04 phase: row-by-column product
This is the same DD as the SD subtraction. Round-off may affect the last few nanometres if four large phase values are combined in a different arithmetic order.
6. Linear design matrix
Linear baseline-domain DD model with LOS vectors fixed at the lesson epoch. The exact range norm is nonlinear in receiver coordinates; double differencing does not make it exactly linear.
Freeze the LOS, then construct H
Evaluate satellite states and LOS at the approximate/fixed coordinates. Under this frozen, first-order baseline representation, y = Hx + ε is linear in the baseline components and ambiguity states.
Row-by-row geometry walkthrough
Target unit LOS = [-0.111787951, 0.935235390, 0.335914005]. Reference G09 = [0.263253170, 0.680782993, 0.683543916]. Both use the same fixed rover origin.
−uG04 + uG09
Each coefficient tells how a metre of baseline along that ECEF axis changes the modelled DD.
Phase row versus code row
Rows above: G04 phase, then code. Place λ = 0.19029367279836487 m/cycle only in this target’s ambiguity column. Code has no carrier integer ambiguity, so all four ambiguity coefficients are zero.
Full design matrix and observation vector
| Row / column | dX | dY | dZ | N04 | N07 | N16 | N30 |
|---|---|---|---|---|---|---|---|
| G04 phase | |||||||
| G04 code | |||||||
| G07 phase | |||||||
| G07 code | |||||||
| G16 phase | |||||||
| G16 code | |||||||
| G30 phase | |||||||
| G30 code |
G04 phase × dX = 0.375041121025931
Show full mathematical matrix
Show y and explicit ordering
| Row | Value |
|---|---|
| G04 phase | -188.3481102884 |
| G04 code | -190.7420000024 |
| G07 phase | 52.4394177087 |
| G07 code | 51.0819999985 |
| G16 phase | 459.6553181112 |
| G16 code | 454.8899999969 |
| G30 phase | -193.2222924232 |
| G30 code | -193.3160000034 |
One complete H row × x example
G04 phase prediction using the float state
Sum all seven products. Predicted DD plus the post-fit residual equals the observed −188.34811028838158 m. H is now ready, but observations are correlated: solve using R_DD, not equal independent weights.
7. Stochastic model and DD covariance
Measurements have different precision. Low elevation increases the assumed noise, and a shared reference makes double differences correlated.
Elevation-dependent observation variance
Nominal phase σ₀ = 0.006 m; code σ₀ = 0.7 m. Use the receiver-specific satellite elevation E in degrees.
Base G04 phase weighting
Lower elevation increases σ and decreases weight. The floor 0.25 avoids unbounded noise near the horizon.
From independent UD to correlated DD
Assume the 20 undifferenced code/phase measurements are independent in this lesson. R_UD is diagonal in m². Differencing propagates their noise using the same D as the observations.
For one entry, take row i of D R_UD and column j of Dᵀ: sum Dᵢₖ · σₖ² · Dⱼₖ across the 20 columns. Most products are zero.
Worked diagonal: G04 phase variance
Four nonzero products
Convert variance to standard deviation
Squaring the signs makes all four independent variance contributions positive.
Off-diagonal covariance: shared G09
Only the two shared reference columns overlap
Correlation coefficient
Reusing the reference observations couples DD errors even when their target measurements are independent.
DD covariance heatmap
| Row / column | G04 phase | G04 code | G07 phase | G07 code | G16 phase | G16 code | G30 phase | G30 code |
|---|---|---|---|---|---|---|---|---|
| G04 phase | ||||||||
| G04 code | ||||||||
| G07 phase | ||||||||
| G07 code | ||||||||
| G16 phase | ||||||||
| G16 code | ||||||||
| G30 phase | ||||||||
| G30 code |
G04 phase × G04 phase = 0.0002117611807503912 m² · correlation = 1.000000
Show full mathematical matrix
Phase and code alternate. Nonzero off-diagonals form same-observable blocks; phase/code cross-covariances are zero under this model. Select a cell for exact covariance and correlation.
Undifferenced covariance diagonal
| UD observation | Variance |
|---|---|
| phase:base:G04 | 0.0000670818 |
| phase:rover:G04 | 0.0000670837 |
| phase:base:G09 | 0.0000387990 |
| phase:rover:G09 | 0.0000387967 |
| code:base:G04 | 0.9130578916 |
| code:rover:G04 | 0.9130834640 |
| code:base:G09 | 0.5280969785 |
| code:rover:G09 | 0.5280666260 |
| phase:base:G07 | 0.0000434081 |
| phase:rover:G07 | 0.0000434045 |
| code:base:G07 | 0.5908320790 |
| code:rover:G07 | 0.5907838345 |
| phase:base:G16 | 0.0003200092 |
| phase:rover:G16 | 0.0003198158 |
| code:base:G16 | 4.3556813318 |
| code:rover:G16 | 4.3530484264 |
| phase:base:G30 | 0.0000998609 |
| phase:rover:G30 | 0.0000998644 |
| code:base:G30 | 1.3592179401 |
| code:rover:G30 | 1.3592659944 |
Show full 20 × 20 R_UD
8. Float solution (weighted least squares)
Solve the 8-observation, 7-unknown system without forming a matrix inverse or squaring its condition number through normal equations.
Cholesky → whitening → QR → solution
Cholesky handles measurement correlation; triangular solves whiten H and y. Reduced QR supplies an upper-triangular R and the transformed right-hand side. Back substitution yields the baseline and float ambiguities.
1. Verify the Cholesky factors
First diagonal and a shared-reference entry
The positive off-diagonal covariance creates a nonzero lower-triangular coefficient.
Show full L (8 × 8)
2. Whiten by triangular solve
Solve L · y_w = y row by row, and L · H_w = H for each column. The inverse notation is explanatory; no inverse is computed.
First phase observation and first H coefficient
A later phase row subtracts the shared-reference contribution already carried by earlier rows. Whitening is more than dividing every DD by its own sigma.
Original and whitened system
Original H and y
Show full whitened H_w (8 × 7) and y_w (8 × 1)
3. QR and back substitution
Reduced Q is 8 × 7, R is 7 × 7, and b = Qᵀy_w is 7 × 1. The unused orthogonal residual direction accounts for one degree of freedom.
One Qᵀ row-by-column product
Show R_QR, Q, and actual Qᵀy_w
Numerical back substitution: every unknown, last row first
Float solution: baseline + ambiguities
| Unknown | Float value | Formal σ | Unit |
|---|---|---|---|
| dX | 329.964491207 | 2.554462048 | m |
| dY | 331.829789367 | 2.903071546 | m |
| dZ | -661.716860707 | 3.380692046 | m |
| N04 | 12.449682739 | 6.668804648 | cycles |
| N07 | 6.983324467 | 3.907815928 | cycles |
| N16 | 25.001732843 | 16.319926290 | cycles |
| N30 | 0.480403785 | 10.195412531 | cycles |
Exact solution vector
Conditioning and degrees of freedom
Float means the four ambiguity states are real numbers, not yet constrained to integers.
4. Formal state covariance
Compute the factors with triangular solves. This is covariance under the declared measurement model, without rescaling by the tiny post-fit variance factor.
Construct Q_xx from triangular covariance factors
First baseline sigma
Full Q_xx (7 × 7), including baseline–ambiguity correlations
The lower-right 4 × 4 block Q_NN is the ambiguity covariance passed into LAMBDA.
5. Post-fit residuals
The numerical values are available in the accompanying tables. The interactive chart loads as you approach it.
Why phase residuals are nearly zero
G04 code residual
9. LAMBDA ambiguity fixing
Find the closest integer vector under the full correlated ambiguity covariance, rather than rounding each component independently.
Float ambiguity vector
Ordering: N04, N07, N16, N30, all relative to G09. These real-valued estimates include substantial covariance and cannot be judged one component at a time.
| Row / column | N04 | N07 | N16 | N30 |
|---|---|---|---|---|
| N04 | ||||
| N07 | ||||
| N16 | ||||
| N30 |
N04 × N04 = 44.472955436810025
Show full mathematical matrix
Integer least squares versus naive rounding
| Candidate | Integer vector | Squared norm |
|---|---|---|
| Best LAMBDA | [13, 7, 27, 1] | 0.067325666147 |
| Second | [11, 7, 22, -1] | 0.097304202353 |
| Naive rounding | [12, 7, 25, 0] | 0.163160530559 |
Naive squared norm: derived from exported Q_NN
This value is derived from the package inputs, not an additional raw exported result. Solve Q_NN · w = (a − n_round), then dot the error with w.
Weighted four-dimensional distance
The full correlated metric makes this larger than both exported LAMBDA candidate norms. No explicit covariance inverse is needed.
LAMBDA integer transformation
| Row / column | 1 | 2 | 3 | 4 |
|---|---|---|---|---|
| N04 | ||||
| N07 | ||||
| N16 | ||||
| N30 |
N04 × column 1 = 17
Show full mathematical matrix
det(Z) = +1. An integer unimodular transformation preserves the integer lattice while reducing covariance correlation for search.
First transformed ambiguity: column 1 of Z × a
All four z entries and Q_z
Candidates in ambiguity space
The full covariance sets the scale. The close view separates the actual candidates without distorting either axis.
Equal axis scales. The dashed ellipse is a 1σ contour of the N04/N16 marginal covariance, not a validation boundary or the full 4D search region. A shorter distance in this projection does not determine the best candidate; ranking uses the complete Q_NN.
Independent rounding can choose a poorer candidate because the objective depends on all four ambiguities and their correlations.
Search and back-transform
The Qelaro lambda_method path decorrelates the float ambiguities and performs integer search in z-space. The covariance metric guides enumeration and pruning; it is not a nearest-point search in a two-dimensional picture.
| Candidate | z candidate | Original n | Norm |
|---|---|---|---|
| Best | [400, -157, -164, -190] | [13, 7, 27, 1] | 0.067325666147 |
| Second | [400, -158, -165, -191] | [11, 7, 22, -1] | 0.097304202353 |
Verify the best and second full 4D squared norms numerically
Show integer back-transform and first row product
For the full algorithmic decorrelation and search walkthrough, continue to the LAMBDA Method tutorial →.
Ratio diagnostic
Second / best squared norm
10. Candidate-fixed solution and baseline
Hold [N04,N07,N16,N30] = [13,7,27,1] and estimate the three baseline components using the same full R_DD.
Remove integer phase contributions
G04 phase adjusted observation
Code rows do not change. Only the phase ambiguity contributions are subtracted; all eight observations and their covariance remain.
Whiten and QR the three-column system
First candidate-fixed whitening and last QR row
Full H_xyz,w (8 × 3), whitened y, QR R and right-hand side
Numerical back substitution: every unknown, last row first
Baseline vector: rover → base
| Axis | Baseline (m) | Formal σ (m) |
|---|---|---|
| X | 329.63936360562 | 0.02189458470 |
| Y | 331.51136991397 | 0.02488255636 |
| Z | -661.90648732284 | 0.02897629598 |
Baseline length
Base ECEF: fixed rover + baseline
| Axis | Fixed rover | + baseline | = estimated base |
|---|---|---|---|
| X | 3246374.5864 | 329.639363606 | 3246704.225763605 |
| Y | 4052665.3939 | 331.511369914 | 4052996.905269914 |
| Z | 3693176.0609 | -661.906487323 | 3692514.154412677 |
Formal covariance and baseline-length uncertainty
| Row / column | X | Y | Z |
|---|---|---|---|
| X | |||
| Y | |||
| Z |
X × X = 0.0004793728393903604
Show full mathematical matrix
Length variance: full covariance propagation
11. Results and statistical diagnostics
A fit must be interpreted against its stochastic assumptions. Neither small residuals nor small formal covariance prove that the position or integer candidate is correct.
Post-fit double-difference residuals
The numerical values are available in the accompanying tables. The interactive chart loads as you approach it.
All exact float and candidate-fixed residuals
Formal conditional precision
The numerical values are available in the accompanying tables. The interactive chart loads as you approach it.
| Axis | Float | Candidate-fixed |
|---|---|---|
| X | 2.554462 | 0.021895 |
| Y | 2.903072 | 0.024883 |
| Z | 3.380692 | 0.028976 |
Chi-square: whitened residual energy
A two-sided 95% consistency interval uses χ² quantiles at 0.025 and 0.975 for ν degrees of freedom. Too little residual energy is also inconsistent with the declared model.
Numerical sum of squared whitened residuals
Float chi-square · DOF 1
χ² = 0.0004832536841015236 · DOF = 1. Interval [0.0009820691171752555, 5.02388618731489]. Two-sided consistency: below lower bound.
Candidate-fixed chi-square · DOF 5
χ² = 0.06780891982717298 · DOF = 5. Interval [0.8312116134866626, 12.832501994030023]. Two-sided consistency: below lower bound.
12. What this lesson proves — and what it does not
The full numerical path is reproducible. Its conclusions are conditional on a deliberately small, one-epoch teaching model.
This lesson demonstrates
- ✓Real one-epoch RINEX processing
- ✓Broadcast NAV satellite propagation
- ✓Common satellite and reference selection
- ✓Satellite-to-satellite single differences
- ✓Between-receiver double differences
- ✓H construction with fixed LOS vectors
- ✓D construction and covariance propagation
- ✓Correlated R_DD and Cholesky whitening
- ✓QR weighted least squares and float ambiguities
- ✓LAMBDA candidate search
- ✓Constrained candidate-fixed baseline
- ✓Residual and chi-square diagnostics
These claims are not proven
- ×Validated multi-epoch PPK performance
- ×Production ambiguity fixing reliability
- ×Cycle-slip management over time
- ×Reference-change continuity
- ×External absolute coordinate accuracy
- ×Full atmospheric / antenna correction validation
- ×Equivalence to a complete production RTKLIB solution
- ×Centimetre external accuracy
Resources and numerical provenance
Use the immutable exports to check the numbers independently, then continue through the related tutorials.