Как преобразовать об/мин в рад/с в C?

Как преобразовать об/мин в рад/с в C? Я использую программу Altera Monitor для вычисления рад/с от оборотов в минуту. но когда я использую 2 * pi / 60, он говорит, что «пи» не объявлено. Я включил math.h, но проблема та же.

также у меня есть другая проблема при включении библиотеки с плавающей запятой vhdl. Я использую версию Quatus 16.1. я пытался включить

БИБЛИОТЕКА используйте ieee.float_pkg.all;

Ошибка (10481): ошибка пункта использования VHDL в uart.vhd(27): библиотека проектирования «ieee_proposed» не содержит основной модуль «float_pkg». Убедитесь, что основной модуль существует в библиотеке и успешно скомпилирован.

как это решить?


person gobsa89    schedule 25.06.2017    source источник
comment
Пожалуйста, прочтите описание тегов при их добавлении, rpm означает Red Hat/RPM Package Manager!   -  person Antti Haapala    schedule 25.06.2017
comment
Я не понимаю, почему вы просто не ввели значение числа пи или не определили его #define. Поиск значения числа Пи не требует ТАКОГО вопроса!   -  person ThingyWotsit    schedule 25.06.2017


Ответы (2)


При использовании gcc (и многих других компиляторов) константа для pi определяется в math.h как M_PI:

rads = rpm * 2.0 * M_PI / 60.0;

Однако это не гарантируется стандартом C, поэтому, если ваш код должен быть переносимым, у вас должно быть определение непредвиденных обстоятельств для pi.

person Paul R    schedule 25.06.2017
comment
Это действительно не всегда правильно, stackoverflow.com /questions/5007925/ — несмотря на то, что они доступны, например, в GlibC, эти константы взяты из стандарта Unix98 и также были доступны в 4.4BSD; поэтому они определяются только в том случае, если определен '_BSD_SOURCE' или '_XOPEN_SOURCE=500' или более общий макрос выбора функции. Набор функций по умолчанию включает эти константы. Однако я думаю, что Altera использует GCC. - person Antti Haapala; 25.06.2017
comment
@AnttiHaapala: возможно, вы правы, но я никогда не сталкивался с ситуацией, когда M_PI не определен, по крайней мере, для C (C++ - другое дело). - person Paul R; 25.06.2017
comment
gcc pi.c -lm -pedantic -std=c11 например - person Antti Haapala; 25.06.2017
comment
@PaulR: для компиляторов Microsoft нестандартные константы, включая M_PI, защищены _USE_MATH_DEFINES, которые должны быть определены либо глобально, либо до включения math.h (msdn.microsoft.com/en-us/library/4hwaceh6.aspx). - person Clifford; 25.06.2017
comment
@AnttiHaapala: компилятор Altera NIOSII - это GCC с Newlib. В math.h от Newlib M_PI охраняется только __STRICT_ANSI__ (поэтому он не определен, например, когда используется -pedantic -std=c11). Для переносимости, возможно, проще определить свои собственные константы. - person Clifford; 25.06.2017
comment
Поскольку 2 π / 60 ≈ 0,10471975511965977746154214461093167628066, вы также можете сказать радиан в секунду ≈ 0,1047197551196597746154214461093167628066 × оборотов в минуту. Константа 0.1047197551196597746154214461093167628066 верна с точностью не менее 128 бит (вычислено с помощью Maple) и должна быть достаточной для любых обычных целей. - person Nominal Animal; 25.06.2017

Константа, часто определяемая в math.h, равна M_PI или иногда PI, но не pi. Но ни одна из этих констант не упоминается в стандарте C, поэтому вам не следует полагаться на нее и просто определять свою собственную, например. используя ожидаемое имя:

#define pi 3.14159265358979323846
person Community    schedule 25.06.2017