Exponentialfunktionen der STL in C++ verwenden

Jinku Hu 12 Oktober 2023
  1. Verwenden Sie die Funktion std::exp, um Potenzen der Eulerschen Zahl zu berechnen
  2. Verwendung der Funktion std::exp2 zur Berechnung von Zweierpotenzen
  3. Verwenden Sie die Funktion std::pow, um Potenzen der gegebenen Zahl zu berechnen
  4. Verwendung der Funktion std::log zur Berechnung des natürlichen Logarithmus der gegebenen Zahl
Exponentialfunktionen der STL in C++ verwenden

In diesem Artikel werden STL-Funktionen zum Berechnen der Exponentialfunktion in C++ demonstriert.

Verwenden Sie die Funktion std::exp, um Potenzen der Eulerschen Zahl zu berechnen

Die Funktion std::exp ist zusammen mit vielen gängigen mathematischen Funktionen Teil des Headers <cmath>. Erstere berechnet die Potenz von Euler, die als einziges Argument übergeben wird.

Die Funktion std::exp hat mehrere Überladungen für float, double, long double und sogar den ganzzahligen Typ, aber letztere gibt immer noch einen double-Gleitkommawert zurück. Tritt der Überlauf auf, wird einer der folgenden Werte zurückgegeben +HUGE_VAL, +HUGE_VALF oder +HUGE_VALL.

Beachten Sie, dass es für einige Argumente wie +-0, +-INFINITY und NaN spezielle Rückgabewerte gibt. All diese Fälle werden im folgenden Beispielcode gezeigt.

#include <cmath>
#include <iomanip>
#include <iostream>

using std::cout;
using std::endl;

int main() {
  cout << "exp(1) = e¹ = " << std::setprecision(16) << std::exp(1) << '\n'
       << "exp(10)  = " << std::exp(10) << '\n'
       << "exp(100) = " << std::exp(100) << '\n';

  cout << "exp(-0) = " << std::exp(-0.0) << '\n'
       << "exp(+Inf) = " << std::exp(+INFINITY) << '\n'
       << "exp(NaN) = " << std::exp(NAN) << '\n'
       << "exp(-Inf) = " << std::exp(-INFINITY) << '\n';

  return EXIT_SUCCESS;
}

Ausgabe:

exp(1) = e¹ = 2.718281828459045
exp(10)  = 22026.46579480672
exp(100) = 2.688117141816136e+43
exp(-0) = 1
exp(+Inf) = inf
exp(NaN) = nan
exp(-Inf) = 0

Verwendung der Funktion std::exp2 zur Berechnung von Zweierpotenzen

Auf der anderen Seite haben wir die Funktion std::exp2, um Zweierpotenzen zu berechnen. Die Überladungen dieser Funktion geben Gleitkommawerte zurück, können aber auch ganzzahlige Typen akzeptieren. Beachten Sie, dass std::exp2 ähnliche Sonderwerte für Argumente wie +-0, +-INFINITY und NaN hat.

#include <cmath>
#include <iomanip>
#include <iostream>

using std::cout;
using std::endl;

int main() {
  cout << "exp2(4) = " << std::exp2(4) << '\n'
       << "exp2(0.5) = " << std::exp2(0.5) << '\n'
       << "exp2(10) = " << std::exp2(10) << '\n';

  cout << "exp2(-0) = " << std::exp2(-0.0) << '\n'
       << "exp2(+Inf) = " << std::exp2(+INFINITY) << '\n'
       << "exp2(NaN) = " << std::exp2(NAN) << '\n'
       << "exp2(-Inf) = " << std::exp2(-INFINITY) << '\n';

  return EXIT_SUCCESS;
}

Ausgabe:

exp2(4) = 16
exp2(0.5) = 1.41421
exp2(10) = 1024
exp2(-0) = 1
exp2(+Inf) = inf
exp2(NaN) = nan
exp2(-Inf) = 0

Verwenden Sie die Funktion std::pow, um Potenzen der gegebenen Zahl zu berechnen

Die Funktion std::pow wird verwendet, um den Wert der Zahl potenziert zu berechnen. Sowohl die Basiszahl als auch der Potenzwert werden als erstes bzw. zweites Argument angegeben.

std::pow hat mehrere Überladungen für Gleitkommatypen sowie ganzzahlige Werte, aber letztere werden in den Typ double umgewandelt und können sogar in den long double hochgestuft werden, wenn eines der Argumente ebenfalls long double ist. Beachten Sie auch, dass std::pow nicht verwendet werden kann, um eine Wurzel einer negativen Zahl zu berechnen.

#include <cmath>
#include <iomanip>
#include <iostream>

using std::cout;
using std::endl;

int main() {
  cout << "pow(2, 10) = " << std::pow(2, 10) << '\n'
       << "pow(10, 0.5) = " << std::pow(10, 0.5) << '\n'
       << "pow(-25, -2) = " << std::pow(-25, -2) << '\n';

  cout << "pow(-1, NAN) = " << std::pow(-1, NAN) << '\n'
       << "pow(+1, NAN) = " << std::pow(+1, NAN) << '\n'
       << "pow(INFINITY, 2) = " << std::pow(INFINITY, 2) << '\n'
       << "pow(INFINITY, -1) = " << std::pow(INFINITY, -1) << '\n';

  return EXIT_SUCCESS;
}

Ausgabe:

pow(2, 10) = 1024
pow(10, 0.5) = 3.16228
pow(-25, -2) = 0.0016
pow(-1, NAN) = nan
pow(+1, NAN) = 1
pow(INFINITY, 2) = inf
pow(INFINITY, -1) = 0

Verwendung der Funktion std::log zur Berechnung des natürlichen Logarithmus der gegebenen Zahl

Die std::log-Familie von Funktionen wird auch in <cmath> bereitgestellt, um verschiedene Logarithmen für die gegebenen Zahlenwerte zu berechnen. Die Funktion std::log berechnet den natürlichen Logarithmus und hat ähnlich wie die vorherigen Funktionen mehrere Überladungen für Gleitkomma- und Ganzzahltypen.

#include <cmath>
#include <iomanip>
#include <iostream>

using std::cout;
using std::endl;

int main() {
  cout << "log(10) = " << std::log(10) << '\n'
       << "log(100) = " << std::log(100) << '\n';

  cout << "log(1) = " << std::log(1) << '\n'
       << "log(+Inf) = " << std::log(INFINITY) << '\n';

  return EXIT_SUCCESS;
}

Ausgabe:

log(10) = 2.30259
log(100) = 4.60517
log(1) = 0
log(+Inf) = inf
Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Verwandter Artikel - C++ Math