///|
/// Arbitrary-precision complex value represented by real and imaginary `mpf` parts.
pub struct RawMpc {
  real : @mpf.RawMpf
  imag : @mpf.RawMpf
} derive(Debug, Eq)

///|
pub impl Show for RawMpc with fn output(self, logger) {
  logger.write_object(self.to_repr())
}

///|
pub(all) suberror MpcError {
  ValueError(String)
  DomainError(String)
  PoleError(String)
} derive(Debug, Eq)

///|
pub impl Show for MpcError with fn output(self, logger) {
  logger.write_object(self.to_repr())
}

///|
/// Additive identity `0 + 0j`.
pub fn zero() -> RawMpc {
  { real: @mpf.fzero, imag: @mpf.fzero }
}