
Description


•

The '.' operator performs noncommutative or dot product multiplication on its arguments.


If A and B are numbers (including complex and extended numerics such as infinity and undefined), then A . B = A*B.


If A and B are Vectors with the same orientation (i.e., both are row Vectors or both are column Vectors), then A . B is computed by using LinearAlgebra[DotProduct].


If A and B are Arrays, their product is computed as componentwise multiplication using zip. If A and B do not have the same dimensions, extra entries are ignored.


Arguments that are not of type Matrix, Vector, constant, or Array are ignored, and A . B remains unevaluated.

•

Calls to '.' such as A . B . C call `.`(A, B, C).


In this case, the process is repeated on the (transformed) arguments until no such argument pairs remain.

•

The dot operator is leftassociative.

•

Note: In Maple, '.' can be interpreted as a decimal point (for example, $3.7$), as part of a range operator (for example, $x..y$), or as the (noncommutative) multiplication operator. To distinguish between these three circumstances, Maple uses the following rule.


Any dot that is not part of a range operator (more than one '.' in a row) and not part of a number is interpreted as the noncommutative multiplication operator.


Note that the interpretation of the phrase "not part of a number" depends on whether you are using 1D or 2D input mode. In 1D input mode, interpretation proceeds from left to right, and a dot following a number will be interpreted as a decimal point unless that number already contains a decimal point. In 2D input mode, interpretation is carried out on the expression as a whole, and because spaces and juxtaposition can be interpreted as multiplication, a dot which is immediately preceded or followed by a number is always interpreted as a decimal point.


For example, in 1D input mode, 3.4 is a number, 3. 4 is an error and 3 .4 and 3 . 4 return 12. 3. .4 is 12. and 3..4 is a range.


In 2D input mode, 3.4 is a number, 3. 4 and 3 .4 are errors and 3 . 4 returns 12. 3. .4 is an error and 3..4 is again a range. (All of the errors shown by these examples are due to the rule that a number cannot appear as the righthand operand of an implicit multiplication operation. In such cases, use of explicit multiplication ( * ) can avoid the error. See also 2D Math Details for more information.)



Thread Safety


•

The `.` operator is threadsafe as of Maple 15.



Examples


>

$\mathrm{with}\left(\mathrm{LinearAlgebra}\right)\:$

>

$A\u2254\mathrm{ScalarMatrix}\left(3\,3\right)$

${A}{\u2254}\left[\begin{array}{ccc}{3}& {0}& {0}\\ {0}& {3}& {0}\\ {0}& {0}& {3}\end{array}\right]$
 (1) 
>

$B\u2254\u27e8\u27e81\,0\,2\u27e9\\u27e80\,1\,2\u27e9\\u27e80\,0\,2\u27e9\u27e9$

${B}{\u2254}\left[\begin{array}{ccc}{1}& {0}& {0}\\ {0}& {1}& {0}\\ {2}& {2}& {2}\end{array}\right]$
 (2) 
>

$V\u2254\u27e81\,2\,5\u27e9$

${V}{\u2254}\left[\begin{array}{c}{\mathrm{1}}\\ {2}\\ {\mathrm{5}}\end{array}\right]$
 (3) 
>

$\mathrm{`.`}\left(A\,B\,V\right)$

$\left[\begin{array}{c}{\mathrm{3}}\\ {6}\\ {\mathrm{24}}\end{array}\right]$
 (4) 
>

$\mathrm{`.`}\left(V\,V\right)$

>

$\mathrm{`.`}\left(B\,\mathrm{`.`}\left(V\,V\right)\right)$

$\left[\begin{array}{ccc}{30}& {0}& {0}\\ {0}& {30}& {0}\\ {60}& {60}& {60}\end{array}\right]$
 (6) 
>

$\mathrm{`.`}\left(B\,V\,V\right)$

>

$\mathrm{`.`}\left(4\,V\right)$

$\left[\begin{array}{c}{\mathrm{4}}\\ {8}\\ {\mathrm{20}}\end{array}\right]$
 (8) 
>

$\mathrm{`.`}\left(\mathrm{\λ}\,A\,B\right)$

${\mathrm{\lambda}}{\xb7}\left[\begin{array}{ccc}{3}& {0}& {0}\\ {0}& {3}& {0}\\ {6}& {6}& {6}\end{array}\right]$
 (9) 
>

$\mathrm{`.`}\left(a\,b\right)$

>

$\mathrm{`.`}\left(7\,6\right)$

>

$\mathrm{Array1}\u2254\mathrm{Array}\left(\left[\left[1\,2\,3\right]\,\left[4\,5\,6\right]\right]\right)$

${\mathrm{Array1}}{\u2254}\left[\begin{array}{ccc}{1}& {2}& {3}\\ {4}& {5}& {6}\end{array}\right]$
 (12) 
>

$\mathrm{Array2}\u2254\mathrm{Array}\left(\left[\left[1\,1\,1\right]\,\left[2\,2\,2\right]\,\left[3\,3\,3\right]\right]\right)$

${\mathrm{Array2}}{\u2254}\left[\begin{array}{ccc}{1}& {1}& {1}\\ {2}& {2}& {2}\\ {3}& {3}& {3}\end{array}\right]$
 (13) 
>

$\mathrm{Array3}\u2254\mathrm{Array}\left(\left[\left[1\,2\,3\right]\,\left[1\,2\,3\right]\,\left[1\,2\,3\right]\right]\right)$

${\mathrm{Array3}}{\u2254}\left[\begin{array}{ccc}{1}& {2}& {3}\\ {1}& {2}& {3}\\ {1}& {2}& {3}\end{array}\right]$
 (14) 
If the dimensions of the Arrays are not the same, extra entries are ignored by the dot operator.
>

$\mathrm{`.`}\left(\mathrm{Array1}\,\mathrm{Array2}\right)$

$\left[\begin{array}{ccc}{1}& {2}& {3}\\ {8}& {10}& {12}\end{array}\right]$
 (15) 
>

$\mathrm{`.`}\left(\mathrm{Array2}\,\mathrm{Array3}\right)$

$\left[\begin{array}{ccc}{1}& {2}& {3}\\ {2}& {4}& {6}\\ {3}& {6}& {9}\end{array}\right]$
 (16) 


