A \*(dc egy korlátlan pontosságú számítások elvégzésére alkalmas fordított-lengyel (postfix) asztali számológép, amely lehetőséget ad makrók definiálására és végrehajtására. A bemenetet a standard bemenetről veszi; ha argumentumot adsz meg neki, azt fájlnévként értelmezi és azon fájlok tartalmát veszi és hajtja végre, majd ezután olvas a standard bemenetről. A kimenet a standard kimenet, a hibák a standard hibakimenetre íródnak.
A fordított-lengyel számológép a számokat egy veremben tárolja. Új szám bevitele esetén a szám a verem tetejére kerül. A műveletek az argumentumukat a verem tetejéről veszik, majd az eredményt visszateszik a verembe.
A bevitelhez a számot egyszerűen beírod, követheti opcionálisan tizedespont. A hatványalak használata nem támogatott. Negatív számok beviteléhez a számot ``_'' karakterrel kezdd. Az előjel nem lehet ``-'', mivel ez a kivonás műveleti operátora. Több számot egymástól szóközzel vagy új sorral elválasztva lehet bevinni, ezen karakterek nem parancsok.
A legtöbb számítás eredményét befolyásolja a k paranccsal beállítható pontosságérték. Ez alapértelmezésben nulla, ami azt jelenti, hogy az összeadás és a kivonás kivételével minden művelet erdménye egész lesz.
A % maradék-művelet kis magyarázatra szorul. Ha az argumentumai ``a'' és ``b'', akkor a művelet eredménye ``a - (b * (a / b))'', ahol ``a / b'' az aktuális pontosságérték szerint számítódik.
A \*(dc 256 memóriaregisztert képes kezelni, mindegyikük neve egyetlen karakter. A regiszterben tárolható és később újrafelhasználható egy szám vagy egy karakterlánc.
Minden regiszternek megvan a saját verme, az aktuális regiszterérték van a verem tetején.
A \*(dc működését három paraméter befolyásolja: a pontosság, a beviteli alap és a kimeneti alap. A pontosság határozza meg, hogy a műveletek eredményéből hány tizedesjegy maradjon meg. A beviteli alap mutatja meg, hogy a begépelt számok hányas számrendszerben vannak; minden begépelt szám ebben a számrendszerben értelmeződik. Számok kiírásakor a számok a kimeneti alap szerinti számrendszerben íródnak ki.
A beviteli és a kimeneti alapok különböző paraméterek, nem kell feltétlenül egyenlőnek lenniük; ez lehet hasznos és zavaró is. A bemeneti alap legalább 2, legfeljebb 36 lehet. A kimeneti alapnak legalább 2-nek kell lennie. A pontosságnak nullának vagy nagyobbnak kell lennie. A pontosság a beviteli és kimeneti alaptól függetlenül mindig tizedesjegyeket jelent.
A \*(dc képes karakterláncokat is kezelni. A karakterláncokat csak tárolni vagy makróként végrehajtani (azaz a tartalmuk \*(dc parancsként értelmeződik) lehet. Karakterláncok tárolására minden regiszter és a verem is képes. Néhány parancs, mint például az aritmetikai műveletek számokat várnak argumentumként, és hibát jeleznek, ha karakterláncot találnak helyette. Más parancsok számot és karakterláncot is elfogadnak; ilyen például a p parancs, ami mindegyiket elfogadja és a típusának megfelelő módon írja ki.
A makrókat leggyakrabban regiszterekben tároljuk; a [1p]sa az a regiszterbe tesz egy olyan makrót, ami egy 1 -est ír ki. A lax parancs hajtja végre ezt a makrót.
A : és a ; tömbműveteket általában csak a bc hagyományos implementációi használják. (A GNU bc ezt tartalmazza, nem szükséges a futásához a \*(dc. )
A hibákat e-mail-ben jelentsd a bug-gnu-utils@prep.ai.mit.edu címen. A levél tárgyában valahol legyen benne a ``dc'' szó.