LCOV - code coverage report
Current view: top level - include/pairinteraction/utils - ket_id.hpp (source / functions) Hit Total Coverage
Test: coverage.info Lines: 6 6 100.0 %
Date: 2026-08-14 15:36:24 Functions: 2 2 100.0 %

          Line data    Source code
       1             : // SPDX-FileCopyrightText: 2024 PairInteraction Developers
       2             : // SPDX-License-Identifier: LGPL-3.0-or-later
       3             : 
       4             : #pragma once
       5             : 
       6             : #include <cstddef>
       7             : 
       8             : namespace pairinteraction::utils {
       9             : constexpr std::size_t M_OFFSET = 500;
      10             : constexpr std::size_t KET_ID_STRIDE = 2 * M_OFFSET;
      11             : 
      12             : struct IdAndM {
      13             :     std::size_t id;
      14             :     double m;
      15             : };
      16             : 
      17         488 : inline std::size_t encode_as_ket_id(IdAndM id_and_m) {
      18         488 :     return id_and_m.id * KET_ID_STRIDE + static_cast<std::size_t>(2 * id_and_m.m + M_OFFSET);
      19             : }
      20             : 
      21        2072 : inline IdAndM decode_from_ket_id(std::size_t ket_id) {
      22             :     return {
      23        2072 :         .id = ket_id / KET_ID_STRIDE,
      24        2072 :         .m = (static_cast<double>(ket_id % KET_ID_STRIDE) - static_cast<double>(M_OFFSET)) / 2.0,
      25        2072 :     };
      26             : }
      27             : } // namespace pairinteraction::utils

Generated by: LCOV version 1.16