Skocz do zawartości

[C] Potęgowaniem zmiennych [STM32, HAL, Eclipse]


Pomocna odpowiedź

Napisano

Cześć,
W jaki sposób można podnieść zmienną do potęgi 0.19?

Próbowałem już z funkcją pow(), np:

 wynik = pow(zmienna, 0.19) 

Program nie kompiluje się. Wpisanie w wykładniku liczby 19/100 równierz nie rozwiązuje problemu.

Istnieje funkcja która by obsłużyła taki typ wykładnika?

Z góry dzięki za pomoc.

Nie w tym problem. Program działa ładnie kiedy w wykładniku są liczby całkowite np. 2. Ale kiedy wpisuje tam ułamek to przestaje się on kompilować.

Nie zmyślaj. To jest funkcja ze standardowej biblioteki matematycznej math.h, oczekuje dwóch argumentów typu double, oddaje też zmienny przecinek i może podnosić do dowolnej potęgi. Piekielnie długo się liczy, bo używa log() i exp(), no ale lepszego sposobu na takie potęgowanie nie ma.

Czekamy na komunikat kompilatora, może to rozjaśni zagadkę.

Poza tym w C mamy konwersje w locie. Nawet jeśli funkcja oczekuje argumentu jakiegoś typu, Ty wpiszesz inny a kompilator umie to zamienić - zrobi to.

Przy próbie budowania programu wypisuje mi taki komunikat:

Zauważyłem że program działa tylko jeśli w wykładniku są liczby 1 lub 2. Wpisanie do wykładnika jakiejkolwiek innej liczby (nawet całkowitej (np. 3)) powoduje pojawienie się tego samego błędu.

Jak poszukasz w internecie tego błędu (wpisz "stm32 undefined reference errno"), to któreś z rozwiązań pewnie zadziała. W skrócie musisz pokombinować z ustawieniami linkera 🙂

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...