本文整理匯總了Golang中github.com/henrylee2cn/algorithm/matrix.FloatMatrix.AllClose方法的典型用法代碼示例。如果您正苦於以下問題:Golang FloatMatrix.AllClose方法的具體用法?Golang FloatMatrix.AllClose怎麽用?Golang FloatMatrix.AllClose使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類github.com/henrylee2cn/algorithm/matrix.FloatMatrix
的用法示例。
在下文中一共展示了FloatMatrix.AllClose方法的6個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: runCheck
// single invocation for matops and lapack functions
func runCheck(A *matrix.FloatMatrix, LB int) (bool, time.Duration, time.Duration) {
var flags matops.Flags
N := A.Rows()
ipiv := make([]int, N, N)
ipiv0 := make([]int32, N, N)
flags = matops.LOWER
lopt := linalg.OptLower
if testUpper {
flags = matops.UPPER
lopt = linalg.OptUpper
}
W := matrix.FloatZeros(A.Rows(), LB+2)
fnc := func() {
_, ERRmatops = matops.DecomposeBK(A, W, ipiv, flags, LB)
}
if verbose && N < 10 {
fmt.Fprintf(os.Stderr, "A start:\n%v\n", A)
}
A0 := A.Copy()
mperf.FlushCache()
time0 := mperf.Timeit(fnc)
if verbose && N < 10 {
fmt.Fprintf(os.Stderr, "ipiv:%v\n", ipiv)
fmt.Fprintf(os.Stderr, "A end:\n%v\n", A)
}
fn2 := func() {
ERRlapack = lapack.Sytrf(A0, ipiv0, lopt)
}
if verbose && N < 10 {
fmt.Fprintf(os.Stderr, "A0 start:\n%v\n", A0)
}
mperf.FlushCache()
time2 := mperf.Timeit(fn2)
if verbose && N < 10 {
fmt.Fprintf(os.Stderr, "ipiv0:%v\n", ipiv0)
fmt.Fprintf(os.Stderr, "A0 end:\n%v\n", A0)
}
// now A == A0 && ipiv == ipiv0
ok := A.AllClose(A0)
okip := checkIPIV(ipiv, ipiv0)
if !ok || !okip {
// save result to globals
Rlapack = A0
Rmatops = A
IPIVlapack = ipiv0
IPIVmatops = ipiv
}
return ok && okip, time0, time2
}
示例2: runCheck
// single invocation for matops and lapack functions
func runCheck(A *matrix.FloatMatrix, LB int) (bool, time.Duration, time.Duration) {
M := A.Rows()
N := A.Cols()
nN := N
if M < N {
nN = M
}
ipiv := make([]int, nN, nN)
ipiv0 := make([]int32, nN, nN)
fnc := func() {
_, ERRmatops = matops.DecomposeLU(A, ipiv, LB)
}
if verbose && N < 10 {
fmt.Fprintf(os.Stderr, "A start:\n%v\n", A)
}
A0 := A.Copy()
mperf.FlushCache()
time0 := mperf.Timeit(fnc)
if verbose && N < 10 {
fmt.Fprintf(os.Stderr, "A end:\n%v\n", A)
fmt.Fprintf(os.Stderr, "ipiv:%v\n", ipiv)
}
fn2 := func() {
ERRlapack = lapack.Getrf(A0, ipiv0)
}
if verbose && N < 10 {
fmt.Fprintf(os.Stderr, "A0 start:\n%v\n", A0)
}
mperf.FlushCache()
time2 := mperf.Timeit(fn2)
if verbose && N < 10 {
fmt.Fprintf(os.Stderr, "A0 end:\n%v\n", A0)
fmt.Fprintf(os.Stderr, "ipiv0:%v\n", ipiv0)
}
// now A == A0 && ipiv == ipiv0
ok := A.AllClose(A0)
okip := checkIPIV(ipiv, ipiv0)
_ = okip
if !ok || !okip {
// save result to globals
Rlapack = A0
Rmatops = A
IPIVlapack = ipiv0
IPIVmatops = ipiv
}
return ok && okip, time0, time2
}
示例3: trmmTest
func trmmTest(t *testing.T, A *matrix.FloatMatrix, flags Flags, nb int) bool {
var B0 *matrix.FloatMatrix
N := A.Cols()
S := 0
E := A.Cols()
side := linalg.OptLeft
if flags&RIGHT != 0 {
B0 = matrix.FloatWithValue(2, A.Rows(), 2.0)
side = linalg.OptRight
E = B0.Rows()
} else {
B0 = matrix.FloatWithValue(A.Rows(), 2, 2.0)
E = B0.Cols()
}
B1 := B0.Copy()
trans := linalg.OptNoTrans
if flags&TRANSA != 0 {
trans = linalg.OptTransA
}
diag := linalg.OptNonUnit
if flags&UNIT != 0 {
diag = linalg.OptUnit
}
uplo := linalg.OptUpper
if flags&LOWER != 0 {
uplo = linalg.OptLower
}
blas.TrmmFloat(A, B0, 1.0, uplo, diag, trans, side)
if A.Rows() < 8 {
//t.Logf("..A\n%v\n", A)
t.Logf(" BLAS B0:\n%v\n", B0)
}
Ar := A.FloatArray()
Br := B1.FloatArray()
if nb != 0 {
DTrmmBlk(Br, Ar, 1.0, flags, B1.LeadingIndex(), A.LeadingIndex(),
N, S, E, nb)
} else {
DTrmmUnblk(Br, Ar, 1.0, flags, B1.LeadingIndex(), A.LeadingIndex(),
N, S, E, 0)
}
result := B0.AllClose(B1)
t.Logf(" B0 == B1: %v\n", result)
if A.Rows() < 8 {
t.Logf(" DTrmm B1:\n%v\n", B1)
}
return result
}
示例4: runCheck
// single invocation for matops and lapack functions
func runCheck(A *matrix.FloatMatrix, LB int) (bool, time.Duration, time.Duration) {
var W *matrix.FloatMatrix = nil
N := A.Cols()
tau := matrix.FloatZeros(N, 1)
if LB > 0 {
W = matrix.FloatZeros(A.Rows(), LB)
}
fnc := func() {
_, ERRmatops = matops.DecomposeQR(A, tau, W, LB)
}
if verbose && N < 10 {
fmt.Fprintf(os.Stderr, "A start:\n%v\n", A)
}
A0 := A.Copy()
tau0 := tau.Copy()
mperf.FlushCache()
time0 := mperf.Timeit(fnc)
if verbose && N < 10 {
fmt.Fprintf(os.Stderr, "A end:\n%v\n", A)
tau.SetSize(1, N, 1)
fmt.Fprintf(os.Stderr, "tau: %v\n", tau)
}
fn2 := func() {
ERRlapack = lapack.Geqrf(A0, tau0)
}
mperf.FlushCache()
time2 := mperf.Timeit(fn2)
if verbose && N < 10 {
fmt.Fprintf(os.Stderr, "A0 end:\n%v\n", A0)
tau0.SetSize(1, N, 1) // row vector
fmt.Fprintf(os.Stderr, "tau0: %v\n", tau0)
}
// now A == A0 && tau == tau0
ok := A.AllClose(A0)
oktau := tau.AllClose(tau0)
if !ok || !oktau {
// save result to globals
Rlapack = A0
Rmatops = A
TAUlapack = tau0
TAUmatops = tau
}
return ok && oktau, time0, time2
}
示例5: runCheck
// single invocation for matops and lapack functions
func runCheck(A *matrix.FloatMatrix, LB int) (bool, time.Duration, time.Duration) {
var flags matops.Flags
N := A.Rows()
flags = matops.LOWER
lopt := linalg.OptLower
if testUpper {
flags = matops.UPPER
lopt = linalg.OptUpper
}
fnc := func() {
_, ERRmatops = matops.DecomposeCHOL(A, flags, LB)
}
if verbose && N < 10 {
fmt.Fprintf(os.Stderr, "A start:\n%v\n", A)
}
A0 := A.Copy()
mperf.FlushCache()
time0 := mperf.Timeit(fnc)
if verbose && N < 10 {
fmt.Fprintf(os.Stderr, "A end:\n%v\n", A)
}
fn2 := func() {
ERRlapack = lapack.Potrf(A0, lopt)
}
if verbose && N < 10 {
fmt.Fprintf(os.Stderr, "A0 start:\n%v\n", A0)
}
mperf.FlushCache()
time2 := mperf.Timeit(fn2)
if verbose && N < 10 {
fmt.Fprintf(os.Stderr, "A0 end:\n%v\n", A0)
}
// now A == A0 && ipiv == ipiv0
ok := A.AllClose(A0)
if !ok {
// save result to globals
Rlapack = A0
Rmatops = A
}
return ok, time0, time2
}
示例6: TestQRT
func TestQRT(t *testing.T) {
M := 6
N := 5
var Tau matrix.FloatMatrix
A := matrix.FloatUniform(M, N)
T := matrix.FloatZeros(A.Cols(), A.Cols())
T0 := T.Copy()
X, _ := DecomposeQRT(A.Copy(), T, nil, 0)
Tau.DiagOf(T)
Tau0 := matrix.FloatZeros(M, 1)
A0 := A.Copy()
lapack.Geqrf(A0, Tau0)
ok := X.AllClose(A0)
okt := Tau.AllClose(Tau0)
t.Logf("lapack QR == DecomposeQR: %v\n", ok && okt)
if !ok || !okt {
t.Logf("A0: %d, %d, %d\n", A0.Rows(), A0.Cols(), A0.LeadingIndex())
t.Logf("A\n%v\n", A)
t.Logf("X\n%v\n", X)
t.Logf("Tau\n%v\n", &Tau)
t.Logf("lapack X\n%v\n", A0)
t.Logf("lapack Tau\n%v\n", Tau0)
}
// build block reflectors
//unblkQRBlockReflector(X, Tau, T)
V := TriLU(A0.Copy())
lapack.LarftFloat(V, Tau0, T0)
ok = T0.AllClose(T)
t.Logf("lapack.dlarft == QRBlockReflector: %v\n", ok)
if !ok {
t.Logf("T:\n%v\n", T)
t.Logf("lapack T0:\n%v\n", T0)
}
}