2012年6月1日 星期五

先有雞或先有蛋

先有雞或先有蛋


曾慶潭 Ching-Tang Tseng
ilikeforth@gmail.com
Hamilton, New Zealand
2 June 2012


我個人的看法是:先沒有雞也先沒有蛋,雞和蛋都是同時進行演化,才演變成今天的這種結果。而且,雞和蛋都還要繼續演化。將來,可能就已無現在的雞也無現在的蛋,這都是生物演進的自然現象,很正常,沒什麼好奇怪的。所以,爭論到底是先有雞或先有蛋?是一件不太有意義的事情,因為,現在的一切,不會是已經過去的一切,也不會是未來可能的一切。

Forth 的本質與實質的生命現象很接近,長期眼見它的發展,對此種對應關係,就能有更深的體會。仔細探討 Forth 系統內的一切技術,自己也在其中進行發展,就更能強烈感受到生命演化過程中所出現之『雞與蛋』的問題。

不懂 Forth 的電腦程式使用者,大部份都只會抱著一隻老母雞,每天設法讓牠生幾個蛋,這種人對電腦程式的觀點,認為雞就是雞、蛋就是蛋。因為,他無法也無能用蛋來改善任何一丁點的雞,否則,他的雞可能立刻就無法再為他下蛋了。簡單形容,他的雞,就是那個編譯系統,他的蛋,就是那隻雞才認識的有限程式。這就難怪,老是有人搞不清楚,到底是先有雞還是先有蛋了。

當然,生物的演變過程,也有例外。所以,我對這些議題,就不肯鐵口直斷,不肯像達爾文那樣,堅持『弱肉強食、適者生存』的唯一生物演進理論。

民國六十三年,我在馬祖北竿服了兩年兵役,有一段時日,營舍就緊鄰北竿塘岐,這是北竿島上最大的小鎮,只有兩條最繁榮的短街,鎮邊緊鄰小海灣,出鎮就是靶場與馬祖唯一的一個『大道機場』。由於營舍都是依山勢而建,營舍邊只有狹小的平地,部隊操練,就得前往靶場或機場,必須經過小鎮民宅,見得到居民的日常生活,與居民畜養的家禽或家畜。


圖一、馬祖北竿塘岐小鎮與大道機場鳥瞰圖

**************************************

2013/8/7重新補述:

原圖是聯合新聞網上,記者報導馬祖要開賭場新聞的標題照片。嚴格檢討起來,覺得此照形同一張刻意要洩露軍機的惡劣照片,我曾親處該地,故特別了解詳情。故意轉刊此處,留下證據,更能凸顯聯合新聞網的惡劣行徑。

聯合新聞網中潛伏了不少經常亂報導新聞以製造社會動亂的惡劣記者,貼完此份補述的同時,本人下定決心,徹底切除與聯合新聞網的任何連結,絕不再去閱讀任何訊息,改看實際國際新聞網頁,並推廣群眾,少去接觸專門製造社會動亂的聯合新聞網,以便促成其及早滅亡。

*************************************

我在那裡,看見過奇特的現象,『老母雞可以在海灣裡游泳』,上岸之後,走起路來,簡直就是鴨步而行,是有掌有蹼的鴨腳。您在生物文獻中可能找不到這種動物的訊息,所以按照界門綱目科屬種的生物分類,您能說牠是雞也是鴨。當時,我主動將其命名為ㄐㄧㄚ,與『家』同音,誰都知道,牠就是雞與鴨交配後的混種動物,能夠長期活得好好的,但可能不能繁殖。如果硬要寫出一個字來當作牠的名稱,手寫也寫得出來,就是左邊為『奚』,右邊為『甲』,是雞與鴨的合體字。但是,電腦輸入中文字時打不出來,陳爽常搞 Forth 的電腦造字,應該要造這個字,才算是發揚中華文化。



每個人一生中必然見識過許多奇特的事情,但要有點本事,才能將這些奇特的事情,寫進有意義的文章。上述這些您未見過的報導,是近半個月,我在發展自己的『固定點式浮點數』數學計算系統時,所想起的相應自然現象,會令自己的人生經驗,自然進入自己的思維,然後,自行走出一條特殊的技術發展路途。

只能抱著雞來生蛋的程式使用者,不能了解這些程式發展的技術意義,所以,不斷地有新手闖入 Forth 的領域後,劈頭就大肆暢談:『 Forth 系統該怎麼……怎麼造』。而實際上是:他連基本 Forth 指令的規格,都還沒有搞清楚,也寫不出任何 Forth 程式。他拿著從網路下載得來的問題檔案,當作自己的創作,到處宣揚,他也很會造 Forth 系統了,編出了壓 Enter 得 Ok 的結果。這樣的能力,等同於只會寫一個能印出『 Hello 』的組合語言程式,甚至於執行內容,都還是別人幫你寫成的初級範例而已,你只是背誦了編譯器操作指令,玩那隻永遠一成不變的雞。而這種能力,在 Forth 的領域,根本不用學,也不鼓勵你碰那種不能演進的雞。最重要的關鍵是,那根本不是 Forth ,真正的 Forth ,反而是隨後真用 Forth 指令進行的一切發展,才叫 Forth 。但是,現在台灣的新手,都只按編譯器操作說明,裝完問題檔案,就沒下文了。

問題檔案,大部份是某些 Forth 玩家,放棄發展後的粗稿,想搞 Forth 者,怎能不知?請注意! Forth 根本不是這樣的程式語言!別再糟蹋 Forth !

講良心話,現在,我幾乎每天都在重造 Forth 系統,是純粹僅以 Forth 來自建 Forth 新系統。卻從不敢以『造系統』來大放厥辭,以免貽笑大方。凡我編定的新版 Forth 系統,都是新雞,每天,我還得用牠來生新蛋。一碰 Forth 就想造 Forth 系統的人,您那能體會得出,我講的這一段話,到底是甚麼意義啊?

單純發展 ABC Forth 數學計算系統時,我只在最後階段造定系統,原本的基礎系統,也就是那隻雞,可以只接受最低程度的改造。最近,走進了自建浮點數全套系統指令的領域,情況大不相同了。以同樣的俗語來形容,我每天都在改造這隻雞,當然,隨後,牠生的蛋都會不同,也常出現那隻馬祖『雞+鴨』的狀況。想描述時,我研究了老半天,打字還是打不出來,大師兄陳爽,您還是早一點造這個字吧。

不碰 64 位元系統之前,我們有現成的 32 位元優良 Forth 系統可以使用,我能改造這隻好雞的能力非常有限,但還是經常改造,只不過是強調自己要尊重原作者,自己造完用完了,一定要記得讓它恢復正常,讓全世界的其他同好不受影響。不想用我設計之系統者,完全可以無視於 ABC Forth 系統的存在,繼續設計您自己才喜歡的程式,這算是一種系統發展上的道德,應該遵守。

最新的 ANS Forth 標準,把浮點數的操作指令納入規定範圍,有其標準。但這套標準,許多地方,缺乏遠見,我個人預卜,浮點數操作指令這一部份,將來都還很需要大肆修改。當年, 32 位元系統普及的年代,有不少人堅信,浮點運算非靠硬體數學計算處理器不可,那邊有一組特設的浮點數堆疊,於是,相關指令規格,就全訂定成 1994 年 ANS Forth 標準的格式了。有遠見的看法,則是:硬體數學計算處理器並非永久一成不變的死東西,它也會演進,訂死的標準,有可能很快就會跟不上時代的要求。更有甚者, Forth 的軟體發展,速度通常遠快於難造的硬體,現在,還未見到 128 位元的硬體數學計算處理器普及起來, Forth 系統已經能在 64 位元的電腦上完成模擬發展了。請問?這些浮點數指令的規格,該如何訂定?才會比較適當,這是另種雞生蛋或蛋生雞的問題。

最近,我一直在進行自己建造浮點數標準指令的系統性設計工作,已接近完成的階段,基本指令均已建成。我以參考 32 位元現成標準優良系統,同等運算結果的方式,來進行設計,設計完成的系統,性能就不會太離譜,進行系統測試時,經常開啟七、八個視窗來進行操作比對,看各個源程式,也看各個執行視窗。

這雖不是一件輕鬆的工作,但建出標準指令並不太難,最難的部份,是如何讓系統運算後的結果,保有18位數最高的精確度。要想將系統設計得又好又實用,需要厚實的數學理論基礎,憑良心講,我自己在此方面的素養不足,許多地方,僅能憑自己的有限認知來完成設計。換句話說,真要妥善的完成這一套設計,還有艱難的長遠路途要走。這些發展過程,又是另一個層次的雞生蛋或蛋生雞的問題。

憑空介紹系統發展經驗,沒做過的人很難體會,我舉實例說明。

首先,請大家不要認為,有了硬體的數學計算處理器,只須查出呼叫碼,直接叫來使用,數學計算就一切 OK 了。錯!使用該硬體時,更需要具有厚實的數學理論基礎!不信,您請自行追蹤單一個、最簡單、保證計算結果絕對收斂的自然對數函數 FLN ,看看健全系統內,這個指令是如何完成設計的?您就可以明白,我所言不假。

我只要求您了解單一個函數指令,其中就已經如此複雜了,我面對的是全套的基本函數,您說,我需要多少厚實的數學基礎?才能把這件事情做得比較完美。

一般而言,取得以自然對數為底的 Ln(x) 函數之值,硬體數學計算處理器內,用的是以 2 為底的對數函數(以 Lb(x) 表示),所計算出來的結果。
它就是以下列恆等式計算出來的:

Ln(x) = ( 1 / Lb ( e ) ) * Lb(x)

其中, x 是輸入數字, e 就是自然對數常數,可以定義如下:

2.718281828459045226 E 0 FCONSTANT e

直接以 Win32Forth 系統,憑硬體計算出結果,會獲得略微不同的值,如下:

1E0 fEXP F. 2.71828182845904512

我自認為自己設計的程式很可靠,因此,只採用自己的程式算出之值,以後驗證過誰的較準後?很容易就在此處,完成直接修正。另外,我設計的系統,對輸入之任何浮點數字,完全都不棄用,世間所有其他的浮點數系統,則都有棄用輸入數字的可能,兩相比較,主要的差異,就是顯現在最後幾位數有所不同上。所以,我更沒有必要,採用別人計算出來的結果。

我已經把對應的式子寫出來了,寫個呼叫程式碼的指令,完成程式設計,豈不是很簡單?例如,就直接以高階定義方式,設計叫用算出 Lb(e) 的指令,然後,略施一點小技巧,這種指令,就可以直接插入 Forth 組合語言式的程式中使用,指令的格式,實際上就簡單到形如下列程式:

: Lb(e) $9B C, $D9 C, $EA C, ;

那麼,查清現行需用三個指令的所有叫用碼,不就得了?又錯了!事情沒這麼簡單,還有例外問題必須考慮,硬體數學計算處理器,並不主動幫您處理。例如: 1 的任何對數函數值都是 0 ,硬體對很接近 1 的數字,求解其值時,結果可能不太準。還有,負數的對數函數值是沒有意義的計算,硬體也不主動幫您處理。

好了,已經講了一大堆,還沒講進我自己所設計出來之系統的重點呢!那就是:以 2 為底的對數函數,根本不容易全只使用四則運算的純軟體來實現。不信,您請自己上網仔細的查、仔細的搜索,找不到可用程式,有,也是假的。甚至於有台灣秀才大學的名教授,網貼最新大型鴉片式軟體的範例程式來唬弄大眾,因為他用普通對數函數來遞迴演算 Lb(x ) 之值。

這豈不是陷入了『循環論證』的嚴重誤謬了!

我只能猜測這位名校的名教授,大概沒搞清楚鴉片式軟體提供給他的對數函數執行內容,歸根結底,就是用 Lb(x) 算出來的,幹嘛還用一般對數函數來倒算回去?有本事,應該是全只使用純整數系統中精準的四則運算與理論數學式子,配合上最精確位數的處理程式,算出 Lb(x) 之值,才會是真正的結果,這樣的程式,鴉片式軟體的程式也不好寫。如果還不明就裡的用那種程式來演算,學生可以不必學這種錯誤示範,就直接使用下式來算出 Lb(x) 之值,保證比鴉片式軟體長串遞迴演算後的結果還要準,因為只須除算一次就可得到結果,沒有多次運算後的累積誤差:

Lb ( x ) = Ln ( x ) / Ln ( 2 )

上述這種病態學術,是我們的社會,長期依賴鴉片式軟體所造成的結果,老師也早已不知道電腦中的數學函數值,根本上是如何產生的技術問題,中毒夠深了。

歐美科技的厚實基礎,能夠生產出足夠精確的硬體數學計算處理器,『我』或『我們』設計不出來。但是,我個人仍然具有充分的能力,憑學理設計出精確度有 18 位數的數學函數產生程式,而且實際上辦到了,執行百萬次計算,與硬體執行速度比較,雖慢,還不離譜,換句話說,很實用。設計的進展方式,就是改善雞,也改善蛋,不停的讓雞生蛋,再用蛋生雞,最後的雞與蛋就比較完善了。

我沒有設計 Lb(x) 函數,硬體數學計算處理器中產生出 Lb(x) 函數值的方式,是純用硬體完成的,不是純軟體的計算,這一點必須特別聲明,表示我個人的知識與技術也並不高明,我只設計了 Ln(x) 的產生函數,但用的是數學理論恆等式,程式的主要工作,在控制出 18 位數的有效精確度,與盡量減少計算次數,最後仍然達到了目的,計算結果能與現成健全系統直接比對,毫不含糊。

談到此處,並不表示我所設計的系統,已經解決了數學計算上所有的相關問題。參考國際上發表過的技術文獻,來設計這種系統時,都只能解決很根本的基本函數問題而已。我未查證,但可以了解,提供硬體數學計算處理器的廠商,一定也提供了叫用各種基本函數時的基本範例程式,後來的使用者,才有可能跟用而設計出全套的浮點數系統,使用者不可能憑空猜測,設計出相應的基本函數。

在我們現今推廣時所使用的 Win32Forth 系統中,第一個捐贈出浮點系統程式的先賢是施羅伯(Robert Smith)先生,就算後來他自己告訴大家,程式粗稿中有許多問題尚未處理,我們還是很愉快的使用了他的貢獻,度過了一段不算短的日子。那些許多尚未處理的問題,也就是後來其它新版本內所添加修改的內容。基本上,後來出現之新系統的主要結構,並未對原始系統進行大幅度的修改,修改者都僅只是抄用市售系統中的源程式,來修改某幾個指令而已,表示施羅伯先生才是值得尊敬的貢獻者。

有了精確基本函數產生的功能後,還有許多人工調整計算結果的程式必須設計,這一部份的程式,是系統中隱藏性的執行指令,一般使用者不會用到,可是不能沒有。例如:您很方便的可以使用 F** 指令得到( x^y )之值時,僅憑基本數學函數理論上的換算,得不到精確的輸出結果,設計這個漂亮的 F** 指令時,就要依靠那些隱藏性的逼近取值特殊指令。很不幸,文獻上找不到這些隱藏性指令設計的原理,只能找到一些粗略的文字說明,想自己設計,那就又會回到雞生蛋或蛋生雞的問題探討上去了。

我以我所設計出來的真實系統,執行出來的實際結果,顯示一些現象如下:

列示的目的,是要讓大家明白,那些隱藏性指令存在的必要性,這是後續需要發展的程式改良設計,必須要做。例如:要求系統為我計算 2 的 6 次方,絕對正確答案應該是整數的 64 。但是,限定只能使用浮點數指令 F** ,而不得使用純整數直接計算時,得到了下列結果:

2 E 0 6 E 0 F** F.
63.99999999999999800 OK

換句話說,您不能僅憑下列數學理論推導來設計 F** 指令。

若 y = x ^ z
兩邊取對數Ln( y ) = Ln ( x ^ z )
則 Ln ( y ) = z * Ln ( x )
亦即 y = exp ( z * Ln ( x ) )

於是,就將 Forth 程式設計成:

\ y = x^z = exp(z*Ln(x))
: F** ( manx expx manz expz -- many expy )
FSWAP FLN F* FEXP ;

計算結果就如上述,顯示得很不漂亮,需要改進,改進甚麼?就是改進雞生蛋,蛋再生雞的問題。

為了忠實的定時貼出這篇網文,我暫時終止了這兩天的系統研究發展工作。大家難以想像,我目前的進展是:還在忙著設計有效位數到小數點後面 18 位數的開平方浮點數指令。這是一個我小學四年級時,就已經很能手算出來的問題,我沒需要用它來設計出延伸性函數時,不知道它的程式也有點不好設計,總覺得手頭上現成的程式應該夠用了,用了才知道不夠用,而且有點麻煩。

基本上, 18 位數的開平方純整數計算,只能得到 9 位數的精確計算結果,想得到 18 位數的精確值,就非得使用雙整數來處理不可。前幾天才發現,這下麻煩了,雙整數的操作指令,系統內嚴重缺乏了許多個,沒有它們, 128 位元的程式就很難比照 64 位元的程式來設計,看來我還有不少工作得做,而且可能終身都得追著這些數學問題,進行雞生蛋與蛋生雞的改進,才會有完善的結果。歐美先進科技的厚實基礎,不是一夜之間建成的,我不努力,技術就難以與他們比肩齊步。

我在追蹤技術資料時,見到來過台灣,參加過我們舉辦的 Forth 世界年會的貝威爾(Wil Baden)先生,在設計過許多種開平方的程式,並實際執行比較之後,留下過這麼一句話:

Always use FSQRT !

意思是設計開平方指令時,絕對要記得,只用浮點數指令 FSQRT 先求得平方根之值,再靠 F>S 指令來獲得近似答案,速度最快。分析數據顯示,有時,數字很大時,與純用整數計算設計指令之程式比較,執行速度會差了十倍以上。但是,只用浮點數指令來算,有著下列的同樣困擾, 25 開平方應該是絕對值 5 ,算得的結果則很不漂亮,需要改進。

25 E 0 0.5 E 0 F** F.
4.999999999999999739 OK

這些非常基本的數學計算問題,仔細研究,都蘊含了豐富的技術意義,如果只當它們好玩,就隨便寫個小程式試一試,體會一下在 64 位元飛速執行的系統中,竟然還是有可令其牛步得到結果的程式,可以玩一玩。例如:下列這個能算 128 位元的開平方程式,一旦要求計算的數字大於 5000 以上時,您就有得等的了,不信您自己試一試,它會要算那麼久的原因,就是下列程式第二列中,每次只加上雙整數 1 來演算,如果要算到 10 的 36 次方個次數時,您看能夠飛速執行的 64 位元系統,它得跑多久才會有結果?

: DSQRT ( d – n )
0 0 1 0
BEGIN 2ROT 2OVER D- 2DUP 0 0 D< NOT
WHILE 2ROT 1 0 D+ 2ROT 2 0 D+
REPEAT 2DROP 2DROP DROP ;

\ test: 500 DUP UM* DSQRT . get 500

這個範例,算得上是發展過程中出現的『雞+鴨』問題,我也確實能保證它不能傳宗接代,臨時活著,當作玩具,則還可以。這些資料,都是古聖先賢留下來的經驗成果,我記在筆記之內。以前 16 位元的系統,反正算的也不多,慢就不會慢得太久。 64 位元的系統,不是這樣,您要它照做,它也跑不死,它能跟您耗,您想耗多久都可以。所以,程式也能拿來試一試,看看 CPU 會不會因此而容易燒掉,電子工程技術界,稱之為零件的崩應(Burn in)處理,用來去除可能會夭壽的不良電子產品,現在,這個 Forth 搞出來的『雞+鴨』 DSQRT 指令,能給工程人員幫這一點忙。

我所採用的開平方算法,改採位元移位的方式來演算,無論數字有多大,程式內最多移位 63 次,就能得到 128 位元數字的開平方值,速度非常快,但在未完成 128 位元數字開平方的程式設計前,不宜遽下論斷,說程式有多好。

這一段時日的研究,讓我體會出前人願意貢獻出全套浮點數源程式系統的可貴,別種程式語言的使用者,可能根本找不到這種資料來參考,他們的雞是不能隨便演進的,我們純搞 Forth 的人,卻有著這麼豐富的資源,雞的演進隨君任意安排,大家實在應該珍惜此一特性。

我一次收集了十幾套源程式,套套不同,連我自己設計出來的這一套系統,也與前人設計者完全不同,這是 Forth 程式語言容許多樣性軟體,能夠同時存在的另種特殊現象。最後,大家都會把浮點系統所有的基本指令,設計成共同指定的規格,也是一種奇蹟。所依靠的根據,竟然就只是數學計算領域,人人恨之入骨的堆疊操作規格,所有各種不同設計的任意銜接,竟然就因此而沒有任何問題了,『是堆疊統一了 Forth 』。此前,沒有人講過這句話,我思考是雞生蛋或是蛋生雞的問題後,才講得出這麼一句深具哲理的話來。

系統走進 64 位元時代之後,電腦性能能夠發揮的最大效果,應該就是數學計算,它能令計算結果又快又準,能協助我們進行過去簡直不可能實現的數學計算學術性研究,但您得搞FORTH,才會直接碰觸並體會出這些效果。如果大家只想迷失在鴉片式軟體的使用中,享受迷幻之樂,這些研究也就不用做了。

我所完成的這套設計,可能也會成為廢物,目前僅供自己觀賞使用。接下來,我將依此浮點系統,實現我的 ABC Forth 系統設計,就算完成之後,它將來也不會成為大家想用的對象,因為全套性能,可能不如名家的設計。我還堅持繼續這樣做下去的唯一理由,則是:我想證明,我一個人,能夠獨自建立,僅從電腦純粹的硬體,設計出整套 ABC Forth 系統的能力。

完成浮點系統後,實際上距離最後目標,已經不太遠了,我已有把握實現。通常,我不鼓勵新手造系統,並不表示我自己根本不造系統,我更是一個單憑 Forth 來造 Forth 系統的長期使用者,別人沉迷在以 1+1+1+1+1+ ..... 來造 Forth 系統時,我採用減法哲學,設計 Forth 系統,也因此,才能屢試不爽。

真正的 Forth 使用者,以 Forth 自身蛻變編譯(Meta-compile)出新系統的本領不能不知,否則,我那能設計出固定的 Forth 系統,提供大家使用?這項技術,不是初學 Forth 者,必須接觸的課題,所以,我也就不太談論。在這套技術裡面,才有真正的雞生蛋與蛋生雞的演進技巧可資研究。

長期使用蛻變編譯功能之後,我能明確地為雞與蛋的問題,表示個人看法:先沒有雞也先沒有蛋,現在的雞與現在的蛋,都是與時俱進演變之後所形成的結果,它還要演進。將來的 Forth 系統,也不會只是擁有現行的這些功能而已。新雞會生新蛋, Forth 雞生出 Forth 蛋的能力,以及 Forth 新蛋生出 Forth 新雞的能力, 30 幾年來,也從未被間斷過。不提供蛻變編譯功能的粗糙 Forth 系統,因此而可被稱為沒有繁殖能力之『閹雞式』的系統,通常,我不太喜歡使用。

明年新推出的 Forth 系統,就可能跟現行系統不太一樣了,您信不信?因為 Forth 能夠快速自我發展的性能,絕非其他傳統程式語言的性能所可比擬。


※編後記2012/6/4

憑藉著自己的恆心與毅力,我徹底完成了浮點數系統的全套設計。最後一個浮點數開平方指令,對任何正浮點數,都能開出18位數精確結果的程式,已經完成了。因此,其他所有的函數,都能藉助於現已設計完成的基本函數而導得,清查標準 Forth 系統內的浮點數指令後,顯示已無欠缺。這是我的執行結果:

25 E 100000 FSQRT FS.
5.0 X10^ 50000 OK
25 E 100001 FSQRT FS.
1.58113883008418966 X10^ 50001 OK

下列則是 Win32Forth 的執行結果:

20 SIGDIGITS ! ok
25E100 FSQRT FS. 5.0000000000000006400E50 ok
25E101 FSQRT FS. 1.5811388300841897600E51 ok

我的全套設計夠令人滿意的了,我完全沒有叫用硬體的數學計算處理器幫忙做任何事情,直接憑學術理論完成一切設計。結果並非十全十美,但無可苛求。

捐獻過最多數學計算功能程式的諾裘利(Julian V. Noble)先生,說過這麼一句話:

There is no beef in a free lunch.

意思是:蓽路藍縷,以啟山林的先行者,在他們首先開發出來的營養午餐中,沒有燕窩、魚翅或熊掌。我的這些設計,將來都必成為大家免費的營養午餐,全民吃了只會強身強國,保證不會得腦溢血或心臟病。

文中提到缺乏逼近取值的指令設計依據。這個問題,也在散步時,與我太太聊天談出了結果,找不到標準根據就自己訂定,方法也很簡單,我長期觀察了我的系統與標準系統輸出結果上的差異, 18 位數中最多只有最後 3 位數不同而已,例如:新設計出來的浮點數開平方結果,合情合理的只有最後兩位數不同。那麼,我就可以自行訂定逼近取值的標準為:某值的上下兩個整數與此值相減,差值小於 1 X10^-15 時,表示誤差只是最後三位數,因此,可以令該值直接等於該整數。如此一來,我所設計之系統,計算結果就能完全與硬體數學計算處理器相同。

我們中國人想擺脫西方國家科技發展上的束縛,是絕對能夠辦得到的事情,一切都只端賴於我們自己願不願意勇敢的去做。那些資本主義國家賣進台灣的鴉片式數學計算軟體,裡面沒有我們中國人自己設計不出來的東西,我在長篇大論的許多網文中,都已披露過各種基本性能,能夠完成他們的那些設計。反而是我設計出來的許多性能,那些鴉片式軟體,沒有任何一個能夠跟得上的。

台灣的學術界全面吸食鴉片時,我在自立更生,我只是一名早已被國家淘汰的老兵,只耗費了一個多月的時間,就完成了 64 位元浮點數系統的設計,將來,這個系統是可以不經修改,直接的應用到 128 或 256 位元的更高階系統中,以後我還能夠長期照顧產品,進行優化改良。這樣的成果,意味了甚麼?


附註 : 20241029 重新整理後貼出。

沒有留言: