extrapolation_test.go raw

   1  // SPDX-License-Identifier: Unlicense OR MIT
   2  
   3  package fling
   4  
   5  import "testing"
   6  
   7  func TestDecomposeQR(t *testing.T) {
   8  	A := &matrix{
   9  		rows: 3, cols: 3,
  10  		data: []float32{
  11  			12, 6, -4,
  12  			-51, 167, 24,
  13  			4, -68, -41,
  14  		},
  15  	}
  16  	Q, Rt, ok := decomposeQR(A)
  17  	if !ok {
  18  		t.Fatal("decomposeQR failed")
  19  	}
  20  	R := Rt.transpose()
  21  	QR := Q.mul(R)
  22  	if !A.approxEqual(QR) {
  23  		t.Log("A\n", A)
  24  		t.Log("Q\n", Q)
  25  		t.Log("R\n", R)
  26  		t.Log("QR\n", QR)
  27  		t.Fatal("Q*R not approximately equal to A")
  28  	}
  29  }
  30  
  31  func TestFit(t *testing.T) {
  32  	X := []float32{-1, 0, 1}
  33  	Y := []float32{2, 0, 2}
  34  
  35  	got, ok := polyFit(X, Y)
  36  	if !ok {
  37  		t.Fatal("polyFit failed")
  38  	}
  39  	want := coefficients{0, 0, 2}
  40  	if !got.approxEqual(want) {
  41  		t.Fatalf("polyFit: got %v want %v", got, want)
  42  	}
  43  }
  44