Matemaatiliste funktsioonide lahendamiseks võib meil olenevalt eesmärgist olla kasutada mitu standardteeki. Peamiseks standardteegiks on math.h (https://cppreference.com/w/c/header/math.html). Kompleksarvulise matemaatika jaoks võib lisaks võtta kasutusele complex.h ja/või tgmath.h teegid.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
/** * File: math.c * Author: Risto Heinsar * Created: 05.10.2015 * Modified: 26.09.2021 * * Description: Some example use of math.h library. * * Note: To use math.h library You must compile the program with the * linker flag "-lm", without quotes. In geany, you can add the -lm * to build path under build -> set build commands. */ #include <stdio.h> #include <math.h> int main(void) { // Integer division leads to integer answers with decimal places truncated printf("5 / 10 is %d\n", 5 / 10); printf("10 / 10 is %d\n", 10 / 10); printf("28 / 10 is %d\n\n", 28 / 10); // To get deimal places, at least one operand has to be float/double printf("9.0 / 10 is %.2f\n", 9.0 / 10); printf("9 / 10.0 is %.2f\n", 9 / 10.0); printf("Using typecasting: 9 / 10 is %.2f\n\n", 9 / (float)10); float num1 = 9; float num2 = -5.4f; float num3 = pow(num1, 2); // Using math.h functions printf("Num1 squared is %.2f\n", pow(num1, 2)); printf("Num1 squared can be also found like this: %.2f\n", num3); printf("Number 7 to the power of 3 is: %.2f\n", pow(7, 3)); printf("The square root of num1 is: %.2f\n", sqrt(num1)); printf("Alternative square root: %.2f\n", pow(num1, 1.0/2.0)); float equation = num1 * pow(num2, 2) + sqrt(num1); printf("The solution for the equation %.3f\n", equation); return 0; } |
Pane tähele
- Kompileerides tuleb kompilaatorile (gcc) täiendava argumendina lisada “-lm”, ilma jutumärkideta. Selle abil lisatakse linkuri poolt matemaatika teek.
- Matemaatika funktsioonid reeglina tagastavad oma vastuse. Kui soovime seda kasutada järgnevas kohas, peame sellesse muutujasse salvestama. Kui väärtust on vaja vaid korraks tehte osana, siis eraldi salvestamist pole vaja.
- N-indat juurt on lihtne võtta astme omadusi ära kasutades. Arvudel on oluline kasutada murdarvu kirjapilti (st 1 -> 1.0). See tuleneb täisarvu ja murdarvu käsitlemise erinevusest jagamisel