fixed IntToBinary

This commit is contained in:
moerp 2021-05-28 19:47:30 +02:00
parent 2ed4a0fdce
commit eb2c877674

View File

@ -1,4 +1,5 @@
#include "sqmtablemodel.h" #include "sqmtablemodel.h"
#include <algorithm>
SQMTableModel::SQMTableModel(QObject *parent) SQMTableModel::SQMTableModel(QObject *parent)
@ -55,7 +56,9 @@ bool SQMTableModel::setData(const QModelIndex &index, const QVariant &value, int
// call calculateSqmMatrix // call calculateSqmMatrix
sqmMatrix.at(col).at(row) = value.toInt(); sqmMatrix.at(col).at(row) = value.toInt();
CalculateSqmMatrix(row);
//UpdateSqmMatrix();
return true; return true;
} }
return false; return false;
@ -73,7 +76,7 @@ void SQMTableModel::SetStartValues(int pBase, int pExp, int pMod) {
exp = pExp; exp = pExp;
mod = pMod; mod = pMod;
CalculateSqmMatrix(0); CalculateSqmMatrix();
} }
@ -86,12 +89,13 @@ std::string SQMTableModel::IntToBinary(int n) {
n = n >> 1; n = n >> 1;
} }
reverse(bin.begin(), bin.end());
return bin; return bin;
} }
void SQMTableModel::CalculateSqmMatrix() { void SQMTableModel::CalculateSqmMatrix() {
// Clear sqmMatrix // Clear sqmMatrix
sqmMatrix.clear() sqmMatrix.clear();
// Calculate binary of exponent // Calculate binary of exponent
string bin = IntToBinary(exp); string bin = IntToBinary(exp);
@ -99,7 +103,7 @@ void SQMTableModel::CalculateSqmMatrix() {
// Init BIN Column // Init BIN Column
vector<int> colBin; vector<int> colBin;
for (int i = 0; i < binLen; i++) { for (int i = 0; i <= binLen; i++) {
colBin.push_back(bin[i] - '0'); colBin.push_back(bin[i] - '0');
} }
sqmMatrix.push_back(colBin); sqmMatrix.push_back(colBin);
@ -113,7 +117,7 @@ void SQMTableModel::CalculateSqmMatrix() {
// Calculate SQM // Calculate SQM
for (int i = 0; i < binLen; i++) { for (int i = 0; i <= binLen; i++) {
sqmMatrix.at(1).push_back((sqmMatrix.at(2).at(i - 1) * sqmMatrix.at(2).at(i - 1)) % mod); sqmMatrix.at(1).push_back((sqmMatrix.at(2).at(i - 1) * sqmMatrix.at(2).at(i - 1)) % mod);
if (sqmMatrix.at(0).at(i) == 0) { if (sqmMatrix.at(0).at(i) == 0) {