ccpp:math

Toto je starší verze dokumentu!


Matematické funkce

C i C++ je jako většina programovacích jazyků vybavena knihovnou s nejběžnějšími matematickými funkcemi. Tyto funkce můžeme nalézt v knihovnách <math.h>, <stdlib.h> pro jazyk C a v knihovnách <cmath>, <cstdlib> pro jazyk C++. Zde pro přehled uvedeme ty nejpoužívanější z nich.

Absolutní hodnota je funkce, která má v jazycích C/C++ dvě varianty: celočíselnou v knihovách <stdlib.h>/<cstdlib> a s plovoucí čárkou v knihovnách <math.h>/<cmath>. V moderních implementacích (od C++17) stačí includovat pouze jednu z uvedených knihoven a lze pak používat funkci std::abs() jak pro datové typy s plovoucí čárkou, tak i celočíselné (je přetížená).

Ukázka použití funkcí abs() a fabs() (C implementace)

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
int main()
{
  int x = -42;
  double y = 6.34;
 
  int ax = abs(x);
  double ay = fabs(ay);
 
  printf("|%d| = %d\n", x, ax);
  printf("|%lf| = %lf\n", y, ay);
 
  return 0;
}

Ukázka použití funkce std::abs() (C++17 implementace)

#include <cstdio>
#include <cstdlib>
#include <cmath>
 
int main()
{
  int x = -42;
  double y = 6.34;
 
  int ax = std::abs(x);
  double ay = std::abs(ay);
 
  std::printf("|%d| = %d\n", x, ax);
  std::printf("|%lf| = %lf\n", y, ay);
 
  return 0;
}

Pokud chceme například vypočítat jen X², stačí double xna2 = x * x; – není třeba využívat sofistikovanou matematickou funkci. Pro složitější mocniny se hodí C funkce double pow(double zaklad, double exponent), případně float powf(float zaklad, float exponent) nebo plně přetížená C++11 funkce std::pow(), která umožňuje operandy všech číselných typů, včetně různého typu mezi operandy.

Ukázka použití funkce pow()

#include <stdlib.h>
#include <stdio.h>
#include <math.h>
 
int main()
{
  double x = 2;
  double y = 6;
  double vysl = pow(x, y); 
 
  printf("%lf^%lf = %lf\n", x, y, vysl);
 
  return 0;
}

Pro výpočet druhé odmocniny slouží knihovní funkce double sqrt(double cislo), případně float sqrtf(float cislo), nebo přetíženou funkci std::sqrt().

Ukázka použití funkce pow()

#include <stdlib.h>
#include <stdio.h>
#include <math.h>
 
int main()
{
  double x = 169;
  double vysl = sqrt(x); 
 
  printf("Odmocnina z %lf je %lf\n", x, vysl);
 
  return 0;
}
  • ccpp/math.1571593858.txt.gz
  • Poslední úprava: 2019/10/20 19:50
  • autor: bures