#!/usr/local/cpython-3.5/bin/python3

'''Simple linear algebra test'''

from __future__ import print_function

import numpy
import sympy
import mpmath

def main():
    '''Main function'''
    # Solve the system of equations 3 * x0 + x1 = 9 and x0 + 2 * x1 = 8
    # Solve the system of equations #19, page 564
    # 9L + 3 = c
    # 7L + 19 = c
    #
    # 9L - c = -3
    # 7L - c = -19
    left = numpy.array([[9, -1], [7, -1]])
    right = numpy.array([-3, -19])
    result = numpy.linalg.solve(left, right)
    print('left:\n', left)
    print('right:\n', right)
    print('result:\n', result)
    # [  8.  75.]
    # L = 8
    # c = 75

    L, c = sympy.symbols('L c') # pylint: disable=invalid-name
    eq1 = sympy.Eq(9*L + 3, c)
    eq2 = sympy.Eq(7*L + 19, c)
    print(sympy.linsolve([eq1, eq2], [L, c]))
    # {(8, 75)}

    x = sympy.symbols('x') # pylint: disable=invalid-name
    eq3 = sympy.Eq(x**2, 2.0)
    print(sympy.solve([eq3], x))

    one_third = sympy.Integer(1) / sympy.Integer(3)
    print(one_third.evalf(100))
    print(sympy.pi.evalf(1000))
    mpmath.mp.dps = 1000
    print(mpmath.e)

main()