{
  "title_fa": "اجرای گام‌به‌گام LAMBDA روی مثال سه‌ابهامی",
  "input_file": "inputs/synthetic_three_ambiguities.json",
  "unit_contract": {
    "float_ambiguities": "cycle",
    "covariance": "cycle^2"
  },
  "steps": [
    {
      "step": 1,
      "code_location": "input JSON",
      "action_fa": "خواندن ورودی؛ a_hat بر حسب cycle و Q_aa بر حسب cycle² است.",
      "output": {
        "description_fa": "مثال آموزشی مستقل با سه ابهام فاز شناور؛ واحد بردار ابهام چرخه و واحد ماتریس کوواریانس چرخه مربع است.",
        "float_ambiguities_cycles": [
          1.23,
          5.78,
          -2.41
        ],
        "covariance_cycles_squared": [
          [
            0.04,
            0.01,
            0.0
          ],
          [
            0.01,
            0.09,
            0.02
          ],
          [
            0.0,
            0.02,
            0.06
          ]
        ],
        "n_candidates": 2
      }
    },
    {
      "step": 2,
      "code_location": "validation.py:10-17",
      "action_fa": "تعداد نامزدها به عدد صحیحِ مثبت تبدیل و تأیید شد.",
      "output": 2
    },
    {
      "step": 3,
      "code_location": "validation.py:33-70",
      "action_fa": "بردار به ستون n×1 تبدیل شد؛ تقارن و مثبت‌معین بودن Q با Cholesky تأیید شد.",
      "output": {
        "ambiguity_column": [
          [
            1.23
          ],
          [
            5.78
          ],
          [
            -2.41
          ]
        ],
        "covariance": [
          [
            0.04,
            0.01,
            0.0
          ],
          [
            0.01,
            0.09,
            0.02
          ],
          [
            0.0,
            0.02,
            0.06
          ]
        ],
        "cholesky_lower": [
          [
            0.2,
            0.0,
            0.0
          ],
          [
            0.05,
            0.2958039891549808,
            0.0
          ],
          [
            0.0,
            0.06761234037828133,
            0.23543273227945902
          ]
        ],
        "shapes": {
          "a": [
            3,
            1
          ],
          "Q": [
            3,
            3
          ]
        }
      }
    },
    {
      "step": 4,
      "code_location": "lambda_method.py:41-45 → _rtklib_lambda_native.c:232-264",
      "action_fa": "هستهٔ MLAMBDA اجرا شد؛ info=0 یعنی اجرای موفق.",
      "output": {
        "info": 0
      }
    },
    {
      "step": 5,
      "code_location": "_rtklib_lambda_native.c:299-309",
      "action_fa": "فاکتور L از کاهش/تجزیهٔ LtDL",
      "output": [
        [
          1.0,
          0.0,
          0.0
        ],
        [
          0.33333333333333337,
          1.0,
          0.0
        ],
        [
          0.25,
          0.0,
          1.0
        ]
      ]
    },
    {
      "step": 6,
      "code_location": "_rtklib_lambda_native.c:299-309",
      "action_fa": "قطر D از تجزیهٔ LtDL",
      "output": [
        0.08083333333333333,
        0.06,
        0.04
      ]
    },
    {
      "step": 7,
      "code_location": "_rtklib_lambda_native.c:299-309",
      "action_fa": "تبدیل صحیحِ دکورله‌سازی",
      "output": [
        [
          0.0,
          0.0,
          1.0
        ],
        [
          1.0,
          0.0,
          0.0
        ],
        [
          0.0,
          1.0,
          0.0
        ]
      ]
    },
    {
      "step": 8,
      "code_location": "_rtklib_lambda_native.c:299-309",
      "action_fa": "ابهام شناور در دستگاه دکورله‌شده",
      "output": [
        5.78,
        -2.41,
        1.23
      ]
    },
    {
      "step": 9,
      "code_location": "_rtklib_lambda_native.c:299-309",
      "action_fa": "نامزدها در دستگاه جست‌وجوی دکورله‌شده",
      "output": [
        [
          6.0,
          6.0
        ],
        [
          -2.0,
          -3.0
        ],
        [
          1.0,
          1.0
        ]
      ]
    },
    {
      "step": 10,
      "code_location": "_rtklib_lambda_native.c:299-309",
      "action_fa": "نامزدهای صحیح در ترتیب ابهام اصلی",
      "output": [
        [
          1.0,
          1.0
        ],
        [
          6.0,
          6.0
        ],
        [
          -2.0,
          -3.0
        ]
      ]
    },
    {
      "step": 11,
      "code_location": "_rtklib_lambda_native.c:299-309",
      "action_fa": "هنجارهای مربعی نامزدها، از کوچک به بزرگ",
      "output": [
        4.3695360824742275,
        9.905618556701022
      ]
    },
    {
      "step": 12,
      "code_location": "lambda_method.py:62-66",
      "action_fa": "کوواریانس دکورله‌شده مستقیماً از Q_z = Zᵀ Q_aa Z محاسبه شد.",
      "output": {
        "Q_z": [
          [
            0.09,
            0.02,
            0.01
          ],
          [
            0.02,
            0.06,
            0.0
          ],
          [
            0.01,
            0.0,
            0.04
          ]
        ],
        "symmetric": true
      }
    },
    {
      "step": 13,
      "code_location": "lambda_method.py:46-88",
      "action_fa": "بسته‌بندی public API به LambdaResult و محاسبهٔ نسبت معیار.",
      "output": {
        "fixed_ambiguities": [
          1.0,
          6.0,
          -2.0
        ],
        "squared_norms": [
          4.3695360824742275,
          9.905618556701022
        ],
        "ratio": 2.266972596114143,
        "ratio_formula": "squared_norms[1] / squared_norms[0]",
        "ratio_operands": [
          4.3695360824742275,
          9.905618556701022
        ],
        "decorrelated_covariance": [
          [
            0.09,
            0.02,
            0.01
          ],
          [
            0.02,
            0.06,
            0.0
          ],
          [
            0.01,
            0.0,
            0.04
          ]
        ],
        "metadata": {
          "method": "exact-local-rtklib-mlambda",
          "oracle_source": "RTKLIB-b34k-mac/src/lambda.c",
          "n_ambiguities": 3,
          "n_candidates": 2,
          "validated": true,
          "native": true
        }
      }
    },
    {
      "step": 14,
      "code_location": "کنترل آموزشی",
      "action_fa": "تأیید شد که public API همان میان‌خروجی‌های هستهٔ بومی را، بدون تغییر، تحویل می‌دهد.",
      "output": {
        "api_matches_native_trace": true,
        "best_candidate": [
          1.0,
          6.0,
          -2.0
        ]
      }
    }
  ],
  "final_result": {
    "fixed_ambiguities": [
      1.0,
      6.0,
      -2.0
    ],
    "candidates": [
      [
        1.0,
        1.0
      ],
      [
        6.0,
        6.0
      ],
      [
        -2.0,
        -3.0
      ]
    ],
    "squared_norms": [
      4.3695360824742275,
      9.905618556701022
    ],
    "ratio": 2.266972596114143,
    "fix_status_note_fa": "این صرفاً نامزد صحیح LAMBDA است؛ پذیرش PPK به آزمون نسبت و اعتبارسنجی پس از fix نیاز دارد."
  }
}
