equal
deleted
inserted
replaced
17 *) |
17 *) |
18 |
18 |
19 unit uFloat; |
19 unit uFloat; |
20 interface |
20 interface |
21 |
21 |
22 {$INCLUDE options.inc} |
22 {$INCLUDE "options.inc"} |
23 |
23 |
24 {$IFDEF FPC} |
24 {$IFDEF FPC} |
25 {$ifdef FPC_LITTLE_ENDIAN} |
25 {$IFDEF ENDIAN_LITTLE} |
26 type hwFloat = record |
26 type hwFloat = record |
27 isNegative: boolean; |
27 isNegative: boolean; |
28 case byte of |
28 case byte of |
29 0: (Frac, Round: Longword); |
29 0: (Frac, Round: Longword); |
30 1: (QWordValue : QWord); |
30 1: (QWordValue : QWord); |
31 end; |
31 end; |
32 {$else} |
32 {$ELSE} |
33 type hwFloat = record |
33 type hwFloat = record |
34 isNegative: boolean; |
34 isNegative: boolean; |
35 case byte of |
35 case byte of |
36 0: (Round, Frac: Longword); |
36 0: (Round, Frac: Longword); |
37 1: (QWordValue : QWord); |
37 1: (QWordValue : QWord); |
38 end; |
38 end; |
39 {$endif} |
39 {$ENDIF} |
40 |
40 |
41 function int2hwFloat (const i: LongInt) : hwFloat; |
41 function int2hwFloat (const i: LongInt) : hwFloat; |
42 |
42 |
43 operator + (const z1, z2: hwFloat) z : hwFloat; |
43 operator + (const z1, z2: hwFloat) z : hwFloat; |
44 operator - (const z1, z2: hwFloat) z : hwFloat; |
44 operator - (const z1, z2: hwFloat) z : hwFloat; |
61 function DistanceI(const dx, dy: LongInt): hwFloat; |
61 function DistanceI(const dx, dy: LongInt): hwFloat; |
62 function AngleSin(const Angle: Longword): hwFloat; |
62 function AngleSin(const Angle: Longword): hwFloat; |
63 function AngleCos(const Angle: Longword): hwFloat; |
63 function AngleCos(const Angle: Longword): hwFloat; |
64 function SignAs(const num, signum: hwFloat): hwFloat; |
64 function SignAs(const num, signum: hwFloat): hwFloat; |
65 |
65 |
|
66 {$IFDEF FPC} |
66 {$J-} |
67 {$J-} |
|
68 {$ENDIF} |
67 {$WARNINGS OFF} |
69 {$WARNINGS OFF} |
68 const _1div1024: hwFloat = (isNegative: false; QWordValue: 4194304); |
70 const _1div1024: hwFloat = (isNegative: false; QWordValue: 4194304); |
69 _1div10000: hwFloat = (isNegative: false; QWordValue: 429496); |
71 _1div10000: hwFloat = (isNegative: false; QWordValue: 429496); |
70 _1div50000: hwFloat = (isNegative: false; QWordValue: 85899); |
72 _1div50000: hwFloat = (isNegative: false; QWordValue: 85899); |
71 _1div100000: hwFloat = (isNegative: false; QWordValue: 42950); |
73 _1div100000: hwFloat = (isNegative: false; QWordValue: 42950); |
331 begin |
333 begin |
332 SignAs.QWordValue:= num.QWordValue; |
334 SignAs.QWordValue:= num.QWordValue; |
333 SignAs.isNegative:= signum.isNegative |
335 SignAs.isNegative:= signum.isNegative |
334 end; |
336 end; |
335 |
337 |
336 {$INCLUDE SinTable.inc} |
338 {$INCLUDE "SinTable.inc"} |
337 |
339 |
338 function AngleSin(const Angle: Longword): hwFloat; |
340 function AngleSin(const Angle: Longword): hwFloat; |
339 begin |
341 begin |
340 {$IFDEF DEBUGFILE} |
342 {$IFDEF DEBUGFILE} |
341 TryDo((Angle >= 0) and (Angle <= 2048), 'Sin param exceeds limits', true); |
343 TryDo((Angle >= 0) and (Angle <= 2048), 'Sin param exceeds limits', true); |