Я хотел умножить две матрицы в Swift. Я нашел отличный ответ в этой теме: умножение матриц в быстром использовании Accelerate framework 32 бит против 64 бит, в котором мне сказали использовать cblas_dgemm для умножения двух матриц. Вот мой код:
import SpriteKit
import Accelerate
class GetMatrix {
var cols:Int, rows:Int
var matrix:[Double]
init(cols:Int, rows:Int) {
self.cols = cols
self.rows = rows
matrix = Array(count:cols*rows, repeatedValue:0.0)
}
subscript(col:Int, row:Int) -> Double {
get {
return matrix[cols * row + col]
}
set {
matrix[cols*row+col] = newValue
}
}
func colCount() -> Int {
return self.cols
}
func rowCount() -> Int {
return self.rows
}
}
class GameScene: SKScene {
var firstMatrix = GetMatrix(cols: 18, rows: 18)
var secondMatrix = GetMatrix(cols: 18, rows: 18)
var answerMatrix = GetMatrix(cols: 18, rows: 18)
override func didMoveToView(view: SKView) {
for c in 0...17 {
for r in 0...17 {
firstMatrix[r,c] = 2.0
}
}
for c in 0...17 {
for r in 0...17 {
secondMatrix[r,c] = 1.0
}
}
for c in 0...17 {
for r in 0...17 {
answerMatrix[r,c] = 0.0
}
}
cblas_dgemm(CblasRowMajor, CblasNoTrans, CblasNoTrans, 18, 18, 18, 1.0, firstMatrix, 18, secondMatrix, 18, 0.0, answerMatrix, 18) // Error in this line
}
}
Код не строится. В строке с cblas_dgemm есть проблема. Пишет, что «GetMatrix» нельзя преобразовать в «UnsafePointer». Пожалуйста, помогите, как мне решить эту проблему?