use crate::{
array::Array,
error::{Result, check},
stream::default_stream,
};
pub fn logical_and(a: &Array, b: &Array) -> Result<Array> {
let mut out = Array(unsafe { mlxrs_sys::mlx_array_new() });
check(unsafe { mlxrs_sys::mlx_logical_and(&mut out.0, a.0, b.0, default_stream()) })?;
Ok(out)
}
pub fn logical_or(a: &Array, b: &Array) -> Result<Array> {
let mut out = Array(unsafe { mlxrs_sys::mlx_array_new() });
check(unsafe { mlxrs_sys::mlx_logical_or(&mut out.0, a.0, b.0, default_stream()) })?;
Ok(out)
}
pub fn logical_not(a: &Array) -> Result<Array> {
let mut out = Array(unsafe { mlxrs_sys::mlx_array_new() });
check(unsafe { mlxrs_sys::mlx_logical_not(&mut out.0, a.0, default_stream()) })?;
Ok(out)
}
pub fn select(condition: &Array, x: &Array, y: &Array) -> Result<Array> {
let mut out = Array(unsafe { mlxrs_sys::mlx_array_new() });
check(unsafe { mlxrs_sys::mlx_where(&mut out.0, condition.0, x.0, y.0, default_stream()) })?;
Ok(out)
}