Om jag t.ex. försöker göra beräkningen: Float = pow(4.1,4.2) så blir det allt annat än rätt.
Verkar som att "y" i "Float = pow(x,y)" måste vara ett heltal? för om x=4 och y=4 så blir det korrekt (256)
Detta är till PIC18F
Från Float rutinen/include:
Kod: Markera allt
float pow(float x, float y)
{
float retval, real;
int iterations;
char neg = 0;
if (flt_eq(x, 1.0))
return(1.0);
if (flt_eq(y, 0.0))
return(1.0);
if (flt_eq(x, 0.0))
return(0.0);
iterations = flt_toi(y);
y = flt_sub(y, flt_fromi(iterations));
if (iterations < 0)
{
iterations = 0 - iterations;
neg = 1;
}
retval = x;
if (iterations > 0)
iterations--;
while (iterations)
{
retval = flt_mul(retval, x);
iterations--;
}
if (flt_ne(y, 0.0))
{
real = flt_mul(x, y);
retval = flt_add(retval, real);
}
if (neg)
retval = flt_sub(0, retval);
return (retval);
}