This project is just a simple practice on Swift and Accelerate framework. The swift files contain some basic function used in numeric computation. The main functionality is build upon Accelearate framework which leaverages SIMD of the CPU, which make the codes run faster than native Swift code.
I am a big fan of python. In this project, you can find many of the functions mimic the API from numpy which is a popular package for scientific computation.
I hope you enjoy this package. Cheers.
Dependency
AccelerateframeworkFoundationframework
Testing
First, change working directory to NumSwift.
Setup Testing Environment
We use numpy (python package for numeric computation) as reference. Please setup the python environment by following steps:
- Instll
pythonandvirtualenv.- See this guide for detail of
virtualenv
- See this guide for detail of
- Activate a testing virtual environment.
virtualenv venv_test source venv_test/bin/activate - Install required python packages
- run
pip install -r requirements.txt
- run
You are ready to go!
Running Tests for Swift
- Run
make test-osxon Mac OSX.
Build
Importable Module
- change working directory to
NumSwift - Run
make module - You will see a directory named
NumSwiftModule- There are three files in that directory:
NumSwift.swiftmodule,NumSwift.swiftdocandlibNumSwift.dylib
- There are three files in that directory:
- Include files generated in
NumSwiftModulein you Xcode Project.- If you hate Xcode just like me, you can use
swiftcinstead with flags-Iand-L - ex: Suppose you have a
main.swiftand importNumSwiftin it, you can runxcrun -sdk macosx swiftc -I /path/to/NumSwiftModule -L /path/to/NumSwiftModule -lNumSwift -o main.
- If you hate Xcode just like me, you can use
Importable Framework
- Open
NumSwift.xcodeprojunderNumSwift/NumSwift/directory. - Press
Build. - You should be able to see
NumSwift.frameworkunderNumSwift/NumSwift/. Drag the framework file to any project you'd like to use it. - You should be able to import
NumSwiftin your project.
References
Accelerate Framework
Fourier Transform
- DFT v.s FFT
- vDSP Guide - DFT
- That is why we use
vDSP_DFT_XXXrather thanvDSP_fft_XXX. - The header file which states you should prefer
DFToverfftis located in/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/Kernel.framework/Versions/Current/Headers/vecLibon my computer. Go see it for yourself.
- That is why we use
Matrix
Licence
MIT