Lines Matching +full:always +full:- +full:turbo
1 +---------------------------------------------------------------------------+
2 | wm-FPU-emu an FPU emulator for 80386 and 80486SX microprocessors. |
6 | Australia. E-mail billm@melbpc.org.au |
21 +---------------------------------------------------------------------------+
25 wm-FPU-emu is an FPU emulator for Linux. It is derived from wm-emu387
27 msdos); wm-emu387 was in turn based upon emu387 which was written by
31 My target FPU for wm-FPU-emu is that described in the Intel486
37 been discovered, so there is always likely to be obscure differences
40 wm-FPU-emu does not implement all of the behaviour of the 80486 FPU,
52 --Bill Metzenthen
56 ----------------------- Internals of wm-FPU-emu -----------------------
70 (4) The trig, log, and exp functions are based in each case upon quasi-
81 account for a limited form of re-entrancy. Normally, the emulator will
95 (apart from those in the kernel's per-process tables). The emulator is
96 therefore now fully re-entrant, rather than having just the restricted
97 form of re-entrancy which is required by the Linux kernel.
99 ----------------------- Limitations of wm-FPU-emu -----------------------
101 There are a number of differences between the current wm-FPU-emu
116 (c) the magnitude of the exact result (before rounding) is less than 2^-16382.
117 (d) the magnitude of the final result (after rounding) is exactly 2^-16382.
118 (e) the magnitude of the exact result would be exactly 2^-16382 if the
125 unsupported by the 80486. They are the Pseudo-NaNs, Pseudoinfinities,
134 The FPU instruction may be (usually will be) loaded into the pre-fetch
139 able to find the instruction which caused the device-not-present
150 protection fault message when run under the MS-DOS prompt of Windows
153 The emulator supports 16-bit protected mode, with one difference from
156 will not allow this in 16-bit protected mode: no instructions are
159 ----------------------- Performance of wm-FPU-emu -----------------------
162 -----
172 measured on a 33MHz 386 with 64k cache. The Turbo C tests were under
173 ms-dos, the next two columns are for emulators running with the djgpp
174 ms-dos extender. The final column is for wm-FPU-emu in Linux 0.97,
177 function Turbo C djgpp 1.06 WM-emu387 wm-FPU-emu
180 - 61.1-65.5 157.3-160.8 76.2-79.5 142.9-144.7
182 / 61.2-75.0 261.4-266.9 75.3-91.6 142.2-158.1
187 atan() 328.9 4866.4 601.1 419.5-491.9
190 log() 413.1-419.1 5103.4-5354.21 254.7-282.2 409.4-437.1
194 The performance under Linux is improved by the use of look-ahead code.
196 Linux due to the look-ahead code. Also given are the times for the
199 [ Linus' note: I changed look-ahead to be the default under linux, as
203 wm-FPU-emu w original w
204 look-ahead 'soft' lib
206 - 108.6-111.6 192.4-216.2
208 / 108.8-124.4 700.1-706.2
213 atan() 367.2-435.5 2439.4-3396.8
216 log() 358.0-387.5 3359.2-3390.3
220 These figures are now somewhat out-of-date. The emulator has become
225 ----------------------- Accuracy of wm-FPU-emu -----------------------
231 The results of the basic arithmetic functions (+,-,*,/), and fsqrt
238 trig and log functions against the Turbo C "emulator". For this table,
239 each function was tested at about 400 points. Ideal worst-case results
240 would be 64 bits. The reduced Turbo C accuracy of cos() and tan() for
242 precision of the argument x; e.g. an argument of pi/2-(1e-10) which is
247 Function Tested x range Worst result Turbo C
251 atan(x) 1e-10 .. 200 64.2 62.8
252 cos(x) 0 .. pi/2-(1e-10) 64.4 (x <= pi/4) 62.4
253 64.1 (x = pi/2-(1e-10)) 31.9
254 sin(x) 1e-10 .. pi/2 64.0 62.8
255 tan(x) 1e-10 .. pi/2-(1e-10) 64.0 (x <= pi/4) 62.1
256 64.1 (x = pi/2-(1e-10)) 31.9
258 log(x) 1+1e-6 .. 2 63.8 ** 62.1
285 sin(x) 1e-16 .. 9.22e+18 62.1
286 tan(x) 1e-16 .. 9.22e+18 61.8
291 is within about 10e-7 of a multiple of pi. To find the tan (for
295 result is about -9.739715e-8). On the other hand, an 80486 FPU returns
307 worst-case results which are better than the worst-case results given
319 between -pi/2 and +pi/2. The other instructions have a lower
325 ------------------- ---------------
328 ----- ------------ ------- ---- ---- ----- ----- --------
334 fyl2xp1 (-.293,.414) 520256 0 0 5678 63.93 0.408542 (x)
335 f2xm1 (-1,1) 538847 4 481 6488 63.79 0.167709
350 result of the given accuracy in bits (given in the left-most column)
363 accuracy is discussed above in relation to the Turbo C "emulator", and
395 ------------------------- Contributors -------------------------------