# Re: [sc-dev] Changing values in matrix which is parameter

```Hi Eike,

Eike Rathke schrieb:
```
`Hi Regina,`
```
On Sunday, 2010-08-08 20:38:21 +0200, Regina Henschel wrote:

```
```in method LINEST I get pMatX from the stack. That is a reference to
the matrix MatX. I calculate the means column wise getting a matrix
MeanX with associated reference pMeanX. In next step I calculate
pMatX->GetDouble(i,j) - pMeanX->GetDouble(i,0)

Can I overwrite the values in matrix MatX with this results? Or must
the values of the matrix MatX remain unchanged by the method LINEST?
```
```
Use a new matrix created with ScInterpreter::GetNewMat(), a matrix
argument may be a matrix constant as in LINEST(...;{1|2|3|4};...)

```
```
I have not considered that in my tests, fortunately I ask here.

```
When X and Y are the given matrices and deltaX and deltaY those matrices where the means are subtracted, then the needed calculation for the coefficients B (in column arrangement) is in case of "with constant"
```B = (deltaX' * deltaX)^{-1} * deltaX' * deltaY
and in case of "without constant"
B = (X' * X)^{-1} * X' * Y
```
where A' means transpose(A) and A^{-1} means inverse(A). So using deltaX instead of X would have been handy.
```
```
The current implementation avoids to copy the matrices X or Y, although that would ease and shorten the code. I thought there must be a reason for that and tried to avoid it too. I hesitate to copy X or Y, because they might have a huge number of lines. Statistical investigations with more then 1000 samples are commonly. The number of variables (=columns of X) is often 1 or at least under 10. So products as X'X are much smaller.
```
```
I will try only using new matrices for products like X'X as it is done in the current implementation. That will result in a lot of nearly identical multiplication methods, but I think, that is better than copying the matrices.
```
Kind regards
Regina

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@sc.openoffice.org