Change viewing parameters
Select another database

Dravidian etymology :

Search within this database
Proto-Dravidian : *kēs-
Meaning : to shave
Nostratic etymology: Nostratic etymology
Proto-Kolami-Gadba : *kēs-
dravet-meaning,dravet-prnum,dravet-koga,

Search within this database


Kolami-Gadba etymology :

Search within this database
Proto-Kolami-Gadba : *kēs-
Meaning : to shave
Dravidian etymology: Dravidian etymology
Parji : kēc-
Ollari Gadba : kēs-
Additional forms : Also Parji kēma razor; Ollari kēsal razor
Number in DED : 1995
kogaet-meaning,kogaet-prnum,kogaet-parji,kogaet-ollari,kogaet-addition,kogaet-dednum,

Search within this database


Nostratic etymology :

Search within this database
Eurasiatic: *ḳVc`V
Meaning: cut
Borean: Borean
Indo-European: *k'es-
Altaic: *k`ắsi
Uralic: FU (Perm.) *käćV- 'to cut'; ?Ug. *kaćV 'bersten, reissen'
Kartvelian: *ḳać-
Dravidian: *kēs-
References: МССНЯ 360, ОСНЯ 1, 320-321; ND 989 *ḳ[ä]cä 'to cut' (all except Alt.); 1005 *Ḳaĉ̣V 'to crack, split' (+ Sem.). Cf. *ḳVǯV.
nostret-meaning,nostret-prnum,nostret-ier,nostret-alt,nostret-ura,nostret-kart,nostret-drav,nostret-reference,

Search within this database


Indo-European etymology :

Search within this database
Proto-IE: *k'esa-
Nostratic etymology: Nostratic etymology
Meaning: to cut
Old Indian: śásati, śasti, śāsti , ptc. śasta- `to cut down, kill, slaughter', śástra- n. `instrument for cutting, knife, sword, dagger', śāsá- m. `butcher's knife'
Old Greek: keázdō `spalten, zerschmettern', hom. ptc. prs. kéi̯ōn; eu̯-kéato- `leicht zu spalten', *kéarno-n, pl. kéarna n. 'carpenter's axe' Hsch.
Slavic: [ *kosā́ `Sichel, Sense' ]
Latin: castrāre `be-, verschneiden, kastrieren', castus, -a `enthaltsam, rein, keusch'; carēre `nicht haben, entbehren; sich ent-, fernhalten, vermissen'; castus, -ūs m. `Enthaltung von Genüsdsen aus religiösen Gründen'
Other Italic: Osk fakiiad kasit `faciat oportet'; castrous `fundi'; Umbr kastruvuf, castruo (acc. pl.) `fundos'
Celtic: MIr cess `Speer'
Russ. meaning: резать
References: WP I 448 f
piet-prnum,piet-meaning,piet-ind,piet-greek,piet-slav,piet-lat,piet-ital,piet-celt,piet-rusmean,piet-refer,

Search within this database


Vasmer's dictionary :

Search within this database
Word: коса́
Near etymology: II. [для жатвы], также "хвостовые перья петуха", укр. коса́, болг. коса́, сербохорв. ко̀са, словен. kósa, чеш., польск., в.-луж., н.-луж. kоsа.
Further etymology: В семантическом отношении наиболее интересно сравнение с др.-инд. çásati, çā́sti "режет", çastrám "нож", лат. castrāre "отрезать, оскоплять", греч. κεάζω, κείω "раскалываю", но оно приемлемо только при допущении чередования задненёбных или правильности закона диссимиляции свистящих Мейе (см. Ét. 178; 253; МSL 9, 374; 13, 243; Мейе--Вайан 28; см. Вальде--Гофм. I, 179; Махек, "Slavia", 16, стр. 187; Младенов 252; Бернекер 1, 581). В противном случае коса́ можно сравнивать с лит. kasù, kàsti "копать", алб. korrë "жатва, лето", korr "собираю урожай", kuarr (см. Г. Майер, Alb. Wb. 200; Педерсен, IF 5, 46; Миккола, Ursl. Gr. 154). Менее убедительно сравнение с др.-инд. kákṣā "подмышка", авест. kаšа- м. "плечо", лат. соха "бедро", д.-в.-н. hahsa, ср.-в.-н. hehse "коленный сустав, голень", ирл. соss "нога (ступня)" (Бецценбергер, ВВ 12, 239; Видеман, ВВ 28, 15 и сл.; Бернекер, там же; Леви, KZ 40, 421).
Trubachev's comments: [Рясянен ("Neuphilol. Мitt.", 57, 1956, 51 и сл.) высказывается в поддержку точки зрения Бернекера (1, 581) о тождестве коса I и коса II, происходящих от кос, косой. -- Т.]
Pages: 2,345
vasmer-general,vasmer-origin,vasmer-trubachev,vasmer-pages,

Search within this database


Pokorny's dictionary :

Search within this database
Number: 947
Root: k̂es-
English meaning: to cut
German meaning: `schneiden'
Derivatives: es-tro-m `Schneidewerkzeug, Messer'
Material: Ai. śā́sti, śáśati `schneidet, metzelt', śasta-ḥ `niedergemetzelt', śástrá- n. `Messer, Dolch', śāsá- m. `Schlachtmesser';

    gr. κεάζω `spalte', εὐ-κέατος `leicht zu spalten', κέαρνον `Axt, Schusterahle';

    alb. thadrë (*k̂as-dhrā) `zweischneidige Axt';

    lat. careō, -ēre `entbehren, sich enthalten, vermissen', osk. kasit `oportet'; to-Partizip, lat. castus `frei (von Fehlern), rein, enthaltsam', ursprüngl. `abgeschnitten, getrennt'; davoncastīgō `rüge, strafe'; Neubildung ist cassus `leer, eitel. nichtig'; *kastrom `Schneidewerkzeug' ( : ai. śastrám) wird vorausgesetzt von lat. castrō, -āre `abschneiden, verschneiden, kastrieren', castrum `Lager' als `abgeschnittenes Stück Land', osk. Gen. Sg. castrous `fundi', umbr. castruo, kastruvuf `fundos' (u-St. nach peku- `Vieh');

    mir. cess f. `Speer' (*kestā);

    anord. hes f. `Zapfen im Kuhstrick';

    aksl. kosa f. `Sichel, Sense' (k- statt s- durch Dissimil. gegen das folgende s?).

References: WP. I 448 f., WH. I 167, 178 ff.
Pages: 586
PIE database: PIE database
pokorny-root,pokorny-meaning,pokorny-ger_mean,pokorny-derivative,pokorny-material,pokorny-ref,pokorny-pages,pokorny-piet,

Search within this database


Altaic etymology :

Search within this database
Proto-Altaic: *k`ắsi
Nostratic: Nostratic
Meaning: to cut; piece
Russian meaning: отрезать; кусок
Turkic: *kes-
Mongolian: *kasu-
Tungus-Manchu: *(x)asu-
Korean: *kàsk- / kǝ̀sk-
Japanese: *kínsú
Comments: SKE 103 (Turk.-Kor.; despite TMN 3, 596, Kor. kǝsk- is not a "teleologischer Sternchenform"). Cf. also Nan. (Bik.) kesi- 'to cut out' - with quite inexplicable k- (a borrowing?). Reasons for prenasalization in Jpn. are unclear (perhaps a suffixed form like *k`ắsi-gu-n is reflected).
altet-prnum,altet-meaning,altet-rusmean,altet-turc,altet-mong,altet-tung,altet-kor,altet-jap,altet-reference,

Search within this database


Turkic etymology :

Search within this database
Proto-Turkic: *kes-
Altaic etymology: Altaic etymology
Meaning: to cut
Russian meaning: резать
Old Turkic: kes- (Yenis.)
Karakhanid: kes- (MK, KB)
Turkish: kes-
Tatar: kis-
Middle Turkic: kes- (Abush.)
Uzbek: kes-
Uighur: kes-
Azerbaidzhan: käs-
Turkmen: kes-
Khakassian: kis-
Shor: kes-
Oyrat: kes-
Halaj: käs-
Chuvash: kas-
Yakut: kehē-
Tuva: ke's-
Kirghiz: kes-
Kazakh: kes-
Bashkir: kiɵ-
Balkar: kes-
Kumyk: kes-
Comments: VEWT 257, ЭСТЯ 5, 55-57, 58. Turk. *kesek > WMong. keseg 'piece, part' (TMN 3, 596, Clark 1980, 39, Щербак 1997, 127).
turcet-prnum,turcet-meaning,turcet-rusmean,turcet-atu,turcet-krh,turcet-trk,turcet-tat,turcet-chg,turcet-uzb,turcet-uig,turcet-azb,turcet-trm,turcet-hak,turcet-shr,turcet-alt,turcet-khal,turcet-chv,turcet-jak,turcet-tuv,turcet-krg,turcet-kaz,turcet-bas,turcet-blkx,turcet-qum,turcet-reference,

Search within this database


Mongolian etymology :

Search within this database
Proto-Mongolian: *kasu-
Altaic etymology: Altaic etymology
Meaning: to cut off pieces, to adze, to diminish
Russian meaning: срезать, уменьшать, укорачивать
Written Mongolian: qasu- (L 942)
Khalkha: xas-
Buriat: xaha-
Kalmuck: xas-
Ordos: Gasu-
Comments: KW 171. Mong. > Evk. kasi- (ТМС 1, 382-383).
monget-prnum,monget-meaning,monget-rusmean,monget-wmo,monget-hal,monget-bur,monget-kal,monget-ord,monget-reference,

Search within this database


Tungus etymology :

Search within this database
Proto-Tungus-Manchu: *(x)asu-
Altaic etymology: Altaic etymology
Meaning: 1 to chop, cut off 2 to bite
Russian meaning: 1 обрубать, отсекать 2 кусать
Evenki: asu- 2
Literary Manchu: asix́a- 1
Comments: ТМС 1, 56.
tunget-prnum,tunget-meaning,tunget-rusmean,tunget-evk,tunget-man,tunget-reference,

Search within this database


Korean etymology :

Search within this database
Proto-Korean: *kàsk- / kǝ̀sk-
Altaic etymology: Altaic etymology
Meaning: 1 to cut, trim 2 to break off
Russian meaning: 1 резать, подрубать 2 отламывать
Modern Korean: k:ak:- 1, k:ǝk:- 2
Middle Korean: kàsk- 1, kǝ̀sk- 2
Comments: Nam 26, 27, 39, KED 35, 91.
koret-prnum,koret-meaning,koret-rusmean,koret-phn,koret-ako,koret-reference,

Search within this database


Japanese etymology :

Search within this database
Proto-Japanese: *kínsú
Altaic etymology: Altaic etymology
Meaning: scar
Russian meaning: шрам, рана
Old Japanese: kjizu
Middle Japanese: kízú
Tokyo: kìzu
Kyoto: kízú
Kagoshima: kízù
Comments: JLTT 452.
japet-prnum,japet-meaning,japet-rusmean,japet-ajp,japet-mjp,japet-tok,japet-kyo,japet-kag,japet-comments,

Search within this database


Uralic etymology :

Search within this database
Number: 1790
Proto: *kaćV
> Nostratic: > Nostratic
English meaning: to burst, tear
German meaning: bersten, reissen
Mansi (Vogul): kün-kaśmāt, kün-kaśl- (TJ) 'bersten, reißen, abspringen (eine Schlittenkufe, ein Balken, ein Brett)', el-χaśǝmǟt-, el-χaśl- (KU) 'sich ablösen, abfallen (ein Flicklappen)', χot-χaśmat-, χot-χaśl- (LO) 'zerreißen, sich abnutzen, sich abtragen (Kleidungsstücke)'
Hungarian: hasad- 'sich spalten, reißen, bersten', hasít- 'spalten, zerspalten, schlitzen, reißen'
uralet-proto,uralet-prnum,uralet-meaning,uralet-germmean,uralet-man,uralet-ugr,

Search within this database


Kartvelian etymology :

Search within this database
Proto-Kartvelian: *ḳać-
Nostratic: Nostratic
Russian meaning: резать, рубить
English meaning: to cut, chop
Svan: ḳč-
Notes and references: Сванскую основу Иллич-Свитыч (ОСНЯ 1, 320) сравнивает с ПИЕ *ḱes- 'резать', урал. *käćV / *kećä 'нож, острие', тюрк. *kes- 'резать' < ностр. *ḳäćä.
kartet-prnum,kartet-rusmean,kartet-meaning,kartet-sva,kartet-notes,

Search within this database


Long-range etymologies :

Search within this database
Borean (approx.) : KVCV
Meaning : to cut
Eurasiatic : *ḳVć`V
Afroasiatic : *ḳac̣-/*ḳuc̣-
Sino-Caucasian : *q̇ăc̣ɨ̆ (~-ŭ)
Amerind (misc.) : *ḳaCi (under *ḳaṭi R 89) [+ A]
African (misc.) : Bantu *-kèc-.
Reference : ND 989; GE 79 *ḳaci (with diff. SH).
globet-meaning,globet-nostr,globet-afas,globet-scc,globet-amer,globet-afr,globet-reference,

Search within this database


Afroasiatic etymology :

Search within this database
Proto-Afro-Asiatic: *ḳac̣-/*ḳuc̣-
Meaning: cut
Borean etymology: Borean etymology
Semitic: *ḳuṣ- 'cut'
Berber: *ḳas-
Western Chadic: *ḳac̣-
Central Chadic: *kac̣- 'cut off'
Low East Cushitic: *ḳac̣- 'press'
Dahalo (Sanye): ḳac- 'circumcise'
Omotic: *ḳuc̣- 'circumcise'
Notes: Cf. *ḳuĉ̣- 'cut, pierce'
afaset-meaning,afaset-prnum,afaset-sem,afaset-brb,afaset-wch,afaset-cch,afaset-lec,afaset-dhl,afaset-omo,afaset-notes,

Search within this database


Semitic etymology :

Search within this database
Number: 553
Proto-Semitic: *ḳuṣ-
Afroasiatic etymology: Afroasiatic etymology
Meaning: 'cut'
Akkadian: qaṣāṣu
Ugaritic: qṣ
Hebrew: qṣṣ, qṣy/w
Aramaic: qṣṣ
Arabic: qṣṣ [-u-]
Soqotri: qeṣ
semet-proto,semet-prnum,semet-meaning,semet-akk,semet-uga,semet-hbr,semet-arm,semet-ara,semet-soq,

Search within this database


Berber etymology :

Search within this database
Proto-Berber: *ḳas-
Afroasiatic etymology: Afroasiatic etymology
Meaning: 'pinch, sting'
Shilh (Tashelhit): ʁas
brbet-prnum,brbet-meaning,brbet-shl,

Search within this database


West Chadic etymology :

Search within this database
Proto-WChadic: *ḳac̣-
Afroasiatic etymology: Afroasiatic etymology
Meaning: 'plane of surface of wood'
Hausa: kā̀c̣ā
Notes: semantically duboius
wchet-prnum,wchet-meaning,wchet-hsa,wchet-notes,

Search within this database


Central Chadic etymology :

Search within this database
Proto-CChadic: *kac̣-
Afroasiatic etymology: Afroasiatic etymology
Meaning: 'cut off small amount'
Gude: kacǝ [Hs]
cchet-prnum,cchet-meaning,cchet-gde,

Search within this database


Low East Cushitic etymology :

Search within this database
Proto-Low East Cushitic: *ḳac̣-
Afroasiatic etymology: Afroasiatic etymology
Meaning: 'press'
Oromo (Galla): qac̣aʔa
lecet-prnum,lecet-meaning,lecet-oro,

Search within this database


Dahalo etymology :

Search within this database
Dahalo: ḳac-
Afroasiatic etymology: Afroasiatic etymology
Meaning: 'circumcise'
dhlet-prnum,dhlet-meaning,

Search within this database


Omotic etymology :

Search within this database
Proto-Omotic: *ḳuc̣-
Afroasiatic etymology: Afroasiatic etymology
Meaning: 'circumcise'
Dizi (Maji): ḳuc̣-
omoet-prnum,omoet-meaning,omoet-maj,

Search within this database


Sino-Caucasian etymology :

Search within this database
Proto-Sino-Caucasian: *q̇ăc̣V́
Meaning: piece; slice
Borean etymology: Borean etymology
North Caucasian: *q̇ăc̣ɨ̆ (~-ŭ)
Sino-Tibetan: *qāt
Burushaski: *qes- / *qhes-
Basque: *o=koc (-ć)
Comments and references : NSC 56 *q̇ac̣V. Cf. also Na-Dene 208 *q'euc 'tear, crack, split'; Bsq *a=kać / *ma=keć / *ma=kac 'nick, notch; fault', etc.
sccet-meaning,sccet-prnum,sccet-cauc,sccet-stib,sccet-buru,sccet-basq,sccet-notes,

Search within this database


North Caucasian etymology :

Search within this database
Proto-North Caucasian: *q̇ăc̣ɨ̆ (~-ŭ)
Sino-Caucasian etymology: Sino-Caucasian etymology
Meaning: piece; bite, incision
Proto-Tsezian: *q̇ec̣e
Proto-Lak: q̇ac̣
Proto-Dargwa: *q̇ac̣
Proto-Lezghian: *q̇ac̣
Notes: Reconstructed for the PEC level. Correspondences are regular.
caucet-prnum,caucet-meaning,caucet-cez,caucet-lak,caucet-darg,caucet-lezg,caucet-comment,

Search within this database


Tsezian etymology :

Search within this database
Proto-Tsezian: *q̇ec̣e A
North Caucasian etymology: North Caucasian etymology
Meaning: piece
Tsezi: q̇ic̣i
Ginukh: q̇ič̣i
Comments: PTsKh *q̇ec̣e. Rather strange is Khvarsh. q̇ac̣a 'slice of bread', listed in Лексика 1971; with -a- cf. perhaps also Gin. q̇ač̣-ā 'to chew' (?).
cezet-prnum,cezet-meaning,cezet-cez,cezet-gin,cezet-comment,

Search within this database


Lak etymology :

Search within this database
Lak root: q̇ac̣
North Caucasian etymology: North Caucasian etymology
Meaning: bite; mouth
Lak form: q̇ac̣
Comments: 3d class. The word is used in q̇ac̣a ṭun/učin 'to bite'. Cf. Khosr. q̇ac̣ id.
laket-prnum,laket-meaning,laket-lak,laket-comment,

Search within this database


Dargwa etymology :

Search within this database
Proto-Dargwa: *q̇ac̣
North Caucasian etymology: North Caucasian etymology
Meaning: a bite; (piece of bread) > bread
Akusha: q̇ac̣
Chiragh: q̇ac̣
Comments: Used independently with the meaning "bread", but preserving the meaning "bite" in a compound verb (Ak. q̇ac̣-bilkes, Chir. q̇ac̣i -u(r)ḳ- etc.).
darget-prnum,darget-meaning,darget-drg,darget-chr,darget-comment,

Search within this database


Lezghian etymology :

Search within this database
Proto-Lezghian: *q̇ac̣
North Caucasian etymology: North Caucasian etymology
Meaning: 1 bit,slice 2 notch, nick 3(biting part) > chin
Lezghian: q̇ac̣ 2
Tabasaran: q̇ac̣ 1
Agul: q̇ac̣ 1
Rutul: q̇ac̣ 3
Tsakhur: q̇ac̣ 3
Comment: Obl. base *q̇ac̣ɨ-, cf. Tab. q̇ac̣u-, Lezg. erg. q̇ac̣u. The Ag. form for "to bite" (q̇ac̣iḳas) goes back to this root. 4th class in Rut. and Tsakh.
lezget-prnum,lezget-meaning,lezget-lzg,lezget-tab,lezget-agu,lezget-rut,lezget-cak,lezget-comment,

Search within this database


Sino-Tibetan etymology :

Search within this database
Proto-Sino-Tibetan: *qāt
Sino-Caucasian etymology: Sino-Caucasian etymology
Meaning: cut, cleave
Chinese: *kāt cut; destroy, destruction.
Tibetan: ãgas (p. gas) to be cleft or split (of rocks), to burst (of a bag), to crack, to break, ãges (p. bkas, f. dgas, i. khos) to split, cleave, divide.
Burmese: khat to strike by a side or back blow, to row (a boat), to beat out flat or thin, as metal.
Kachin: gat3 cut off.
Lushai: āt () cut as with knife, KC *ɣāt.
Comments: Banpara hat; Midzhu gāt reap. Sh. 410, 428, 185.
stibet-prnum,stibet-meaning,stibet-chin,stibet-tib,stibet-burm,stibet-kach,stibet-lush,stibet-comments,

Search within this database


Chinese characters :

Search within this database
Character:
Modern (Beijing) reading: gē
Preclassic Old Chinese: kāt
Classic Old Chinese: kāt
Western Han Chinese: kāt
Eastern Han Chinese: kāt
Early Postclassic Chinese: kāt
Middle Postclassic Chinese: kāt
Late Postclassic Chinese: kāt
Middle Chinese: kât
English meaning : to injure
Russian meaning[s]: 1) отрезать, отделить; 2) прирезать (землю от себя другому); 3) урезать, скостить, уменьшить (напр. ренту); 4) косить, жать; 5) погубить (напр. репутацию)
Comments: A somewhat later meaning (attested since L. Chou) is "to cut, clip". Viet. cắt is colloquial; regular Sino-Viet. is cát.
Sino-Tibetan etymology: Sino-Tibetan etymology
Dialectal data: Dialectal data
Radical: 18
Four-angle index: 2822
Karlgren code: 0314 d-e
Vietnamese reading: cắt
bigchina-reading,bigchina-ochn,bigchina-cchn,bigchina-wchn,bigchina-echn,bigchina-epchn,bigchina-mpchn,bigchina-lpchn,bigchina-mchn,bigchina-meaning,bigchina-oshanin,bigchina-comment,bigchina-stibet,bigchina-doc,bigchina-radical,bigchina-oshval,bigchina-karlgren,bigchina-viet,

Search within this database


Chinese Dialects :

Search within this database
Number: 1340
Chinese etymology: Chinese etymology
Character:
MC description : 山開一入曷見
ZIHUI: 0480 0182
Beijing: kô 11
Jinan: kǝ 11
Xi'an: kô 11
Taiyuan: kǝʔ 41; kaʔ 41
Hankou: ko 12
Chengdu: ko 12
Yangzhou: kǝʔ 4
Suzhou: kôʔ 41
Wenzhou: ky 41
Changsha: ko 4
Shuangfeng: kuɛ 12
Nanchang: kɔt 41
Meixian: kɔt 41
Guangzhou: kɔt 43
Xiamen: kat 41 (lit.); kuaʔ 41
Chaozhou: kuaʔ 41
Fuzhou: kaʔ 41
Shanghai: kôʔ 4
Zhongyuan yinyun: ko 42
doc-charref,doc-character,doc-mcinfo,doc-zihui,doc-beijing,doc-jinan,doc-xian,doc-taiyuan,doc-hankou,doc-chengdu,doc-yangzhou,doc-suzhou,doc-wenzhou,doc-changsha,doc-shuangfeng,doc-nanchang,doc-meixian,doc-guangzhou,doc-xiamen,doc-chaozhou,doc-fuzhou,doc-shanghai,doc-zhongyuan,

Search within this database


Burushaski etymology :

Search within this database
Common Burushaski: *qes- / *qhes-
Sino-Caucasian Etymology: Sino-Caucasian Etymology
Meaning: to rip, tear
Yasin: -xés-
Hunza: qis-́, -qhís-
Nagar: qis-́, -qhís-
buruet-prnum,buruet-meaning,buruet-yas,buruet-hun,buruet-ngr,

Search within this database


Basque etymology :

Search within this database
Proto-Basque: *o=koc (-ć)
Sino-Caucasian etymology: Sino-Caucasian etymology
Meaning: ́1 chin 2 snout 3 nape 4 head (intelligence)
Bizkaian: okotz 1, 2
High Navarrese: kokots 1
Low Navarrese: kokots, kokotz 1
Lapurdian: kokots, kokotz 1
Baztanese: kokots 3
Zuberoan: kokots 1
Roncalese: kokots 1, 4
Comments: If the BZK form is archaic (okotz < *o=koc?), the form kokotz/ts seems to be blended with *kokot ‘nape’ (q.v.), of distinct origin. Alternatively the reduplicated *kokoc (or *kokoć) was original, with dissimilation in BZK. This body part term may be related to Bsq *a=kać, *ma=keć ‘notch, nick’ (q.v., cf. Lezgi q̇ac̣ ‘notch, nick’ vs. Rutul, Tsakhur q̇ac̣ ‘chin’).
basqet-prnum,basqet-meaning,basqet-bzk,basqet-anv,basqet-bnv,basqet-lab,basqet-bzt,basqet-zbr,basqet-rnc,basqet-comments,

Search within this database

Select another database
Change viewing parameters
Total pages generatedPages generated by this script
1166844430333
Help
StarLing database serverPowered byCGI scripts
Copyright 1998-2003 by S. StarostinCopyright 1998-2003 by G. Bronnikov
Copyright 2005-2014 by Phil Krylov