Loïc Grenié on Thu, 18 Jan 2024 09:40:18 +0100


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: Bizarre semantic of Mat


On Thu Jan 18th, 2024, at 08:19, Ilya Zakharevich wrote:
On Wed, Jan 17, 2024 at 11:31:39AM +0100, Bill Allombert wrote:
> > Is there a simple way to convert a vector-column into a 1 column
> > matrix (without using matrix())?  Mat() is almost there — except for
> > bizarre special-cases — which are impossible to switch off!
>
> There is a trick:
>
> ? V=[[1]~,[2]~,[3]~]
> %28 = [[1]~,[2]~,[3]~]
> ? Mat(V~)~
> %29 = Mat([[1]~,[2]~,[3]~])

Hmm?  It seems that this is “another ‘cute special case’” — which
requires PRIOR KNOWLEDGE about the nature of elements of the vector.
Does not it?

    I don't know what you intend to do. However if you have a column
  C the content of which is unknown, then you have two reasonable ways
  to transform it in a #C\times1 matrix:
matrix(#C,1,a,b,C[b])
Mat(vector(1,a,C))

  You don't want the first and you name the second ugly, that's your
  call. Just don't expect the developers of pari/gp to write the function
  you wish.
  Observe that the condition "I don't know what is in my column vector
  but I want a column-matrix out of it" is not the typical situation; usually
  one *knows* what is in the column (and can decide what to do). Observe
  also that the first solution is completely reasonable, documented. I think
  you are wasting time and bandwidth on this one.

       Loïc