// // Conversions.swift // Plinth // // Created by Daniel Clelland on 30/04/22. // import Foundation import Accelerate extension Matrix where Scalar == Float { public init(_ matrix: Matrix) { self = matrix.fmap(vDSP.convertElements) } public init(_ matrix: Matrix) { self = matrix.fmap(vDSP.convertElements) } public init(_ matrix: Matrix) { self = matrix.fmap(vDSP.convertElements) } public init(_ matrix: Matrix) { self = matrix.fmap(vDSP.convertElements) } public init(_ matrix: Matrix) { self = matrix.fmap(vDSP.convertElements) } public init(_ matrix: Matrix) { self = matrix.fmap(vDSP.convertElements) } } extension Matrix where Scalar: vDSP_IntegerConvertable { public init(_ matrix: Matrix, rounding: vDSP.RoundingMode) { self = matrix.fmap { vDSP.floatingPointToInteger($0, integerType: Scalar.self, rounding: rounding) } } } extension Matrix where Scalar == Float { public init(_ matrix: Matrix) { self = matrix.fmap(vDSP.doubleToFloat) } } extension Matrix where Scalar == Double { public init(_ matrix: Matrix) { self = matrix.fmap(vDSP.convertElements) } public init(_ matrix: Matrix) { self = matrix.fmap(vDSP.convertElements) } public init(_ matrix: Matrix) { self = matrix.fmap(vDSP.convertElements) } public init(_ matrix: Matrix) { self = matrix.fmap(vDSP.convertElements) } public init(_ matrix: Matrix) { self = matrix.fmap(vDSP.convertElements) } public init(_ matrix: Matrix) { self = matrix.fmap(vDSP.convertElements) } } extension Matrix where Scalar: vDSP_IntegerConvertable { public init(_ matrix: Matrix, rounding: vDSP.RoundingMode) { self = matrix.fmap { vDSP.floatingPointToInteger($0, integerType: Scalar.self, rounding: rounding) } } } extension Matrix where Scalar == Double { public init(_ matrix: Matrix) { self = matrix.fmap(vDSP.floatToDouble) } }