算術求積尺之法,如芻萌、芻童、方池、冥穀、塹堵、鱉臑、圓錐、陽馬之類,物形備矣,獨未有隙積一術,古法:凡算方積之物,有立方,謂六冪皆方者。其法再自乘則得之。有塹堵,謂如土牆者,兩邊殺,兩頭齊。其法並上下廣,折半以為之廣以直高乘之,以直高以股,以上廣減下廣,餘者半之為勾。勾股求弦,以為斜高。有芻童,謂如覆鬥者,四麵皆殺。其法倍上長加入下長,以上廣乘之;倍下長加入上長,以下廣乘之;並二位,以高乘之,六而一。隙積者,謂積之有隙者,如累棋、層壇及灑家積罌之類。雖似覆鬥,四麵皆殺,緣有刻缺及虛隙之處,用芻童法求之,常失於數少。餘思而得之,用爭童法為上位;下位別列:下廣以上廣減之,餘者以高乘之,六而一,並入上位。假令積罌:最上行縱橫各二罌,最下行各十二罌,行行相次。先以上二行相次,率至十二,當十一行也。以芻童法求之,倍上行長得四,並入下長得十六,以上廣乘之,得之三十二;又倍下行長得二十四,並入上長,得二十六,以下廣乘之,得三百一十二;並二位得三百四十四,以高乘之,得三千七百八十四。重列下廣十二,以上廣減之,餘十,以高乘之,得一百一十,並入上位,得三千八百九十四;六而一,得六百四十九,此為罌數也。芻童求見實方之積,隙積求見合角不盡,益出羨積也。履畝之法,方圓曲直盡矣,未有會圓之術。凡圓田,既能拆之,須使會之復圓。古法惟以中破圓法拆之,其失有及三倍者。餘別為拆會之術,置圓田,徑半之以為弦,又以半徑減去所割數,餘者為股;各自乘,以股除弦,餘者開方除為勾,倍之為割田之直徑。以所割之數自乘倍之,又以圓徑除所得,加入直徑,為割田之弧。再割亦如之,減去已割之弧,則再割之弧也。假令有圓田,徑十步,欲割二步。以半徑為弦,五步自乘得二十五;又以半徑減去所割二步,餘三步為股,自乘得九;用減弦外,有十六,開平方,除得四步為勾,倍之為所割直徑。以所割之數二步自乘為四,倍之得為八,退上一位為四尺,以圓徑除。今圓徑十,已足盈數,無可除。隻用四尺加入直徑,為所割之孤,凡得圓徑八步四尺也。再割亦依此法。如圓徑二十步求弧數,則當折半,乃所謂以圓徑除之也。此二類皆造微之術,古書所不到者,漫誌於此。
算術中求物體體積的方法,如芻萌、芻童、方池、冥穀、塹堵、鱉臑、圓錐、陽馬等,各種形狀的物體都具備了,隻是沒有隙積術。古代的算法:凡計算物體的體積,有立方體,是指六個麵都是正方形的物體,其計算方法是把一條邊自乘兩次就可以求得了。有塹堵,是指有點像土牆形狀的物體,兩邊是斜的,兩頭的麵是垂直的。它的截麵麵積的算法是:先把上、下底的寬相加,除以二,作為截麵的寬,用直高與它相乘就求得了一個值;再將直高作為股,用上底麵的寬減去下底麵的寬,所得之差除以二作為勾,用勾股定理算出弦,就是它的斜邊長。有芻童,是指有點像翻過來的方鬥形狀,四側都是斜麵。它的計算方法是:將上底麵的長乘二,與下底麵的長相加,再與上底麵的寬相乘;將下底麵的長乘二,與上底麵的長相加,再與下底麵的寬相乘;把這兩個數值相加,與高相乘,再取其六分之一(就求得了它的體積)。隙積,是指堆累起來而其中有空隙的物體,像堆疊起來的棋子、分層建造起來的土壇以及酒館裏堆累起來的酒壇子一類的物體。它們雖像倒扣著的鬥,四側都是斜麵,但是由於邊緣存在著一定的殘缺或空隙,如果用芻童法計算,所得數量往往比實際的要少。我想出了一種計算方法:用芻童法算出它的上位、下位數值,另外單獨列出它的下底寬,減去上底寬,將所得之差乘高,取其六分之一,再並入前麵的數目就可以了。假設有用酒壇子累成的堆垛,最上層的長、寬都是兩隻壇子,最下層的長、寬都是十二隻壇子,一層層交錯堆垛好。先從最上層數起,數到有十二隻壇子的地方,正好是十一層。用芻童法來計算,把上層的長乘二得四,與下層的長相加得十六,與上層的寬相乘,得三十二;再把下層的長乘二得二十四,與上層的長相加得二十六,與下層的寬相乘,得三百一十二;上、下兩數相加,得三百四十四,乘高得三千七百八十四。另外將下層的寬十二減去上層的寬,得十,與高相乘,得一百一十,與前麵的數字相加,得三千八百九十四;取它的六分之一,得六百四十九。這就是這堆酒壇的數量。運用芻童法算出的是實方的體積,運用隙積法算出的是空缺部分拚合成的體積,也就可以算出多餘的體積。丈量土地的方法,方、圓、曲、直的算法都有,不過沒有會圓的算法。凡是圓形的土地,既能夠拆開來,也應該能讓它拚合起來恢複圓形。古代的算法,隻用中破圓法把圓形拆開來計算,它的誤差有達三倍之多的。我另外設計了一種拆開、會合的計算方法。假設有一塊圓形的土地,用它的直徑的一半作為弦,再以半徑減去所割下的弧形的高,用它們的差作為股;弦、股各自平方,用弦的平方減去股的平方,將它們的差開平方後作為勾,再乘二,就是所割弧形田的弦長。把所割的弧形田的高平方,乘二,再除以圓的直徑,所得的商加上弧形的弦長,便是所割弧形田的弧長。再割一塊田也像這樣計算,用總的弧長減去已割部分的弧長,就是再割之田的弧長了。假如有塊圓形的土地,直徑是十步,想使割出的圓弧高二步,就用圓半徑五步作為弦,五步自乘得二十五;又用半徑減去弧形的高二步,它們的差三步作為股,自乘得九;用它與弦二十五相減得十六,開平方得四,這就是勾,再乘二,就是弧的弦長。把圓弧的高二步自乘,得四,再乘二得八,退上一位為四尺,用圓的直徑相除。現今圓的直徑為十,已經滿了整十數,不可除。隻用四尺加下圓弧直徑,就是所割圓的弧長,共得圓弧直徑八步四尺。再割一塊圓田,也依照這種方法。如果圓直徑是二十步,要求弧長,就應當折半,也就是所說的要用圓弧的半徑來除它。這兩種方法都涉及精確的算法,是古書裏沒有說到的,隨筆記錄於此。
造舍之法,謂之《木經》,或雲喻皓所撰。凡屋有三分:去聲。自梁以上為上分,地以上為中分,階為下分。凡梁長幾何,則配極幾何,以為榱等。如梁長八尺,配極三尺五寸,則廳堂法也,此謂之上分。楹若幹尺,則配堂基若幹尺,以為榱等。若楹一丈一尺,則階基四尺五寸之類。以至承拱榱桷,皆有定法,謂之中分。階級有峻、平、慢三等,宮中則以禦輦為法:凡自下而登,前竿垂盡臂,後竿展盡臂為峻道;荷輦十二人:前二人曰前竿,次二人曰前絛,又次曰前脅;後一人曰後脅,又後曰後絛,未後曰後竿。輦前隊長一人,曰傳倡;後一人,曰報賽。前竿平肘,後竿平肩,為慢道;前竿垂手,後竿平肩,為平道;此之謂下分。其書三卷。近歳土木之工,益為嚴善,舊《木經》多不用,未有人重為之,亦良工之一業也。
關於屋舍的營造技術,有一部專門討論的書籍叫做《木經》,有的說是喻皓所撰。此書將屋舍建築概括為“三分”:自梁以上為“上分”,梁以下、地麵以上為“中分”,台階為“下分”。凡是梁長多少,則梁到屋頂的垂直高度就相應地配多少,以此定出比例。如梁長八尺,梁到屋頂的高度就配三尺五寸,這是廳堂的規格。這叫做“上分”。柱子高若幹尺,則堂基就相應地配若幹尺,也以此定出比例。如柱子高一丈一尺,則堂前大門台階的寬度就配四尺五寸之類,以至於鬥拱、椽子等都有固定的尺寸,這叫做“中分”。台階則有“峻”、“平”、“慢”三種;皇宮內是以禦輦的出入為標準的:凡是抬禦輦自下而上登台階,前竿下垂盡手臂之長,後竿上舉也盡手臂之長,這樣才能保持平衡的台階叫做“峻道”;(抬輦的共有十二人:前二人稱前竿,其次二人稱前絛;又其次二人稱前脅,其後二人稱後脅;再後二人稱後絛,最後二人稱後竿。禦輦的前麵有隊長一人稱傳唱,禦輦的後麵有一人稱報賽。)前竿與肘部相平,後竿與肩部相平,這樣才能保持平衡的台階叫做“慢道”;前竿下垂盡手臂之長,後竿與肩部相平,這樣就能保持平衡的台階叫做“平道”。這些叫做“下分”。其書共有三卷。近年土木建築的技術更為嚴謹完善了,已多不用舊時的《木經》,然而還沒有人重新編寫一部這樣的書,這也應該是優秀的木工信得留意的一項業內之事。
版印書籍,唐人尚未盛為之,自馮瀛王始印五經,已後典籍,皆為版本。慶曆中,有布衣畢昇,又為活版。其法用膠泥刻字,薄如錢唇,每字為一印,火燒令堅。先設一鐵版,其上以鬆脂臘和紙灰之類冒之。欲印則以一鐵範置鐵板上,乃密布字印。滿鐵範為一板,持就火煬之,藥稍鎔,則以一平板按其麵,則字平如砥。若止印三、二本,未為簡易;若印數十百千本,則極為神速。常作二鐵板,一板印刷,一板已自布字。此印者才畢,則第二板已具。更互用之,瞬息可就。每一字皆有數印,如之、也等字,每字有二十餘印,以備一板內有重復者。不用則以紙貼之,每韻為一貼,木格貯之。有奇字素無備者,旋刻之,以草火燒,瞬息可成。不以木為之者,木理有疏密,沾水則高下不平,兼與藥相粘,不可取。不若燔土,用訖再火令藥熔,以手拂之,其印自落,殊不沾汙。昇死,其印為餘群從所得,至今保藏。
畢昇用雕版印刷書籍,唐朝人還沒有大規模采用。至五代時的馮瀛王才開始用雕版印製五經,從那以後的各種典籍和圖書都是雕版印刷本了。慶曆年間,有位叫畢昇的平民又創造了活字印版。他的方法是用膠泥刻字,字的厚薄像銅錢的邊緣一般,每個字製成一個字模,用火燒烤使它變得堅硬。先設置一塊鐵板,上麵用鬆脂、蠟混合紙灰這一類東西覆蓋住。想要印刷時,就拿一個鐵框子放在鐵板上,然後密密地排列好字模。排滿一鐵框就作為一個印版,拿著它靠近火烘烤;等鬆脂等物開始熔化時,就拿一塊平板按壓它的表麵,於是,排在板上的字模就平整得像磨刀石一樣。如果隻印製三兩本書,(這種方法)不能算很簡便;如果印刷幾十乃至成百上千本書,(這種方法)就顯得特別快捷。印刷時通常製作兩塊鐵板,一塊正在印刷,另一塊已經另外排字模;這一塊剛印完,另一塊已經準備好了。兩塊交替使用,極短的時間就可以完成。每一個字都有好多個字模,像“之”、“也”等字,每個字有二十多個字模,用來防備一塊板裏麵有重複出現的字。(字模)不用時,就用紙條做的標簽分類加以標示,每個韻部做一個標簽,用木格把它們儲存起來。遇到平時沒有準備的生冷之字,隨即把它刻出來,用草火燒烤,很快可以製成。不拿木頭製作活字模,是因為木頭的紋理有疏有密,沾了水就會變得高低不平,加上容易與藥物互相粘連,不能(重新把字模)取下來。不如用膠泥燒製字模,使用完畢後,再次用火烘烤,使藥物熔化,用手一抹,那些字模就會自行脫落,一點也不會被藥物弄髒。畢昇死後,他的字模被我的堂房兄弟和侄子們得到了,到現在還珍藏著。
淮南人衛樸精於曆術,一行之流也。《春秋》日蝕三十六,諸曆通驗,密者不過得二十六、七,唯一行得二十九;樸乃得三十五,唯莊公十八年一蝕,今古算皆不入蝕法,疑前史誤耳。自夏仲康五年癸巳歳,至熙寧六年癸醜,凡三千二百一年,書傳所載日食,凡四百七十五。眾曆考驗,雖各有得失,而樸所得為多。樸能不用算,推古今日月蝕,但口誦乘除,不差一算。凡大曆悉是算數,令人就耳一讀,即能暗誦;傍通曆則縱橫誦之。嚐令人寫曆書,寫訖,令附耳讀之,有差一算者,讀至其處,則曰:“此誤某字。”其精如此。大乘除皆不下照位,運籌如飛,人眼不能逐。人有故移其一算者,樸自上至下,手循一遍,至移算處,則撥正而去。熙寧中撰《奉元曆》,以無候簿,未能盡其術。自言得六七而已,然已密於他曆。
淮南人衛樸精通曆法,在這方麵是不亞於唐僧一行的人物。《春秋》一書中記載了三十六次日食,曆代曆法學者通加驗證,一般認為所記與實際天象密合的不過有二十六七次,隻有一行證明有二十九次;而衛樸則證明有三十五次,隻有莊公十八年的一次日食,與古今學者對日食發生日期的推算都不合,懷疑是《春秋》記錯了。從夏代仲康五年癸巳歲到宋代熙寧六年癸醜歲,凡三千二百零一年,各種書籍所記載的日食共有四百七十五次,以往各種曆法的推考檢驗雖各有得失,而衛樸所得出的合乎實際的結論要較前人為多。衛樸不用計算工具就能夠推算古今的日月食,加減乘除都隻用口算,卻一個數都不會錯。凡是正式製定的曆法書,全都是一大堆計算程序和數字,衛樸叫人在耳邊讀一遍,就能夠背下來;對於曆表和各種年表,他也都能縱橫背誦。他曾讓人抄寫曆書,抄寫完畢後,叫抄寫的人貼著他的耳朵讀一遍,有哪個地方錯了一個數,讀到那地方時,他就說“某字抄錯了”,他的學問竟能精湛到這樣的程度。他用算籌運算時,很大數字的乘除都不用一步一步擺下去,隻照著數位運籌如飛,人的眼睛都跟不上。有人曾故意移動了他的一隻算籌,他從上到下用手摸了一遍,到被移動的地方,又隨手撥正而離開。熙寧年間製定《奉元曆》,因為沒有實際的觀測記錄,衛樸未能全部發揮他的才能和知識,他自己也說這部曆法的可靠性大約隻有六七成,然而已比其他曆法要精密一些。
錢氏據兩浙時,於杭州梵天寺建一木塔,方兩三級,錢帥登之,患其塔動。匠師雲:“未布瓦,上輕,故如此。”方以瓦布之,而動如初。無可奈何,密使其妻見喻皓之妻,賂以金釵,問塔動之因。皓笑日:“此易耳。但逐層布板訖,便實釘之,則不動矣。”匠師如其言,塔遂定。蓋釘板上下彌束,六幕相聯如胠篋。人履其板,六幕相持,自不能動。人皆伏其精練。
錢氏王朝統治兩浙時,在杭州梵天寺修建一座木塔,才建了兩三層時,錢帥登上木塔,嫌它晃動。工匠說:“還沒有蓋瓦,上麵輕,所以才會這樣。”於是在上麵蓋了瓦,但是木塔還是像當初一樣晃動。實在沒有辦法了,工匠就暗地裏讓妻子去見喻皓的妻子,給她送了金釵,求她向喻皓打聽木塔晃動的原因。喻皓笑著說:“這個容易啊,隻要逐層鋪上木板,用釘子釘牢,就不會晃動了。”工匠按他說的(去做),塔身於是穩定了。因為釘牢木板以後,各層上下更加緊密連接,上、下、左、右、前、後六麵互相連接,就像一隻箱子。人踩上去,上下及周邊四麵互相支撐,當然不會晃動。人們都佩服喻皓技藝精熟。