#![allow(
clippy::cast_possible_truncation,
clippy::cast_possible_wrap,
clippy::cast_precision_loss,
clippy::cast_sign_loss,
clippy::cast_lossless,
clippy::float_cmp,
clippy::missing_errors_doc,
clippy::missing_panics_doc,
// Numerical kernels use i, j, k, n, m as canonical loop / shape names.
clippy::many_single_char_names,
clippy::similar_names,
clippy::items_after_statements,
clippy::option_if_let_else,
clippy::too_long_first_doc_paragraph,
clippy::needless_pass_by_value,
clippy::match_same_arms,
// `mul_add` is an accuracy/throughput tradeoff that the project
// chooses on a per-kernel basis; clippy can't tell which is right.
clippy::suboptimal_flops,
// Iterative solvers genuinely need to compare floats in their loop
// condition (Newton's method, fixed-point iteration).
clippy::while_float
)]
pub mod cr_math;
pub mod dispatch;
pub mod errstate;
pub mod fast_exp;
pub mod fast_trig;
pub mod helpers;
pub mod kernels;
pub mod operator_overloads;
pub mod ops;
pub mod parallel;
pub mod promoted;
#[cfg(test)]
mod test_util;
pub mod ufunc_methods;
pub mod ufunc_object;
pub use ops::trig::{
arccos, arccosh, arcsin, arcsinh, arctan, arctan2, arctanh, cos, cos_into, cosh, deg2rad,
degrees, hypot, rad2deg, radians, sin, sin_into, sinh, tan, tanh, unwrap,
};
pub use ops::explog::{
exp, exp_fast, exp_into, exp2, expm1, log, log_into, log1p, log2, log10, logaddexp, logaddexp2,
};
pub use ops::rounding::{around, ceil, fix, floor, rint, round, trunc};
pub use ops::arithmetic::{
absolute, absolute_into, add, add_accumulate, add_broadcast, add_into, add_reduce,
add_reduce_all, add_reduce_axes, add_reduce_keepdims, cbrt, cross, cumprod, cumsum,
cumulative_prod, cumulative_sum, diff, divide, divide_broadcast, divide_into, divmod, ediff1d,
fabs, floor_divide, fmod, gcd, gcd_int, gradient, heaviside, lcm, lcm_int, mod_, multiply,
multiply_broadcast, multiply_into, multiply_outer, nan_add_reduce, nan_add_reduce_all,
nan_add_reduce_axes, nan_max_reduce, nan_max_reduce_all, nan_max_reduce_axes, nan_min_reduce,
nan_min_reduce_all, nan_min_reduce_axes, nan_multiply_reduce, nan_multiply_reduce_all,
nan_multiply_reduce_axes, nancumprod, nancumsum, negative, negative_into, positive, power,
reciprocal, remainder, sign, sqrt, sqrt_into, square, square_into, subtract,
subtract_broadcast, subtract_into, trapezoid, true_divide,
};
pub use ops::floatintrinsic::{
clip, clip_ord, copysign, float_power, fmax, fmin, frexp, isfinite, isinf, isnan, isneginf,
isposinf, ldexp, maximum, minimum, modf, nan_to_num, nextafter, signbit, spacing,
};
pub use ops::complex::{
abs, angle, conj, conjugate, imag, iscomplex, iscomplex_real, iscomplexobj, isreal,
isreal_real, isrealobj, isscalar, real,
};
pub use ops::complex::{
acos_complex, acosh_complex, asin_complex, asinh_complex, atan_complex, atanh_complex,
cos_complex, cosh_complex, exp_complex, expm1_complex, ln_complex, log1p_complex, log2_complex,
log10_complex, power_complex, sin_complex, sinh_complex, sqrt_complex, tan_complex,
tanh_complex,
};
pub use ops::datetime::{
add_datetime_timedelta, add_datetime_timedelta_promoted, add_timedelta, add_timedelta_promoted,
isnat_datetime, isnat_timedelta, sub_datetime, sub_datetime_promoted, sub_datetime_timedelta,
sub_timedelta,
};
pub use ops::bitwise::{
BitwiseCount, BitwiseOps, ShiftOps, bitwise_and, bitwise_count, bitwise_not, bitwise_or,
bitwise_xor, invert, left_shift, right_shift,
};
pub use ops::comparison::{
allclose, array_equal, array_equiv, equal, equal_broadcast, greater, greater_broadcast,
greater_equal, greater_equal_broadcast, isclose, isclose_broadcast, less, less_broadcast,
less_equal, less_equal_broadcast, not_equal, not_equal_broadcast,
};
pub use ops::logical::{
Logical, all, all_axis, any, any_axis, logical_and, logical_not, logical_or, logical_xor,
};
pub use ops::special::{i0, sinc};
#[cfg(feature = "fft-convolve")]
pub use ops::convolution::fftconvolve;
pub use ops::convolution::{ConvolveMode, convolve};
pub use ops::interpolation::{interp, interp_one};
pub use ufunc_methods::{
accumulate_axis, at, outer as ufunc_outer, reduce_all, reduce_axes, reduce_axis,
reduce_axis_keepdims,
};
pub use promoted::{add_promoted, divide_promoted, multiply_promoted, subtract_promoted};
pub use ufunc_object::{Ufunc, add_ufunc, divide_ufunc, multiply_ufunc, subtract_ufunc};
#[cfg(feature = "f16")]
pub use ops::arithmetic::{
absolute_f16, add_f16, cbrt_f16, divide_f16, floor_divide_f16, multiply_f16, negative_f16,
power_f16, reciprocal_f16, remainder_f16, sign_f16, sqrt_f16, square_f16, subtract_f16,
};
#[cfg(feature = "f16")]
pub use ops::explog::{exp_f16, exp2_f16, expm1_f16, log_f16, log1p_f16, log2_f16, log10_f16};
#[cfg(feature = "f16")]
pub use ops::floatintrinsic::{
clip_f16, isfinite_f16, isinf_f16, isnan_f16, maximum_f16, minimum_f16, nan_to_num_f16,
};
#[cfg(feature = "f16")]
pub use ops::rounding::{ceil_f16, floor_f16, round_f16, trunc_f16};
#[cfg(feature = "f16")]
pub use ops::special::sinc_f16;
#[cfg(feature = "f16")]
pub use ops::trig::{
arccos_f16, arccosh_f16, arcsin_f16, arcsinh_f16, arctan_f16, arctan2_f16, arctanh_f16,
cos_f16, cosh_f16, degrees_f16, hypot_f16, radians_f16, sin_f16, sinh_f16, tan_f16, tanh_f16,
};
pub use operator_overloads::{
array_add, array_bitand, array_bitnot, array_bitor, array_bitxor, array_div, array_mul,
array_neg, array_rem, array_shl, array_shr, array_sub,
};