當前位置: 首頁>>代碼示例>>Golang>>正文


Golang FloatMatrix.SetAtUnsafe方法代碼示例

本文整理匯總了Golang中github.com/hrautila/cmat.FloatMatrix.SetAtUnsafe方法的典型用法代碼示例。如果您正苦於以下問題:Golang FloatMatrix.SetAtUnsafe方法的具體用法?Golang FloatMatrix.SetAtUnsafe怎麽用?Golang FloatMatrix.SetAtUnsafe使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在github.com/hrautila/cmat.FloatMatrix的用法示例。


在下文中一共展示了FloatMatrix.SetAtUnsafe方法的3個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。

示例1: bdQRzero

/*
 * Bidiagonal top to bottom implicit zero shift QR sweep
 */
func bdQRzero(D, E, Cr, Sr, Cl, Sl *cmat.FloatMatrix, saves bool) int {
	var d1, e1, d2, cosr, sinr, cosl, sinl, r float64
	N := D.Len()

	d1 = D.GetAtUnsafe(0)
	cosr = 1.0
	cosl = 1.0
	for k := 0; k < N-1; k++ {
		e1 = E.GetAtUnsafe(k)
		d2 = D.GetAtUnsafe(k + 1)
		cosr, sinr, r = ComputeGivens(d1*cosr, e1)
		if k > 0 {
			E.SetAtUnsafe(k-1, sinl*r)
		}
		cosl, sinl, r = ComputeGivens(cosl*r, sinr*d2)
		D.SetAtUnsafe(k, r)
		d1 = d2
		if saves {
			Cr.SetAtUnsafe(k, cosr)
			Sr.SetAtUnsafe(k, sinr)
			Cl.SetAtUnsafe(k, cosl)
			Sl.SetAtUnsafe(k, sinl)
		}
	}
	d2 = cosr * d2
	D.SetAtUnsafe(N-1, d2*cosl)
	E.SetAtUnsafe(N-2, d2*sinl)
	return N - 1
}
開發者ID:hrautila,項目名稱:gomas,代碼行數:32,代碼來源:iqr.go

示例2: bdQLsweep

/*
 * Bidiagonal bottom to top implicit QL sweep
 */
func bdQLsweep(D, E, Cr, Sr, Cl, Sl *cmat.FloatMatrix, f0, g0 float64, saves bool) int {
	var d1, e1, d2, e2, f, g, cosr, sinr, cosl, sinl, r float64
	N := D.Len()

	d1 = D.GetAtUnsafe(N - 1)
	e1 = E.GetAtUnsafe(N - 2)
	f = f0
	g = g0
	for k := N - 1; k > 0; k-- {
		d2 = D.GetAtUnsafe(k - 1)
		cosr, sinr, r = ComputeGivens(f, g)
		if k < N-1 {
			E.SetAt(k, r)
		}
		f, e1 = RotateGivens(d1, e1, cosr, sinr)
		g, d2 = RotateGivens(0.0, d2, cosr, sinr)
		cosl, sinl, r = ComputeGivens(f, g)
		d1 = r
		f, d2 = RotateGivens(e1, d2, cosl, sinl)
		if k > 1 {
			e2 = E.GetAtUnsafe(k - 2)
			g, e2 = RotateGivens(0.0, e2, cosl, sinl)
			E.SetAtUnsafe(k-2, e2)
		}
		D.SetAtUnsafe(k, d1)
		//D.SetAtUnsafe(k-1, d2)
		d1 = d2
		e1 = e2
		if saves {
			Cr.SetAtUnsafe(k-1, cosr)
			Sr.SetAtUnsafe(k-1, -sinr)
			Cl.SetAtUnsafe(k-1, cosl)
			Sl.SetAtUnsafe(k-1, -sinl)
		}
	}
	D.SetAtUnsafe(0, d1)
	E.SetAt(0, f)
	return N - 1
}
開發者ID:hrautila,項目名稱:gomas,代碼行數:42,代碼來源:iqr.go

示例3: trdQLsweep

/*
 * Tridiagonal bottom to top implicit QL sweep
 */
func trdQLsweep(D, E, Cr, Sr *cmat.FloatMatrix, f0, g0 float64, saves bool) int {
	var d0, e0, e1, d1, e0r, e0c, w0, f, g, cosr, sinr, r float64
	N := D.Len()

	d0 = D.GetAtUnsafe(N - 1)
	e0 = E.GetAtUnsafe(N - 2)
	f = f0
	g = g0
	for k := N - 1; k > 0; k-- {
		d1 = D.GetAtUnsafe(k - 1)
		cosr, sinr, r = ComputeGivens(f, g)
		if k < N-1 {
			E.SetAtUnsafe(k, r)
		}
		d0, e0c = RotateGivens(d0, e0, cosr, sinr)
		e0r, d1 = RotateGivens(e0, d1, cosr, sinr)
		d0, e0r = RotateGivens(d0, e0r, cosr, sinr)
		e0c, d1 = RotateGivens(e0c, d1, cosr, sinr)
		// here: e0c == e0r
		if k > 1 {
			e1 = E.GetAtUnsafe(k - 2)
			w0, e1 = RotateGivens(0.0, e1, cosr, sinr)
		}
		D.SetAtUnsafe(k, d0)
		d0 = d1
		e0 = e1
		f = e0r
		g = w0
		if saves {
			Cr.SetAtUnsafe(k-1, cosr)
			Sr.SetAtUnsafe(k-1, -sinr)
		}
	}
	D.SetAtUnsafe(0, d0)
	E.SetAtUnsafe(0, e0c)
	return N - 1
}
開發者ID:hrautila,項目名稱:gomas,代碼行數:40,代碼來源:iqr.go


注:本文中的github.com/hrautila/cmat.FloatMatrix.SetAtUnsafe方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。