go issue6866 源码

  • 2022-07-15
  • 浏览 (809)

golang issue6866 代码

文件路径:/test/fixedbugs/issue6866.go

// run

// Copyright 2015 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// WARNING: GENERATED FILE - DO NOT MODIFY MANUALLY!
// (To generate, in go/types directory: go test -run=Hilbert -H=2 -out="h2.src")

// This program tests arbitrary precision constant arithmetic
// by generating the constant elements of a Hilbert matrix H,
// its inverse I, and the product P = H*I. The product should
// be the identity matrix.
package main

func main() {
	if !ok {
		print()
		return
	}
}

// Hilbert matrix, n = 2
const (
	h0_0, h0_1 = 1.0 / (iota + 1), 1.0 / (iota + 2)
	h1_0, h1_1
)

// Inverse Hilbert matrix
const (
	i0_0 = +1 * b2_1 * b2_1 * b0_0 * b0_0
	i0_1 = -2 * b2_0 * b3_1 * b1_0 * b1_0

	i1_0 = -2 * b3_1 * b2_0 * b1_1 * b1_1
	i1_1 = +3 * b3_0 * b3_0 * b2_1 * b2_1
)

// Product matrix
const (
	p0_0 = h0_0*i0_0 + h0_1*i1_0
	p0_1 = h0_0*i0_1 + h0_1*i1_1

	p1_0 = h1_0*i0_0 + h1_1*i1_0
	p1_1 = h1_0*i0_1 + h1_1*i1_1
)

// Verify that product is identity matrix
const ok = p0_0 == 1 && p0_1 == 0 &&
	p1_0 == 0 && p1_1 == 1 &&
	true

func print() {
	println(p0_0, p0_1)
	println(p1_0, p1_1)
}

// Binomials
const (
	b0_0 = f0 / (f0 * f0)

	b1_0 = f1 / (f0 * f1)
	b1_1 = f1 / (f1 * f0)

	b2_0 = f2 / (f0 * f2)
	b2_1 = f2 / (f1 * f1)
	b2_2 = f2 / (f2 * f0)

	b3_0 = f3 / (f0 * f3)
	b3_1 = f3 / (f1 * f2)
	b3_2 = f3 / (f2 * f1)
	b3_3 = f3 / (f3 * f0)
)

// Factorials
const (
	f0 = 1
	f1 = 1
	f2 = f1 * 2
	f3 = f2 * 3
)

相关信息

go 源码目录

相关文章

go bug000 源码

go bug002 源码

go bug003 源码

go bug004 源码

go bug005 源码

go bug006 源码

go bug007 源码

go bug008 源码

go bug009 源码

go bug010 源码

0  赞