Matrix2_2.st
author Stefan Vogel <sv@exept.de>
Wed, 08 Apr 2020 19:02:35 +0200
changeset 5473 de911f462862
parent 5379 9f07dbcb8d23
permissions -rw-r--r--
*** empty log message ***
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
5110
62c8c705d461 #DOCUMENTATION by exept
Claus Gittinger <cg@exept.de>
parents: 5086
diff changeset
     1
"{ Encoding: utf8 }"
62c8c705d461 #DOCUMENTATION by exept
Claus Gittinger <cg@exept.de>
parents: 5086
diff changeset
     2
5379
9f07dbcb8d23 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 5135
diff changeset
     3
"
9f07dbcb8d23 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 5135
diff changeset
     4
 COPYRIGHT (c) 2018 by eXept Software AG
9f07dbcb8d23 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 5135
diff changeset
     5
              All Rights Reserved
9f07dbcb8d23 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 5135
diff changeset
     6
9f07dbcb8d23 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 5135
diff changeset
     7
 This software is furnished under a license and may be used
9f07dbcb8d23 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 5135
diff changeset
     8
 only in accordance with the terms of that license and with the
9f07dbcb8d23 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 5135
diff changeset
     9
 inclusion of the above copyright notice.   This software may not
9f07dbcb8d23 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 5135
diff changeset
    10
 be provided or otherwise made available to, or used by, any
9f07dbcb8d23 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 5135
diff changeset
    11
 other person.  No title to or ownership of the software is
9f07dbcb8d23 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 5135
diff changeset
    12
 hereby transferred.
9f07dbcb8d23 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 5135
diff changeset
    13
"
5086
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
"{ Package: 'stx:libbasic2' }"
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
"{ NameSpace: Smalltalk }"
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
SquareMatrix variableSubclass:#Matrix2_2
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
	instanceVariableNames:''
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
	classVariableNames:''
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
	poolDictionaries:''
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
	category:'Collections-MultiDimensional'
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
!
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
!Matrix2_2 class methodsFor:'documentation'!
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
5379
9f07dbcb8d23 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 5135
diff changeset
    27
copyright
9f07dbcb8d23 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 5135
diff changeset
    28
"
9f07dbcb8d23 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 5135
diff changeset
    29
 COPYRIGHT (c) 2018 by eXept Software AG
9f07dbcb8d23 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 5135
diff changeset
    30
              All Rights Reserved
9f07dbcb8d23 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 5135
diff changeset
    31
9f07dbcb8d23 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 5135
diff changeset
    32
 This software is furnished under a license and may be used
9f07dbcb8d23 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 5135
diff changeset
    33
 only in accordance with the terms of that license and with the
9f07dbcb8d23 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 5135
diff changeset
    34
 inclusion of the above copyright notice.   This software may not
9f07dbcb8d23 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 5135
diff changeset
    35
 be provided or otherwise made available to, or used by, any
9f07dbcb8d23 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 5135
diff changeset
    36
 other person.  No title to or ownership of the software is
9f07dbcb8d23 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 5135
diff changeset
    37
 hereby transferred.
9f07dbcb8d23 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 5135
diff changeset
    38
"
9f07dbcb8d23 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 5135
diff changeset
    39
!
9f07dbcb8d23 #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 5135
diff changeset
    40
5086
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
documentation
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
"
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
    2x2 Matrix (2 dimensions).
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
    Especially useful with the ArrayIndexing-Parser extension.
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
    [author:]
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
        Claus Gittinger (cg@sinir)
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
    [instance variables:]
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
    [class variables:]
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
    [see also:]
5110
62c8c705d461 #DOCUMENTATION by exept
Claus Gittinger <cg@exept.de>
parents: 5086
diff changeset
    54
        MatrixAccessor
5086
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
"
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
! !
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
!Matrix2_2 class methodsFor:'instance creation'!
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
new
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
    ^ self basicNew:2*2
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
! !
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
!Matrix2_2 methodsFor:'accessing'!
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
_at:index1 at:index2
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
    "this is a synthetic selector, generated by the compiler,
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
     if a construct of the form expr[idx...] is parsed.
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
     I.e. 
5135
6581016acc86 #DOCUMENTATION by exept
Claus Gittinger <cg@exept.de>
parents: 5110
diff changeset
    70
        foo[n][m]
5086
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
     generates
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
        foo _at:n at:m
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
    "
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
    |idx|
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
    (index1 between:1 and:2) ifFalse:[self subscriptBoundsError:index1].
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
    (index2 between:1 and:2) ifFalse:[self subscriptBoundsError:index2].
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
    idx := index1 * 2 - 2 + index2.
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
    ^ self basicAt:idx.
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
!
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
_at:index1 at:index2 put:value
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
    "this is a synthetic selector, generated by the compiler,
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
     if a construct of the form expr[idx...] := val is parsed.
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
     I.e. 
5135
6581016acc86 #DOCUMENTATION by exept
Claus Gittinger <cg@exept.de>
parents: 5110
diff changeset
    87
        foo[n][m] := val
5086
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
     generates
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
        foo _at:n at:m put:val
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
    "
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
    |idx|
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
    (index1 between:1 and:2) ifFalse:[self subscriptBoundsError:index1].
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
    (index2 between:1 and:2) ifFalse:[self subscriptBoundsError:index2].
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
    idx := index1 * 2 - 2 + index2.
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
    ^ self basicAt:idx put:value.
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
! !
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
!Matrix2_2 methodsFor:'matrix operations'!
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
determinantByCofactors
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
    "Answer the determinant of this matrix."
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
    ^ ((self _at: 1 at: 1)*(self _at: 2 at: 2)) - ((self _at: 1 at: 2)*(self _at: 2 at: 1))
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
! !
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
!Matrix2_2 class methodsFor:'documentation'!
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
version_CVS
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
    ^ '$Header$'
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
! !
6c158d8aa032 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113