Commit | Line | Data |
---|---|---|
8e9db35f PB |
1 | \ @(#) t_floats.fth 98/02/26 1.1 17:46:04 |
2 | \ Test ANS Forth FLOAT words. | |
3 | \ | |
4 | \ Copyright 1994 3DO, Phil Burk | |
5 | ||
6 | INCLUDE? }T{ t_tools.fth | |
7 | ||
8 | ANEW TASK-T_FLOATS.FTH | |
9 | ||
10 | DECIMAL | |
11 | 3.14159265 fconstant PI | |
12 | ||
13 | TEST{ | |
14 | \ ========================================================== | |
15 | T{ 1 2 3 }T{ 1 2 3 }T | |
16 | \ ----------------------------------------------------- D>F F>D | |
17 | \ test some basic floating point <> integer conversion | |
18 | T{ 4 0 D>F F>D }T{ 4 0 }T | |
19 | T{ 835 0 D>F F>D }T{ 835 0 }T | |
20 | T{ -57 -1 D>F F>D }T{ -57 -1 }T | |
21 | T{ 15 S>F 2 S>F F/ F>S }T{ 7 }T \ 15.0/2.0 -> 7.5 | |
22 | ||
23 | \ ----------------------------------------------------- input | |
24 | T{ 79.2 F>S }T{ 79 }T | |
25 | T{ 0.003 F>S }T{ 0 }T | |
26 | ||
27 | \ ------------------------------------------------------ F~ | |
28 | T{ 23.4 23.5 0.2 f~ }T{ true }T | |
29 | T{ 23.4 23.7 0.2 f~ }T{ false }T | |
30 | T{ 922.3 922.3 0.0 f~ }T{ true }T | |
31 | T{ 922.3 922.31 0.0 f~ }T{ false }T | |
32 | T{ 0.0 0.0 0.0 f~ }T{ true }T | |
33 | T{ 0.0 -0.0 0.0 f~ }T{ false }T | |
34 | T{ 50.0 51.0 -0.02 f~ }T{ true }T | |
35 | T{ 50.0 51.0 -0.002 f~ }T{ false }T | |
36 | T{ 500.0 510.0 -0.02 f~ }T{ true }T | |
37 | T{ 500.0 510.0 -0.002 f~ }T{ false }T | |
38 | ||
39 | \ convert number to text representation and then back to float | |
40 | : T_F. ( -- ok? ) ( r ftol -f- ) | |
41 | fover (f.) >float fswap f~ | |
42 | AND | |
43 | ; | |
44 | : T_FS. ( -- ok? ) ( r ftol -f- ) | |
45 | fover (fs.) >float fswap f~ | |
46 | AND | |
47 | ; | |
48 | : T_FE. ( -- ok? ) ( r ftol -f- ) | |
49 | fover (fe.) >float fswap f~ | |
50 | AND | |
51 | ; | |
52 | ||
53 | : T_FG. ( -- ok? ) ( r ftol -f- ) | |
54 | fover (f.) >float fswap f~ | |
55 | AND | |
56 | ; | |
57 | ||
58 | : T_F>D ( -- ok? ) ( r ftol -f- ) | |
59 | fover f>d d>f fswap f~ | |
60 | ; | |
61 | ||
62 | T{ 0.0 0.00001 T_F. }T{ true }T | |
63 | T{ 0.0 0.00001 T_FS. }T{ true }T | |
64 | T{ 0.0 0.00001 T_FE. }T{ true }T | |
65 | T{ 0.0 0.00001 T_FG. }T{ true }T | |
66 | T{ 0.0 0.00001 T_F>D }T{ true }T | |
67 | ||
68 | T{ 12.34 -0.0001 T_F. }T{ true }T | |
69 | T{ 12.34 -0.0001 T_FS. }T{ true }T | |
70 | T{ 12.34 -0.0001 T_FE. }T{ true }T | |
71 | T{ 12.34 -0.0001 T_FG. }T{ true }T | |
72 | T{ 1234.0 -0.0001 T_F>D }T{ true }T | |
73 | ||
74 | T{ 2345 S>F 79 S>F F/ -0.0001 T_F. }T{ true }T | |
75 | T{ 511 S>F -294 S>F F/ -0.0001 T_F. }T{ true }T | |
76 | ||
77 | : T.SERIES { N matchCFA | flag -- ok? } ( fstart fmult -f- ) | |
78 | fswap ( -- fmult fstart ) | |
79 | true -> flag | |
80 | N 0 | |
81 | ?DO | |
82 | fdup -0.0001 matchCFA execute not | |
83 | IF | |
84 | false -> flag | |
85 | ." T_F_SERIES failed for " i . fdup f. cr | |
86 | leave | |
87 | THEN | |
88 | \ i . fdup f. cr | |
89 | fover f* | |
90 | LOOP | |
91 | matchCFA >name id. ." T.SERIES final = " fs. cr | |
92 | flag | |
93 | ; | |
94 | ||
95 | : T.SERIES_F. ['] t_f. t.series ; | |
96 | : T.SERIES_FS. ['] t_fs. t.series ; | |
97 | : T.SERIES_FG. ['] t_fg. t.series ; | |
98 | : T.SERIES_FE. ['] t_fe. t.series ; | |
99 | : T.SERIES_F>D ['] t_f>d t.series ; | |
100 | ||
101 | T{ 1.0 1.3 150 t.series_f. }T{ true }T | |
102 | T{ 1.0 -1.3 150 t.series_f. }T{ true }T | |
103 | T{ 2.3456789 1.3719 150 t.series_f. }T{ true }T | |
104 | ||
105 | T{ 3000.0 1.298 120 t.series_f>d }T{ true }T | |
106 | ||
107 | T{ 1.2 1.27751 150 t.series_fs. }T{ true }T | |
108 | T{ 7.43 0.812255 200 t.series_fs. }T{ true }T | |
109 | ||
110 | T{ 1.195 1.30071 150 t.series_fe. }T{ true }T | |
111 | T{ 5.913 0.80644 200 t.series_fe. }T{ true }T | |
112 | ||
113 | T{ 1.395 1.55071 120 t.series_fe. }T{ true }T | |
114 | T{ 5.413 0.83644 160 t.series_fe. }T{ true }T | |
115 | ||
116 | \ ----------------------------------------------------- FABS | |
117 | T{ 0.0 FABS 0.0 0.00001 F~ }T{ true }T | |
118 | T{ 7.0 FABS 7.0 0.00001 F~ }T{ true }T | |
119 | T{ -47.3 FABS 47.3 0.00001 F~ }T{ true }T | |
120 | ||
121 | \ ----------------------------------------------------- FSQRT | |
122 | T{ 49.0 FSQRT 7.0 -0.0001 F~ }T{ true }T | |
123 | T{ 2.0 FSQRT 1.414214 -0.0001 F~ }T{ true }T | |
124 | ||
125 | \ ----------------------------------------------------- FSIN | |
126 | T{ 0.0 FSIN 0.0 0.00001 F~ }T{ true }T | |
127 | T{ PI FSIN 0.0 0.00001 F~ }T{ true }T | |
128 | T{ PI 2.0 F* FSIN 0.0 0.00001 F~ }T{ true }T | |
129 | T{ PI 0.5 F* FSIN 1.0 0.00001 F~ }T{ true }T | |
130 | T{ PI 6.0 F/ FSIN 0.5 0.00001 F~ }T{ true }T | |
131 | ||
132 | \ ----------------------------------------------------- \ | |
133 | }TEST | |
134 |