HanchaiN ca3229fd7e
Feature: Implementation of fourier transform (#2540)
* Fix #46

Draft Implementations

* Add docs

* Fixup

* Add type declaration and test

* Fixup tests

* Fixup test

* Format

* Add examples in docs

* Update fft.js

Edit example in docs (`math.fft` returns complex matrix).

* Update ifft.js

Edit example in docs (`math.ffti` returns complex matrix).

* Update fft.js

Edit docs examples, representation of complex number from `a+bi` to `{re:a, im:b}`

* Update ifft.js

Edit docs examples, representation of complex number from `a+bi` to `{re:a, im:b}`

* Update index.ts

Edit test.
Add test for `math.ifft`
`math.fft` returns complex matrix.

* Update index.ts

Use `approx.deepEqual` instead off `assert.deepStrictEqual`.

* Update index.ts

Format code

* Update index.ts

Use `assert.ok(math.deepEqual(...))` instead of `approx.deepEqual`.

* Update index.ts

Format

* Update index.ts

Typo: replace `approx` with `assert`.

Co-authored-by: Jos de Jong <wjosdejong@gmail.com>
2022-05-24 09:35:10 +02:00

21 lines
711 B
JavaScript

// test ifft
import approx from '../../../../tools/approx.js'
import math from '../../../../src/defaultInstance.js'
const ifft = math.ifft
describe('ifft', function () {
it('should calculate 1-dimensional inverse fourier transformation', function () {
approx.deepEqual(ifft([2, math.complex(-2, -2), math.complex(0, -2), math.complex(4, 4)]), [1, math.complex(2, -1), math.complex(0, -1), math.complex(-1, 2)])
})
it('should calculate multidimensional inverse fourier transformation', function () {
const in1 = [
[1, 0],
[1, 0]
]
approx.deepEqual(math.fft(ifft(in1.valueOf())), in1.valueOf())
approx.deepEqual(math.fft(ifft(math.matrix(in1))), math.matrix(in1))
})
})