i've written a basic function to split an array into stride by 2

[z] -> [x],[y]

        func splitArray(Z x:[Float64])->(Real:[Float64],Imag:[Float64])
        {
          guard (x.count % 2 == 0) else {"BOMB:: something is fucked up, need even number of elements in array \(#file) \(#line) \(#function)"
          return ([0.0],[0.0])
          }
          var Real:[Float64] = zeroD(npts: Int(x.count/2) )
          var Imag:[Float64] = zeroD(npts: Int(x.count/2) )
          var ida:Int = 0, idb:Int = 0
      for elem in stride(from:0, to: x.count-1, by:2)
      {
          Real[ida] = x[elem]
          ida += 1
      }
      for elem in stride(from:1, to:x.count, by:2)
      {
        Imag[idb] = x[elem]
        idb += 1
      }
          return (Real,Imag)
    }

anyone have a faster map?  sometimes map is not that fast, it just hides the loop.