peary/utils/lfsr.hpp

Helpers for Linear Feedback Shift Registers. More…

Namespaces

Name
peary
peary::utils

Classes

Name
class peary::utils::LFSR Linear Feedback Shift Register (LFSR) class.

Detailed Description

Helpers for Linear Feedback Shift Registers.

Copyright: Copyright (c) 2016-2025 CERN and the Peary Caribou authors. This software is distributed under the terms of the LGPL-3.0-only License, copied verbatim in the file “LICENSE.md”. SPDX-License-Identifier: LGPL-3.0-only

Source code

  
/* This file contains helper classes which are used by the Caribou
 * library implementations
 */

#pragma once

#include <algorithm>
#include <array>
#include <cstdint>

namespace peary::utils {

    class LFSR {
    public:
        static uint16_t LUT13(uint16_t);

        static uint16_t LUT13_inverse(uint16_t);

        static uint8_t LUT8(uint8_t);

        static uint8_t LUT8_inverse(uint8_t);

        static uint8_t LUT5(uint8_t);

        static uint8_t LUT5_inverse(uint8_t);

    private:
        static const std::array<uint16_t, 8191> lfsr13_lut;
        static const std::array<uint8_t, 255> lfsr8_lut;
        static const std::array<uint8_t, 31> lfsr5_lut;
    };

} // namespace peary::utils
  

Updated on 2025-11-14 at 11:31:23 +0100