dc(1) General Commands Manual dc(1) NIMI dc - laskin, jolla on rajoittamaton laskentatarkkuus YLEISKATSAUS dc [-V] [--version] [-h] [--help] [-e scriptexpression] [--expression=scriptexpression] [-f scriptfile] [--file=scriptfile] [file ...] KUVAUS dc on "kaanteista puolalaista" laskentajarjestysta kayttava poytalaskin, jolla on rajoittamaton laskentatarkkuus. Se sallii myos makrojen maarittelyn ja kutsun. Normaalisti dc lukee vakiosyottoa; jos sille annetaan komentoriviargumentteja, ne ovat tiedostonimia, ja dc lukee ja suorittaa tiedostojen sisallon ennen kuin se lukee vakiosyotosta. Kaikki normaali tulostus menee vakiotulostimeen. Kaikki virhetulostus menee virhetulostimeen. "Kaanteista puolalaista" kayttava laskin tallettaa luvut pinoon. Syotetty luku tyonnetaan pinoon. Laskutoimitukset ottavat argumentit pinosta ja tyontavat tulokset pinoon. To enter a number in dc, type the digits (using upper case letters A through F as "digits" when working with input bases greater than ten), with an optional decimal point. Exponential notation is not supported. To enter a negative number, begin the number with "_". "-" cannot be used for this, as it is a binary operator for subtraction instead. To enter two numbers in succession, separate them with spaces or newlines. These have no meaning as commands. VALITSIMET dc may be invoked with the following command-line options: -V --version Print out the version of dc that is being run and a copyright notice, then exit. -h --help Print a usage message briefly summarizing these command-line options and the bug-reporting address, then exit. -e skripti --expression=skripti Add the commands in script to the set of commands to be run while processing the input. -f skriptitiedosto --file=skriptitiedosto Add the commands contained in the file script-file to the set of commands to be run while processing the input. If any command-line parameters remain after processing the above, these parameters are interpreted as the names of input files to be processed. A file name of - refers to the standard input stream. The standard input will processed if no script files or expressions are specified. Tulostuskomennot p Tulostaa pinon paallimmaisen arvon muuttamatta pinoa. Arvon jalkeen tulostetaan rivinvaihto. n Prints the value on the top of the stack, popping it off, and does not print a newline after. P Pops off the value on top of the stack. If it it a string, it is simply printed without a trailing newline. Otherwise it is a number, and the integer portion of its absolute value is printed out as a "base (UCHAR_MAX+1)" byte stream. Assuming that (UCHAR_MAX+1) is 256 (as it is on most machines with 8-bit bytes), the sequence KSK0k1/_1Ss [ls*]Sxd0>x [256~Ssd0qaPlxx] dsxxsx0sqLqsxLxLK+k could also accomplish this function. (Much of the complexity of the above native-dc code is due to the ~ computing the characters backwards, and the desire to ensure that all registers wind up back in their original states.) f Tulostaa pinon koko sisallon muuttamatta mitaan. Tama on hyva komento, jos olet eksyksissa tai haluat tietaa, mika jonkin komennon vaikutus oli. Laskutoimitukset + Ottaa kaksi arvoa pinosta, laskee ne yhteen ja tyontaa tuloksen pinoon. Tuloksen tarkkuuden maaraa vain argumenttien arvot ja se on riittavan suuri antamaan eksaktin tuloksen. - Ottaa kaksi arvoa pinosta, vahentaa ensin otetun toiseksi otetusta ja tyontaa tuloksen pinoon. * Ottaa kaksi arvoa pinosta, kertoo ne keskenaan ja tyontaa tuloksen pinoon. Tuloksen desimaalien lukumaaraa kontrolloi kaypa tarkkuusarvo (katso alempana), eika se riipu kerrottavien arvoista. / Ottaa kaksi arvoa pinosta, jakaa toiseksi otetun ensin otetulla ja tyontaa tuloksen pinoon. Desimaalien lukumaara riippuu tarkkuusarvosta. % Ottaa kaksi arvoa pinosta, laskee jakojaannoksen komennolla / suoritettavasta jakolaskusta ja tyontaa sen pinoon. Jakolasku tehdaan niin monella desimaalilla kuin tarkkuusarvo maarittelee, ja jakojaannos lasketaan yhta monella desimaalilla. ~ Ottaa kaksi arvoa pinosta, jakaa toiseksi otetun arvon ensiksi otetulla. Osamaara tyonnetaan ensin pinoon ja jakojaannos seuraavaksi. Tarkkuusarvo maarittelee jakolaskussa kaytettyjen desimaalien lukumaaran. (Jono SdSn lnld/ LnLd% voi myos toteuttaa taman funktion, virhetarkistuksen ollessa hiukan erilainen.) ^ Ottaa kaksi arvoa pinosta ja tekee potenssiin korotuksen, jossa ensin otettu arvo on eksponentti ja toiseksi otettu on kantaluku. Eksponentin mahdollisia desimaaleja ei oteta huomioon. Tarkkuusarvo maarittelee pinoon tyonnettavan tuloksen desimaalien lukumaaran. | Ottaa kolme arvoa pinosta ja laskee modulaarisen potenssiin korotuksen. Ensimmainen pinosta otettu arvo on reduktiomodulus, jonka taytyy olla nollasta poikkeava ja tulisi olla kokonaisluku. Toista pinosta otettua arvoa kaytetaan eksponenttina; sen tulee olla ei-negatiivinen luku ja sen desimaaliosaa ei oteta huomioon. Kolmas pinosta otettu arvo on kantaluku, joka korotetaan potenssiin. Tarkkuusarvo maaraa tuloksen desimaalien lukumaaran. Pienilla luvuilla tama on kuin jono Sm lble^ Lm%, mutta toisin kuin ^, tama komento toimii mielivaltaisen suurilla eksponenteilla. v Pops one value, computes its square root, and pushes that. The maximum of the precision value and the precision of the argument is used to determine the number of fraction digits in the result. Useimpiin laskutoimituksiin vaikuttaa "tarkkuusarvo", jonka voit asettaa komennolla k . Oletustarkkuus on nolla, mika tarkoittaa sita, etta kaikki laskutoimitukset yhteen- ja vahennyslaskua lukuunottamatta antavat tulokseksi kokonaisluvun. Pinon hallinta c Clears the stack, rendering it empty. d Tekee pinon paallimmaisesta arvosta kaksoiskappaleen ja tyontaa sen pinoon. Siten "4d*p" laskee luvun 4 nelion ja tulostaa sen. r Reverses the order of (swaps) the top two values on the stack. (This can also be accomplished with the sequence SaSbLaLb.) R Pops the top-of-stack as an integer n. Cyclically rotates the top n items on the updated stack. If n is positive, then the rotation direction will make the topmost element the second-from top; if n is negative, then the rotation will make the topmost element the n-th element from the top. If the stack depth is less than n, then the entire stack is rotated (in the appropriate direction), without any error being reported. Rekisterit dc antaa kaytettavaksi 256 muistirekisteria, joilla jokaisella on yksimerkkinen nimi. Voit tallettaa luvun tai merkkijonon rekisteriin ja hakea sen myohemmin. sr Ottaa pinon paallimmaisen arvon ja tallettaa sen rekisteriin r. lr Copy the value in register r and push it onto the stack. The value 0 is retrieved if the register is uninitialized. This does not alter the contents of r. Jokaisella rekisterilla on myos oma pinonsa. Rekisterin kaypa arvo on sen pinon paallimmainen arvo. Sr Ota (paa)pinon paallimmainen arvo ja tyonna se rekisterin r pinoon. Rekisterin edelliseen arvoon ei paase kasiksi. Lr Ota rekisterin r pinon paallimmainen arvo ja tyonna se paapinoon. Rekisterin r pinon edelliseen arvoon, jos sellainen on, voidaan nyt paasta kasiksi komennolla lr. Parametrit dc :lla on kolme parametria, jotka hallitsevat sen toimintaa:has three parameters that control its operation: tarkkuus, syottokantaluku ja tulostuskantaluku. Tarkkuus maarittelee useimpien laskutoimitusten tuloksen edellyttaman desimaalien lukumaaran. Syottokantaluku valvoo syotettavien lukujen tulkintaa. Tulostuskantalukua kaytetaan lukuja kirjoitettaessa. Syotto- ja tulostuskantaluvut ovat erillisia parametreja; voit asettaa ne erisuuriksi, mika voi olla hyodyllista tai hairitsevaa. Syottokantaluvun tulee olla valilla 2 -- 16 (mainitut arvot ml.). Tulostuskantaluvun tulee olla vahintaan 2. Tarkkuuden tulee olla nolla tai suurempi. Tarkkuus mitataan aina desimaalilukuna riippumatta kaytetysta syotto- tai tulostuskantaluvun arvosta. i Ottaa pinon paallimmaisen arvon ja asettaa sen syottokantaluvun arvoksi. o Ottaa pinon paallimmaisen arvon ja asettaa sen tulostuskantaluvun arvoksi. k Ottaa pinon paallimmaisen arvon ja asettaa sen tarkkuuden arvoksi. I Tyontaa kaytossa olevan syottokantaluvun arvon pinoon. O Tyontaa kaytossa olevan tulostuskantaluvun arvon pinoon. K Tyontaa kaytossa olevan tarkkuusarvon pinoon. Merkkijonot dc has a limited ability to operate on strings as well as on numbers; the only things you can do with strings are print them and execute them as macros (which means that the contents of the string are processed as dc commands). All registers and the stack can hold strings, and dc always knows whether any given object is a string or a number. Some commands such as arithmetic operations demand numbers as arguments and print errors if given strings. Other commands can accept either a number or a string; for example, the p command can accept either and prints the object according to its type. [characters] Tekee merkkijonoon, joka sisaltaa characters (sijoitettuna merkkien [ ja ] valiin), ja tyontaa sen pinoon. Esimerkiksi [foo]P tulostaa merkit foo (ei rivinvaihtoa). a Ottaa pinon paallimmaisen kohteen. Jos se oli luku, sen alin tavu konvertoidaan merkkijonoksi ja tyonnetaan pinoon. Muutoin pinon paallimmainen kohde oli merkkijono, ja sen ensimmainen merkki tyonnetaan pinoon. x Ottaa arvon pinosta ja suorittaa sen makrona. Normaalisti sen pitaisi olla merkkijono; jos se on luku, se yksinkertaisesti tyonnetaan takaisin pinoon. Esimerkiksi [1p]x suorittaa makron 1p joka tyontaa 1 pinon ja tulostaa 1 erilliselle riville. Makrot talletetaan useimmiten rekistereihin; [1p]sa tallettaa makron, joka kirjoittaa 1 rekisteriin a, ja lax kutsuu taman makron. >r Ottaa kaksi arvoa pinosta ja vertaa niita olettaen, etta ne ovat lukuja, toteuttaen rekisterin r sisallon makrona, jos alkuperainen pinon paallimmainen arvo on suurempi. Siten 1 2>a kutsuu rekisterin a sisallon, mutta 2 1>a ei kutsu. !>r Kuten edellinen, mutta kutsuu makron, jos alkuperainen pinon paallimmainen arvo on pienempi. commands take precedence, so if you want to run a command starting with <, =, or > you will need to add a space after the !. # Tulkitsee loput rivista kommentiksi. :r Ottaa pinon kaksi paallimmaista arvoa. Vanha toiseksi paallimmainen pinon arvo talletetaan saantioon r, joka indeksoidaan vanhalla paallimmaisella pinon arvolla. ;r Ottaa pinon paallimmaisen arvon ja kayttaa sita indeksina saantioon r. Valittu arvo tyonnetaan pinoon. Note that each stacked instance of a register has its own array associated with it. Thus 1 0:a 0Sa 2 0:a La 0;ap will print 1, because the 2 was stored in an instance of 0:a that was later popped. BUGIT Ilmoita ohjelmistovioista (englanniksi) osoitteeseen bug-dc@gnu.org. KAANNOS Taman kasikirjan suomenkielisen kaannoksen tekivat Tuukka Forssell Tama kaannos on ilmainen dokumentaatio; katso tekijanoikeusehdot GNU General Public License -versiosta 3 tai uudemmasta. Emme ota vastuuta. GNU Project 22. toukokuuta 2008 dc(1)