added rational numbers
This commit is contained in:
@@ -1,7 +1,8 @@
|
||||
from random import initRand, rand
|
||||
from nwo/utils import `...`
|
||||
from mmath/rational import newRational, Rational, one, zero, abs, `>`, `<`, `==`, `*`, `+`, `-`, `/`, `/=`, `+=`, `sqrt`
|
||||
from mmath/hmatrix import det, lu, from_pivot, newHMatrix, HMatrix, lu_det, invert, identity,
|
||||
clone, tril, triu, lu_solve, `*`, `-`, `+`, `+=`, `-=`, `==`, norm2, transpose, lup
|
||||
clone, tril, triu, lu_solve, `*`, `-`, `+`, `+=`, `-=`, `==`, norm2, transpose, lup, squared_norm2
|
||||
from mmath/hvector import buildHVector, newHVector, `-`, abs, norm
|
||||
import unittest
|
||||
|
||||
@@ -58,16 +59,16 @@ suite "Nim linear algebra library":
|
||||
|
||||
test "LU decomposition":
|
||||
var rng = initRand(101325)
|
||||
var arr : array[0..(25 - 1), float32]
|
||||
var arr : array[0..(25 - 1), Rational[int64]]
|
||||
for i in 0..<arr.len:
|
||||
arr[i] = rng.rand(-4f32..4f32)
|
||||
let mtx = newHMatrix[float32](5, 5, arr)
|
||||
arr[i] = newRational(rng.rand(-20..20).int64, 20.int64)
|
||||
let mtx = newHMatrix[Rational[int64]](5, 5, arr)
|
||||
var lu = mtx.clone()
|
||||
let pivot = lu.lup()
|
||||
let l = lu.tril(1.0)
|
||||
let l = lu.tril(Rational[int64].one)
|
||||
let u = lu.triu()
|
||||
let err = pivot * mtx - (l * u)
|
||||
check(err.norm2() < 1e-5)
|
||||
check(err.squared_norm2() == Rational[int64].zero)
|
||||
|
||||
test "Linear system solve":
|
||||
var rng = initRand(101325)
|
||||
|
Reference in New Issue
Block a user