Аномалия выявляется в этом коде сразу двумя диагностиками:
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
исправление: за 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"
Он преобразует (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».
А -7 никогда не
Правильно ли я понимаю, что для "if (x>1 || x>3)" будет создана V560, а для "if (x>3 || x>1)" — не будет?
Почему возникает V560 ?
За 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"
Вместо этого можно было бы написать что-то вроде:
Он преобразует (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) то на выходе сразу будет повернутый вектор
А как же субэкспоненциальные алгоритмы факторизации? Да и о «классической архитектуре» следуем упомянуть
Если вы говорите о шифре, как я догодываюсь, о блочном, то ответьте для начала на вопросы: какова длина ключа, можно ли ваш шифр как любой блочный использовать в режимах ECB, CBC, CFB, OFB, CTR, CCM?
Прочитайте статьи habrahabr.ru/post/181372/ и habrahabr.ru/post/186416/.
Если, как вы пишите ниже, вас не интересует криптография, а интересует вычислительная сторона вопроса, назовите статью «Умножение на матрицу соответствующую кватерниону на FPGA, XeonPhi, GPU».
будет работать и в вс12?