# jtransforms

This is the Aussom-Lang JTransforms module. It wraps
[JTransforms 3.1](https://github.com/wendykierp/JTransforms) — a
pure-Java multi-threaded library by Piotr Wendykier — to give
Aussom programs fast numerical transforms on real and complex
data.

Four transform families are supported, each available in 1D, 2D,
and 3D variants in both double and single precision:

- **FFT** — Fast Fourier Transform (frequency analysis of signals)
- **DCT** — Discrete Cosine Transform (image and audio compression)
- **DST** — Discrete Sine Transform (signal processing)
- **DHT** — Discrete Hartley Transform (real-only alternative to FFT)

The underlying JTransforms library is BSD 2-Clause licensed and
runs on Linux, Windows, and MacOS with no native dependencies.


## Usage

Include the transform family you need at the top of your Aussom
program. The loader runs once and pulls the JAR onto the
classpath:

```
include jtransforms.fft;

// Forward FFT of a real length-8 signal
fft = new DoubleFFT_1D(8);
data = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0];
out = fft.realForward(data);

// Inverse round-trips when Scale = true
back = fft.realInverse(out, true);
```

Other domains follow the same pattern: `jtransforms.dct`,
`jtransforms.dst`, `jtransforms.dht`, `jtransforms.large_array`,
and `jtransforms.utils`.


## License 

Copyright 2026 Austin Lehman

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
