[pbcode]
Constant PI=205887
Constant PI_OVER_2=PI/2
rem Test plot ----------------------------------------------------
pi# = 3.14159265359
for x = 0 to 360
rad# = x * pi# / 180
fpRad = float2FP(rad#)
mysin# = FP2Float(fp_Sin(fpRad))
mycos# = FP2Float(fp_Cos(fpRad))
dotc x,(mysin# * 100) + 200,rgb(255,0,0)
dotc x,(mycos# * 100) + 200,rgb(0,0,255)
next x
sync
waitkey
end
rem Test plot end -------------------------------------------------
Psub Float2FP(value#)
result = value# * 65536
endPsub result
Psub fp2Float(value)
result# = value / 65536.0
endPSUB result#
psub fp_Add(Value1, Value2)
result=Value1+Value2
endpsub result
psub fp_Sub(Value1, Value2)
result=Value1-Value2
endpsub result
Psub fp_Mul(Value1, Value2)
if abs(value1) > abs(value2)
result = value1 / 256 * value2 / 256
else
result = value2 / 256 * value1 / 256
endif
endPsub result
Psub fp_Div(Value1, Value2)
result = (value1 * 256) / (Value2 / 256)
endPsub result
Psub fp_Sqrt(Value)
result = (Value + 65536) / 2
for i = 0 to 7
result = (result + fp_Div(Value,result)) / 2
next i
endPsub result
Psub fp_Sin(Value)
rem Ported from the Java IAppli Fixed Point Math Library
rem http://www.ai.mit.edu/people/hqm/imode/fplib (http://www.ai.mit.edu/people/hqm/imode/fplib)
SK1 = 498
SK2 = 10882
sign = 1
if (Value > PI_Over_2) and (value <= PI) then Value = PI - Value
if (Value > PI) and (Value <= (PI + PI_Over_2))
Value = Value - PI
sign = -1
endif
if (Value > (PI + PI_Over_2))
Value = (PI * 2) - Value
sign = -1
endif
sqr = fp_Mul(Value,Value)
result = SK1
result = fp_MUL(result,sqr)
result = result - SK2
result = fp_Mul(result,sqr)
result = result + 65536
result = fp_Mul(result, value)
result = sign * result
endpsub result
Psub fp_Cos(Value)
rem Ported from the Java IAppli Fixed Point Math Library
rem http://www.ai.mit.edu/people/hqm/imode/fplib (http://www.ai.mit.edu/people/hqm/imode/fplib)
CK1 = 2328
CK2 = 32551
sign = 1
if (Value > PI_Over_2) and (Value <= PI)
value = PI - value
sign = -1
else
if (Value > PI_Over_2) and (Value <= (PI + PI_Over_2))
value = value - PI
sign = -1
endif
endif
if Value > (PI + PI_Over_2) then value = (PI*2)-value
sqr = fp_Mul(Value,Value)
result = CK1
result = fp_MUL(result,sqr)
result = result - CK2
result = fp_Mul(result,sqr)
result = result + 65536
result = result * sign
endPsub result
[/pbcode]
Well, you're quick... ;)
I guess, not a lot to port though :).. I mean it's not like their similar at all .. erm.. :rolleyes: