VF_absHuge | VD_absHuge | VE_absHuge |
|
Funktion | Ersatz von negativen Polstellen (−HUGE_VAL) durch positive (+HUGE_VAL) |
|
Syntax C/C++ | #include <VFmath.h>
void VF_absHuge( fVector Y, fVector X, ui size ); |
C++ VecObj | #include <OptiVec.h>
void vector<T>::absHuge( const vector<T>& X ); |
Pascal/Delphi | uses VFmath;
procedure VF_absHuge( Y, X:fVector; size:UIntSize ); |
|
CUDA-FunKtion C/C++ | #include <cudaVFmath.h>
int cudaVF_absHuge( fVector d_Y, fVector d_X, ui size );
void VFcu_absHuge( fVector h_Y, fVector h_X, ui size );
|
CUDA-Funktion Pascal/Delphi | uses VFmath;
function cudaVF_absHuge( d_Y, d_X:fVector; size:UIntSize ): IntBool;
procedure VFcu_absHuge( h_Y, h_X:fVector; size:UIntSize );
|
|
Beschreibung | Yi = Xi , wenn Xi > −HUGE
Yi = Max, wenn Xi ≤ −HUGE_VAL
(wobei HUGE je nach Datentyp FLT_MAX, DBL_MAX oder LDBL_MAX bedeutet)
Etliche mathematische Funktionen wie z.B. Kehrwert, Tangens o.a. weisen divergierende Polstellen auf (z.B., 1/+0 = +INF, aber 1/−0 = −INF, wobei INF, um Folgefehler zu vermeiden, meist, aber nicht immer, als HUGE_VAL dargestellt wird). In solchen Fällen wird der kleinste Rundungsfehler darüber entscheiden, ob das Ergebnis +INF oder −INF wird. Gelegentlich wird man um der Konsistenz der Ergebnisse willen 1/−0 und 1/+0 identisch behandeln, also den negativen Pol durch einen positiven ersetzen wollen. Dies ist die Aufgabe von VF_absHuge. Man beachte, dass sowohl −HUGE_VAL als auch −INF zu +HUGE_VAL geändert werden, während +INF unverändert bleibt. |
|
|
|
|