Skip to main content

apple_accelerate/
lib.rs

1#![doc = include_str!("../README.md")]
2#![cfg_attr(docsrs, feature(doc_cfg))]
3#![allow(clippy::missing_const_for_fn)]
4#![allow(clippy::missing_errors_doc)]
5#![allow(clippy::module_name_repetitions)]
6#![allow(clippy::must_use_candidate)]
7
8mod bridge;
9#[path = "ffi/mod.rs"]
10mod raw_ffi;
11
12/// Safe wrappers for BLAS routines in Accelerate.
13pub mod blas;
14/// Safe wrappers for BNNS routines in Accelerate.
15pub mod bnns;
16/// Error types returned by the Accelerate wrappers.
17pub mod error;
18/// Safe wrappers for LAPACK routines in Accelerate.
19pub mod lapack;
20/// Safe wrappers for Accelerate quadrature integrators.
21pub mod quadrature;
22/// Safe wrappers for four-lane SIMD helpers backed by Apple SIMD types.
23pub mod simd;
24/// Safe wrappers for sparse linear algebra routines in Accelerate.
25pub mod sparse;
26/// Safe wrappers for vDSP routines in Accelerate.
27pub mod vdsp;
28/// Safe wrappers for vForce vector functions in Accelerate.
29pub mod vforce;
30/// Safe wrappers for vImage routines in Accelerate.
31pub mod vimage;
32
33/// Raw FFI re-exports for Accelerate declarations behind the `raw-ffi` feature.
34#[cfg(feature = "raw-ffi")]
35#[cfg_attr(docsrs, doc(cfg(feature = "raw-ffi")))]
36pub mod ffi {
37    pub use crate::raw_ffi::*;
38}
39
40pub use crate::blas::{blas_order, blas_transpose, sdot, sgemm_row_major, sgemv_row_major};
41pub use crate::bnns::{
42    graph_optimization_preference as bnns_graph_optimization_preference, relu_f32 as bnns_relu_f32,
43    sigmoid_f32 as bnns_sigmoid_f32, Filter as BnnsFilter,
44    GraphCompileOptions as BnnsGraphCompileOptions,
45};
46pub use crate::error::{Error, Result};
47pub use crate::lapack::{lu_decompose_f32, solve_linear_system_f32, LuDecompositionF32};
48pub use crate::quadrature::{
49    integrate, Integrator as QuadratureIntegrator, Options as QuadratureOptions, QuadratureOutput,
50};
51pub use crate::simd::{add_f32x4, dot_f32x4, length_f32x4, normalize_f32x4, Float4};
52pub use crate::sparse::{
53    add_to_dense_f32 as sparse_add_to_dense_f32, dot_dense_f32 as sparse_dot_dense_f32,
54    dot_sparse_f32 as sparse_dot_sparse_f32, sparse_matrix_property, sparse_status, SparseIndex,
55    SparseMatrixF32,
56};
57pub use crate::vdsp::{
58    add_f32, add_f64, blackman_window, blackman_window_f64, dot_f32, dot_f64, fft_direction,
59    fft_radix, hamming_window, hamming_window_f64, max_f32, max_f64, mean_f32, mean_f64, min_f32,
60    min_f64, sub_f32, sub_f64, sum_f32, sum_f64, window_flags, BiquadSetup, FftSetup,
61};
62pub use crate::vforce::{cos_f32, exp_f32, log_f32, sin_f32, sqrt_f32};
63pub use crate::vimage::{
64    alpha_blend_argb8888, box_convolve_argb8888, clip_to_alpha_argb8888, contrast_stretch_planar8,
65    convert_argb8888_to_planar8, convert_planar8_to_argb8888, premultiply_argb8888,
66    rotate_argb8888, scale_argb8888, unpremultiply_argb8888, vimage_flags, ImageBuffer,
67};