README.md in convolver-0.1.2 vs README.md in convolver-0.2.0

- old
+ new

@@ -1,21 +1,17 @@ # Convolver [![Build Status](https://travis-ci.org/neilslater/convolver.png?branch=master)](http://travis-ci.org/neilslater/convolver) -Adds a convolve operation to NArray floats. It is around 250 times faster than equivalents -in pure Ruby. +Calculates discrete convolution between two multi-dimensional arrays. +See http://en.wikipedia.org/wiki/Convolution -The gem makes convolution via FFTW3 library available. This is faster for convolutions with -larger kernels and signals. The relationship is complex, but as a rule of thumb, the kernel -needs to be around 1000 entries or larger before it is worth switching to FFTW3-based convolves. - ## Planned features -The *convolver* gem will eventually contain a basic kit for creating, training and running convolutional -neural networks. As a side effect of this plan, it will also contain efficient code for -calculating signal convolutions for other types of analysis. +The *convolver* gem will eventually contain a basic kit for creating, training and running +convolutional neural networks. As a side effect of this plan, it currently contains code for +calculating floating-point convolutions for other types of analysis. ## Installation ### Dependency: FFTW3 @@ -51,15 +47,13 @@ kernel in the same dimension. * Convolver expects input a and kernel b to have the same rank, and for the kernel to be same size or smaller in all dimensions as the input. -FFTW3 convolution: - - a = NArray[0.3,0.4,0.5] - b = NArray[1.3, -0.5] - c = Convolver.convolve_fftw3( a, b ) - => NArray.float(2): [ 0.19, 0.27 ] + * Convolver.convolve will try to choose the faster of two approaches it has coded. In general, +small convolutions are processed directly by multiplying out all combinations and summing them, +and large convolutions are processed using FFTW3 to convert to frequency space where convolution +is simpler and faster to calculate, then convert back. ## Contributing 1. Fork it 2. Create your feature branch (`git checkout -b my-new-feature`)