pub mod config;
pub mod prelude;
pub use ferray_core::ArcArray;
pub use ferray_core::Array;
pub use ferray_core::ArrayFlags;
pub use ferray_core::ArrayView;
pub use ferray_core::ArrayViewMut;
pub use ferray_core::AsRawBuffer;
pub use ferray_core::CowArray;
pub use ferray_core::DynArray;
pub use ferray_core::FerrayRecord;
pub use ferray_core::FieldDescriptor;
pub use ferray_core::dimension::{self, Axis, Dimension, Ix0, Ix1, Ix2, Ix3, Ix4, Ix5, Ix6, IxDyn};
pub use ferray_core::dtype::casting;
pub use ferray_core::dtype::finfo;
pub use ferray_core::dtype::promotion;
pub use ferray_core::{DType, Element, SliceInfoElem};
pub use ferray_core::{FerrayError, FerrayResult};
pub use ferray_core::MemoryLayout;
pub use ferray_core::{FerrayRecord as DeriveFerrayRecord, promoted_type, s};
pub use ferray_core::aliases;
pub use ferray_core::array::display::{get_print_options, set_print_options};
pub use ferray_core::constants::{E, EULER_GAMMA, INF, NAN, NEG_INF, NEWAXIS, NZERO, PI, PZERO};
pub use ferray_core::creation::{
arange, array, asarray, diag, diagflat, empty, eye, frombuffer, fromiter, full, full_like,
geomspace, identity, linspace, logspace, meshgrid, mgrid, ogrid, ones, ones_like, tri, tril,
triu, zeros, zeros_like,
};
pub use ferray_core::manipulation::{
array_split, block, broadcast_to, concatenate, dsplit, dstack, expand_dims, flatten, flip,
fliplr, flipud, hsplit, hstack, moveaxis, ravel, reshape, roll, rollaxis, rot90, split,
squeeze, stack, swapaxes, transpose, vsplit, vstack,
};
pub use ferray_core::manipulation::extended::{
append, delete, insert, pad, repeat, resize, tile, trim_zeros,
};
pub use ferray_core::indexing::extended::{
choose, compress, diag_indices, diag_indices_from, flatnonzero, indices, ix_,
ndenumerate, ndindex, ravel_multi_index, select, take, take_along_axis, tril_indices,
tril_indices_from, triu_indices, triu_indices_from, unravel_index,
};
pub use ferray_ufunc::{
arccos, arccosh, arcsin, arcsinh, arctan, arctan2, arctanh, cos, cosh, deg2rad, degrees, hypot,
rad2deg, radians, sin, sinh, tan, tanh, unwrap,
};
pub use ferray_ufunc::{
exp, exp_fast, exp2, expm1, log, log1p, log2, log10, logaddexp, logaddexp2,
};
pub use ferray_ufunc::{around, ceil, fix, floor, rint, round, trunc};
pub use ferray_ufunc::{
absolute, add, add_accumulate, add_broadcast, add_reduce, cbrt, cross, cumprod, cumsum, diff,
divide, divide_broadcast, divmod, ediff1d, fabs, floor_divide, fmod, gcd, gradient, heaviside,
lcm, mod_, multiply, multiply_broadcast, multiply_outer, nancumprod, nancumsum, negative,
positive, power, reciprocal, remainder, sign, sqrt, square, subtract, subtract_broadcast,
trapezoid, true_divide,
};
pub use ferray_ufunc::{
clip, copysign, float_power, fmax, fmin, frexp, isfinite, isinf, isnan, isneginf, isposinf,
ldexp, maximum, minimum, nan_to_num, nextafter, signbit, spacing,
};
pub use ferray_ufunc::{abs, angle, conj, conjugate, imag, real};
pub use ferray_ufunc::{
bitwise_and, bitwise_not, bitwise_or, bitwise_xor, invert, left_shift, right_shift,
};
pub use ferray_ufunc::{
allclose, array_equal, array_equiv, equal, greater, greater_equal, isclose, less, less_equal,
not_equal,
};
pub use ferray_ufunc::{all, any, logical_and, logical_not, logical_or, logical_xor};
pub use ferray_ufunc::{i0, sinc};
pub use ferray_ufunc::{ConvolveMode, convolve, interp, interp_one};
pub use ferray_ufunc::{
array_add, array_bitand, array_bitnot, array_bitor, array_bitxor, array_div, array_mul,
array_neg, array_rem, array_shl, array_shr, array_sub,
};
pub use ferray_stats::{
argmax, argmin, cumprod as stats_cumprod, cumsum as stats_cumsum, max, mean, min, prod, std_,
sum, var,
};
pub use ferray_stats::{median, percentile, quantile};
pub use ferray_stats::{
nancumprod as stats_nancumprod, nancumsum as stats_nancumsum, nanmax, nanmean, nanmedian,
nanmin, nanpercentile, nanprod, nanstd, nansum, nanvar,
};
pub use ferray_stats::{CorrelateMode, corrcoef, correlate, cov};
pub use ferray_stats::{Bins, bincount, digitize, histogram, histogram2d, histogramdd};
pub use ferray_stats::{Side, SortKind, argsort, searchsorted, sort};
pub use ferray_stats::{UniqueResult, count_nonzero, nonzero, unique, where_};
pub use ferray_stats::{in1d, intersect1d, isin, setdiff1d, setxor1d, union1d};
#[cfg(feature = "io")]
pub use ferray_io as io;
#[cfg(feature = "linalg")]
pub use ferray_linalg as linalg;
#[cfg(feature = "fft")]
pub use ferray_fft as fft;
#[cfg(feature = "random")]
pub use ferray_random as random;
#[cfg(feature = "polynomial")]
pub use ferray_polynomial as polynomial;
#[cfg(feature = "window")]
pub use ferray_window as window;
#[cfg(feature = "strings")]
pub use ferray_strings as strings;
#[cfg(feature = "ma")]
pub use ferray_ma as ma;
#[cfg(feature = "stride-tricks")]
pub use ferray_stride_tricks as stride_tricks;
#[cfg(feature = "numpy")]
pub use ferray_numpy_interop as numpy_interop;
pub use config::{set_num_threads, with_num_threads};
pub mod threshold {
pub use crate::config::{
PARALLEL_THRESHOLD_COMPUTE, PARALLEL_THRESHOLD_ELEMENTWISE, PARALLEL_THRESHOLD_REDUCTION,
PARALLEL_THRESHOLD_SORT,
};
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn constants_accessible_ac7() {
assert_eq!(PI, std::f64::consts::PI);
assert_eq!(E, std::f64::consts::E);
assert_eq!(INF, f64::INFINITY);
assert_eq!(NEG_INF, f64::NEG_INFINITY);
assert!(NAN.is_nan());
}
#[test]
fn prelude_compiles_ac1() {
use crate::prelude::*;
let arr = zeros::<f64, Ix2>(Ix2::new([2, 3])).unwrap();
assert_eq!(arr.shape(), &[2, 3]);
let _: &[usize] = arr.shape();
}
#[test]
fn creation_at_toplevel() {
let a = zeros::<f64, Ix1>(Ix1::new([5])).unwrap();
assert_eq!(a.size(), 5);
let b = ones::<f64, Ix1>(Ix1::new([3])).unwrap();
assert_eq!(b.size(), 3);
let c = arange(0i32, 10, 2).unwrap();
assert_eq!(c.size(), 5);
}
#[test]
fn ufuncs_at_toplevel() {
let a = ones::<f64, Ix1>(Ix1::new([4])).unwrap();
let s = sin(&a).unwrap();
assert_eq!(s.shape(), &[4]);
}
#[test]
fn threshold_constants_accessible() {
assert!(threshold::PARALLEL_THRESHOLD_ELEMENTWISE > 0);
assert!(threshold::PARALLEL_THRESHOLD_COMPUTE > 0);
}
}