Fourier Transform

The Fourier transform (FT) decomposes a function of time (a signal) into its constituent frequencies. This is similar to the way a musical chord can be expressed in terms of the volumes and frequencies of its constituent notes. The term Fourier transform refers to both the frequency domain representation and the mathematical operation that associates the frequency domain representation to a function of time. The Fourier transform of a function of time is itself a complex-valued function of frequency, whose magnitude (modulus) represents the amount of that frequency present in the original function, and whose argument is the phase offset of the basic sinusoid in that frequency. The Fourier transform is not limited to functions of time, but the domain of the original function is commonly referred to as the time domain. There is also an inverse Fourier transform that mathematically synthesizes the original function from its frequency domain representation.

{:deps
 {org.clojure/clojure {:mvn/version "1.10.0"}
  org.clojure/tools.deps.alpha
  {:git/url "https://github.com/clojure/tools.deps.alpha.git"
   :sha "f6c080bd0049211021ea59e516d1785b08302515"}
  compliment {:mvn/version "0.3.9"}}}
deps.edn
Extensible Data Notation

You can add dependencies by modifying the deps.edn above (requires a runtime restart)...

(use 'clojure.tools.deps.alpha.repl)
(clojure-version)
2.7s
Clojure
"1.10.0"

...or at runtime using add-lib:

(add-lib 'org.clojure/core.async {:mvn/version "0.4.490"})
6.6s
Clojure
true
(require '[clojure.core.async :as async])
(async/timeout 100)
11.4s
Clojure
Vector(4) [clojure.core.async.impl.channels.ManyToManyChannel, "0x7a4c3e42", "clojure.core.async.impl.channels.ManyToManyChannel@7a4c3e42", Map]
Runtimes (1)