Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/chrissimpkins/vectora

A Rust library for n-dimensional vector computation with real and complex scalar data
https://github.com/chrissimpkins/vectora

2d 3d complex-number data data-analysis floating-point integer math mathematics real-number rust rust-crate rust-lang rust-library scalar vector vector-computations vector-math

Last synced: 2 months ago
JSON representation

A Rust library for n-dimensional vector computation with real and complex scalar data

Awesome Lists containing this project

README

        

## A Rust library for vector computation

[![Crates.io](https://img.shields.io/crates/v/vectora)](https://crates.io/crates/vectora)
[![docs.rs](https://img.shields.io/docsrs/vectora)](https://docs.rs/vectora)
[![GitHub](https://img.shields.io/github/license/chrissimpkins/vectora)](LICENSE)

## Test Status

[![stable toolchain unit tests](https://github.com/chrissimpkins/vectora/actions/workflows/stable-unittests.yml/badge.svg)](https://github.com/chrissimpkins/vectora/actions/workflows/stable-unittests.yml)
[![beta toolchain unit tests](https://github.com/chrissimpkins/vectora/actions/workflows/beta-unittests.yml/badge.svg)](https://github.com/chrissimpkins/vectora/actions/workflows/beta-unittests.yml)
[![clippy lints](https://github.com/chrissimpkins/vectora/actions/workflows/lints.yml/badge.svg)](https://github.com/chrissimpkins/vectora/actions/workflows/lints.yml)
[![rustfmt check](https://github.com/chrissimpkins/vectora/actions/workflows/fmt.yml/badge.svg)](https://github.com/chrissimpkins/vectora/actions/workflows/fmt.yml)

## About

Vectora is a library for n-dimensional vector computation with real and complex scalar types. The main library entry point is the [`Vector`](https://docs.rs/vectora/latest/vectora/types/vector/struct.Vector.html) struct. Please see the [Gettting Started Guide](https://docs.rs/vectora/latest/vectora/#getting-started) for a detailed library API overview with examples.

## User documentation

User documentation is available at https://docs.rs/vectora.

### Minimum Rust Version Compatibility Policy

This project parameterizes generics by constants and relies on the [constant generics feature support stabilized in Rust v1.51.0](https://github.com/rust-lang/rust/pull/79135).

The minimum supported `rustc` version is believed to be v1.51.0.

### Include Vectora in Your Project

Import the library in the `[dependencies]` section of your `Cargo.toml` file:

**Cargo.toml**

```toml
[dependencies]
vectora = "0.8.1"
```

## Developer documentation

### Contributing

#### ![L4 Header](https://via.placeholder.com/12/B01721/000000?text=+) Issues

The [issue tracker](https://github.com/chrissimpkins/vectora/issues) is available on the GitHub repository. Don't be shy. Please report any issues that you identify so that we can address them.

#### ![L4 Header](https://via.placeholder.com/12/B01721/000000?text=+) Source contributions

Contributions are welcomed. Submit your changes as a GitHub pull request. Please add new tests for source contributions that our current test suite does not cover.

#### ![L4 Header](https://via.placeholder.com/12/B01721/000000?text=+) Clone the repository

```txt
git clone https://github.com/chrissimpkins/vectora.git
```

#### ![L4 Header](https://via.placeholder.com/12/B01721/000000?text=+) Testing

The project is tested with the latest GitHub Actions macOS, Linux (Ubuntu), and Windows environment runners using the stable and beta `rustc` toolchains.

##### Unit and doc test suite

Edit the source files, then run the unit and doc test suite locally with the command:

```txt
cargo test
```

##### Unit tests only

```txt
cargo test --lib
```

##### Doc tests only

```txt
cargo test --doc
```

##### Clippy lints

Clippy lints are not executed with the above commands. Use the following to lint Rust source files with clippy:

```txt
cargo clippy -- -D warnings
```

##### Fuzzing

This crate supports [`cargo fuzz`](https://github.com/rust-fuzz/cargo-fuzz) + [`libFuzzer`](https://llvm.org/docs/LibFuzzer.html) based fuzzing with the nightly rustc toolchain in supported environments.

[Install the `rustc` nightly toolchain](https://rust-lang.github.io/rustup/concepts/channels.html#working-with-nightly-rust).

Then, install `cargo-fuzz` with:

```
cargo +nightly install -f cargo-fuzz
```

Edit the fuzz target source in the `fuzz/fuzz_vectora.rs` file and begin fuzzing with the command:

```
cargo +nightly fuzz run fuzz_vectora
```

Please see the [Fuzzing with cargo-fuzz chapter](https://rust-fuzz.github.io/book/cargo-fuzz.html) of the Rust Fuzz book for additional documentation.

#### ![L4 Header](https://via.placeholder.com/12/B01721/000000?text=+) Documentation contributions

The docs.rs documentation is authored in the Rust source files. Edit the text and build a local version of the project documentation for review with the command:

```txt
cargo doc
```

The documentation `index.html` page can be found on the following relative path from the repository's root: `target/doc/vectora/index.html`.

Submit your doc edits as a GitHub pull request.

## Changes

Please see [CHANGELOG.md](CHANGELOG.md).

## License

Vectora is released under the [Apache License, v2.0](LICENSE).