pub struct f64x8 { /* private fields */ }Implementations§
Source§impl f64x8
impl f64x8
pub const ONE: f64x8
pub const ZERO: f64x8
pub const HALF: f64x8
pub const E: f64x8
pub const FRAC_1_PI: f64x8
pub const FRAC_2_PI: f64x8
pub const FRAC_2_SQRT_PI: f64x8
pub const FRAC_1_SQRT_2: f64x8
pub const FRAC_PI_2: f64x8
pub const FRAC_PI_3: f64x8
pub const FRAC_PI_4: f64x8
pub const FRAC_PI_6: f64x8
pub const FRAC_PI_8: f64x8
pub const LN_2: f64x8
pub const LN_10: f64x8
pub const LOG2_E: f64x8
pub const LOG10_E: f64x8
pub const LOG10_2: f64x8
pub const LOG2_10: f64x8
pub const PI: f64x8
pub const SQRT_2: f64x8
pub const TAU: f64x8
pub const fn new(array: [f64; 8]) -> Self
pub fn blend(self, t: Self, f: Self) -> Self
pub fn abs(self) -> Self
pub fn floor(self) -> Self
pub fn ceil(self) -> Self
pub fn fast_max(self, rhs: Self) -> Self
pub fn max(self, rhs: Self) -> Self
pub fn fast_min(self, rhs: Self) -> Self
pub fn min(self, rhs: Self) -> Self
pub fn is_nan(self) -> Self
pub fn is_finite(self) -> Self
pub fn is_inf(self) -> Self
pub fn round(self) -> Self
pub fn round_int(self) -> i64x8
Sourcepub fn mul_add(self, m: Self, a: Self) -> Self
pub fn mul_add(self, m: Self, a: Self) -> Self
Performs a multiply-add operation: self * m + a
When hardware FMA support is available, this computes the result with a single rounding operation. Without FMA support, it falls back to separate multiply and add operations with two roundings.
§Platform-specific behavior
- On
x86/x86_64with AVX-512F+FMA: Uses 512-bitvfmadd(single rounding, best accuracy) - On
x86/x86_64with AVX-512F only: Uses(self * m) + a(two roundings) - Other platforms: Delegates to
f64x4(inherits its FMA behavior)
§Examples
let a = f64x8::from([1.0; 8]);
let b = f64x8::from([2.0; 8]);
let c = f64x8::from([10.0; 8]);
let result = a.mul_add(b, c);
let expected = f64x8::from([12.0; 8]);
assert_eq!(result, expected);Sourcepub fn mul_sub(self, m: Self, s: Self) -> Self
pub fn mul_sub(self, m: Self, s: Self) -> Self
Performs a multiply-subtract operation: self * m - s
When hardware FMA support is available, this computes the result with a single rounding operation. Without FMA support, it falls back to separate multiply and subtract operations with two roundings.
§Platform-specific behavior
- On
x86/x86_64with AVX-512F+FMA: Uses 512-bitvfmsub(single rounding, best accuracy) - On
x86/x86_64with AVX-512F only: Uses(self * m) - s(two roundings) - Other platforms: Delegates to
f64x4(inherits its FMA behavior)
§Examples
let a = f64x8::from([10.0; 8]);
let b = f64x8::from([3.0; 8]);
let c = f64x8::from([5.0; 8]);
let result = a.mul_sub(b, c);
let expected = f64x8::from([25.0; 8]);
assert_eq!(result, expected);Sourcepub fn mul_neg_add(self, m: Self, a: Self) -> Self
pub fn mul_neg_add(self, m: Self, a: Self) -> Self
Performs a negative multiply-add operation: a - (self * m)
When hardware FMA support is available, this computes the result with a single rounding operation. Without FMA support, it falls back to separate operations with two roundings.
§Platform-specific behavior
- On
x86/x86_64with AVX-512F+FMA: Uses 512-bitvfnmadd(single rounding, best accuracy) - On
x86/x86_64with AVX-512F only: Usesa - (self * m)(two roundings) - Other platforms: Delegates to
f64x4(inherits its FMA behavior)
§Examples
let a = f64x8::from([4.0; 8]);
let b = f64x8::from([2.0; 8]);
let c = f64x8::from([10.0; 8]);
let result = a.mul_neg_add(b, c);
let expected = f64x8::from([2.0; 8]);
assert_eq!(result, expected);Sourcepub fn mul_neg_sub(self, m: Self, s: Self) -> Self
pub fn mul_neg_sub(self, m: Self, s: Self) -> Self
Performs a negative multiply-subtract operation: -(self * m) - s
When hardware FMA support is available, this computes the result with a single rounding operation. Without FMA support, it falls back to separate operations with two roundings.
§Platform-specific behavior
- On
x86/x86_64with AVX-512F+FMA: Uses 512-bitvfnmsub(single rounding, best accuracy) - On
x86/x86_64with AVX-512F only: Uses-(self * m) - s(two roundings) - Other platforms: Delegates to
f64x4(inherits its FMA behavior)
§Examples
let a = f64x8::from([4.0; 8]);
let b = f64x8::from([2.0; 8]);
let c = f64x8::from([1.0; 8]);
let result = a.mul_neg_sub(b, c);
let expected = f64x8::from([-9.0; 8]);
assert_eq!(result, expected);pub fn flip_signs(self, signs: Self) -> Self
pub fn copysign(self, sign: Self) -> Self
pub fn asin_acos(self) -> (Self, Self)
pub fn acos(self) -> Self
pub fn asin(self) -> Self
pub fn atan(self) -> Self
pub fn atan2(self, x: Self) -> Self
pub fn sin_cos(self) -> (Self, Self)
pub fn sin(self) -> Self
pub fn cos(self) -> Self
pub fn tan(self) -> Self
pub fn to_degrees(self) -> Self
pub fn to_radians(self) -> Self
pub fn sqrt(self) -> Self
pub fn to_bitmask(self) -> u32
pub fn any(self) -> bool
pub fn all(self) -> bool
pub fn none(self) -> bool
pub fn reduce_add(self) -> f64
pub fn log2(self) -> Self
pub fn log10(self) -> Self
pub fn pow_f64x8(self, y: Self) -> Self
pub fn powf(self, y: f64) -> Self
pub fn to_array(self) -> [f64; 8]
pub fn as_array(&self) -> &[f64; 8]
pub fn as_mut_array(&mut self) -> &mut [f64; 8]
pub fn from_i32x8(v: i32x8) -> Self
Trait Implementations§
Source§impl AddAssign<&f64x8> for f64x8
impl AddAssign<&f64x8> for f64x8
Source§fn add_assign(&mut self, rhs: &Self)
fn add_assign(&mut self, rhs: &Self)
+= operation. Read moreSource§impl AddAssign for f64x8
impl AddAssign for f64x8
Source§fn add_assign(&mut self, rhs: Self)
fn add_assign(&mut self, rhs: Self)
+= operation. Read moreSource§impl BitAndAssign<&f64x8> for f64x8
impl BitAndAssign<&f64x8> for f64x8
Source§fn bitand_assign(&mut self, rhs: &Self)
fn bitand_assign(&mut self, rhs: &Self)
&= operation. Read moreSource§impl BitAndAssign for f64x8
impl BitAndAssign for f64x8
Source§fn bitand_assign(&mut self, rhs: Self)
fn bitand_assign(&mut self, rhs: Self)
&= operation. Read moreSource§impl BitOrAssign<&f64x8> for f64x8
impl BitOrAssign<&f64x8> for f64x8
Source§fn bitor_assign(&mut self, rhs: &Self)
fn bitor_assign(&mut self, rhs: &Self)
|= operation. Read moreSource§impl BitOrAssign for f64x8
impl BitOrAssign for f64x8
Source§fn bitor_assign(&mut self, rhs: Self)
fn bitor_assign(&mut self, rhs: Self)
|= operation. Read moreSource§impl BitXorAssign<&f64x8> for f64x8
impl BitXorAssign<&f64x8> for f64x8
Source§fn bitxor_assign(&mut self, rhs: &Self)
fn bitxor_assign(&mut self, rhs: &Self)
^= operation. Read moreSource§impl BitXorAssign for f64x8
impl BitXorAssign for f64x8
Source§fn bitxor_assign(&mut self, rhs: Self)
fn bitxor_assign(&mut self, rhs: Self)
^= operation. Read moreSource§impl DivAssign<&f64x8> for f64x8
impl DivAssign<&f64x8> for f64x8
Source§fn div_assign(&mut self, rhs: &Self)
fn div_assign(&mut self, rhs: &Self)
/= operation. Read moreSource§impl DivAssign for f64x8
impl DivAssign for f64x8
Source§fn div_assign(&mut self, rhs: Self)
fn div_assign(&mut self, rhs: Self)
/= operation. Read moreSource§impl MulAssign<&f64x8> for f64x8
impl MulAssign<&f64x8> for f64x8
Source§fn mul_assign(&mut self, rhs: &Self)
fn mul_assign(&mut self, rhs: &Self)
*= operation. Read moreSource§impl MulAssign for f64x8
impl MulAssign for f64x8
Source§fn mul_assign(&mut self, rhs: Self)
fn mul_assign(&mut self, rhs: Self)
*= operation. Read moreSource§impl SubAssign<&f64x8> for f64x8
impl SubAssign<&f64x8> for f64x8
Source§fn sub_assign(&mut self, rhs: &Self)
fn sub_assign(&mut self, rhs: &Self)
-= operation. Read moreSource§impl SubAssign for f64x8
impl SubAssign for f64x8
Source§fn sub_assign(&mut self, rhs: Self)
fn sub_assign(&mut self, rhs: Self)
-= operation. Read moreimpl Copy for f64x8
impl Pod for f64x8
impl StructuralPartialEq for f64x8
Auto Trait Implementations§
impl Freeze for f64x8
impl RefUnwindSafe for f64x8
impl Send for f64x8
impl Sync for f64x8
impl Unpin for f64x8
impl UnwindSafe for f64x8
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CheckedBitPattern for Twhere
T: AnyBitPattern,
impl<T> CheckedBitPattern for Twhere
T: AnyBitPattern,
Source§type Bits = T
type Bits = T
Self must have the same layout as the specified Bits except for
the possible invalid bit patterns being checked during
is_valid_bit_pattern.Source§fn is_valid_bit_pattern(_bits: &T) -> bool
fn is_valid_bit_pattern(_bits: &T) -> bool
bits
as &Self.