2 / 2 / 0
Регистрация: 12.07.2022
Сообщений: 117
|
||||||
Два абсолютно идентичных цикла выдают разные результаты15.04.2025, 19:46. Показов 623. Ответов 6
Метки нет Все метки)
(
Плата Uno R3 (контроллер ATmega328P). Наткнулся на очень странную вещь в работе цикла for. Результат функции cos() ошибочный. Причиной оказалось место объявления переменной-счётчика цикла, что очень странно.
0.020058271884 0.896938610076 0.020061361789 0.896938514709 1-е и 3-е значения должны быть абсолютно одинаковыми, и 2 с 4 тоже. ![]() Да, аргумент для косинуса 79908.0 - странный, т. к. это куча периодов, но в любом случае результаты должны быть одинаковые, ведь используется то же самое значение. Просто с ним получилась очень большая разница (в 4-й значащей цифре). С другими значениями результаты тоже отличались, но меньше. Потестил варианты: 1) Если в массиве был бы только один элемент - выводится правильно. 2) Вывел не в цикле - выводится правильно. 3) Вывел просто значения в массиве - строго одинаковые с обоих циклов (как и должно быть). 4) Взял вместо cos() другую функцию - sqrt() - строго одинаковые с обоих циклов (как и должно быть). Неужели какая-то ошибка в железе или компиляторе?
1
|
15.04.2025, 19:46 | |
Ответы с готовыми решениями:
6
Как можно вытащить программу с одной платы и переместить ее на другую, если платы будут идентичны? Схема формирования модуля (абсолютного значения) 4-разрядного двоичного числа А=а3а2а1а0 Аrduino. Программа выдачи результата вычислений на COM-порт |
2 / 2 / 0
Регистрация: 12.07.2022
Сообщений: 117
|
|||||||
15.04.2025, 22:32 [ТС] | |||||||
0.020058271884 0.896938610076 0.020058271884 0.896938610076 0.020061361789 0.896938514709 0.020061361789 0.896938514709 Но тут правильно сказали, можно долго гадать. Надо ассемблерный код смотреть, но в нём я не силён. А так конечно причина интересна. Вопрос ведь не про косинус, а про то как абсолютно посторонние вещи могут влиять на результат функции.
0
|
Диванный эксперт
![]() ![]() |
||||||
15.04.2025, 22:34 | ||||||
Хм.
Интересно. Похоже на баг компилятора. Предположу, что ему регистров не хватает.
Жаль, что в ассемблере не силен...
0
|
15.04.2025, 22:34 | |
Помогаю со студенческими работами здесь
7
Подсчитать сумму единиц в словах по модулям и выдать результат на выход Функции выдают один и тот-же результат Два разных АЦП разных устройств к одному датчику Определить абсолютную и относительную погрешность измерения Определить абсолютную и относительную погрешности измерения и назначить класс точности Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Опции темы | |
|
Новые блоги и статьи
![]() |
||||
Обнаружение объектов в реальном времени на Python с YOLO и OpenCV
AI_Generated 29.04.2025
Компьютерное зрение — одна из самых динамично развивающихся областей искусственного интеллекта. В нашем мире, где визуальная информация стала доминирующим способом коммуникации, способность машин. . .
|
Эффективные парсеры и токенизаторы строк на C#
UnmanagedCoder 29.04.2025
Обработка текстовых данных — частая задача в программировании, с которой сталкивается почти каждый разработчик. Парсеры и токенизаторы составляют основу множества современных приложений: от. . .
|
C++ в XXI веке - Эволюция языка и взгляд Бьярне Страуструпа
bytestream 29.04.2025
C++ существует уже более 45 лет с момента его первоначальной концепции. Как и было задумано, он эволюционировал, отвечая на новые вызовы, но многие разработчики продолжают использовать C++ так, будто. . .
|
Слабые указатели в Go: управление памятью и предотвращение утечек ресурсов
golander 29.04.2025
Управление памятью — один из краеугольных камней разработки высоконагруженных приложений. Го (Go) занимает уникальную нишу в этом вопросе, предоставляя разработчикам автоматическое управление памятью. . .
|
Разработка кастомных расширений для компилятора C++
NullReferenced 29.04.2025
Создание кастомных расширений для компиляторов C++ — инструмент оптимизации кода, внедрения новых языковых функций и автоматизации задач. Многие разработчики недооценивают гибкость современных. . .
|
Гайд по обработке исключений в C#
stackOverflow 29.04.2025
Разработка надёжного программного обеспечения невозможна без грамотной обработки исключительных ситуаций. Любая программа, независимо от её размера и сложности, может столкнуться с непредвиденными. . .
|
Создаем RESTful API с Laravel
Jason-Webb 28.04.2025
REST (Representational State Transfer) — это архитектурный стиль, который определяет набор принципов для создания веб-сервисов. Этот подход к построению API стал стандартом де-факто в современной. . .
|
Дженерики в C# - продвинутые техники
stackOverflow 28.04.2025
История дженериков началась с простой идеи — создать механизм для разработки типобезопасного кода без потери производительности. До их появления программисты использовали неуклюжие преобразования. . .
|
Тестирование в Python: PyTest, Mock и лучшие практики TDD
py-thonny 28.04.2025
Тестирование кода играет весомую роль в жизненном цикле разработки программного обеспечения. Для разработчиков Python существует богатый выбор инструментов, позволяющих создавать надёжные и. . .
|
Работа с PDF в Java с iText
Javaican 28.04.2025
Среди всех форматов PDF (Portable Document Format) заслуженно занимает особое место. Этот формат, созданный компанией Adobe, превратился в универсальный стандарт для обмена документами, не зависящий. . .
|