Fortran編寫的一些Netlib代碼可以在稀疏矩陣上執行轉置和乘法。該圖書館與銀行史密斯(有些),「老耶魯」和「新耶魯」格式。「新耶魯」稀疏矩陣格式的詳細信息?
不幸的是,我一直沒能找到關於「新耶魯」的更多細節。我實現了我認爲符合描述given in the paper的內容,並且我可以正確地獲取和設置條目。
但結果不正確,導致我懷疑是否已經實現了與論文中的描述相匹配的內容,但不是Fortran代碼所期望的內容。
那麼幾個問題:
應該排長度包括對角線元素?例如,如果你有M=[1,1;0,1]
,似乎它應該是這樣的:
IJA = [3,4,4,1]
A = [1,1,X,1] // where X=NULL
看來,如果包含在列長度對角線項,你會得到這樣的事情:
IJA = [3,5,6,1]
A = [1,1,X,1]
這沒有多大意義,因爲IJA[2]=6
應該是IJA/A陣列的大小,但它是紙張似乎在說什麼。
矩陣是否應該使用基於1的索引?
畢竟它是Fortran代碼。也許,而不是我的IJA和A應該是這樣的:
IJA = [4,5,5,2]
A = [1,1,X,1] // still X=NULL
還有什麼我失蹤?
是的,這是模糊的,但我認爲扔在那裏,以防有人誰已與該代碼搞砸之前想主動提供任何其他信息。任何人都可以隨意忽略這最後一個問題。
我知道這些問題可能看起來相當微不足道,但我想也許一些Fortran人可以爲我提供一些見解。我不習慣在一個基於系統的系統中思考,雖然我已經使用f2c
將代碼轉換爲C,但它仍然像Fortran一樣編寫。
有趣。你在論文中解釋說明與I完全不同。看起來最大的不同是IA位置是否應該相對於JA或相對於IJA。 昨天晚上我在圖書館做了一些更多的研究,所以我會發布我發現的一個單獨的答案,並把它變成一個Wiki,我想。 – 2012-02-09 17:23:14