I get a runtime error here:
`test_matrix: /home/thilina/Repos/csympy/src/rational.cpp:8: CSymPy::Rational::Rational(mpq_class): Assertion 'is_canonical(this->i)' failed.`

Here is the stack trace:

Traceback (most recent call last):
   File unknown, in _start()

   File "/build/buildd/eglibc-2.19/csu/libc-start.c", line 287, in __libc_start_main()

   File "/home/thilina/Repos/csympy/src/tests/matrix/test_matrix.cpp", line 230, in main()
     test_gaussian_elimination();

   File "/home/thilina/Repos/csympy/src/tests/matrix/test_matrix.cpp", line 214, in test_gaussian_elimination()
     RCP<const DenseMatrix> B = gaussian_elimination(*A);

   File "/home/thilina/Repos/csympy/src/matrix.cpp", line 268, in CSymPy::gaussian_elimination(CSymPy::DenseMatrix const&)
     t[pivots*col + l] = div(t[pivots*col + l], scale);

   File "/home/thilina/Repos/csympy/src/mul.cpp", line 276, in CSymPy::div(CSymPy::RCP<CSymPy::Basic const> const&, CSymPy::RCP<CSymPy::Basic const> const&)
     return mul(a, pow(b, minus_one));

   File "/home/thilina/Repos/csympy/src/pow.cpp", line 100, in CSymPy::pow(CSymPy::RCP<CSymPy::Basic const> const&, CSymPy::RCP<CSymPy::Basic const> const&)
     return pownum(rcp_static_cast<const Number>(a), rcp_static_cast<const Integer>(b));

   File "/home/thilina/Repos/csympy/src/number.h", line 63, in CSymPy::pownum(CSymPy::RCP<CSymPy::Number const> const&, CSymPy::RCP<CSymPy::Number const> const&)
     return self->pow(*other);

   File "/home/thilina/Repos/csympy/src/integer.h", line 134, in CSymPy::Integer::pow(CSymPy::Number const&) const
     return powint(static_cast<const Integer&>(other));

   File "/home/thilina/Repos/csympy/src/integer.h", line 76, in CSymPy::Integer::powint(CSymPy::Integer const&) const
     return pow_negint(other);

   File "/home/thilina/Repos/csympy/src/integer.cpp", line 76, in CSymPy::Integer::pow_negint(CSymPy::Integer const&) const
     return rcp(new Rational(q));

   File "/home/thilina/Repos/csympy/src/rational.cpp", line 8, in CSymPy::Rational::Rational(__gmp_expr<__mpq_struct [1], __mpq_struct [1]>)
     CSYMPY_ASSERT(is_canonical(this->i))

   File "/build/buildd/eglibc-2.19/assert/assert.c", line 101, in __GI___assert_fail()

   File "/build/buildd/eglibc-2.19/assert/assert.c", line 92, in __assert_fail_base()

   File "/build/buildd/eglibc-2.19/stdlib/abort.c", line 89, in __GI_abort()

   File "/build/buildd/eglibc-2.19/signal/../nptl/sysdeps/unix/sysv/linux/raise.c", line 56, in __GI_raise()

   File unknown, in killpg()

   File "/home/thilina/Repos/csympy/src/teuchos/Teuchos_stacktrace.cpp", line 447, in loc_abort_callback_print_stack()
     Teuchos::show_stacktrace();