mirror of
https://github.com/TomHarte/CLK.git
synced 2025-08-15 14:27:29 +00:00
Merge pull request #735 from TomHarte/Numeric
Eliminates homegrown factoring code
This commit is contained in:
@@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
#include "../../../Storage/Disk/Controller/DiskController.hpp"
|
#include "../../../Storage/Disk/Controller/DiskController.hpp"
|
||||||
#include "../../../Storage/Disk/Encodings/MFM/Parser.hpp"
|
#include "../../../Storage/Disk/Encodings/MFM/Parser.hpp"
|
||||||
#include "../../../NumberTheory/CRC.hpp"
|
#include "../../../Numeric/CRC.hpp"
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
|
||||||
|
@@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
#include <deque>
|
#include <deque>
|
||||||
|
|
||||||
#include "../../../NumberTheory/CRC.hpp"
|
#include "../../../Numeric/CRC.hpp"
|
||||||
#include "../../../Storage/Tape/Parsers/Acorn.hpp"
|
#include "../../../Storage/Tape/Parsers/Acorn.hpp"
|
||||||
|
|
||||||
using namespace Analyser::Static::Acorn;
|
using namespace Analyser::Static::Acorn;
|
||||||
|
@@ -1,50 +0,0 @@
|
|||||||
//
|
|
||||||
// Factors.hpp
|
|
||||||
// Clock Signal
|
|
||||||
//
|
|
||||||
// Created by Thomas Harte on 29/07/2016.
|
|
||||||
// Copyright 2016 Thomas Harte. All rights reserved.
|
|
||||||
//
|
|
||||||
|
|
||||||
#ifndef Factors_hpp
|
|
||||||
#define Factors_hpp
|
|
||||||
|
|
||||||
#include <numeric>
|
|
||||||
#include <utility>
|
|
||||||
|
|
||||||
namespace NumberTheory {
|
|
||||||
/*!
|
|
||||||
@returns The greatest common divisor of @c a and @c b.
|
|
||||||
*/
|
|
||||||
template<class T> T greatest_common_divisor(T a, T b) {
|
|
||||||
#if __cplusplus > 201402L
|
|
||||||
return std::gcd(a, b);
|
|
||||||
#else
|
|
||||||
if(a < b) {
|
|
||||||
std::swap(a, b);
|
|
||||||
}
|
|
||||||
|
|
||||||
while(1) {
|
|
||||||
if(!a) return b;
|
|
||||||
if(!b) return a;
|
|
||||||
|
|
||||||
T remainder = a%b;
|
|
||||||
a = b;
|
|
||||||
b = remainder;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
/*!
|
|
||||||
@returns The least common multiple of @c a and @c b computed indirectly via the greatest
|
|
||||||
common divisor.
|
|
||||||
*/
|
|
||||||
template<class T> T least_common_multiple(T a, T b) {
|
|
||||||
if(a == b) return a;
|
|
||||||
|
|
||||||
T gcd = greatest_common_divisor<T>(a, b);
|
|
||||||
return (a / gcd) * (b / gcd) * gcd;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* Factors_hpp */
|
|
@@ -9,8 +9,9 @@
|
|||||||
#ifndef LFSR_h
|
#ifndef LFSR_h
|
||||||
#define LFSR_h
|
#define LFSR_h
|
||||||
|
|
||||||
template <typename IntType> struct LSFRPolynomial {
|
namespace Numeric {
|
||||||
};
|
|
||||||
|
template <typename IntType> struct LSFRPolynomial {};
|
||||||
|
|
||||||
// The following were taken 'at random' from https://users.ece.cmu.edu/~koopman/lfsr/index.html
|
// The following were taken 'at random' from https://users.ece.cmu.edu/~koopman/lfsr/index.html
|
||||||
template <> struct LSFRPolynomial<uint64_t> {
|
template <> struct LSFRPolynomial<uint64_t> {
|
||||||
@@ -61,4 +62,6 @@ template <typename IntType = uint64_t, IntType polynomial = LSFRPolynomial<IntTy
|
|||||||
IntType value_ = 0;
|
IntType value_ = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
#endif /* LFSR_h */
|
#endif /* LFSR_h */
|
@@ -1185,7 +1185,8 @@
|
|||||||
4B7BA03523CEB86000B98D9E /* BD500.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = BD500.cpp; path = Oric/BD500.cpp; sourceTree = "<group>"; };
|
4B7BA03523CEB86000B98D9E /* BD500.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = BD500.cpp; path = Oric/BD500.cpp; sourceTree = "<group>"; };
|
||||||
4B7BA03623CEB86000B98D9E /* BD500.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = BD500.hpp; path = Oric/BD500.hpp; sourceTree = "<group>"; };
|
4B7BA03623CEB86000B98D9E /* BD500.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = BD500.hpp; path = Oric/BD500.hpp; sourceTree = "<group>"; };
|
||||||
4B7BA03823CEB8D200B98D9E /* DiskController.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = DiskController.hpp; path = Oric/DiskController.hpp; sourceTree = "<group>"; };
|
4B7BA03823CEB8D200B98D9E /* DiskController.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = DiskController.hpp; path = Oric/DiskController.hpp; sourceTree = "<group>"; };
|
||||||
4B7BA03923D5302C00B98D9E /* LFSR.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = LFSR.hpp; path = ../../NumberTheory/LFSR.hpp; sourceTree = "<group>"; };
|
4B7BA03E23D55E7900B98D9E /* CRC.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = CRC.hpp; sourceTree = "<group>"; };
|
||||||
|
4B7BA03F23D55E7900B98D9E /* LFSR.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = LFSR.hpp; sourceTree = "<group>"; };
|
||||||
4B7F188C2154825D00388727 /* MasterSystem.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MasterSystem.cpp; sourceTree = "<group>"; };
|
4B7F188C2154825D00388727 /* MasterSystem.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MasterSystem.cpp; sourceTree = "<group>"; };
|
||||||
4B7F188D2154825D00388727 /* MasterSystem.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = MasterSystem.hpp; sourceTree = "<group>"; };
|
4B7F188D2154825D00388727 /* MasterSystem.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = MasterSystem.hpp; sourceTree = "<group>"; };
|
||||||
4B7F1895215486A100388727 /* StaticAnalyser.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = StaticAnalyser.hpp; sourceTree = "<group>"; };
|
4B7F1895215486A100388727 /* StaticAnalyser.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = StaticAnalyser.hpp; sourceTree = "<group>"; };
|
||||||
@@ -1591,7 +1592,6 @@
|
|||||||
4BB4BFAF22A42F290069048D /* MacintoshIMG.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = MacintoshIMG.hpp; sourceTree = "<group>"; };
|
4BB4BFAF22A42F290069048D /* MacintoshIMG.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = MacintoshIMG.hpp; sourceTree = "<group>"; };
|
||||||
4BB4BFB722A4372E0069048D /* StaticAnalyser.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = StaticAnalyser.hpp; sourceTree = "<group>"; };
|
4BB4BFB722A4372E0069048D /* StaticAnalyser.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = StaticAnalyser.hpp; sourceTree = "<group>"; };
|
||||||
4BB4BFB822A4372E0069048D /* StaticAnalyser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StaticAnalyser.cpp; sourceTree = "<group>"; };
|
4BB4BFB822A4372E0069048D /* StaticAnalyser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StaticAnalyser.cpp; sourceTree = "<group>"; };
|
||||||
4BB697C61D4B558F00248BDF /* Factors.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Factors.hpp; path = ../../NumberTheory/Factors.hpp; sourceTree = "<group>"; };
|
|
||||||
4BB697C91D4B6D3E00248BDF /* TimedEventLoop.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TimedEventLoop.cpp; sourceTree = "<group>"; };
|
4BB697C91D4B6D3E00248BDF /* TimedEventLoop.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TimedEventLoop.cpp; sourceTree = "<group>"; };
|
||||||
4BB697CA1D4B6D3E00248BDF /* TimedEventLoop.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = TimedEventLoop.hpp; sourceTree = "<group>"; };
|
4BB697CA1D4B6D3E00248BDF /* TimedEventLoop.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = TimedEventLoop.hpp; sourceTree = "<group>"; };
|
||||||
4BB697CC1D4BA44400248BDF /* CommodoreGCR.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CommodoreGCR.cpp; path = Encodings/CommodoreGCR.cpp; sourceTree = "<group>"; };
|
4BB697CC1D4BA44400248BDF /* CommodoreGCR.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CommodoreGCR.cpp; path = Encodings/CommodoreGCR.cpp; sourceTree = "<group>"; };
|
||||||
@@ -1741,7 +1741,6 @@
|
|||||||
4BF4A2D91F534DB300B171F4 /* TargetPlatforms.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = TargetPlatforms.hpp; sourceTree = "<group>"; };
|
4BF4A2D91F534DB300B171F4 /* TargetPlatforms.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = TargetPlatforms.hpp; sourceTree = "<group>"; };
|
||||||
4BF52672218E752E00313227 /* ScanTarget.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = ScanTarget.hpp; path = ../../Outputs/ScanTarget.hpp; sourceTree = "<group>"; };
|
4BF52672218E752E00313227 /* ScanTarget.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = ScanTarget.hpp; path = ../../Outputs/ScanTarget.hpp; sourceTree = "<group>"; };
|
||||||
4BF6606A1F281573002CB053 /* ClockReceiver.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = ClockReceiver.hpp; sourceTree = "<group>"; };
|
4BF6606A1F281573002CB053 /* ClockReceiver.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = ClockReceiver.hpp; sourceTree = "<group>"; };
|
||||||
4BF8295F1D8F3C87001BAE39 /* CRC.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = CRC.hpp; path = ../../NumberTheory/CRC.hpp; sourceTree = "<group>"; };
|
|
||||||
4BFCA1211ECBDCAF00AC40C1 /* AllRAMProcessor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AllRAMProcessor.cpp; sourceTree = "<group>"; };
|
4BFCA1211ECBDCAF00AC40C1 /* AllRAMProcessor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AllRAMProcessor.cpp; sourceTree = "<group>"; };
|
||||||
4BFCA1221ECBDCAF00AC40C1 /* AllRAMProcessor.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = AllRAMProcessor.hpp; sourceTree = "<group>"; };
|
4BFCA1221ECBDCAF00AC40C1 /* AllRAMProcessor.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = AllRAMProcessor.hpp; sourceTree = "<group>"; };
|
||||||
4BFCA1251ECBE33200AC40C1 /* TestMachineZ80.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TestMachineZ80.h; sourceTree = "<group>"; };
|
4BFCA1251ECBE33200AC40C1 /* TestMachineZ80.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TestMachineZ80.h; sourceTree = "<group>"; };
|
||||||
@@ -2594,6 +2593,16 @@
|
|||||||
path = Coleco;
|
path = Coleco;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
|
4B7BA03C23D55E7900B98D9E /* Numeric */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
4B7BA03E23D55E7900B98D9E /* CRC.hpp */,
|
||||||
|
4B7BA03F23D55E7900B98D9E /* LFSR.hpp */,
|
||||||
|
);
|
||||||
|
name = Numeric;
|
||||||
|
path = ../../Numeric;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
4B7F188B2154825D00388727 /* MasterSystem */ = {
|
4B7F188B2154825D00388727 /* MasterSystem */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
@@ -3182,16 +3191,6 @@
|
|||||||
path = Macintosh;
|
path = Macintosh;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
4BB697C81D4B559300248BDF /* NumberTheory */ = {
|
|
||||||
isa = PBXGroup;
|
|
||||||
children = (
|
|
||||||
4BB697C61D4B558F00248BDF /* Factors.hpp */,
|
|
||||||
4BF8295F1D8F3C87001BAE39 /* CRC.hpp */,
|
|
||||||
4B7BA03923D5302C00B98D9E /* LFSR.hpp */,
|
|
||||||
);
|
|
||||||
name = NumberTheory;
|
|
||||||
sourceTree = "<group>";
|
|
||||||
};
|
|
||||||
4BB697CF1D4BA44900248BDF /* Encodings */ = {
|
4BB697CF1D4BA44900248BDF /* Encodings */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
@@ -3219,7 +3218,7 @@
|
|||||||
4B055A761FAE78210060FFFF /* Frameworks */,
|
4B055A761FAE78210060FFFF /* Frameworks */,
|
||||||
4B86E2581F8C628F006FAA45 /* Inputs */,
|
4B86E2581F8C628F006FAA45 /* Inputs */,
|
||||||
4BB73EDC1B587CA500552FC2 /* Machines */,
|
4BB73EDC1B587CA500552FC2 /* Machines */,
|
||||||
4BB697C81D4B559300248BDF /* NumberTheory */,
|
4B7BA03C23D55E7900B98D9E /* Numeric */,
|
||||||
4B366DFD1B5C165F0026627B /* Outputs */,
|
4B366DFD1B5C165F0026627B /* Outputs */,
|
||||||
4BB73EDD1B587CA500552FC2 /* Processors */,
|
4BB73EDD1B587CA500552FC2 /* Processors */,
|
||||||
4BB73E9F1B587A5100552FC2 /* Products */,
|
4BB73E9F1B587A5100552FC2 /* Products */,
|
||||||
|
@@ -8,8 +8,6 @@
|
|||||||
|
|
||||||
#include "DiskController.hpp"
|
#include "DiskController.hpp"
|
||||||
|
|
||||||
#include "../../../NumberTheory/Factors.hpp"
|
|
||||||
|
|
||||||
using namespace Storage::Disk;
|
using namespace Storage::Disk;
|
||||||
|
|
||||||
Controller::Controller(Cycles clock_rate) :
|
Controller::Controller(Cycles clock_rate) :
|
||||||
|
@@ -10,7 +10,7 @@
|
|||||||
#define MFMDiskController_hpp
|
#define MFMDiskController_hpp
|
||||||
|
|
||||||
#include "DiskController.hpp"
|
#include "DiskController.hpp"
|
||||||
#include "../../../NumberTheory/CRC.hpp"
|
#include "../../../Numeric/CRC.hpp"
|
||||||
#include "../../../ClockReceiver/ClockReceiver.hpp"
|
#include "../../../ClockReceiver/ClockReceiver.hpp"
|
||||||
#include "../Encodings/MFM/Shifter.hpp"
|
#include "../Encodings/MFM/Shifter.hpp"
|
||||||
|
|
||||||
|
@@ -11,7 +11,7 @@
|
|||||||
|
|
||||||
#include "../DiskImage.hpp"
|
#include "../DiskImage.hpp"
|
||||||
#include "../../../FileHolder.hpp"
|
#include "../../../FileHolder.hpp"
|
||||||
#include "../../../../NumberTheory/CRC.hpp"
|
#include "../../../../Numeric/CRC.hpp"
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
|
@@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
#include "Constants.hpp"
|
#include "Constants.hpp"
|
||||||
#include "../../Track/PCMTrack.hpp"
|
#include "../../Track/PCMTrack.hpp"
|
||||||
#include "../../../../NumberTheory/CRC.hpp"
|
#include "../../../../Numeric/CRC.hpp"
|
||||||
|
|
||||||
#include <cassert>
|
#include <cassert>
|
||||||
#include <set>
|
#include <set>
|
||||||
|
@@ -15,7 +15,7 @@
|
|||||||
|
|
||||||
#include "Sector.hpp"
|
#include "Sector.hpp"
|
||||||
#include "../../Track/Track.hpp"
|
#include "../../Track/Track.hpp"
|
||||||
#include "../../../../NumberTheory/CRC.hpp"
|
#include "../../../../Numeric/CRC.hpp"
|
||||||
|
|
||||||
namespace Storage {
|
namespace Storage {
|
||||||
namespace Encodings {
|
namespace Encodings {
|
||||||
|
@@ -11,7 +11,7 @@
|
|||||||
|
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include "../../../../NumberTheory/CRC.hpp"
|
#include "../../../../Numeric/CRC.hpp"
|
||||||
|
|
||||||
namespace Storage {
|
namespace Storage {
|
||||||
namespace Encodings {
|
namespace Encodings {
|
||||||
|
@@ -14,7 +14,7 @@
|
|||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
#include "../../Storage.hpp"
|
#include "../../Storage.hpp"
|
||||||
#include "../../../NumberTheory/LFSR.hpp"
|
#include "../../../Numeric/LFSR.hpp"
|
||||||
#include "Track.hpp"
|
#include "Track.hpp"
|
||||||
|
|
||||||
namespace Storage {
|
namespace Storage {
|
||||||
@@ -200,7 +200,7 @@ class PCMSegmentEventSource {
|
|||||||
std::shared_ptr<PCMSegment> segment_;
|
std::shared_ptr<PCMSegment> segment_;
|
||||||
std::size_t bit_pointer_;
|
std::size_t bit_pointer_;
|
||||||
Track::Event next_event_;
|
Track::Event next_event_;
|
||||||
LFSR<uint64_t> lfsr_;
|
Numeric::LFSR<uint64_t> lfsr_;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -7,7 +7,6 @@
|
|||||||
//
|
//
|
||||||
|
|
||||||
#include "PCMTrack.hpp"
|
#include "PCMTrack.hpp"
|
||||||
#include "../../../NumberTheory/Factors.hpp"
|
|
||||||
#include "../../../Outputs/Log.hpp"
|
#include "../../../Outputs/Log.hpp"
|
||||||
|
|
||||||
using namespace Storage::Disk;
|
using namespace Storage::Disk;
|
||||||
|
@@ -9,10 +9,10 @@
|
|||||||
#ifndef Storage_hpp
|
#ifndef Storage_hpp
|
||||||
#define Storage_hpp
|
#define Storage_hpp
|
||||||
|
|
||||||
#include "../NumberTheory/Factors.hpp"
|
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
#include <limits>
|
#include <limits>
|
||||||
|
#include <numeric>
|
||||||
|
|
||||||
namespace Storage {
|
namespace Storage {
|
||||||
|
|
||||||
@@ -39,7 +39,7 @@ struct Time {
|
|||||||
and @c clock_rate.
|
and @c clock_rate.
|
||||||
*/
|
*/
|
||||||
void simplify() {
|
void simplify() {
|
||||||
unsigned int common_divisor = NumberTheory::greatest_common_divisor(length, clock_rate);
|
unsigned int common_divisor = std::gcd(length, clock_rate);
|
||||||
length /= common_divisor;
|
length /= common_divisor;
|
||||||
clock_rate /= common_divisor;
|
clock_rate /= common_divisor;
|
||||||
}
|
}
|
||||||
@@ -229,7 +229,7 @@ struct Time {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(long_length > std::numeric_limits<unsigned int>::max() || long_clock_rate > std::numeric_limits<unsigned int>::max()) {
|
if(long_length > std::numeric_limits<unsigned int>::max() || long_clock_rate > std::numeric_limits<unsigned int>::max()) {
|
||||||
uint64_t common_divisor = NumberTheory::greatest_common_divisor(long_length, long_clock_rate);
|
uint64_t common_divisor = std::gcd(long_length, long_clock_rate);
|
||||||
long_length /= common_divisor;
|
long_length /= common_divisor;
|
||||||
long_clock_rate /= common_divisor;
|
long_clock_rate /= common_divisor;
|
||||||
|
|
||||||
|
@@ -10,7 +10,7 @@
|
|||||||
#define Storage_Tape_Parsers_Acorn_hpp
|
#define Storage_Tape_Parsers_Acorn_hpp
|
||||||
|
|
||||||
#include "TapeParser.hpp"
|
#include "TapeParser.hpp"
|
||||||
#include "../../../NumberTheory/CRC.hpp"
|
#include "../../../Numeric/CRC.hpp"
|
||||||
#include "../../Disk/DPLL/DigitalPhaseLockedLoop.hpp"
|
#include "../../Disk/DPLL/DigitalPhaseLockedLoop.hpp"
|
||||||
|
|
||||||
namespace Storage {
|
namespace Storage {
|
||||||
|
@@ -7,7 +7,6 @@
|
|||||||
//
|
//
|
||||||
|
|
||||||
#include "Tape.hpp"
|
#include "Tape.hpp"
|
||||||
#include "../../NumberTheory/Factors.hpp"
|
|
||||||
|
|
||||||
using namespace Storage::Tape;
|
using namespace Storage::Tape;
|
||||||
|
|
||||||
|
@@ -7,7 +7,6 @@
|
|||||||
//
|
//
|
||||||
|
|
||||||
#include "TimedEventLoop.hpp"
|
#include "TimedEventLoop.hpp"
|
||||||
#include "../NumberTheory/Factors.hpp"
|
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <cassert>
|
#include <cassert>
|
||||||
|
Reference in New Issue
Block a user