diff --git a/src/AI-LinearAlgebra-Tests/AIDiagonalMatrixTest.class.st b/src/AI-LinearAlgebra-Tests/AIDiagonalMatrixTest.class.st index 5d4b841..57a2ccc 100644 --- a/src/AI-LinearAlgebra-Tests/AIDiagonalMatrixTest.class.st +++ b/src/AI-LinearAlgebra-Tests/AIDiagonalMatrixTest.class.st @@ -27,3 +27,18 @@ AIDiagonalMatrixTest >> testDimension [ self assert: m columnSize equals: 5. ] + +{ #category : #tests } +AIDiagonalMatrixTest >> testproductFromDiagonalMatrix [ + + + | aDiagonalMatrix aRowMatrix| + aDiagonalMatrix := AIDiagonalMatrix withDiagonal: #(1 2). + aRowMatrix := AIRowMatrix new rows: #( #(5 3) #(3 2)). + aDiagonalMatrix := aDiagonalMatrix * aRowMatrix. + self assert: (aDiagonalMatrix at: 1 and: 1) equals: 5. + self assert: (aDiagonalMatrix at: 1 and: 2) equals: 0. + self assert: (aDiagonalMatrix at: 2 and: 1) equals: 0. + self assert: (aDiagonalMatrix at: 2 and: 2) equals: 4. + +] diff --git a/src/AI-LinearAlgebra/AIDiagonalMatrix.class.st b/src/AI-LinearAlgebra/AIDiagonalMatrix.class.st index cc5ac09..c1cdb96 100644 --- a/src/AI-LinearAlgebra/AIDiagonalMatrix.class.st +++ b/src/AI-LinearAlgebra/AIDiagonalMatrix.class.st @@ -23,6 +23,14 @@ AIDiagonalMatrix class >> withDiagonal: vector [ ^newMatrix ] +{ #category : #arithmetic } +AIDiagonalMatrix >> * aMatrixOrNumber [ + + + + ^ aMatrixOrNumber productFromDiagonalMatrix: self. +] + { #category : #accessing } AIDiagonalMatrix >> at: row and: column [ diff --git a/src/AI-LinearAlgebra/AIMatrix.class.st b/src/AI-LinearAlgebra/AIMatrix.class.st index 8a54ce6..24ba4b7 100644 --- a/src/AI-LinearAlgebra/AIMatrix.class.st +++ b/src/AI-LinearAlgebra/AIMatrix.class.st @@ -743,6 +743,15 @@ AIMatrix >> printOn: aStream [ aStream nextPut: $) ] +{ #category : #'double dispatching' } +AIMatrix >> productFromDiagonalMatrix: aDiagonalMatrix [ + + 1 to: aDiagonalMatrix rowSize do: [:i| + aDiagonalMatrix at: i and: i put: (aDiagonalMatrix at:i and: i)*(self at: i and: i ) ]. + + ^aDiagonalMatrix +] + { #category : #'double dispatching' } AIMatrix >> productFromDouble: aNumber [