Path: utzoo!attcan!uunet!snorkelwacker!apple!bionet!ames!haven!mimsy!mojo!burgoyne From: burgoyne@eng.umd.edu (John R. Burgoyne) Newsgroups: comp.windows.ms Subject: Re: Floating point support? Message-ID: <1990Oct7.034814.25829@eng.umd.edu> Date: 7 Oct 90 03:48:14 GMT References: <461.27087592@venus.ycc.yale.edu> Sender: news@eng.umd.edu (The News System) Organization: College of Engineering, Maryversity of Uniland, College Park Lines: 76 In Article: 5855 of comp.windows.ms Jim O'Brien writes: >I'm trying to figure out my options for programming applications >that require floating point (80x87) calculations. I'm currently >using Actor 3.0, but that doesn't have floating point support. >(Can anyone tell me whether Whitewater plans to add floating point >support?) My applications, typically engineering computations of >phase and chemical equilibria, require solving systems of >nonlinear algebraic equations, which are numerically intensive. I don't use Actor, but this answer is relevant. I am solving about the same type of mathematical problem for a different physical phenomena with a Win 3.0 program using MS C 6.0 and the SDK. The machines we run the software on are 80386 based with either 25 MHz or 20 MHz clock speed. Every machine has an 80387 of the appropriate clock speed. The coprocessors were purchased for the normal reasons. The instructions for how to get your application to link with and use the appropriate 80387 libraries are given on page 2-12 of Microsoft Windows Programming Tools (New for Version 3). I discovered the additional words of wisdom well into the project, and was delighted at the prospect of having my application now run at much greater speed since we hadn't really been using the coprocessor yet. AND . . . . . there was no speed improvement. We checked and rechecked to confirm that we were in fact using the 80387s now that we had the proper linking instructions. WHAT'S WRONG HERE? ^^^^^^^^^^^^^^^^^^ It turns out that the 80386 handles most floating point math pretty well all by itself, but the communication between 80386-80387 is not so efficient. This is one of the reasons why the 80486 incorporates the 80387 on chip. With previous generations of Intel microprocessors, (80286, 808x) the math coprocessors (80287, 8087) made a great difference because the processors weren't too swift at floating point math. SO WHY DO I NEED AN 80387? ^^^^^^^^^^^^^^^^^^^^^^^^^^ Some transcendental functions I.E. Logarithms and Trigonometric functions are computed in 1/80th the number of clock cycles using an 80387. If you calculate enough of them, you will notice a speed improvement. This is the case for CAD programs which do rotations of objects. For solving mathematical problems which are only algebraic equations, I don't think it is possible to get a speed improvement by using the 80387. With older microprocessor architectures, you should gain a performance improvement by using an 80287 or an 8087. I haven't mentioned accuracy, which may or may not be one of your reasons for wanting to use a coprocessor. The accuracy of the emulator model is more than enough (about 5 orders of magnitude) for my application. Your mileage may vary. As far as I'm concerned, my investment in the 80387s was a total waste, and that money could have been put to much better use. *-----------------------------------------------------------------------------* | Robert Burgoyne CALCE Center for Electronics Packaging | | Industrial Liaison University of Maryland | | burgoyne@eng.umd.edu College Park, MD 20742 | | (301)-405-5323 | | Compu$erve: 76234,2425 | | | | "Improving the quality of electronics hardware through software | | development and research into physics of failure models." | | | | I speak for myself, CALCE has enough people speaking for it already. | *-----------------------------------------------------------------------------*