# [Maxima] internal arithmetic

Barton Willis willisb at unk.edu
Fri Nov 7 06:52:57 CST 2008

```-----Alexandru Cardaniuc <cardaniuc at gmail.com> wrote: -----

>Does linsolve_by_lu solve it using LU decomposition?

Yes, linsolve_by_lu uses the LU factorization. For IEEE double float
or bigfloat numbers, the LU factorization uses partial pivoting (see
the user documentation for lu_factor); examples

(%i70) linsolve_by_lu(matrix([6,8],[1,2]), matrix([1],[1/9]),
'bigfloatfield), fpprec : 25;
(%o70) [matrix
([2.777777777777777777777778b-1],[-8.333333333333333333333334b-2]),35.38888888888889]

(%i71) linsolve_by_lu(matrix([6,8],[1,2]), matrix([1],[1/9]), 'floatfield);
(%o71) [matrix([0.27777777777778],[-0.083333333333333]),35.38888888888888]

>I can't find the description of the function.

The function linsolve_by_lu is undocumented. This bug has been reported.

>Does linsolve use Gaussian Elimination to solve system of linear
>equations? So, is it possible to force linsolve to use floating point
arithmetic
>calculations with limited precision?

I don't know the answer to either question. Linsolve doesn't fully observe
the keepfloat flag:

(%i76) linsolve([6.7 * x + 8.9*y = 1.2, 8.1 * x - y = 42.0],[x,y]),
keepfloat : true;
(%o76) [x=373/78,y=-271/78]

(And there is no keepfloat flag for big floats.)

If you need to solve linear equations using floats for big floats, I
suggest you try linsolve_by_lu.
I'll try to fix the missing documentation before the next Maxima version.

Barton

```