Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
19.06.2010, 13:09
|
|
Почётный гражданин KAZUS.RU
Регистрация: 24.09.2007
Сообщений: 1,437
Сказал спасибо: 287
Сказали Спасибо 339 раз(а) в 202 сообщении(ях)
|
Возведение в степень, извлечение корня в "С"
Ктонибудь подскажет как правильно в "С" возводить в степень n и извлекать корень в степени n в компиляторе CodeVisionAVR. На данный момент хотябы возводить в квадрат и извлекать квадратный корень. То что для возведения в степень n необходимо n раз перемножить знаю и так. Другие способы есть?
|
|
|
|
19.06.2010, 13:32
|
|
Прохожий
Регистрация: 15.08.2006
Сообщений: 6
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Возведение в степень, извлечение корня в "С"
Еще один способ это логический сдвиг значения в регистре (или просто значения) влево, на ассемблере это LSL если контроллер AVR
http://www.gaw.ru/html.cgi/txt/doc/m...vr/asm/lsl.htm
с си на контроллерах дел не имел но знаю что можно вставить вставку типа:
ASM
......
ASM
|
|
|
|
19.06.2010, 13:49
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.05.2005
Адрес: Саратов.ru
Сообщений: 1,548
Сказал спасибо: 384
Сказали Спасибо 737 раз(а) в 417 сообщении(ях)
|
Re: Возведение в степень, извлечение корня в "С"
Сообщение от 7Fantomas7
|
как правильно в "С" возводить в степень n и извлекать корень
|
Для этого в С есть специальная функция float pow(float x,float y). Объявлена в math.h.
Извлечение корня степени n выполняется через возведение числа в степень 1/n, например ³√x=(x)⅓.
|
|
|
Сказали "Спасибо" AJScorp
|
|
|
19.06.2010, 13:51
|
|
Временная регистрация
Регистрация: 04.08.2006
Сообщений: 67
Сказал спасибо: 2
Сказали Спасибо 20 раз(а) в 11 сообщении(ях)
|
Re: Возведение в степень, извлечение корня в "С"
RTFM!
кавадрат
корень
Код:
|
#include ‹math.h›
unsigned char isqrt(unsigned int x)
returns the square root of the unsigned integer x.
unsigned int lsqrt(unsigned long x)
returns the square root of the unsigned long integer x.
float sqrt(float x)
returns the square root of the positive floating point number x. |
|
|
|
Сказали "Спасибо" Vetal-soft
|
|
|
19.06.2010, 14:14
|
|
Почётный гражданин KAZUS.RU
Регистрация: 24.09.2007
Сообщений: 1,437
Сказал спасибо: 287
Сказали Спасибо 339 раз(а) в 202 сообщении(ях)
|
Re: Возведение в степень, извлечение корня в "С"
С возведением в степень более менее понятно нет вопросов.
А с извлечением корня не напишете ли на прмере.
Не совсем понятно ³√x=(x)⅓.. То есть в степень то возвести понятно а как дробную степень записать.
Последний раз редактировалось 7Fantomas7; 19.06.2010 в 14:16.
|
|
|
|
19.06.2010, 14:41
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: Возведение в степень, извлечение корня в "С"
Сообщение от 7Fantomas7
|
а как дробную степень записать.
|
(1.0/3) или (0.5)
Поделит еще компилятор, так что времени этот расчет не займет.
|
|
|
|
19.06.2010, 14:49
|
|
Почётный гражданин KAZUS.RU
Регистрация: 24.09.2007
Сообщений: 1,437
Сказал спасибо: 287
Сказали Спасибо 339 раз(а) в 202 сообщении(ях)
|
Re: Возведение в степень, извлечение корня в "С"
Так вроде понял.
Правильно лия понял что ³√x=(x)⅓
пишется так float pow(float x,float 1.0/3) или так float pow(float x,float 1/3)
другими словами нужно писать числитель 1.0 или 1.
|
|
|
|
19.06.2010, 15:20
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.05.2005
Адрес: Саратов.ru
Сообщений: 1,548
Сказал спасибо: 384
Сказали Спасибо 737 раз(а) в 417 сообщении(ях)
|
Re: Возведение в степень, извлечение корня в "С"
Пишется pow(x,1.0/3) или pow(x,1./3), чтобы компилятор понял, что тип константы 1/3 - float а не int.
|
|
|
|
19.06.2010, 23:16
|
|
Почётный гражданин KAZUS.RU
Регистрация: 24.09.2007
Сообщений: 1,437
Сказал спасибо: 287
Сказали Спасибо 339 раз(а) в 202 сообщении(ях)
|
Re: Возведение в степень, извлечение корня в "С"
Блин еще больше не понял
есть переменная Х как из ее извлечь кубический корень и присвоить Х
Х=pow(x,1.0/3) так?
1.0/3 числитель как правильно записывается 1.0 или 1. или 1. Если и так и так то в чем разница для компилятора. А если записать не 1.0/3, а 0,33333 какая разница для компилятора.
Последний раз редактировалось 7Fantomas7; 19.06.2010 в 23:23.
|
|
|
|
19.06.2010, 23:27
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: Возведение в степень, извлечение корня в "С"
Сообщение от 7Fantomas7
|
Х=pow(x,1.0/3) так?
|
Нормально.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 23:39.
|
|