vnl_rational_traits.cxx
Go to the documentation of this file.
1 //:
2 // \file
3 // \author Peter Vanroose
4 // \date 6 September 2002
5 //
6 //-----------------------------------------------------------------------------
7 
8 #include <complex>
9 #include "vnl_rational_traits.h"
10 
14 
15 const std::complex<vnl_rational> vnl_numeric_traits<std::complex<vnl_rational> >::zero
16  = std::complex<vnl_rational>(vnl_rational(0L,1L),vnl_rational(0L,1L));
17 const std::complex<vnl_rational> vnl_numeric_traits<std::complex<vnl_rational> >::one
18  = std::complex<vnl_rational>(vnl_rational(1L,1L),vnl_rational(0L,1L));
19 
20 namespace vnl_math
21 {
22  vnl_rational squared_magnitude(std::complex<vnl_rational> const& x)
23  {
24  return x.real()*x.real()+x.imag()*x.imag();
25  }
26 
27  vnl_rational abs(std::complex<vnl_rational> const& x)
28  {
29  return vnl_rational(std::sqrt(double(x.real()*x.real()+x.imag()*x.imag())));
30  }
31 }
32 
33 std::ostream& operator<<(std::ostream& os, const std::complex<vnl_rational>& x)
34 {
35  return os << x.real() << '+' << x.imag() << 'j';
36 }
numeric traits for vnl_rational
real numerical constants.
Definition: vnl_bignum.h:430
vnl_bignum squared_magnitude(vnl_bignum const &x)
Definition: vnl_bignum.h:433
std::ostream & operator<<(std::ostream &s, vnl_decnum const &r)
decimal output.
Definition: vnl_decnum.h:393
vnl_bignum abs(vnl_bignum const &x)
Definition: vnl_bignum.h:432
High-precision rational numbers.
Definition: vnl_rational.h:73