Matrix3_3.st
author Claus Gittinger <cg@exept.de>
Wed, 21 Aug 2019 23:06:23 +0200
changeset 5136 761208260bf6
parent 5111 ab3d7db395d2
child 5389 72cf3b22ba0f
permissions -rw-r--r--
#DOCUMENTATION by exept class: Matrix3_3 comment/format in: #_at:at: #_at:at:put:
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
5111
ab3d7db395d2 #DOCUMENTATION by exept
Claus Gittinger <cg@exept.de>
parents: 5087
diff changeset
     1
"{ Encoding: utf8 }"
ab3d7db395d2 #DOCUMENTATION by exept
Claus Gittinger <cg@exept.de>
parents: 5087
diff changeset
     2
5087
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
"{ Package: 'stx:libbasic2' }"
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
"{ NameSpace: Smalltalk }"
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
SquareMatrix variableSubclass:#Matrix3_3
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
	instanceVariableNames:''
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
	classVariableNames:''
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
	poolDictionaries:''
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
	category:'Collections-MultiDimensional'
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
!
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
!Matrix3_3 class methodsFor:'documentation'!
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
documentation
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
"
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
    3x3 Matrix (2 dimensions).
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
    Especially useful with the ArrayIndexing-Parser extension.
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
    [author:]
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
        Claus Gittinger (cg@sinir)
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
    [instance variables:]
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
    [class variables:]
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
    [see also:]
5111
ab3d7db395d2 #DOCUMENTATION by exept
Claus Gittinger <cg@exept.de>
parents: 5087
diff changeset
    29
        MatrixAccessor
5087
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
"
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
! !
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
!Matrix3_3 class methodsFor:'instance creation'!
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
new
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
    ^ self basicNew:3*3
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
! !
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
!Matrix3_3 methodsFor:'accessing'!
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
_at:index1 at:index2
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
    "this is a synthetic selector, generated by the compiler,
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
     if a construct of the form expr[idx...] is parsed.
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
     I.e. 
5136
761208260bf6 #DOCUMENTATION by exept
Claus Gittinger <cg@exept.de>
parents: 5111
diff changeset
    45
        foo[n][m]
5087
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
     generates
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
        foo _at:n at:m
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
    "
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
    |idx|
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
    (index1 between:1 and:3) ifFalse:[self subscriptBoundsError:index1].
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
    (index2 between:1 and:3) ifFalse:[self subscriptBoundsError:index2].
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
    idx := index1 * 3 - 3 + index2.
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
    ^ self basicAt:idx.
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
!
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
_at:index1 at:index2 put:value
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
    "this is a synthetic selector, generated by the compiler,
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
     if a construct of the form expr[idx...] := val is parsed.
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
     I.e. 
5136
761208260bf6 #DOCUMENTATION by exept
Claus Gittinger <cg@exept.de>
parents: 5111
diff changeset
    62
        foo[n][m] := val
5087
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
     generates
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
        foo _at:n at:m put:val
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
    "
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
    |idx|
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
    (index1 between:1 and:3) ifFalse:[self subscriptBoundsError:index1].
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
    (index2 between:1 and:3) ifFalse:[self subscriptBoundsError:index2].
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
    idx := index1 * 3 - 3 + index2.
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
    ^ self basicAt:idx put:value.
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
! !
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
!Matrix3_3 methodsFor:'matrix operations'!
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
determinantByCofactors
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
    "Answer the determinant of this matrix."
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
    ^ ((self _at: 1 at: 1) * (((self _at: 2 at: 2)*(self _at: 3 at: 3)) - ((self _at: 3 at: 2)*(self _at: 2 at: 3)))) -
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
      ((self _at: 1 at: 2) * (((self _at: 2 at: 1)*(self _at: 3 at: 3)) - ((self _at: 3 at: 1)*(self _at: 2 at: 3)))) +
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
      ((self _at: 1 at: 3) * (((self _at: 2 at: 1)*(self _at: 3 at: 2)) - ((self _at: 3 at: 1)*(self _at: 2 at: 2)))).
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
! !
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
!Matrix3_3 class methodsFor:'documentation'!
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
version_CVS
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
    ^ '$Header$'
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
! !
2d85f44acc3e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90