ndarray 0.17.2

An n-dimensional array for general elements and for numerics. Lightweight array views and slicing; views support chunking and splitting.
Documentation
[package]

name = "ndarray"
version = "0.17.2"
edition = "2021"
rust-version = "1.64"
authors = [
  "Ulrik Sverdrup \"bluss\"",
  "Jim Turner"
]
license = "MIT OR Apache-2.0"
readme = "README-crates.io.md"

repository = "https://github.com/rust-ndarray/ndarray"
documentation = "https://docs.rs/ndarray/"

description = "An n-dimensional array for general elements and for numerics. Lightweight array views and slicing; views support chunking and splitting."

keywords = ["array", "data-structure", "multidimensional", "matrix", "blas"]
categories = ["data-structures", "science"]

include = [
    "/src/**/*.rs",
    "LICENSE-MIT",
    "LICENSE-APACHE",
    "RELEASES.md",
    "README.rst",
    "README-quick-start.md"
]
resolver = "2"

[lib]
name = "ndarray"
bench = false
test = true

[dependencies]
num-integer = { workspace = true }
num-traits = { workspace = true }
num-complex = { workspace = true }

approx = { workspace = true, optional = true }
rayon = { version = "1.10.0", optional = true }

# Use via the `blas` crate feature
cblas-sys = { workspace = true, optional = true }
libc = { version = "0.2.82", optional = true }

matrixmultiply = { version = "0.3.2", default-features = false, features=["cgemm"] }

serde = { version = "1.0", optional = true, default-features = false, features = ["alloc"] }
rawpointer = { version = "0.2" }

[dev-dependencies]
defmac = "0.2"
quickcheck = { workspace = true }
approx = { workspace = true, default-features = true }
itertools = { workspace = true }
ndarray-gen = { workspace = true }

[features]
default = ["std"]

# Enable blas usage
# See README for more instructions
blas = ["dep:cblas-sys", "dep:libc"]

serde = ["dep:serde"]

std = ["num-traits/std", "matrixmultiply/std"]
rayon = ["dep:rayon", "std"]

matrixmultiply-threading = ["matrixmultiply/threading"]

portable-atomic-critical-section = ["portable-atomic/critical-section"]


[target.'cfg(not(target_has_atomic = "ptr"))'.dependencies]
portable-atomic = { version = "1.6.0" }
portable-atomic-util = { version = "0.2.0", features = [ "alloc" ] }

[workspace]
members = [
    "ndarray-rand",
    "crates/*",
]
default-members = [
    ".",
    "ndarray-rand",
    "crates/ndarray-gen",
    "crates/numeric-tests",
    "crates/serialization-tests",
    # exclude blas-tests and blas-mock-tests that activate "blas" feature
]

[workspace.dependencies]
ndarray = { version = "0.17", path = ".", default-features = false }
ndarray-rand = { path = "ndarray-rand" }
ndarray-gen = { path = "crates/ndarray-gen" }

num-integer = { version = "0.1.39", default-features = false }
num-traits = { version = "0.2", default-features = false }
num-complex = { version = "0.4", default-features = false }
approx = { version = "0.5", default-features = false }
quickcheck = { version = "1.0", default-features = false }
rand = { version = "0.9.0", features = ["small_rng"] }
rand_distr = { version = "0.5.0" }
itertools = { version = "0.13.0", default-features = false, features = ["use_std"] }
cblas-sys = { version = "0.1.4", default-features = false }

[profile.bench]
debug = true

[profile.test.package.numeric-tests]
opt-level = 2
[profile.test.package.blas-tests]
opt-level = 2

# Config for cargo-release
[package.metadata.release]
tag-name = "{{version}}"

# Config specific to docs.rs
[package.metadata.docs.rs]
features = ["approx", "serde", "rayon"]
# Define the configuration attribute `docsrs`
rustdoc-args = ["--cfg", "docsrs"]