pub fn float_mul(self, rhs: Self, flag: RoundingFlag) -> MaybeNumber {
        let layout = self.layout();
        assert_eq!(layout, rhs.layout(), "multiplying numbers with different layout");
        match layout {
            Layout::Float(FloatLayout::BFloat16) => (bf16::from(self) * bf16::from(rhs)).into(),
            Layout::Float(FloatLayout::IeeeHalf) => {
                ieee::Half::from(self).mul_r(rhs.into(), flag.into()).into()
            }
            Layout::Float(FloatLayout::IeeeSingle) => {
                ieee::Single::from(self).mul_r(rhs.into(), flag.into()).into()
            }
            Layout::Float(FloatLayout::IeeeDouble) => {
                ieee::Double::from(self).mul_r(rhs.into(), flag.into()).into()
            }
            Layout::Float(FloatLayout::IeeeQuad) => {
                ieee::Quad::from(self).mul_r(rhs.into(), flag.into()).into()
            }
            Layout::Float(FloatLayout::X87DoubleExt) => {
                ieee::X87DoubleExtended::from(self).mul_r(rhs.into(), flag.into()).into()
            }
            Layout::Float(FloatLayout::IeeeOct) => {
                ieee::Oct::from(self).mul_r(rhs.into(), flag.into()).into()
            }
            Layout::Float(FloatLayout::FloatTapered) => todo!("(#5) tapered float multiplication"),
            Layout::Integer(_) => panic!("float multiplication of integer numbers"),
        }
    }
/// Multiplication of two floats with configuration flags for rounding.
///
/// # Panics
///
/// - if applied to float number layouts
/// - if numbers in arguments has different layout.
Multiplication of two floats with configuration flags for rounding.
Multiplication of two floats with configuration flags for rounding .
pub fn float_mul(self, rhs: Self, flag: RoundingFlag) -> MaybeNumber {
        let layout = self.layout();
        assert_eq!(layout, rhs.layout(), "multiplying numbers with different layout");
        match layout {
            Layout::Float(FloatLayout::BFloat16) => (bf16::from(self) * bf16::from(rhs)).into(),
            Layout::Float(FloatLayout::IeeeHalf) => {
                ieee::Half::from(self).mul_r(rhs.into(), flag.into()).into()
            }
            Layout::Float(FloatLayout::IeeeSingle) => {
                ieee::Single::from(self).mul_r(rhs.into(), flag.into()).into()
            }
            Layout::Float(FloatLayout::IeeeDouble) => {
                ieee::Double::from(self).mul_r(rhs.into(), flag.into()).into()
            }
            Layout::Float(FloatLayout::IeeeQuad) => {
                ieee::Quad::from(self).mul_r(rhs.into(), flag.into()).into()
            }
            Layout::Float(FloatLayout::X87DoubleExt) => {
                ieee::X87DoubleExtended::from(self).mul_r(rhs.into(), flag.into()).into()
            }
            Layout::Float(FloatLayout::IeeeOct) => {
                ieee::Oct::from(self).mul_r(rhs.into(), flag.into()).into()
            }
            Layout::Float(FloatLayout::FloatTapered) => todo!("(#5) tapered float multiplication"),
            Layout::Integer(_) => panic!("float multiplication of integer numbers"),
        }
    }
pub fn float_mul ( self , rhs : Self , flag : RoundingFlag ) -> MaybeNumber { let layout = self . layout ( ) ; assert_eq ! ( layout rhs layout ( ) " " ) ; match layout { Layout :: Float ( FloatLayout :: BFloat16 ) => ( bf16 :: from ( self ) * bf16 :: from ( rhs ) ) . into ( ) , Layout :: Float ( FloatLayout :: IeeeHalf ) => { ieee :: Half :: from ( self ) . mul_r ( rhs . into ( ) , flag . into ( ) ) . into ( ) } Layout :: Float ( FloatLayout :: IeeeSingle ) => { ieee :: Single :: from ( self ) . mul_r ( rhs . into ( ) , flag . into ( ) ) . into ( ) } Layout :: Float ( FloatLayout :: IeeeDouble ) => { ieee :: Double :: from ( self ) . mul_r ( rhs . into ( ) , flag . into ( ) ) . into ( ) } Layout :: Float ( FloatLayout :: IeeeQuad ) => { ieee :: Quad :: from ( self ) . mul_r ( rhs . into ( ) , flag . into ( ) ) . into ( ) } Layout :: Float ( FloatLayout :: X87DoubleExt ) => { ieee :: X87DoubleExtended :: from ( self ) . mul_r ( rhs . into ( ) , flag . into ( ) ) . into ( ) } Layout :: Float ( FloatLayout :: IeeeOct ) => { ieee :: Oct :: from ( self ) . mul_r ( rhs . into ( ) , flag . into ( ) ) . into ( ) } Layout :: Float ( FloatLayout :: FloatTapered ) => todo ! ( " " ) , Layout :: Integer ( _ ) => panic ! ( " " ) , } }
Multiplication of two floats with configuration flags for rounding.
Multiplication of two floats with configuration flags for rounding .
self
rhs
Self
flag
RoundingFlag
self
rhs
Self
flag
RoundingFlag
panics
if applied to float number layouts
if numbers in arguments has different layout.
if applied to float number layouts if numbers in arguments has different layout .