〔1〕历法尚矣。自尧命羲、和,历象日月星辰,以闰月定四时成岁,其事略见于《书》。而夏、商、周以三统改正朔,为历固已不同,而其法不传。至汉造历,始以八十一分为统母,其数起于黄钟之龠,盖其法一本于律矣。其后刘歆又以《春秋》《易象》推合其数,盖傅会之说也。至唐一行始专用大衍之策,则历术又本于《易》矣。盖历起于数,数者,自然之用也。其用无穷而无所不通,以之于律、于《易》,皆可以合也。然其要在于候天地之气,以知四时寒暑,而仰察天日月星之行运,以相参合而已。然四时寒暑无形而运于下,天日月星有象而见于上,二者常动而不息。一有一无,出入升降,或迟或疾,不相为谋。其久而不能无差忒者,势使之然也。故为历者,其始未尝不精密,而其后多疏而不合,亦理之然也。不合,则屡变其法以求之。自尧、舜、三代以来,历未尝同也。
历法的历史很悠久了。从尧命令羲氏、和氏观测推算日月星辰的运行,用闰月来调整四季,确定一年的长度,这些事情大致记载在《尚书》里。夏、商、周三代分别采用三统来更改历法每年的起始月,历法本来就已经不同了,但具体的方法没有流传下来。到了汉代制定历法,开始用八十一分作为基本单位,这个数字来源于黄钟律管的容积,看来汉历的方法完全基于音律了。后来刘歆又用《春秋》和《易经》的象数来推算附和这个数字,这不过是附会的说法罢了。到了唐代,一行和尚开始专门采用大衍之数来推算,历法术又根源于《易经》了。大概历法起源于数字,数字是自然的作用。它的作用无穷无尽,无所不通,用在音律、用在《易经》上,都能吻合。但历法的关键还在于观测天地之气,来了解四季寒暑的变化,同时仰望观察天上日月星辰的运行,互相参照验证罢了。然而四季寒暑没有形状,在地面运行;日月星辰有形象,在天上显现,这两者总是运动不停。一个有形一个无形,出来进去,上升下降,有的慢有的快,互不相关。时间长了难免会出现差错,这是形势导致的。所以制定历法的人,刚开始时没有不精密的,但后来大多变得疏漏不合,这也是道理之所在。不合了,就多次改变方法去寻求。从尧、舜、夏商周三代以来,历法从来没有相同过。
〔2〕唐终始二百九十余年,而历八改。初曰《戊寅元历》,曰《麟德甲子元历》,曰《开元大衍历》,曰《宝应五纪历》,曰《建中正元历》,曰《元和观象历》,曰《长庆宣明历》,曰《景福崇玄历》而止矣。
唐朝总共存续了二百九十多年,期间历法修改了八次。最初叫做《戊寅元历》,接着是《麟德甲子元历》、《开元大衍历》、《宝应五纪历》、《建中正元历》、《元和观象历》、《长庆宣明历》,最后是《景福崇玄历》就停止了。
〔3〕高祖受禅,将治新历,东都道士傅仁均善推步之学,太史令庾俭、丞傅弈荐之。诏仁均与俭等参议,合受命岁名为《戊寅元历》。乃列其大要,所可考验者有七,曰:“唐以戊寅岁甲子日登极,历元戊寅,日起甲子,如汉《太初》,一也。冬至五十余年辄差一度,日短星昴,合于《尧典》,二也。周幽王六年十月辛卯朔,入蚀限,合于《诗》,三也。鲁僖公五年壬子冬至,合《春秋命历序》,四也。月有三大、三小,则日蚀常在朔,月蚀常在望,五也。命辰起子半,命度起虚六,符阴阳之始,六也。立迟疾定朔,则月行晦不东见,朔不西朓,七也。”高祖诏司历起二年用之,擢仁均员外散骑侍郎。
唐高祖接受禅让后,打算制定新历法。东都洛阳的道士傅仁均擅长推算天象的学问,太史令庾俭和太史丞傅弈一起推荐了他。高祖下诏让傅仁均和庾俭等人共同商议,将新历法命名为《戊寅元历》,以顺应高祖受命改元的年份。傅仁均于是列举了历法的主要特点,其中有七条可以用来验证,他说:“第一,唐朝在戊寅年甲子日登基,历元定在戊寅年,日子从甲子日开始,和汉代的《太初历》一样。第二,冬至每过五十多年就会差一度,冬至时黄昏时昴星出现在正南中天,这符合《尧典》的记载。第三,周幽王六年十月初一辛卯日,发生了日食,符合《诗经》的记载。第四,鲁僖公五年壬子日冬至,与《春秋命历序》相符。第五,月有大月三十天和小月二十九天(即三大三小交替),这样日食就一定发生在初一,月食一定发生在十五。第六,确定时辰从子时一半开始,确定星度从虚宿六度开始,这符合阴阳开始的规律。第七,设立迟疾表来确定定朔,那么月亮在月末不会出现在东方,在月初不会出现在西方。”高祖下诏让司天监从武德二年开始使用这个历法,并提拔傅仁均为员外散骑侍郎。
〔4〕三年808正月望及二月、八月朔,当蚀,比不效。六年811,诏吏部郎中祖孝孙考其得失。孝孙使算历博士王孝通以《甲辰历》法诘之曰:“‘日短星昴,以正仲冬。’七宿毕见,举中宿言耳。举中宿,则余星可知。仁均专守昴中,执文害意,不亦谬乎?又《月令》仲冬‘昏东壁中’,明昴中非为常准。若尧时星昴昏中,差至东壁,然则尧前七千余岁,冬至昏翼中,日应在东井。井极北,去人最近,故暑;斗极南,去人最远,故寒。寒暑易位,必不然矣。又平朔、定朔,旧有二家。三大、三小,为定朔望;一大、一小,为平朔望。日月行有迟速,相及谓之合会。晦、朔无定,由时消息。若定大小皆在朔者,合会虽定,而蔀、元、纪首三端并失。若上合履端之始,下得归余于终,合会有时,则《甲辰元历》为通术矣。”仁均对曰:“宋祖冲之立岁差,隋张胄玄等因而修之。虽差数不同,各明其意。孝通未晓,乃执南斗为冬至常星。夫日躔宿度,如垂阝传之过,宿度既差,黄道随而变矣。《书》云:‘季秋月朔,辰弗集于房。’孔氏云:‘集,合也。不合则日蚀可知。’又云:‘先时者杀无赦,不及时者杀无赦。’既有先后之差,是知定朔矣。《诗》云:‘十月之交,朔月辛卯。’又《春秋传》曰:‘不书朔,官失之也。’自后历差,莫能详正。故秦、汉以来,多非朔蚀。宋御史中丞何承天微欲见意,不能详究,乃为散骑侍郎皮延宗等所抑。孝通之语,乃延宗旧说。治历之本,必推上元,日月如合璧,五星如连珠,夜半甲子朔旦冬至。自此七曜散行,不复余分普尽,总会如初。唯朔分、气分,有可尽之理,因其可尽,即有三端。此乃纪其日数之元尔。或以为即夜半甲子朔冬至者,非也。冬至自有常数,朔名由于月起,月行迟疾匪常,三端安得即合。故必须日月相合与至同日者,乃为合朔冬至耳。”孝孙以为然,但略去尤疏阔者。
武德三年正月十五和二月、八月初一,按推算应该有日食或月食,但实际没有发生。武德六年,高祖下诏让吏部郎中祖孝孙考察傅仁均历法的得失。祖孝孙派算历博士王孝通用《甲辰历》的方法责问傅仁均说:“《尚书·尧典》说‘白天短,黄昏时昴星出现在南中天,以此来确定仲冬’,这里说的是七宿全都出现,但只举了中宿(昴星)来说。举中宿,那么其他星宿就可以知道了。傅仁均你死守‘昴星中天’这一条,死抠字眼而违背了原意,不是很荒谬吗?另外,《月令》说仲冬‘黄昏时东壁星中天’,这说明昴星中天并不是固定的标准。如果尧帝时昴星在黄昏时中天,后来差到了东壁星,那么尧帝之前七千多年,冬至黄昏时应该是翼星中天,太阳应该在东井宿。东井宿在最北边,离人最近,所以天热;北斗在最南边,离人最远,所以天寒。如果寒暑颠倒,那一定是不对的。另外,平朔和定朔,自古就有两种说法。一个月大一个月小(三大三小交替)是定朔定望;一个月大一个月小(一大一小交替)是平朔平望。太阳和月亮运行有快有慢,它们相会叫做‘合会’。月初月末没有固定的规律,而是随着时间变化。如果定朔定望都定在初一,那么合会虽然确定了,但蔀、元、纪首这三大历法要素都丢失了。如果既能向上符合历法的开端,向下能把余数归到年底,合会也能按时,那么《甲辰元历》就是通行的历法了。”傅仁均回答说:“宋代的祖冲之创立了岁差的概念,隋代的张胄玄等人接着修订。虽然岁差数值不同,但各自都表达了意思。王孝通不明白,竟然把南斗星当作冬至时的固定星宿。太阳运行的星宿度数,就像驿站传信一样不断变化,星宿度数已经不同,黄道也随着变化了。《尚书》说:‘季秋月的初一,日月在房宿没有会合。’孔安国解释说:‘集,就是合。不合就是日食。’又说:‘提前行事的杀无赦,不及时行事的也杀无赦。’既然有先后之差,就知道定朔是存在的了。《诗经》说:‘十月的交会,初一那天是辛卯。’《春秋左传》说:‘不记载朔日,是史官的失职。’从此以后,历法有误差,没有人能详细纠正。所以秦、汉以来,日食大多不在初一。宋代的御史中丞何承天稍微想表达自己的意见,但不能详细研究,就被散骑侍郎皮延宗等人压制了。王孝通的话,不过是皮延宗的老说法罢了。制定历法的根本,一定要推求上元,那时日月像璧玉一样合在一起,五大行星像串珠一样连成一串,夜半甲子日初一冬至。从那时起,日月五星各自运行,不再有剩余的分度完全耗尽,重新会合像起初一样。只有朔分数、气分数,有可以除尽的情况,凭借其可除尽,就有了‘三端’。这不过是记录日数的起点罢了。有人认为就是夜半甲子日初一冬至,这是不对的。冬至有自己的常数,朔日的名称来源于月亮的升起,月亮运行快慢无常,三端哪能马上吻合。所以必须太阳和月亮相会与冬至在同一天,才是合朔冬至。”祖孝孙认为傅仁均说得对,只是略去了那些特别粗略的地方。
〔5〕九年814,复诏大理卿崔善为与孝通等较定,善为所改凡数十条。初,仁均以武德元年618为历始,而气、朔、迟疾、交会及五星皆有加减差。至是复用上元积算。其周天度,即古赤道也。
贞观九年,唐太宗又下诏命令大理卿崔善为和傅孝通等人校订历法,崔善为一共改动了数十条。当初,傅仁均把武德元年作为历法的起始点,二十四节气、朔望、行星运行快慢、日月交会以及五大行星的运行都有加减的差值。到了这时,又重新采用上元积算的方法。其中周天度数,就是古代的赤道度数。
〔6〕贞观初,直太史李淳风又上疏论十有八事,复诏善为课二家得失,其七条改从淳风。十四年,太宗将亲祀南郊,以十一月癸亥朔,甲子冬至。而淳风新术,以甲子合朔冬至,乃上言:“古历分日,起于子半。十一月当甲子合朔冬至,故太史令傅仁均以减余稍多,子初为朔,遂差三刻。”司历南宫子明、太史令薛颐等言:“子初及半,日月未离。淳风之法,较春秋已来晷度薄蚀,事皆符合。”国子祭酒孔颖达等及尚书八座参议,请从淳风。又以平朔推之,则二历皆以朔日冬至,于事弥合。且平朔行之自古,故《春秋传》或失之前,谓晦日也。虽癸亥日月相及,明日甲子,为朔可也。从之。十八年,淳风又上言:“仁均历有三大、三小,云日月之蚀,必在朔望。十九年九月后,四朔频大。”诏集诸解历者详之,不能定。庚子,诏用仁均平朔,讫麟德元年。
贞观初年,直太史李淳风又上疏论述了十八件事,太宗又下诏让善为考核两家的得失,其中七条修改后采用了李淳风的说法。贞观十四年,唐太宗将要亲自到南郊祭天,定在十一月癸亥初一,甲子日冬至。而李淳风的新历法认为甲子日既是初一又是冬至,于是上奏说:“古代历法分一天,从子时的一半开始。十一月应该是甲子日初一冬至,但太史令傅仁均因为减余数稍微多了些,把子初定为初一,于是差了三个刻。”司历南宫子明、太史令薛颐等人说:“子初和子半,日月并没有分开。李淳风的方法,比较春秋以来日影长度和日月食,事实都符合。”国子祭酒孔颖达等人以及尚书省八座官员共同商议,请求采用李淳风的方法。又用平朔推算,那么两种历法都在初一这天冬至,这样更符合实际情况。而且平朔从古以来就在使用,所以《春秋左氏传》说有时日期提前了,指的是晦日(月末)。虽然癸亥那天日月相会,但第二天甲子定为初一也是可以的。太宗听从了。贞观十八年,李淳风又上奏说:“傅仁均的历法有三大月三小月,说日食月食一定在初一或十五。贞观十九年九月以后,连续四个大月。”太宗下诏召集所有通晓历法的人详细讨论,但无法确定。庚子日,下诏采用傅仁均的平朔,一直用到麟德元年。
〔7〕仁均历法祖述胄玄,稍以刘孝孙旧议参之,其大最疏于淳风。然更相出入,其有所中,淳风亦不能逾之。今所记者,善为所较也。
傅仁均的历法继承自张胄玄,稍微参考了刘孝孙以前的意见,总体上比李淳风的历法粗略。但两者互有优劣,傅仁均也有正确的地方,李淳风也不能完全超越他。现在所记载的,是善为考核比较的结果。
〔8〕《戊寅历》上元戊寅岁至武德九年626丙戌,积十六万四千三百四十八算外。
《戊寅历》这部历法,从它的上元(历法起点)那一年——戊寅年,算到唐高祖武德九年(丙戌年),总共累积了十六万四千三百四十八年(这个数字不包括当年)。