Data commit

This commit is contained in:
Ingy döt Net 2023-07-01 11:58:00 -04:00
parent 7387c8f97b
commit cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions

View file

@ -0,0 +1,52 @@
package main
import (
"fmt"
"permute"
)
func determinant(m [][]float64) (d float64) {
p := make([]int, len(m))
for i := range p {
p[i] = i
}
it := permute.Iter(p)
for s := it(); s != 0; s = it() {
pr := 1.
for i, σ := range p {
pr *= m[i][σ]
}
d += float64(s) * pr
}
return
}
func permanent(m [][]float64) (d float64) {
p := make([]int, len(m))
for i := range p {
p[i] = i
}
it := permute.Iter(p)
for s := it(); s != 0; s = it() {
pr := 1.
for i, σ := range p {
pr *= m[i][σ]
}
d += pr
}
return
}
var m2 = [][]float64{
{1, 2},
{3, 4}}
var m3 = [][]float64{
{2, 9, 4},
{7, 5, 3},
{6, 1, 8}}
func main() {
fmt.Println(determinant(m2), permanent(m2))
fmt.Println(determinant(m3), permanent(m3))
}

View file

@ -0,0 +1,44 @@
package main
import "fmt"
func main() {
fmt.Println(ryser([][]float64{
{1, 2},
{3, 4}}))
fmt.Println(ryser([][]float64{
{2, 9, 4},
{7, 5, 3},
{6, 1, 8}}))
}
func ryser(m [][]float64) (d float64) {
gray := 0
csum := make([]float64, len(m))
sgn := float64(len(m)&1<<1 - 1)
n2 := uint32(1) << uint(len(m))
for i := uint32(1); i < n2; i++ {
r := [...]byte{
0, 1, 28, 2, 29, 14, 24, 3, 30, 22, 20, 15, 25, 17, 4, 8,
31, 27, 13, 23, 21, 19, 16, 7, 26, 12, 18, 6, 11, 5, 10, 9,
}[i&-i*0x077CB531>>27]
b := 1 << r
if gray&b == 0 {
for c, e := range m[r] {
csum[c] += e
}
} else {
for c, e := range m[r] {
csum[c] -= e
}
}
gray ^= b
p := sgn
for _, e := range csum {
p *= e
}
d += p
sgn = -sgn
}
return
}

View file

@ -0,0 +1,17 @@
package main
import (
"fmt"
"github.com/skelterjohn/go.matrix"
)
func main() {
fmt.Println(matrix.MakeDenseMatrixStacked([][]float64{
{1, 2},
{3, 4}}).Det())
fmt.Println(matrix.MakeDenseMatrixStacked([][]float64{
{2, 9, 4},
{7, 5, 3},
{6, 1, 8}}).Det())
}

View file

@ -0,0 +1,17 @@
package main
import (
"fmt"
"gonum.org/v1/gonum/mat"
)
func main() {
fmt.Println(mat.Det(mat.NewDense(2, 2, []float64{
1, 2,
3, 4})))
fmt.Println(mat.Det(mat.NewDense(3, 3, []float64{
2, 9, 4,
7, 5, 3,
6, 1, 8})))
}