реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> PI
ViKo
сообщение Nov 27 2013, 12:42
Сообщение #1


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



А есть ли в стандартной библиотеке C, конкретно, в Keil, определение PI? Я могу и сам задать, но...
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Nov 27 2013, 13:04
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



Ответа не знаю. Всегда задавал сам как константу. Сейчас пришла мысль, что можно задать как глобальную переменную и посчитать при инициализации в начале main()

pi_const = 6*arcsin(0.5);
Высокая точность и не надо никаких цифер запоминать.

Но это только если надо libm подключать. В остальных случаях лучше задать как константу.


Поиск в гугле дал такой ответ:
http://www.nongnu.org/avr-libc/user-manual..._avr__math.html
Go to the top of the page
 
+Quote Post
ViKo
сообщение Nov 27 2013, 13:10
Сообщение #3


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Если мне нужно PI, то и sin cos я использую, библиотеку <math.h> подключаю. rolleyes.gif
Только странно вычислять PI для того, чтобы потом использовать.
Знаю, что в библиотеках под Windows число PI имеется. Что же здесь так убого?
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Nov 27 2013, 13:13
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Мдя... читать доки не модно стало...
В math.h определен #define M_PI


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
ViKo
сообщение Nov 27 2013, 13:16
Сообщение #5


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(Сергей Борщ @ Nov 27 2013, 16:13) *
В math.h определен #define M_PI

Нема такого!
Конкретно, в Keil.
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Nov 27 2013, 13:25
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



Цитата(ViKo @ Nov 27 2013, 17:10) *
Если мне нужно PI, то и sin cos я использую, библиотеку <math.h> подключаю. rolleyes.gif
Только странно вычислять PI для того, чтобы потом использовать.
Знаю, что в библиотеках под Windows число PI имеется. Что же здесь так убого?


Я линк потом дбавил. Посмотрите его.

Цитата(ViKo @ Nov 27 2013, 17:10) *
Только странно вычислять PI для того, чтобы потом использовать.


Я просто поделился идеей. Возможно вам она не понравится.

Цитата(ViKo @ Nov 27 2013, 17:10) *
Знаю, что в библиотеках под Windows число PI имеется. Что же здесь так убого?


Есть множество разных компиляторов и в каждом есть маленькие отличия. Я бы не сказал, что убого. Наоборот изобилие. Это в Виноус убого. Один единственный компилятор sm.gif

Потом есть много разных библиотек, которые можно подключать.
Go to the top of the page
 
+Quote Post
yes
сообщение Nov 27 2013, 13:30
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 198
Регистрация: 23-12-04
Пользователь №: 1 640



Цитата(ViKo @ Nov 27 2013, 16:42) *
А есть ли в стандартной библиотеке C, конкретно, в Keil, определение PI? Я могу и сам задать, но...

в
<math.h>
M_PI
ну и бибилиотека libm ес-сно

upd : я еще удивился, что такая тема и неотвечена, а пока отвернулся от кнопок на пару минут - вот оно как вышло sm.gif
Go to the top of the page
 
+Quote Post
ViKo
сообщение Nov 27 2013, 13:38
Сообщение #8


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(yes @ Nov 27 2013, 16:30) *
upd : я еще удивился, что такая тема и неотвечена, а пока отвернулся от кнопок на пару минут - вот оно как вышло sm.gif

Как же "отвечена", если в Keil нет ни PI, ни M_PI, ни libm?
Go to the top of the page
 
+Quote Post
_pv
сообщение Nov 27 2013, 13:39
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



дарю sm.gif,
Код
#define M_PI 3.14159265358979

пользуйтесь на здоровье
Go to the top of the page
 
+Quote Post
ViKo
сообщение Nov 27 2013, 13:41
Сообщение #10


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(_pv @ Nov 27 2013, 16:39) *
дарю sm.gif,
...
пользуйтесь на здоровье

От моего стола - вашему:
Код
#define PI 3.1415926535897932384626433832795L

По-моему, у меня PI длиннее biggrin.gif
Go to the top of the page
 
+Quote Post
_pv
сообщение Nov 27 2013, 13:48
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



в double всё равно больше 16 знаков дестичных не лезет, так что только зря байты переводите.
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Nov 27 2013, 13:52
Сообщение #12


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(Tarbal @ Nov 27 2013, 16:25) *
Есть множество разных компиляторов и в каждом есть маленькие отличия. Я бы не сказал, что убого. Наоборот изобилие. Это в Виноус убого. Один единственный компилятор sm.gif

Ниправельна!
Код
typedef float fpu_type;
//typedef double fpu_type;
static inline fpu_type const_pi(void)
{
return (6*arcsin(0.5));
}


Шутка. Но в ней намек: если по каким-то причинам компилер тупит, и кривость рук тутто ни при чем, возможны варианты.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Nov 27 2013, 14:16
Сообщение #13


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(_pv @ Nov 27 2013, 16:48) *
в double всё равно больше 16 знаков дестичных не лезет, так что только зря байты переводите.

Зато в C# в формат decimal лезет больше.
Go to the top of the page
 
+Quote Post
yes
сообщение Nov 27 2013, 17:04
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 2 198
Регистрация: 23-12-04
Пользователь №: 1 640



Цитата(ViKo @ Nov 27 2013, 17:38) *
Как же "отвечена", если в Keil нет ни PI, ни M_PI, ни libm?

а хидер <math.h> есть? может сам код воткнули не туда. по моему в keil-е не так все плохо, чтобы без флоатов/с нестандартными флоатами жить
Go to the top of the page
 
+Quote Post
ViKo
сообщение Nov 27 2013, 17:53
Сообщение #15


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(yes @ Nov 27 2013, 20:04) *
а хидер <math.h> есть? может сам код воткнули не туда. по моему в keil-е не так все плохо, чтобы без флоатов/с нестандартными флоатами жить

Хидер в Кейле есть. И к проекту подключен.
Флоаты к делу не относятся.
Прикрепленные файлы
Прикрепленный файл  math.zip ( 8.65 килобайт ) Кол-во скачиваний: 11
 
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 18:25
Рейтинг@Mail.ru


Страница сгенерированна за 0.01426 секунд с 7
ELECTRONIX ©2004-2016