Exponentialfunktionen der STL in C++ verwenden
-
Verwenden Sie die Funktion
std::exp
, um Potenzen der Eulerschen Zahl zu berechnen -
Verwendung der Funktion
std::exp2
zur Berechnung von Zweierpotenzen -
Verwenden Sie die Funktion
std::pow
, um Potenzen der gegebenen Zahl zu berechnen -
Verwendung der Funktion
std::log
zur Berechnung des natürlichen Logarithmus der gegebenen Zahl
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
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