Skip to content

Commit 8fc067d

Browse files
committed
Add some tentative fixes related to the usage of NSString and other functions
1 parent bab1f10 commit 8fc067d

1 file changed

Lines changed: 14 additions & 12 deletions

File tree

Sources/Matft/library/lapack.swift

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -139,9 +139,11 @@ internal func wrap_lapack_inv<T: MfStorable>(_ rowcolnum: Int, _ srcdstptr: Unsa
139139
/// - Throws: An error of type `MfError.LinAlgError.singularMatrix`
140140
@inline(__always)
141141
internal func wrap_lapack_eigen<T: MfStorable>(_ rowcolnum: Int, _ srcptr: UnsafeMutablePointer<T>, _ dstLVecRePtr: UnsafeMutablePointer<T>, _ dstLVecImPtr: UnsafeMutablePointer<T>, _ dstRVecRePtr: UnsafeMutablePointer<T>, _ dstRVecImPtr: UnsafeMutablePointer<T>, _ dstValRePtr: UnsafeMutablePointer<T>, _ dstValImPtr: UnsafeMutablePointer<T>, lapack_func: lapack_eigen_func<T>) throws {
142-
let JOBVL = UnsafeMutablePointer(mutating: ("V" as NSString).utf8String)!
143-
let JOBVR = UnsafeMutablePointer(mutating: ("V" as NSString).utf8String)!
144-
142+
var jobvlStr = Array("V".utf8CString)
143+
var jobvrStr = Array("V".utf8CString)
144+
let JOBVL = UnsafeMutablePointer<CChar>(&jobvlStr)
145+
let JOBVR = UnsafeMutablePointer<CChar>(&jobvrStr)
146+
145147
var N = __CLPK_integer(rowcolnum)
146148

147149
var LDA = __CLPK_integer(rowcolnum)
@@ -322,8 +324,9 @@ internal func wrap_lapack_eigen<T: MfStorable>(_ rowcolnum: Int, _ srcptr: Unsaf
322324
/// - Throws: An error of type `MfError.LinAlgError.singularMatrix`
323325
@inline(__always)
324326
internal func wrap_lapack_svd<T: MfStorable>(_ rownum: Int, _ colnum: Int, _ srcptr: UnsafeMutablePointer<T>, _ vptr: UnsafeMutablePointer<T>, _ sptr: UnsafeMutablePointer<T>, _ rtptr: UnsafeMutablePointer<T>, _ full_matrices: Bool, lapack_func: lapack_svd_func<T>) throws{
325-
let JOBZ: UnsafeMutablePointer<Int8>
326-
327+
var jobzStr = full_matrices ? Array("A".utf8CString) : Array("S".utf8CString)
328+
let JOBZ = UnsafeMutablePointer<CChar>(&jobzStr)
329+
327330
var M = __CLPK_integer(rownum)
328331
var N = __CLPK_integer(colnum)
329332

@@ -342,14 +345,12 @@ internal func wrap_lapack_svd<T: MfStorable>(_ rownum: Int, _ colnum: Int, _ src
342345

343346

344347
if full_matrices{
345-
JOBZ = UnsafeMutablePointer(mutating: ("A" as NSString).utf8String)!
346348
LDVT = __CLPK_integer(colnum)
347349

348350
ucol = rownum
349351
vtrow = colnum
350352
}
351353
else{
352-
JOBZ = UnsafeMutablePointer(mutating: ("S" as NSString).utf8String)!
353354
LDVT = __CLPK_integer(snum)
354355

355356
ucol = snum
@@ -872,8 +873,10 @@ internal func wrap_lapack_inv<T: MfStorable>(_ rowcolnum: Int, _ srcdstptr: Unsa
872873

873874
@inline(__always)
874875
internal func wrap_lapack_eigen<T: MfStorable>(_ rowcolnum: Int, _ srcptr: UnsafeMutablePointer<T>, _ dstLVecRePtr: UnsafeMutablePointer<T>, _ dstLVecImPtr: UnsafeMutablePointer<T>, _ dstRVecRePtr: UnsafeMutablePointer<T>, _ dstRVecImPtr: UnsafeMutablePointer<T>, _ dstValRePtr: UnsafeMutablePointer<T>, _ dstValImPtr: UnsafeMutablePointer<T>, lapack_func: lapack_eigen_func<T>) throws {
875-
let JOBVL = UnsafeMutablePointer(mutating: ("V" as NSString).utf8String)!
876-
let JOBVR = UnsafeMutablePointer(mutating: ("V" as NSString).utf8String)!
876+
var jobvlStr = Array("V".utf8CString)
877+
var jobvrStr = Array("V".utf8CString)
878+
let JOBVL = UnsafeMutablePointer<CChar>(&jobvlStr)
879+
let JOBVR = UnsafeMutablePointer<CChar>(&jobvrStr)
877880

878881
var N = __CLPK_integer(rowcolnum)
879882
var LDA = __CLPK_integer(rowcolnum)
@@ -951,7 +954,8 @@ internal func wrap_lapack_eigen<T: MfStorable>(_ rowcolnum: Int, _ srcptr: Unsaf
951954

952955
@inline(__always)
953956
internal func wrap_lapack_svd<T: MfStorable>(_ rownum: Int, _ colnum: Int, _ srcptr: UnsafeMutablePointer<T>, _ vptr: UnsafeMutablePointer<T>, _ sptr: UnsafeMutablePointer<T>, _ rtptr: UnsafeMutablePointer<T>, _ full_matrices: Bool, lapack_func: lapack_svd_func<T>) throws {
954-
let JOBZ: UnsafeMutablePointer<Int8>
957+
var jobzStr = full_matrices ? Array("A".utf8CString) : Array("S".utf8CString)
958+
let JOBZ = UnsafeMutablePointer<CChar>(&jobzStr)
955959
var M = __CLPK_integer(rownum)
956960
var N = __CLPK_integer(colnum)
957961
let ucol: Int, vtrow: Int
@@ -964,13 +968,11 @@ internal func wrap_lapack_svd<T: MfStorable>(_ rownum: Int, _ colnum: Int, _ src
964968
var LDVT: __CLPK_integer
965969

966970
if full_matrices {
967-
JOBZ = UnsafeMutablePointer(mutating: ("A" as NSString).utf8String)!
968971
LDVT = __CLPK_integer(colnum)
969972
ucol = rownum
970973
vtrow = colnum
971974
}
972975
else {
973-
JOBZ = UnsafeMutablePointer(mutating: ("S" as NSString).utf8String)!
974976
LDVT = __CLPK_integer(snum)
975977
ucol = snum
976978
vtrow = snum

0 commit comments

Comments
 (0)