Használata matematikai koprocesszor 80x87

Használata koprocesszor jelentősen növeli a pontosságát matematikai számításokat, és felgyorsítja azok végrehajtását. Az egyetlen pont, kicsi - a rendelkezésre állás és a képesség, hogy használja azt.

Így a program képességeit használni a koprocesszor, meg kell annak elsődleges irányelv (a fordító mód gomb) $ N +:

összeállítása mód $ N + globális és nem lehet változtatni a jövőben. Létrehozásakor egységek (egység), centrikus koprocesszor, azaz segítségével a bemeneti típusok, jelezve a kulcs $ N + bennük nem szükséges. Csak az a fontos, hogy legyen a fő program, amely magában foglalja ezeket a modulokat.

Ha szükséges, kapcsolja ki a koprocesszor jeleznie kell $ N- gombot. A program leállhat összeállítani (compiler „elfelejti” típusú számokat fokozott pontossággal).

Ha a PC telepítve koprocesszor, a fordító meghatározza a kulcsszó CPU87 feltételes fordításra. Ezt fel lehet használni, hogy automatikusan kiválassza összeállítása mód:

A fenti konstrukció határozza meg a lefordított szöveg - alapján e vagy sem a koprocesszor azt.

Összeállítása után a program minden alkalommal kezdődik check társprocesszora, és meghatározza annak típusát. A vizsgálat eredményét rögzítik az előre definiált változó rendszer könyvtár - Test8087 típusa Byte (táblázat 9.8.).

Értékek Test8087 csatlakoztatva Connected 8087 2 80287 3 80387 Connected

Ha a program fordítása mód és Test8087 érték: 0, a program leáll egy üzenetet, hogy szükség van társprocesszor. Azonban van egy eszköz letiltása automatikusan ellenőrzi a koprocesszor amikor a program elindul. Szükség van olyan rendszer bevezetésére változó MS-DOS neve 87. és y értékei (IGEN - IGEN) és N (a nem - nem). Erre a legjobb megoldás az AUTOEXEC.BAT fájlt behelyezésével a vonal

Az érték a rendszer változó MS-DOS 87 egyenlő Y, megrendelések tekinthető társprocesszor csatlakoztatva, és N - rendre csatlakoztatva. Általánosságban elmondható, hogy jobb, ha nem becsapni és felszerelések programot. Fenntartásáról ezt a technikát (SET = 87) a legszélsőségesebb eset.

Turbo Pascal lehetővé teszi, hogy kövessék a koprocesszor szoftver. Ez azt jelenti, hogy lehetséges, hogy hozzon létre egy programot, amely együtt fog működni a nagy pontosságú, függetlenül a jelenléte a koprocesszor. Koprocesszor talált - nos, akkor lehet betölteni, nem koprocesszor - minden pontosságot kapunk utánzása is. Egyértelmű, hogy az utóbbi esetben nem lesz veszteség a számlákon az idő, és jelentős. Felvétele emulációs ellenőrzi a kulcs $ E. Csak akkor van értelme a gomb melletti $ N. Lehet például ezek kombinációja:

- csatlakoztassa a könyvtár versenyez a koprocesszor; ennek hiányában, a pontosság a szoftvert, amely miatt a sebességet; - A program csak akkor működik gépeken társprocesszor;

és - ko-processzor nem használják, a legfontosabb emulációs figyelmen kívül hagyja. A program csak akkor működik a szokásos pontossággal és sebességgel.

Ha a program kódot helyeznek a külső irányelvben a koprocesszor dolgozó ezt a kódot kell érkeznie használatán alapuló utasítások 80X87.

Az előnyök egy koprocesszor -, először is, a sebesség számítás, ami nőhet többször. A második előnye - növekvő pontosságú lebegőpontos. A számítás típusok bemenetet egy matematikai koprocesszor táblázatban. 9.9.

Minden ilyen típusú - ingatlan kivételével Comp, ami egy „nagyon hosszú” egész típusú (üzletek csak egész értékeket). A tartomány ilyen típusú a táblázatban megadott van kerekítve úgy, valós számok (-2 és 263-1) túl hosszú.

Rendes típusú Real (6 byte, 2.9E-39 tartományban. 1.7E + 38, 11-12 számjeggyel) együttműködik a társ-processzor, de rendkívül hatékony. Ez a formátum - egy idegen a koprocesszor, és az idő, „enni” Az átalakulás koprocesszor típus felülbírálja gyorsulás. És pontossága nem adunk hozzá. Ezért az a legjobb, hogy adja meg a típusát, mint például a Float, és megértette, mint a Real, a valós vagy tisztán koprocesszor típusú függően összeállítás módban.

d. Array [1..9] a Float;

Integral típusú Turbo Pascal munkáját a koprocesszor fenntartások nélkül.

Különösen fontos az a kérdés, hogy pontosabb számításokat. Amikor egy koprocesszor összes szabványos matematikai szereplők és nyelvi funkciók, általában visszatér értékek Real, kezdenek visszatérni típus értékeinek Extended. Ebben a tekintetben érdemes támaszkodni az ilyen típusú, mint a bázis. Mindazonáltal nagyon is lehetséges, hogy a különböző típusú változókat is részt vesznek a programban. Ezekben az esetekben a konverziós érték lesz szükség, ezért a veszteség pontossággal. Amikor értékének kiszámításánál a jobb oldalon egy feladat eredmény pontos, amely egybeesik a legpontosabb a fajta tagjai (vagy ezzel egyenértékű a legnagyobb horderejű típus). Ez azt jelenti, hogy a hozzárendelés

A kifejezés a jobb kiszámítása a típus Extended. De ha rendelni egy változó eredmény «kis» egységes csonkolás végeznek, és jelentősen csökkentette a számjegyek száma a tizedespont után. Az ilyen helyzetek kell előre, és próbálja elkerülni őket. Különösen zavaró vannak az összegzése ciklusok:

i: = 32.767-65.535 do Sum: = Sum + i / e;

Amennyiben az ilyen veszteségeket meg kell ismételni ezerszer, és a felhalmozott hiba lehet arányos összegét. Korrigálja a helyzet egyszerű: meg kell, hogy egy további változó eSum pontos típusa kiterjesztette az összeadó, és átírni ciklus:

i: = 32.767-65.535 do eSum: = eSum + i / e;

veszteségek most sokkal kevesebb.

Ugyanebből az okból (mivel a csonkolás pontosság) helytelen működése összehasonlítása két különböző típusú reálváltozók vagy változó kifejezése (az utóbbi, mint már említettük, lehet kiszámítani Extended). Összehasonlítása tehát példa:

ha a hivatalos helyességét, és azt eredményezi nyilvánvalóságuk False - hamis, hiszen d kevesebb számjeggyel, mint pl. Általában, ha összehasonlítjuk a valódi értékek nem ellenőrzi a véletlen, egy bizonyos fokú eltérés. Ha ilyen mértékű hasonló pontossággal bemutató legtöbb durva számok, az értékeket lehet tekinteni egyenlő. Tehát, ha az az állapot, a legutóbbi példát kellene újraírni az alábbiak szerint:

ha Abs (d-e) <1.0Е-15 then.

Itt 1,0E-15 - a pontosság a változó típusát d (Double).

Mi továbbra is a listára az adott alkalmazás a koprocesszor. Jelenléte a számítógéphez, és az nagyban befolyásolja a munkát forduló kerekítés funkció: akkor kezd kerek sesquialteral értéket a legközelebbi páros egész (az úgynevezett „banki módszer”)! Például:

nélkül koprocesszor koprocesszor

Kerek (0.5) -> 1 forduló (0,5) -> 0

Kerek (1.5) -> 2 forduló (1,5) -> 2

Kerek (2.5) -> 3 forduló (2,5) -> 2

Kerek (3.5) -> 4 forduló (3,5) -> 4

A többi érték (anélkül, hogy”0,5' ) funkció megfelelően működik.

Néhány bajok megvárja szerelmeseinek a rekurzív megközelítés írásban funkciókat. Vannak, elvileg olyan helyzetben, amikor a rekurzív hívás verem túlcsordulás belső társprocesszorral adatokat akár nyolc szint rekurzió, és nem lesz összeomlik. Egy lehetséges megoldás az lenne, hogy olyan kifejezések, mint a sokféleség slozhnorekursivnyh Fn: = Fn (N-1) + Fn (N-2) a helyi változók, például az f1: = Fn (N-1); és f2: = Fn (N-2). Miután ezt a kifejezést a Fn: = F1 + F2 biztonságos legyen a koprocesszor.

Záró a téma egy koprocesszor, felidézzük ezt, és olyan fejlett, valós típusú, és a Real típus használata esetén koprocesszor 80X87 nyomtatott szereplők írása és WriteLn 4 számjegy a kitevő:

a $ N- WriteLn (123,4) ad 1.2340000000E + 02

de ad 1.234000000000000E át 0002 + $ N + WriteLn (123,4).

Ezt a tényt figyelembe kell venni, amikor formázott kimenetet és az átalakítás a szám a string Str eljárást.

Kapcsolódó cikkek