Ik heb net een functie geschreven en dan voer in in een console scherm de waarde 10 in en wat blijkt deze geeft als resultaat -1.#IND geen idee wat hier fout in mijn code zit heb het volgens de wiskundige regels gedaan
Dat is mijn code die ik heb geschreven:
Code: Selecteer alles
//================================================================
// Berekend ExpX(x)
// ExpX(x) = 2 ^ (x * Log(e)
// We gebruiken 3 vrije registers ST(0), ST(1), ST(2)
//================================================================
extern double ExpX(double x)
{
double temp;
short MaskedCW;
short SaveCW;
_asm
{
FST x
FLDL2E
FMUL
FSTCW MaskedCW
;
FSTCW SaveCW
OR BYTE PTR MaskedCW + 1, 1100b;
FLDCW MaskedCW
FLD ST(0)
FLD ST(0)
FRNDINT
; bereken gehele deel
FXCH
; verwissel de int waarden
FSUB ST(0), ST(1)
; bereken frac deel
F2XM1
; bereken 2 ^ frac(x) - 1
FLD1
FADD
; bereken 2 ^ frac(x)
FXCH
; Ophalen van het gehele deel
FLD1
; bereken 1 * 2 ^ int(x)
FSCALE
FSTP ST(1)
; haal de waarde van de stack ST(1) op
FMUL
; bereken 2 ^ int(x) * 2 ^ frac(x)
FLDCW SaveCW
; herstel de afrondingsmode
FST temp
FNINIT
}
return(temp);
}