VF_powexp | VD_powexp | VE_powexp |
VFx_powexp | VDx_powexp | VEx_powexp |
|
Funktion | reelle Potenz, multipliziert mit Exponentialfunktion |
|
Syntax C/C++ | #include <VFmath.h>
int VF_powexp( fVector Y, fVector X, ui size, float Expo );
int VFx_powexp( fVector Y, fVector X, ui size, float Expo, float A, float B, float C ); |
C++ VecObj | #include <OptiVec.h>
int vector<T>::powexp( const vector<T>& X, const T& Expo );
int vector<T>::x_powexp( const vector<T>& X, const T& Expo, const T& A, const T& B, const T& C ); |
Pascal/Delphi | uses VFmath;
function VF_powexp( Y, X:fVector; size:UIntSize; Expo:Single ): IntBool;
function VFx_powexp( Y, X:fVector; size:UIntSize; Expo, A, B, C:Single ): IntBool; |
|
CUDA-Funktion C/C++ | #include <cudaVFmath.h>
int cudaVF_powexp( fVector d_Y, fVector d_X, ui size, float Expo );
int cudaVFx_powexp( fVector d_Y, fVector d_X, ui size, float Expo, float A, float B, float C );
int cusdVFx_powexp( fVector d_Y, fVector d_X, ui size, float Expo, float *_dA, float *d_B, float *d_C );
int VFcu_powexp( fVector h_Y, fVector h_X, ui size, float Expo );
int VFxcu_powexp( fVector h_Y, fVector h_X, ui size, float Expo, float A, float B, float C );
|
CUDA-Funktion Pascal/Delphi | uses VFmath;
function cudaVF_powexp( d_Y, d_X:fVector; size:UIntSize; Expo:Single ): IntBool;
function cudaVFx_powexp( d_Y, d_X:fVector; size:UIntSize; Expo:Single; A, B, C:Single ): IntBool;
function cusdVFx_powexp( d_Y, d_X:fVector; size:UIntSize; Expo:Single; d_A, d_B, d_C:PSingle ): IntBool;
function VFcu_powexp( h_Y, h_X:fVector; size:UIntSize; Expo:Single ): IntBool;
function VFxcu_powexp( h_Y, h_X:fVector; size:UIntSize; Expo:Single; A, B, C:Single ): IntBool;
|
|
Beschreibung | einfache Versionen: Yi = XiExpo * exp(Xi)
erweiterte Versionen: Yi = C * (XiExpo) * exp(A*Xi+B)
Man beachte, dass die erweiterten Versionen (A*Xi+B) nur als Argument der Exponentialfunktion verwenden, die Potenzfunktion aber für (Xi) berechnen. Die Implementation dieser Funktion garantiert den korrekten Ausgleich eventueller gleichzeitiger Über- und Unterläufe in den beiden Faktoren (d.h. für große Xi, wenn entweder Expo oder A*Xi negativ sind, so dass entweder die Potenzfunktion oder die Exponentialfunktion sehr klein wird, während die jeweils andere sehr groß wird).
Anders als bei VF_pow werden negative X-Werte in der Potenzfunktion stets als DOMAIN-Fehler behandelt; es findet also keine Prüfung statt, ob der Exponent vielleicht ganzzahlig ist und das Ergebnis daher doch berechenbar wäre. |
|
Fehlerbehandlung | DOMAIN-Fehler entstehen für negative Xi. Das vorgeschlagene Ergebnis ist NAN ("not-a-number"). SING-Fehler entstehen durch negative Potenzen von 0. Das vorgeschlagene Resultat ist hier ±HUGE_VAL, ebenso wie für OVERFLOW-Fehler. |
|
Rückgabewert | FALSE (0), wenn fehlerfrei, andernfalls TRUE (≠ 0) |
|
|