と @ t a k e t o 1 0 2 4 &JHFO &JHFOJTBIJHIMFWFM$ MJCSBSZPGUFNQMBUFIFBEFSTGPS MJOFBSBMHFCSB NBUSJYBOEWFDUPSPQFSBUJPOT 'BTU -JHIUXFJHIU &YUFOTJCMF 8FXBOUBXSBQQFSMJCSBSZGPS4XJGU
と @ t a k e t o 1 0 2 4 6TJOH&JHFOGSPN4XJGU ↟3FRVJSFNFOU4DBMBSUZQFTNVTUCFHFOFSJD let a = EigenIntMatrix( ... ) let b = EigenDoubleMatrix( ... ) let c = EigenRationalMatrix( ... ) 🙅 let a = EigenMatrix<Int>( ... ) let b = EigenMatrix<Double>( ... ) let c = EigenMatrix<Rational>( ... ) 🙆
と @ t a k e t o 1 0 2 4 )PX 4XJGU $ $ EigenMatrix<Int> EigenMatrix<Double> Eigen::Matrix<int64_t> Eigen::Matrix<double> EigenMatrix<Rational> Eigen::Matrix<rat64>
と @ t a k e t o 1 0 2 4 4XJGU typealias EigenMatrixPointer = UnsafeMutableRawPointer typealias EigenMatrixOperation = (EigenMatrixPointer, EigenMatrixPointer, EigenMatrixPointer) -> Void protocol EigenCompatibleScalar: Scalar { static var eigen_init: (Int, Int) -> EigenMatrixPointer { get } static var eigen_add: EigenMatrixOperation { get } static var eigen_minus: EigenMatrixOperation { get } static var eigen_mul: EigenMatrixOperation { get } … } 4XJGU
と @ t a k e t o 1 0 2 4 *UXPSLT let a: EigenMatrix2x2<Int> = [1, 2, 3, 4] let b: EigenMatrix2x2<Int> = [5, 6, 7, 8] print(a + b) 4XJGU [6, 8; 10, 12] DPOTPMF IUUQTHJUIVCDPNUBLFUPTXNFJHFO