Исходя из этого, если я не могу с помощью данной функции без костылей получить тот результат, который ожидается, имею полное право считать эту функцию ущербной.
Нет. Эта функция изначально такая в Си. Просто надо как-то помнить язык, ну и в случае непонятных результатов всегда обращать в первую очередь внимание на типы. Сколько граблей поломано даже с простым знаковое-беззнаковое, когда по ошибке не то взято. А плавающая точка это всегда источник счастия...
Да блин... я же написал - тип переменной uint16_t - двухбайтное, целое, беззнаковое.
_________________ Не важно чем все начнется. Важно чем кончится!
А лучше (мало памят) и точно: с циклом, с умножением. И Ардуино тут не при чем, как писали коллеги.
Если мало памяти, всякие float и double лучше вовсе обходить стороной. На 328 меге можно особо не париться, там ее как у дурака фантиков. Мои ходовые камни это тини 13 и серия 24-84, вот там все гораздо интереснее.
_________________ Не важно чем все начнется. Важно чем кончится!
Я согласен. ATtiny13A тоже любимый МК. Но пока в теме мы не прокомментировали аппаратную часть ни разу. Пишем о математике и коде. А например, сегодня на столе была экспериментальная установка на следующего МК в коллекцию, есть float(32), float(48), float(64), int32, int48, int64. Для меня это тоже интересно. P.S. Пожалуйста, не цитируйте все сообщения.
вот только что добавил в в свой проект на атмеге48 три ваших строчки и заказал delay(c) uint16_t a = 2; uint16_t b = 2; uint16_t c = pow(a,b); delay(c); и вот что ардуина 1.8.13 мне накомпилировала: ldi r22, 0x04 ; 4 ldi r23, 0x00 ; 0 ldi r24, 0x00 ; 0 ldi r25, 0x00 ; 0 rcall .-1574 ; 0x1c6 <delay>
Без объявления float ардуина сгенерировала целочисленный результат, равный 4. Что просили, то и получили. Сколько ещё надо демонстрировать?
Зачем же убрать-то? Топикстартер не указывал, что у него оптимизация выключена. А смысл языков высокого уровня в том и состоит, что если кто-то не умеет мыслить логически, то за него надо это делать, в том числе и производить оптимизацию. Я бы посмотрел, как топикстартер стал бы писать на асме возведение в степень (произвольную, разумеется). Особенно для 13-й тиньки, которую тут нахваливали и у которой нет команды умножения.
Господин EATS, я бы попросил вас немного гонор поубавить. В стартовом посте я лишь задал вопрос, почему функция возведения в степень из коробки делает вычисления отличные от ожидаемых, а так же уточнил, что раньше ею никогда не пользовался. И асм тут привязывать не надо - в данном разделе обсуждается язык программирования более высокого уровня. Понадобится на тини13 умножать - умножим, хотя с таким камнем проще без подобных операций обходится.
_________________ Не важно чем все начнется. Важно чем кончится!
А затем, что при включенной никакого возведения в степень может и не быть... Если переменной в коде присвоено единственное значение, то компилятор вправе обойтись без рантайма. Что мы и наблюдаем...
Никогда ею не пользовался, а тут потребовалось по быстрому бегущий огонек на трех регистрах сочинить для ребенка - решил его через степень двойки организовать от лени и на такие вилы напоролся. Программа примитивная до безобразия - считаем степень двойки от 0 до 23 и кормим три регистра результатом .
охтыжблин... нифига себе
_________________ "Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл / "Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
А затем, что при включенной никакого возведения в степень может и не быть... Если переменной в коде присвоено единственное значение, то компилятор вправе обойтись без рантайма. Что мы и наблюдаем...
А, кстати да. Переменная то не константой задавалась, а менялась в программе.
_________________ Не важно чем все начнется. Важно чем кончится!
сдвиговый регистр как бэ сразу намекает на сдвиг 1 единички, просто изменяя счётчик цикла, куда уж ленивее и никаких переменных не надо...
Ну как бы да, но без экспериментов жить скучно. В свое время, при изучении TM1628 экспериментов по оптимизации работы с нею было очень много, пока наиболее быстрый и эффективный метод не был найден.
Добавлено after 1 minute 38 seconds: Re: Прошу помочь разобраться - кто хуже в школе учился я или МК? Кстати, кто будет с TM1628 работать - не верьте даташиту родному - она умеет матрицу кнопок 10x2 а не 8x2.
_________________ Не важно чем все начнется. Важно чем кончится!
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения