pub mod analytic;
mod constants;
mod factorial;
pub mod fee;
mod ffi;
mod legendre;
mod types;
#[cfg(feature = "python")]
mod python;
cfg_if::cfg_if! {
if #[cfg(any(feature = "cuda", feature = "hip"))] {
mod gpu;
pub use gpu::{GpuFloat, GpuComplex};
}
}
pub use marlu::{AzEl, Jones};
use ndarray::ArrayView1;
pub fn fix_amps_ndarray(amps: ArrayView1<f64>, delays: ArrayView1<u32>) -> ([f64; 32], [u32; 16]) {
let mut full_amps: [f64; 32] = [1.0; 32];
full_amps
.iter_mut()
.zip(amps.iter().cycle())
.zip(delays.iter().cycle())
.for_each(|((out_amp, &in_amp), &delay)| {
if delay == 32 {
*out_amp = 0.0;
} else {
*out_amp = in_amp;
}
});
let mut delays_a: [u32; 16] = [0; 16];
delays_a.iter_mut().zip(delays).for_each(|(da, d)| *da = *d);
(full_amps, delays_a)
}