use crate::{
array::Array,
error::{Result, check},
stream::default_stream,
};
pub fn equal(a: &Array, b: &Array) -> Result<Array> {
let mut out = Array(unsafe { mlxrs_sys::mlx_array_new() });
check(unsafe { mlxrs_sys::mlx_equal(&mut out.0, a.0, b.0, default_stream()) })?;
Ok(out)
}
pub fn not_equal(a: &Array, b: &Array) -> Result<Array> {
let mut out = Array(unsafe { mlxrs_sys::mlx_array_new() });
check(unsafe { mlxrs_sys::mlx_not_equal(&mut out.0, a.0, b.0, default_stream()) })?;
Ok(out)
}
pub fn less(a: &Array, b: &Array) -> Result<Array> {
let mut out = Array(unsafe { mlxrs_sys::mlx_array_new() });
check(unsafe { mlxrs_sys::mlx_less(&mut out.0, a.0, b.0, default_stream()) })?;
Ok(out)
}
pub fn less_equal(a: &Array, b: &Array) -> Result<Array> {
let mut out = Array(unsafe { mlxrs_sys::mlx_array_new() });
check(unsafe { mlxrs_sys::mlx_less_equal(&mut out.0, a.0, b.0, default_stream()) })?;
Ok(out)
}
pub fn greater(a: &Array, b: &Array) -> Result<Array> {
let mut out = Array(unsafe { mlxrs_sys::mlx_array_new() });
check(unsafe { mlxrs_sys::mlx_greater(&mut out.0, a.0, b.0, default_stream()) })?;
Ok(out)
}
pub fn greater_equal(a: &Array, b: &Array) -> Result<Array> {
let mut out = Array(unsafe { mlxrs_sys::mlx_array_new() });
check(unsafe { mlxrs_sys::mlx_greater_equal(&mut out.0, a.0, b.0, default_stream()) })?;
Ok(out)
}
pub fn allclose(a: &Array, b: &Array, rtol: f64, atol: f64, equal_nan: bool) -> Result<Array> {
let mut out = Array(unsafe { mlxrs_sys::mlx_array_new() });
check(unsafe {
mlxrs_sys::mlx_allclose(
&mut out.0,
a.0,
b.0,
rtol,
atol,
equal_nan,
default_stream(),
)
})?;
Ok(out)
}
pub fn isclose(a: &Array, b: &Array, rtol: f64, atol: f64, equal_nan: bool) -> Result<Array> {
let mut out = Array(unsafe { mlxrs_sys::mlx_array_new() });
check(unsafe {
mlxrs_sys::mlx_isclose(
&mut out.0,
a.0,
b.0,
rtol,
atol,
equal_nan,
default_stream(),
)
})?;
Ok(out)
}
pub fn isfinite(a: &Array) -> Result<Array> {
let mut out = Array(unsafe { mlxrs_sys::mlx_array_new() });
check(unsafe { mlxrs_sys::mlx_isfinite(&mut out.0, a.0, default_stream()) })?;
Ok(out)
}
pub fn isinf(a: &Array) -> Result<Array> {
let mut out = Array(unsafe { mlxrs_sys::mlx_array_new() });
check(unsafe { mlxrs_sys::mlx_isinf(&mut out.0, a.0, default_stream()) })?;
Ok(out)
}
pub fn isnan(a: &Array) -> Result<Array> {
let mut out = Array(unsafe { mlxrs_sys::mlx_array_new() });
check(unsafe { mlxrs_sys::mlx_isnan(&mut out.0, a.0, default_stream()) })?;
Ok(out)
}
pub fn isneginf(a: &Array) -> Result<Array> {
let mut out = Array(unsafe { mlxrs_sys::mlx_array_new() });
check(unsafe { mlxrs_sys::mlx_isneginf(&mut out.0, a.0, default_stream()) })?;
Ok(out)
}
pub fn isposinf(a: &Array) -> Result<Array> {
let mut out = Array(unsafe { mlxrs_sys::mlx_array_new() });
check(unsafe { mlxrs_sys::mlx_isposinf(&mut out.0, a.0, default_stream()) })?;
Ok(out)
}