aboutsummaryrefslogtreecommitdiff
path: root/src/algebra/matstor.spad.pamphlet
diff options
context:
space:
mode:
Diffstat (limited to 'src/algebra/matstor.spad.pamphlet')
-rw-r--r--src/algebra/matstor.spad.pamphlet68
1 files changed, 34 insertions, 34 deletions
diff --git a/src/algebra/matstor.spad.pamphlet b/src/algebra/matstor.spad.pamphlet
index 5a77c5be..f88db8c8 100644
--- a/src/algebra/matstor.spad.pamphlet
+++ b/src/algebra/matstor.spad.pamphlet
@@ -36,36 +36,36 @@ StorageEfficientMatrixOperations(R): Exports == Implementation where
REP ==> PrimitiveArray PrimitiveArray R
Exports ==> with
- copy_! : (M,M) -> M
+ copy! : (M,M) -> M
++ \spad{copy!(c,a)} copies the matrix \spad{a} into the matrix c.
++ Error: if \spad{a} and c do not have the same
++ dimensions.
- plus_! : (M,M,M) -> M
+ plus! : (M,M,M) -> M
++ \spad{plus!(c,a,b)} computes the matrix sum \spad{a + b} and stores the
++ result in the matrix c.
++ Error: if \spad{a}, b, and c do not have the same dimensions.
- minus_! : (M,M) -> M
+ minus! : (M,M) -> M
++ \spad{minus!(c,a)} computes \spad{-a} and stores the result in the
++ matrix c.
++ Error: if a and c do not have the same dimensions.
- minus_! : (M,M,M) -> M
+ minus! : (M,M,M) -> M
++ \spad{!minus!(c,a,b)} computes the matrix difference \spad{a - b}
++ and stores the result in the matrix c.
++ Error: if \spad{a}, b, and c do not have the same dimensions.
- leftScalarTimes_! : (M,R,M) -> M
+ leftScalarTimes! : (M,R,M) -> M
++ \spad{leftScalarTimes!(c,r,a)} computes the scalar product
++ \spad{r * a} and stores the result in the matrix c.
++ Error: if \spad{a} and c do not have the same dimensions.
- rightScalarTimes_! : (M,M,R) -> M
+ rightScalarTimes! : (M,M,R) -> M
++ \spad{rightScalarTimes!(c,a,r)} computes the scalar product
++ \spad{a * r} and stores the result in the matrix c.
++ Error: if \spad{a} and c do not have the same dimensions.
- times_! : (M,M,M) -> M
+ times! : (M,M,M) -> M
++ \spad{times!(c,a,b)} computes the matrix product \spad{a * b}
++ and stores the result in the matrix c.
++ Error: if \spad{a}, b, and c do not have
++ compatible dimensions.
- power_! : (M,M,M,M,NNI) -> M
+ power! : (M,M,M,M,NNI) -> M
++ \spad{power!(a,b,c,m,n)} computes m ** n and stores the result in
++ \spad{a}. The matrices b and c are used to store intermediate results.
++ Error: if \spad{a}, b, c, and m are not square
@@ -79,7 +79,7 @@ StorageEfficientMatrixOperations(R): Exports == Implementation where
rep : M -> REP
rep m == m pretend REP
- copy_!(c,a) ==
+ copy!(c,a) ==
m := nrows a; n := ncols a
not((nrows c) = m and (ncols c) = n) =>
error "copy!: matrices of incompatible dimensions"
@@ -87,10 +87,10 @@ StorageEfficientMatrixOperations(R): Exports == Implementation where
for i in 0..(m-1) repeat
aRow := qelt(aa,i); cRow := qelt(cc,i)
for j in 0..(n-1) repeat
- qsetelt_!(cRow,j,qelt(aRow,j))
+ qsetelt!(cRow,j,qelt(aRow,j))
c
- plus_!(c,a,b) ==
+ plus!(c,a,b) ==
m := nrows a; n := ncols a
not((nrows b) = m and (ncols b) = n) =>
error "plus!: matrices of incompatible dimensions"
@@ -100,10 +100,10 @@ StorageEfficientMatrixOperations(R): Exports == Implementation where
for i in 0..(m-1) repeat
aRow := qelt(aa,i); bRow := qelt(bb,i); cRow := qelt(cc,i)
for j in 0..(n-1) repeat
- qsetelt_!(cRow,j,qelt(aRow,j) + qelt(bRow,j))
+ qsetelt!(cRow,j,qelt(aRow,j) + qelt(bRow,j))
c
- minus_!(c,a) ==
+ minus!(c,a) ==
m := nrows a; n := ncols a
not((nrows c) = m and (ncols c) = n) =>
error "minus!: matrices of incompatible dimensions"
@@ -111,10 +111,10 @@ StorageEfficientMatrixOperations(R): Exports == Implementation where
for i in 0..(m-1) repeat
aRow := qelt(aa,i); cRow := qelt(cc,i)
for j in 0..(n-1) repeat
- qsetelt_!(cRow,j,-qelt(aRow,j))
+ qsetelt!(cRow,j,-qelt(aRow,j))
c
- minus_!(c,a,b) ==
+ minus!(c,a,b) ==
m := nrows a; n := ncols a
not((nrows b) = m and (ncols b) = n) =>
error "minus!: matrices of incompatible dimensions"
@@ -124,10 +124,10 @@ StorageEfficientMatrixOperations(R): Exports == Implementation where
for i in 0..(m-1) repeat
aRow := qelt(aa,i); bRow := qelt(bb,i); cRow := qelt(cc,i)
for j in 0..(n-1) repeat
- qsetelt_!(cRow,j,qelt(aRow,j) - qelt(bRow,j))
+ qsetelt!(cRow,j,qelt(aRow,j) - qelt(bRow,j))
c
- leftScalarTimes_!(c,r,a) ==
+ leftScalarTimes!(c,r,a) ==
m := nrows a; n := ncols a
not((nrows c) = m and (ncols c) = n) =>
error "leftScalarTimes!: matrices of incompatible dimensions"
@@ -135,10 +135,10 @@ StorageEfficientMatrixOperations(R): Exports == Implementation where
for i in 0..(m-1) repeat
aRow := qelt(aa,i); cRow := qelt(cc,i)
for j in 0..(n-1) repeat
- qsetelt_!(cRow,j,r * qelt(aRow,j))
+ qsetelt!(cRow,j,r * qelt(aRow,j))
c
- rightScalarTimes_!(c,a,r) ==
+ rightScalarTimes!(c,a,r) ==
m := nrows a; n := ncols a
not((nrows c) = m and (ncols c) = n) =>
error "rightScalarTimes!: matrices of incompatible dimensions"
@@ -146,14 +146,14 @@ StorageEfficientMatrixOperations(R): Exports == Implementation where
for i in 0..(m-1) repeat
aRow := qelt(aa,i); cRow := qelt(cc,i)
for j in 0..(n-1) repeat
- qsetelt_!(cRow,j,qelt(aRow,j) * r)
+ qsetelt!(cRow,j,qelt(aRow,j) * r)
c
- copyCol_!: (ARR,REP,Integer,Integer) -> ARR
- copyCol_!(bCol,bb,j,n1) ==
- for i in 0..n1 repeat qsetelt_!(bCol,i,qelt(qelt(bb,i),j))
+ copyCol!: (ARR,REP,Integer,Integer) -> ARR
+ copyCol!(bCol,bb,j,n1) ==
+ for i in 0..n1 repeat qsetelt!(bCol,i,qelt(qelt(bb,i),j))
- times_!(c,a,b) ==
+ times!(c,a,b) ==
m := nrows a; n := ncols a; p := ncols b
not((nrows b) = n and (nrows c) = m and (ncols c) = p) =>
error "times!: matrices of incompatible dimensions"
@@ -161,16 +161,16 @@ StorageEfficientMatrixOperations(R): Exports == Implementation where
bCol : ARR := new(n,0)
m1 := (m :: Integer) - 1; n1 := (n :: Integer) - 1
for j in 0..(p-1) repeat
- copyCol_!(bCol,bb,j,n1)
+ copyCol!(bCol,bb,j,n1)
for i in 0..m1 repeat
aRow := qelt(aa,i); cRow := qelt(cc,i)
sum : R := 0
for k in 0..n1 repeat
sum := sum + qelt(aRow,k) * qelt(bCol,k)
- qsetelt_!(cRow,j,sum)
+ qsetelt!(cRow,j,sum)
c
- power_!(a,b,c,m,p) ==
+ power!(a,b,c,m,p) ==
mm := nrows a; nn := ncols a
not(mm = nn) =>
error "power!: matrix must be square"
@@ -181,23 +181,23 @@ StorageEfficientMatrixOperations(R): Exports == Implementation where
not((nrows m) = mm and (ncols m) = nn) =>
error "power!: matrices of incompatible dimensions"
flag := false
- copy_!(b,m)
+ copy!(b,m)
repeat
if odd? p then
flag =>
- times_!(c,b,a)
- copy_!(a,c)
+ times!(c,b,a)
+ copy!(a,c)
flag := true
- copy_!(a,b)
+ copy!(a,b)
one? p => return a
p := p quo 2
- times_!(c,b,b)
- copy_!(b,c)
+ times!(c,b,b)
+ copy!(b,c)
m ** n ==
not square? m => error "**: matrix must be square"
a := copy m; b := copy m; c := copy m
- power_!(a,b,c,m,n)
+ power!(a,b,c,m,n)
@
\section{License}