mpir/ops/mpq/
mul.rs

1//! mul
2//!
3
4use std::ops::{Mul, MulAssign};
5use crate::ops::{onforward_ref_binop, onforward_ref_op_assign};
6use crate::prim::{mpq::*};
7
8onforward_ref_binop!{impl Mul, mul for mpq_s, mpq_s, mpq_s}
9
10/// impl Mul for mpq_r
11impl<'a, 'b> Mul<&'b mpq_s> for &'a mpq_s {
12  type Output = <mpq_s as Mul<mpq_s>>::Output;
13
14  /// mul mpq_r * mpq_r
15  #[inline]
16  fn mul(self, rhs: &'b mpq_s) -> <mpq_s as Mul<mpq_s>>::Output {
17    let mut t = mpq_s::init();
18    mpq_mul(&mut t, self, rhs);
19    t
20  }
21}
22
23onforward_ref_op_assign!{impl MulAssign, mul_assign for mpq_s, mpq_s}
24
25/// impl MulAssign for mpq_s
26impl<'a> MulAssign<&'a Self> for mpq_s {
27  /// mul_assign mpq_s *= mpq_r
28  #[inline]
29  fn mul_assign(&mut self, rhs: &'a Self) -> () {
30    self.mul(rhs);
31  }
32}