Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Длинная арифметика. Вопросы по реализации/оптимизации
|
|||
|---|---|---|---|
|
#18+
Всё получилось :) проблема была немного в другом, впрочем, как мне кажется, с утечками проблема решена также. Всем спасибо. Сегодня всё расскажу и покажу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2014, 03:51 |
|
||
|
Длинная арифметика. Вопросы по реализации/оптимизации
|
|||
|---|---|---|---|
|
#18+
Сейчас занимаюсь декомпозицией задачи, чтобы выложить её в нормальном виде. Не знаю как правильно это доделать, подскажите пожалуйста Вот такой файл la.h Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. вот такой la.c Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. тут уже косяк. Дважды подключаю stdlib.h но программа пока запускается. Однако, когда я делаю так, sum.h Код: plaintext 1. 2. 3. и так sum.c Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. тут происходит вот что "Error 3 error LNK2005: _freeMemory already defined in main.obj ", в чём проблема понятно, а как исправить пока не дошло ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2014, 05:02 |
|
||
|
Длинная арифметика. Вопросы по реализации/оптимизации
|
|||
|---|---|---|---|
|
#18+
SashaMercury, SashaMercuryтут уже косяк. Дважды подключаю stdlib.h но программа пока запускается. Саш, тебе нужно немного почитать о подключении заголовков в C, C++ в *.h файле ты цепляешь заголовки, а не код Вот такой файл la.h Код: plaintext 1. 2. 3. 4. вот такой la.c Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2014, 06:13 |
|
||
|
Длинная арифметика. Вопросы по реализации/оптимизации
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan), спасибо! Не знаю почему так сделал(вроде бы сделал сначала правильно, но почему-то сборка прошла неудачно) ( Исправил и всё сразу заработало ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2014, 06:21 |
|
||
|
Длинная арифметика. Вопросы по реализации/оптимизации
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan), c++ - Include в заголовочных файлах ещё, что бы заголовочные файлы не включались по нескольку раз вставляют директивы препроцессора Код: plaintext 1. 2. 3. 4. SashaMercury , Вот кстати тебе задачка , на неё многие ответить не могут (первый курс универа надо) интересно, сможешь осилить или нет, ответ там простой Графический примитив - линейно залитый цветом треугольник Дано: 3 точки на плоскости, их цвет c1,c2,c3 , треугольник образуемый ими нужно равномерно залить цветом Найти: формулу c(x,y) - ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2014, 06:27 |
|
||
|
Длинная арифметика. Вопросы по реализации/оптимизации
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan), не знаю как бы решал первый курс, а я бы решил данную задачу используя билинейную интерполяцию. Тут частный случай, потому скорее всего как-то можно использовать формулу . PS кстати, можно, вероятно, составить систему уравнений, и через нее выразить x y. Подождите :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2014, 06:53 |
|
||
|
Длинная арифметика. Вопросы по реализации/оптимизации
|
|||
|---|---|---|---|
|
#18+
Буду использовать следующую нотацию . Функция имеет вид , где, и коэффициенты рассчитываются по следующим формулам , , , , . Я бы решал так :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2014, 07:42 |
|
||
|
Длинная арифметика. Вопросы по реализации/оптимизации
|
|||
|---|---|---|---|
|
#18+
в t3 опечатка, понятно что там минус ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2014, 07:45 |
|
||
|
Длинная арифметика. Вопросы по реализации/оптимизации
|
|||
|---|---|---|---|
|
#18+
SashaMercury, не совсем понял как у вас с зависит от x,y вот тут серьёзные дядьки решают эту задачку, но так делать не стоит, комменты гораздо полезнее Щас народ проснётся, может придумают что, направление у тебя правильное :-) PS: переменная t тебе ни к чему, а вот это поможет уравнения решить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2014, 08:08 |
|
||
|
Длинная арифметика. Вопросы по реализации/оптимизации
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan), оператор L зависит от (x,y). Навскидку, "серьёзные дядьки" решают аналогично способу предложенному выше :) А вот в главный файл, что нужно включать ? все хидеры, или только la.h ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2014, 08:16 |
|
||
|
Длинная арифметика. Вопросы по реализации/оптимизации
|
|||
|---|---|---|---|
|
#18+
SashaMercuryА вот в главный файл, что нужно включать ? все хидеры, или только la.h ? если они у тебя описаны в la.h, то они включатся ориентируйся на простое правило 1. если заголовки тебе нужны для описания типов параметров то включаешь в *.h 2. если используется только в реализации, то в *.cpp, *.c ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2014, 08:25 |
|
||
|
Длинная арифметика. Вопросы по реализации/оптимизации
|
|||
|---|---|---|---|
|
#18+
Например, у меня 5 пар хидер name.h -файл name.c в каждом name.h подключаю la.h, а в каждом name.c подключаю name.h . В main.c подключаю la.h Вроде бы правильно всё(хотя мне так не кажется), но снова аналогичная ошибка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2014, 08:29 |
|
||
|
Длинная арифметика. Вопросы по реализации/оптимизации
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)что бы заголовочные файлы не включались по нескольку раз вставляют директивы препроцессора Код: plaintext 1. 2. 3. 4. можно проще: первой строчкой в .h написать Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2014, 08:39 |
|
||
|
Длинная арифметика. Вопросы по реализации/оптимизации
|
|||
|---|---|---|---|
|
#18+
SashaMercury, надо так la.h Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. la.c Код: plaintext 1. 2. sum.h Код: plaintext 1. 2. 3. sum.c Код: plaintext 1. 2. main.c Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2014, 08:52 |
|
||
|
Длинная арифметика. Вопросы по реализации/оптимизации
|
|||
|---|---|---|---|
|
#18+
Так и делаю :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2014, 09:40 |
|
||
|
Длинная арифметика. Вопросы по реализации/оптимизации
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)Графический примитив - линейно залитый цветом треугольник Дано: 3 точки на плоскости, их цвет c1,c2,c3 , треугольник образуемый ими нужно равномерно залить цветом Найти: формулу c(x,y) - ? В графическом и геометрическом моделировании ГиГМ никто такую формулу не ищет. Треугольник (в общем случае не коллинеарный оси OX в системе координат) режут на 2 под-треугольника. По средней точке по вертикали OY. Для полученных треугольников ищут уравнения боковых отрезков и делают итератор по алгоритму Брезенхема или используют линейную зависимость в fix-point арифметике на целых числах. Находят 2 точки и заполняют отрезок наиболее быстрым образом (не setPixel) чаще всего черед прямой доступ к памяти графического контекста. Для старинных API использовался доступ к видеопамяти через различные хитрые ухищрения. Для DirectX/OpenGL треугольник fillitся встроенными функциями, которые работают очень быстро и рисуют миллион треугольников в секунду. Та общая формула которая находит принадлежность точки треугольнику - нужна в других задачах но не в fill polyline. Кстати предлагаю подумать над порядком точек. Возможен вариант когда треугольник "вывернут наизнанку" и мы определям обратную формулу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2014, 10:16 |
|
||
|
Длинная арифметика. Вопросы по реализации/оптимизации
|
|||
|---|---|---|---|
|
#18+
SashaMercuryТак и делаю :( Как так? давай подробнее и с сообщением об ошибке. Это убрал из la.h ? Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2014, 10:22 |
|
||
|
Длинная арифметика. Вопросы по реализации/оптимизации
|
|||
|---|---|---|---|
|
#18+
maytonВ графическом и геометрическом моделировании ГиГМ никто такую формулу не ищет. Треугольник (в общем случае не коллинеарный оси OX в системе координат) режут на 2 под-треугольника. По средней точке по вертикали OY. Для полученных треугольников ищут уравнения боковых отрезков и делают итератор по алгоритму Брезенхема или используют линейную зависимость в fix-point арифметике на целых числах. Находят 2 точки и заполняют отрезок наиболее быстрым образом (не setPixel) чаще всего черед прямой доступ к памяти графического контекста. вопрос не в том как находятся координаты периметра треугольника, а по какой формуле находится цвет внутри него для точки с координатами (x,y) (т.е. уже известно что она лежит внутри треугольника) цвета точек c1,c2,c3 и их координаты соответственно (x1,y1),(x2,y2),(x3,y3) mayton Для DirectX/OpenGL треугольник fillitся встроенными функциями, которые работают очень быстро и рисуют миллион треугольников в секунду. Та общая формула которая находит принадлежность точки треугольнику - нужна в других задачах но не в fill polyline. то, что кто-то реализовал эти методы за/до вас, не значит что формулы не используются кстати, для перспективной проекции формула будет другая maytonКстати предлагаю подумать над порядком точек. Возможен вариант когда треугольник "вывернут наизнанку" и мы определям обратную формулу. порядок точек не важен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2014, 11:40 |
|
||
|
Длинная арифметика. Вопросы по реализации/оптимизации
|
|||
|---|---|---|---|
|
#18+
Dima TSashaMercuryТак и делаю :( Как так? давай подробнее и с сообщением об ошибке. Это убрал из la.h ? Код: plaintext 1. SashaMercury, покажи лучше начала всех файлов которые у тебя есть в проекте ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2014, 11:44 |
|
||
|
Длинная арифметика. Вопросы по реализации/оптимизации
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)вопрос не в том как находятся координаты периметра треугольника, а по какой формуле находится цвет внутри него для точки с координатами (x,y) (т.е. уже известно что она лежит внутри треугольника) цвета точек c1,c2,c3 и их координаты соответственно (x1,y1),(x2,y2),(x3,y3) ОК. Как будет угодно. Я-бы предложил вынести это в пятничные задачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2014, 12:26 |
|
||
|
Длинная арифметика. Вопросы по реализации/оптимизации
|
|||
|---|---|---|---|
|
#18+
maytonkealon(Ruslan)вопрос не в том как находятся координаты периметра треугольника, а по какой формуле находится цвет внутри него для точки с координатами (x,y) (т.е. уже известно что она лежит внутри треугольника) цвета точек c1,c2,c3 и их координаты соответственно (x1,y1),(x2,y2),(x3,y3) ОК. Как будет угодно. Я-бы предложил вынести это в пятничные задачи. да ладно, уравнение плоскости через три точки даже на кофе-брейк не тянет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2014, 12:42 |
|
||
|
Длинная арифметика. Вопросы по реализации/оптимизации
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)maytonпропущено... ОК. Как будет угодно. Я-бы предложил вынести это в пятничные задачи. да ладно, уравнение плоскости через три точки даже на кофе-брейк не тянет Тогда давай вернёмся к длинной арифметке. Топик ибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2014, 13:44 |
|
||
|
Длинная арифметика. Вопросы по реализации/оптимизации
|
|||
|---|---|---|---|
|
#18+
maytonТогда давай вернёмся к длинной арифметке. Топик ибо. а что там возвращаться, у автора проблемы больше с С++ по сути : 1. если в продакшене, то - GMP, как ему уже советовали 2. если самому разобраться сложить,вычесть - столбиком наверное пойдёт алгоритмы умножения: Метод умножения Шёнхаге — Штрассена , умножение Карацубы , Алгоритм Фюрера деление, остаток от деления - столбиком хватит наверное через вычитание для начала операция k^n mod m - Алгоритм Монтгомери но скорее всего он пока не осилит этого ... SashaMercury, ты в каком классе учишься? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2014, 14:30 |
|
||
|
Длинная арифметика. Вопросы по реализации/оптимизации
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)SashaMercury, ты в каком классе учишься? если, вы читали Лабиринт отражений/Фальшивые зеркала, то вы наверное знаете, что не всегда на такие вопросы можно получить ответы. Всё что вы привели выше, уверен? реализовать смогу. Но я чувствую разницу между прочитать алгоритм и реализовать его(тут и дворник справится), и между самому решить эту задачу(пусть даже для этой задачи уже есть решение). Когда я задаю вопросы, то задаю их не ради получения личной выгоды в виде решения лабораторных, устранения косяков на работе, smth else. Мне это нравится, в первую очередь, нравится думать, писать программы на Си, и видеть результат. Что касается треугольника, то решения уже приведено выше, и оно правильное. Не понимаю почему на хабре ради такой ерунды создавали топик. Решение единственное, и не имеет вариаций. В том смысле, что это равносильно созданию топика о том, как найти определитель матрицы 3x3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2014, 14:44 |
|
||
|
Длинная арифметика. Вопросы по реализации/оптимизации
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)maytonТогда давай вернёмся к длинной арифметке. Топик ибо. а что там возвращаться, у автора проблемы больше с С++ Да нет у него проблем. Просто изучает. В плане оптимизации сложения у меня есть свои мысли. В техникуме на курсе ЦУМПС (цифровые устр. и мк.системы) мы изучали оптимизацию сложения через аппаратные кодеры-декодеры или шифраторы-дешифраторы (не помню точно). Суть - в двоичной системе счисления биты группируются на группы по 4 штуки (тетрада). И для каждой тетрады строится булевая функция. 8+1 входов и 4+1 выхода. Оптимизируется и хардкодится. 5-й выход - это бит переноса. Можно и группировать (наверное) и по 5 битов и более но это вызовет скорее всего резкое усложнение сумматора. Далее полученные аппаратные сумматоры тетрад объединяются в каскады. Полученное устройство и будет максимально оптимизировано. Далее - сколько не разгоняй - всё равно каскады работают последовательно. Но быстрее чем по 1 биту складывать. По поводу умножения. Ну... у меня есть идея цифро-аналогового умножителя (только для вещественных чисел). И не уверен что она всем придётся по вскусу. Уж больно она ... недетерминирована ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2014, 14:45 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38822118&tid=2019209]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
47ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 280ms |
| total: | 412ms |

| 0 / 0 |
