Class Diagram#

        classDiagram

class Atom {
    +element: str
    +x: Decimal
    +y: Decimal
    +z: Decimal
    +charge: Decimal
    +position() Vector
}

class SquareMatrix {
    +elements: List[List[Decimal]]
    +assign(i: int, j: int, value: Decimal) void
    +add(other: SquareMatrix) SquareMatrix
    +multiply(other: SquareMatrix) SquareMatrix
    +multiply(other: Vector) Vector
    +transpose() SquareMatrix
    +scale(scalar: Decimal) SquareMatrix
    +negate() SquareMatrix
    +identity(n: int)$ SquareMatrix
    +from_columns(columns: List~Vector~)$ SquareMatrix
    +inverse() SquareMatrix
}

class Vector {
    +elements: List[Decimal]
    +assign(i: int, value: Decimal) void
    +add(other: Vector) Vector
    +subtract(other: Vector) Vector
    +dot(other: Vector) Decimal
    +scale(scalar: Decimal) Vector
    +negate() Vector
    +norm() Decimal
    +normalized() Vector
    +from_atom(atom: Atom)$ Vector
    +cross(other: Vector) Vector
}

SquareMatrix ..> Vector
Atom ..> Vector