All streams
Search
Write a publication
Pull to refresh
8
0
Олег Стрельников @oleg1977

User

Send message

А -7 никогда не

Правильно ли я понимаю, что для "if (x>1 || x>3)" будет создана V560, а для "if (x>3 || x>1)" — не будет?

Аномалия выявляется в этом коде сразу двумя диагностиками:

V501 CWE-570 There are identical sub-expressions to the left and to the right of the '||' operator: ns != 1 || ns != 1 fingerprint.c 126
V560 CWE-570 A part of conditional expression is always false: ns != 1. fingerprint.c 126
здесь имелось в виду, что 1 обёртка эквивалентная 0.5 шоколадки без обертки
+ одна обёртка, эквивалентная 0.5 шоколадки, итого 22.5
остаётся ещё 1 обёртка, на которую можно съесть ещё 0.5 шоколадки, выше написано как. итого 22.5
исправление: за 3 фольги можно получить то же, что за 1 доллар, значит фольга стоит 1/3 доллара, а шоколадка без фольги — 2/3 доллара. За 15 долларов можно съесть 15/(2/3)=22.5 шоколадки без фольги. если есть фольга, то можно съесть 0.5 шоколадки следующим образом: найти компаньона с 1 фольгой, прийти в магазин, показать 2 фольги продавцу и попросить его шоколадку, отдать 2 фольги плюс фольгу из шоколадки продавцу, фольгу без шоколадки разделить с компаньоном

За 1 доллар можно купить 1 1/3=4/3 шоколадки, за 15 долларов — 15*4/3=20 шоколадок. 2 фольги можно превратить в шоколадку: показать их продавцу и попросить шоколадку, которая будет тут же съедена и все 3 фольги отданы продавцу

Я думаю путаница языковая. Если 34 произносить "трижды четыре", то есть "три раза по четыре", то получается 4+4+4. Когда-то компоненты называли множимое и множитель, вот тогда, по моему, и произошло путаница: множимое 3 и множитель 4 дают 3+3+3+3. Сейчас, вроде, называют первый и второй множитель и вообще что складывать — не понятно. Кстати, по-английски, 34 = "3 times 4" = 4+4+4 = "трижды четыре" = "множитель 3 множимое 4"

Далее значение угла подаётся на модуль CORDIC, который и вычисляет нам значения sin и cos.

cordic CORDIC(
    .clk(clk),
    .rst(~nRst),
    .x_i(17'd19896),
    .y_i(16'd0),
    .theta_i(cordic_angle),
    .x_o(COS),
    .y_o(SIN),
    .theta_o(),
    .valid_in(),
    .valid_out()
    );


Далее не сложно догадаться, что расчёт координат каждого последующего пикселя будет производиться по формуле:

x’ = cos(angle) * x — sin(angle) * y;
y’ = sin(angle) * x + cos(angle) * y;


Вместо этого можно было бы написать что-то вроде:
cordic CORDIC(
    .clk(clk),
    .rst(~nRst),
    .x_i(x),
    .y_i(y),
    .theta_i(cordic_angle),
    .x_o(x'),
    .y_o(y'),
    .theta_o(),
    .valid_in(),
    .valid_out()
    );

Классический кордик описан, например, здесь

Он преобразует (x0; y0; z0) --> K(x0*cos(z0)-y0*sin(z0); x0*sin(z0)+y0*cos(z0); 0)

Отсюда, если взять x0 = 1/K, y0=0, то получим (1/K; 0; z0) --> (cos(z0); sin(z0); 0)

То есть, вычисление косинусов и синусов — частный случай оригинального кордика.

Я лишь обращал внимание, что вместо преобразований:
1) вычислить cos(z0), вычислить sin(z0)
2) вычислить x0*cos(z0)-y0*sin(z0)
3) вычислить x0*sin(z0)+y0*cos(z0)

можно обойтись одним:
1) вычислить x0*cos(z0)-y0*sin(z0) и x0*sin(z0)+y0*cos(z0)

Не знаю реализацию, которой воспользовались вы, но оригинальный кордик сразу на выходе дает повернуты вектор, умножения и сложения делать не надо. Вычисление sin и cos производятся поворотом вектора (1.0; 0.0), если вместо него подать на вход кордика (x;y) то на выходе сразу будет повернутый вектор

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

А как же субэкспоненциальные алгоритмы факторизации? Да и о «классической архитектуре» следуем упомянуть
По моему система, в которой ключевая пара генерируется не клиентом, а сервером — изначально порочна
По вашему выходит, что если взять любой шифр и использовать его с разными ключами n раз, то криптостойкость алгоритма возрастет в n раз. А все стараются, выдумывают новые алгоритмы.
Если вы говорите о шифре, как я догодываюсь, о блочном, то ответьте для начала на вопросы: какова длина ключа, можно ли ваш шифр как любой блочный использовать в режимах ECB, CBC, CFB, OFB, CTR, CCM?
Прочитайте статьи habrahabr.ru/post/181372/ и habrahabr.ru/post/186416/.
Если, как вы пишите ниже, вас не интересует криптография, а интересует вычислительная сторона вопроса, назовите статью «Умножение на матрицу соответствующую кватерниону на FPGA, XeonPhi, GPU».
опять же, самым главным является объединение циклов, а не свертки тела цикла в функцию
важнее не перебрать сеты в разных направлениях, а объединить циклы
Может быть из-за того, что less::operator()(int const&, int const&) определен с параметрами int const&, а не int, и вариант:
        typedef std::multiset<int, std::function<bool(int const&, int const&)>> Set4;
        Set4 sets4[N] = {Set4(std::less<int>()), Set4(std::bind(std::less<int>(), _2, _1))};

будет работать и в вс12?

Information

Rating
Does not participate
Location
Волгоград, Волгоградская обл., Россия
Date of birth
Registered
Activity