1// Copyright ©2015 The Gonum Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style 3// license that can be found in the LICENSE file. 4 5package mat 6 7import "gonum.org/v1/gonum/blas/blas64" 8 9func asBasicMatrix(d *Dense) *basicMatrix { return (*basicMatrix)(d) } 10func asBasicVector(d *VecDense) *basicVector { return (*basicVector)(d) } 11func asBasicSymmetric(s *SymDense) *basicSymmetric { return (*basicSymmetric)(s) } 12func asBasicTriangular(t *TriDense) *basicTriangular { return (*basicTriangular)(t) } 13func asBasicBanded(b *BandDense) *basicBanded { return (*basicBanded)(b) } 14func asBasicSymBanded(s *SymBandDense) *basicSymBanded { return (*basicSymBanded)(s) } 15func asBasicTriBanded(t *TriBandDense) *basicTriBanded { return (*basicTriBanded)(t) } 16func asBasicDiagonal(d *DiagDense) *basicDiagonal { return (*basicDiagonal)(d) } 17 18type basicMatrix Dense 19 20var _ Matrix = &basicMatrix{} 21 22func (m *basicMatrix) At(r, c int) float64 { return (*Dense)(m).At(r, c) } 23func (m *basicMatrix) Dims() (r, c int) { return (*Dense)(m).Dims() } 24func (m *basicMatrix) T() Matrix { return Transpose{m} } 25 26type basicVector VecDense 27 28var _ Vector = &basicVector{} 29 30func (v *basicVector) At(r, c int) float64 { return (*VecDense)(v).At(r, c) } 31func (v *basicVector) Dims() (r, c int) { return (*VecDense)(v).Dims() } 32func (v *basicVector) T() Matrix { return Transpose{v} } 33func (v *basicVector) AtVec(i int) float64 { return (*VecDense)(v).AtVec(i) } 34func (v *basicVector) Len() int { return (*VecDense)(v).Len() } 35 36type rawVector struct { 37 *basicVector 38} 39 40func (v *rawVector) RawVector() blas64.Vector { 41 return v.basicVector.mat 42} 43 44type basicSymmetric SymDense 45 46var _ Symmetric = &basicSymmetric{} 47 48func (m *basicSymmetric) At(r, c int) float64 { return (*SymDense)(m).At(r, c) } 49func (m *basicSymmetric) Dims() (r, c int) { return (*SymDense)(m).Dims() } 50func (m *basicSymmetric) T() Matrix { return m } 51func (m *basicSymmetric) Symmetric() int { return (*SymDense)(m).Symmetric() } 52 53type basicTriangular TriDense 54 55var _ Triangular = &basicTriangular{} 56 57func (m *basicTriangular) At(r, c int) float64 { return (*TriDense)(m).At(r, c) } 58func (m *basicTriangular) Dims() (r, c int) { return (*TriDense)(m).Dims() } 59func (m *basicTriangular) T() Matrix { return Transpose{m} } 60func (m *basicTriangular) Triangle() (int, TriKind) { return (*TriDense)(m).Triangle() } 61func (m *basicTriangular) TTri() Triangular { return TransposeTri{m} } 62 63type basicBanded BandDense 64 65var _ Banded = &basicBanded{} 66 67func (m *basicBanded) At(r, c int) float64 { return (*BandDense)(m).At(r, c) } 68func (m *basicBanded) Dims() (r, c int) { return (*BandDense)(m).Dims() } 69func (m *basicBanded) T() Matrix { return Transpose{m} } 70func (m *basicBanded) Bandwidth() (kl, ku int) { return (*BandDense)(m).Bandwidth() } 71func (m *basicBanded) TBand() Banded { return TransposeBand{m} } 72 73type basicSymBanded SymBandDense 74 75var _ SymBanded = &basicSymBanded{} 76 77func (m *basicSymBanded) At(r, c int) float64 { return (*SymBandDense)(m).At(r, c) } 78func (m *basicSymBanded) Dims() (r, c int) { return (*SymBandDense)(m).Dims() } 79func (m *basicSymBanded) T() Matrix { return m } 80func (m *basicSymBanded) Bandwidth() (kl, ku int) { return (*SymBandDense)(m).Bandwidth() } 81func (m *basicSymBanded) TBand() Banded { return m } 82func (m *basicSymBanded) Symmetric() int { return (*SymBandDense)(m).Symmetric() } 83func (m *basicSymBanded) SymBand() (n, k int) { return (*SymBandDense)(m).SymBand() } 84 85type basicTriBanded TriBandDense 86 87var _ TriBanded = &basicTriBanded{} 88 89func (m *basicTriBanded) At(r, c int) float64 { return (*TriBandDense)(m).At(r, c) } 90func (m *basicTriBanded) Dims() (r, c int) { return (*TriBandDense)(m).Dims() } 91func (m *basicTriBanded) T() Matrix { return Transpose{m} } 92func (m *basicTriBanded) Triangle() (int, TriKind) { return (*TriBandDense)(m).Triangle() } 93func (m *basicTriBanded) TTri() Triangular { return TransposeTri{m} } 94func (m *basicTriBanded) Bandwidth() (kl, ku int) { return (*TriBandDense)(m).Bandwidth() } 95func (m *basicTriBanded) TBand() Banded { return TransposeBand{m} } 96func (m *basicTriBanded) TriBand() (n, k int, kind TriKind) { return (*TriBandDense)(m).TriBand() } 97func (m *basicTriBanded) TTriBand() TriBanded { return TransposeTriBand{m} } 98 99type basicDiagonal DiagDense 100 101var _ Diagonal = &basicDiagonal{} 102 103func (m *basicDiagonal) At(r, c int) float64 { return (*DiagDense)(m).At(r, c) } 104func (m *basicDiagonal) Dims() (r, c int) { return (*DiagDense)(m).Dims() } 105func (m *basicDiagonal) T() Matrix { return Transpose{m} } 106func (m *basicDiagonal) Diag() int { return (*DiagDense)(m).Diag() } 107func (m *basicDiagonal) Symmetric() int { return (*DiagDense)(m).Symmetric() } 108func (m *basicDiagonal) SymBand() (n, k int) { return (*DiagDense)(m).SymBand() } 109func (m *basicDiagonal) Bandwidth() (kl, ku int) { return (*DiagDense)(m).Bandwidth() } 110func (m *basicDiagonal) TBand() Banded { return TransposeBand{m} } 111func (m *basicDiagonal) Triangle() (int, TriKind) { return (*DiagDense)(m).Triangle() } 112func (m *basicDiagonal) TTri() Triangular { return TransposeTri{m} } 113func (m *basicDiagonal) TriBand() (n, k int, kind TriKind) { return (*DiagDense)(m).TriBand() } 114func (m *basicDiagonal) TTriBand() TriBanded { return TransposeTriBand{m} } 115