Skip to content

First commit#1

Open
Ilia1243x wants to merge 29 commits into
mainfrom
dev
Open

First commit#1
Ilia1243x wants to merge 29 commits into
mainfrom
dev

Conversation

@Ilia1243x

Copy link
Copy Markdown
Owner

I commited all what I had done before, except Legendre symbol (it's not working right now).
Вот это я англичанин) У меня много вопросов по коду, больше всего связано с темплейтами (я их до этого 1 раз в жизни юзал), например, когда нужно делать оберткту, а когда нет, стоит ли делать константы вида абоба = T(2), если много раз делаю T(2) или оставить это компилятору (он вроде как должен понять, что надо лишь раз вызвать конструктор класса).

@Ilia1243x Ilia1243x requested a review from DimaTrushin January 19, 2024 12:53

@DimaTrushin DimaTrushin left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Обрати внимание, что я делал комментарии почти всегда только разово. Это значит, что во всех похожих ситуациях ты должен сделать изменения по аналогии.

Я непонял зачем ты в какой-то момент переключился с функций на классы. Особенно учитывая, что ты просто вынес из функций явные зависимости в данных в "глобальные переменные", то есть в переменные класса. Если ты хочешь накапливать какую-то информацию между вызовами, то ОК. Но тогда не понятно зачем там в конструкторе передается число и хранится внутри. Это все очень странно и похоже на то, что ты не понимаешь что ты хочешь.

Еще обрати внимание, что встроенные типы надо передавать by value, а все остальное by const reference. Учти это в перегрузке сових шаблонов, а то передавать длинку так будет накладно.

И еще, где система сборки? Где тестирующий код? Как вообще проверить, что твой код запускается?

Comment thread headers/gcd.h Outdated
Comment thread headers/gcd.h Outdated
Comment thread headers/eratosthene_sieve.h Outdated
Comment thread headers/eratosthene_sieve.h Outdated
Comment thread headers/eratosthene_sieve.h Outdated
Comment thread headers/pseudoprime_test.h Outdated
Comment thread headers/pseudoprime_test.h Outdated
Comment thread headers/pseudoprime_test.h Outdated
Comment thread headers/strong_pseudoprime_test.h Outdated
Comment thread headers/strong_pseudoprime_test.h Outdated
@Ilia1243x Ilia1243x requested a review from DimaTrushin March 30, 2024 19:06
@Ilia1243x

Copy link
Copy Markdown
Owner Author

Я тут сделал новый реквест, очень много поправил, пока не исправил то что мы говорили про вот тяжелые типы, что надо внутри по ссылке и ляляля, успею еще, просто хотел чтобы хоть что-то было оценено, а то ведь в прошлый раз я даже смэйк листы не запушил

@DimaTrushin DimaTrushin left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Накидал мелких замечаний.

Comment thread CMakeLists.txt
project(Large-Prime-Numbers-Indenbaum)

set(CMAKE_CXX_STANDARD 17)

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Добавь строчку

set(CMAKE_CXX_STANDARD_REQUIRED True)

А то cmake разрешено откатиться на более низкий стандарт.

Comment thread Testing.cpp
@@ -0,0 +1,16 @@
#include "Testing.h"

void RunTests() {

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Не пиши в глобальное пространство имен

Comment thread Testing.h
#include "testQS.h"
#include "Timer.h"

void RunTests(); No newline at end of file

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Добавь пустую строку в конце каждого файла. Дело в том, что гит на это ругается и пользователь твоего репозитория будет видеть сообщения об ошибках от гита. Не делай так.
Добавить в clang-format правило:
InsertNewlineAtEOF: true

Comment thread testP1.cpp Outdated
@@ -0,0 +1,26 @@
#include "testP1.h"
namespace {
boost::multiprecision::cpp_int z1 = 450473;

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Заведи юзинги для таких классов тут и не пиши длинные типы. Это же читать не возможно, глаза сломаешь.

Comment thread strong_pseudoprime_test.h
}
return false;
}
bool TestProb() {

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ты не консистентен, ты не добавляешь пробелы тут между функциями в приватной зоне, хотя есть пробелы в публичной. Сомневаюсь, что это clang-format так настроен. Проверь, что ты настроил свою ide так, чтобы clang-format применялся насохранение файлов.

Comment thread pollard_ro.h
Comment on lines +9 to +12
constexpr int MaxCycles = 1000;
constexpr int ProductSize = 10;
constexpr int RandomRange = 1000;
template <class T>

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  1. Если у алгоритмов есть какие-то константы то стоит запаивать алгоритмы в классы и там эти параметры хранить.
  2. А еще глобальные константы лучше снабжать префиксом g, чтобы можно было отличать от других данных.

Comment thread gauss.h
namespace lp {
std::vector<std::vector<int>> MakeHelper(std::vector<std::vector<int>> &a);

std::vector<int> Gauss(std::vector<std::vector<int>> &a, int &cur_string_num, std::vector<std::vector<int>> &helper);

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Мне не нравится что ты работаешь с вектором векторов явно.
Во-первых, почему не сделал отельный класс, где хранится вектор размера m * n?
Во-вторых, почему не сделал псевдоним для этого?
В-третьих, почему от int, а не от char или даже bool, если у тебя все по модулю 2?

Comment thread gauss.cpp
return helper;
}

std::vector<int> lp::GetContribStrings(std::vector<std::vector<int>> &a, int i) {

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Порядок методов в cpp файле должен быть точно такой же как в h файле!

Comment thread gauss.cpp
// запустится тогда и за 5 лет Мб есть смысл сделать юзинг для инта
//Думаю гаусс одно из моих слабых мест, в том плане, что лучше переписать это на один вектор с перегрузкой оператора
//и лучше ну как-то его улучшить, хз, выглядит не идеально
std::vector<std::vector<int>> lp::MakeHelper(std::vector<std::vector<int>> &a) {

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Не пиши lp в начале каждого метода, открой namespace в начале перед всеми методами и потом закрой его.

Comment thread factors_for_small.h
break;
}
while (n1 % i == T(0) && n1 >= i) {
ans.emplace_back(i);

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Тут нет std::move никгде в emplace_back, это нормально? Или тут T всегда маленький?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants