texlive[68049] Master/texmf-dist: lualinalg (24aug23)
commits+karl at tug.org
commits+karl at tug.org
Thu Aug 24 22:18:43 CEST 2023
Revision: 68049
http://tug.org/svn/texlive?view=revision&revision=68049
Author: karl
Date: 2023-08-24 22:18:43 +0200 (Thu, 24 Aug 2023)
Log Message:
-----------
lualinalg (24aug23)
Modified Paths:
--------------
trunk/Master/texmf-dist/doc/lualatex/lualinalg/README.txt
trunk/Master/texmf-dist/doc/lualatex/lualinalg/lualinalg.pdf
trunk/Master/texmf-dist/doc/lualatex/lualinalg/lualinalg.tex
trunk/Master/texmf-dist/tex/lualatex/lualinalg/lualinalg.sty
Modified: trunk/Master/texmf-dist/doc/lualatex/lualinalg/README.txt
===================================================================
--- trunk/Master/texmf-dist/doc/lualatex/lualinalg/README.txt 2023-08-24 20:18:35 UTC (rev 68048)
+++ trunk/Master/texmf-dist/doc/lualatex/lualinalg/README.txt 2023-08-24 20:18:43 UTC (rev 68049)
@@ -1,5 +1,5 @@
# The lualinalg package
-# version 1.7
+# version 1.8
# Authors: Chetan Shirore and Ajit Kumar
# Email: mathsbeauty at gmail.com
Modified: trunk/Master/texmf-dist/doc/lualatex/lualinalg/lualinalg.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/lualatex/lualinalg/lualinalg.tex
===================================================================
--- trunk/Master/texmf-dist/doc/lualatex/lualinalg/lualinalg.tex 2023-08-24 20:18:35 UTC (rev 68048)
+++ trunk/Master/texmf-dist/doc/lualatex/lualinalg/lualinalg.tex 2023-08-24 20:18:43 UTC (rev 68049)
@@ -1,7 +1,7 @@
\documentclass{article}
\usepackage{listings,color,parskip,booktabs,longtable,array,
hyperref,multirow,multicol,url,amsmath,amssymb,framed,lualinalg,tikz,tikz-3dplot}
-\usepackage[top=1.1in, bottom=1.1in, left=1in, right=1in]{geometry}
+\usepackage[top=1in, bottom=1in, left=1in, right=1in]{geometry}
\usetikzlibrary{calc,3d,arrows}
\hypersetup{colorlinks,urlcolor=blue}
\lstset{frame=none,
@@ -49,18 +49,17 @@
\vectorNew{v1}{{1,2,3,4,5,6}}
\vectorNew{v2}{{3,6,lcomplex(6,6)}}
\end{lstlisting}
-The standard vector of dimension \(n \) with \(i^{th}\) coordinate \(1\) can be produced by using the following command.
+The standard vector of dimension \(n \) with \(i^{th}\) coordinate \(1\) and zero vectors can also be produced by using the command \verb|\vectorNew|. For example, the following commands
\begin{lstlisting}
-\vectorNew{e}{n,'e',i}
-\end{lstlisting}
-For example, the following commands
-\begin{lstlisting}
\vectorNew{e_1}{3,'e',1}
\(e_1=\left(\vectorPrint{e}\right)\)
+\vectorNew{O}{3,'zero'}
+\(O=\left(\vectorPrint{O}\right)\)
\end{lstlisting}
output to \vectorNew{e_1}{3,'e',1}
-\(e_1=\left(\vectorPrint{e_1}\right)\).
-
+\(e_1=\left(\vectorPrint{e_1}\right)\)
+\vectorNew{O}{3,'zero'}
+\(O=\left(\vectorPrint{O}\right)\)
\subsection{Commands for operations on vectors}
Table \ref{tbl:luavector} lists commands for operations on vectors.
\begin{longtable}{m{7cm}m{8.2cm}}
@@ -89,7 +88,14 @@
\end{lstlisting}&
Defines a new vector \(v\) obtained by copying coordinates of vector \(w\). \\
\midrule
+
\begin{lstlisting}
+\vectorEql{v}{w}
+\end{lstlisting}&
+Returns true if \(v = w\), otherwise returns false. \\
+\midrule
+
+\begin{lstlisting}
\vectorAdd{vector}{v1}{v2}
\end{lstlisting}&
Defines a new vector as the addition of vectors \(v1\) and \(v2\). Both vectors \(v1\) and \(v2\) should be of the same dimension. The addition is done coordinate-wise.\\
@@ -218,6 +224,12 @@
\\
\midrule
\begin{lstlisting}
+\vectorEql{z}{w}
+\end{lstlisting} &
+\vectorEql{z}{w}
+\\
+\midrule
+\begin{lstlisting}
new third coordinate of vector
\(z = \vectorSetCoordinate{z}{3}{9.3}\)
\(z=\left(\vectorPrint{z}\right)\)
@@ -515,15 +527,18 @@
\matrixNew{n}{{{1,2,3},{4,5,6},{7,8,10}}}
\end{lstlisting}
-The identity matrix can be defined as well by using the \verb|\matrixNew| command. For example, the following commands
+The identity and zero matrices can be defined as well by using the \verb|\matrixNew| command. For example, the following commands
\begin{lstlisting}
\matrixNew{mtx}{3,'I'}
I = \(\matrixPrint{mtx}\)
+\matrixNew{O}{3,4,'zero'}
+O = \(\matrixPrint{O}\)
\end{lstlisting}
output to
\matrixNew{mtx}{3,'I'}
-I = \(\matrixPrint{mtx}\)
-
+I = \(\matrixPrint{mtx}\)
+\matrixNew{O}{3,4,'zero'}
+O = \(\matrixPrint{O}\)
\subsection{Commands for operations on matrices}
Table \ref{tbl:luamtxcmd} lists all commands for operations on matrices in the \verb|lualinalg| package.
\begin{longtable}{m{7cm}m{7.5cm}}
@@ -673,6 +688,13 @@
\end{lstlisting}&
Defines a new matrix obtained by copying values from matrix1. \\
\midrule
+
+\begin{lstlisting}
+\matrixEql{m1}{m2}
+\end{lstlisting}&
+Returns true if m1 = m2, otherwise returns false. \\
+\midrule
+
\begin{lstlisting}
\matrixCreateRandom
{m}{i}{j}{k}{l}
@@ -922,9 +944,13 @@
\end{lstlisting} &
\matrixCopy{m12}{m}
\(m12 = \matrixPrint{m12}\)\\
-
\midrule
\begin{lstlisting}
+\matrixEql{m12}{m}
+\end{lstlisting} &
+\matrixEql{m12}{m}\\
+\midrule
+\begin{lstlisting}
trace of matrix \( m = \matrixTrace{m}\)
\end{lstlisting} &
trace of matrix \( m = \matrixTrace{m}\) \\
Modified: trunk/Master/texmf-dist/tex/lualatex/lualinalg/lualinalg.sty
===================================================================
--- trunk/Master/texmf-dist/tex/lualatex/lualinalg/lualinalg.sty 2023-08-24 20:18:35 UTC (rev 68048)
+++ trunk/Master/texmf-dist/tex/lualatex/lualinalg/lualinalg.sty 2023-08-24 20:18:43 UTC (rev 68049)
@@ -1,9 +1,9 @@
% The lualinalg package
% Authors: Chetan Shirore and Ajit Kumar
-% Version 1.7, Date=21-Aug-2023
+% Version 1.8, Date=23-Aug-2023
% Licensed under LaTeX Project Public License v1.3c or later. The complete license text is available at http://www.latex-project.org/lppl.txt.
-\ProvidesPackage{lualinalg}[1.7]
+\ProvidesPackage{lualinalg}[1.8]
\RequirePackage{xkeyval}
\RequirePackage{amsmath}
\RequirePackage{luamaths}
@@ -17,7 +17,7 @@
local matrix_meta = {}
-function matrix.new(matrix, rows, columns)
+function matrix.new(matrix, rows, columns, str)
if type(rows) == "table" then
for i = 1, #rows do
if #rows[1] ~= #rows[i] then
@@ -40,6 +40,15 @@
end
return setmetatable(mtx, matrix_meta)
end
+ if str == "zero" then
+ for i = 1, rows do
+ mtx[i] = {}
+ for j = 1, columns do
+ mtx[i][j] = 0
+ end
+ end
+ return setmetatable(mtx, matrix_meta)
+ end
end
setmetatable(
@@ -872,6 +881,21 @@
return str .. "\\end{" .. format .. "} "
end
+function matrix.chqeql(m1, m2)
+ if #m1 ~= #m2 or #m1[1] ~= #m2[1] then
+ return false
+ end
+ for i = 1, #m1 do
+ for j = 1, #m1[1] do
+ if not(lnumChqEql(m1[i][j],m2[i][j])) then
+ return false
+ end
+ end
+ end
+ return true
+end
+
+
matrix_meta.__tostring = function(...)
return matrix.show(...)
end
@@ -906,6 +930,10 @@
return matrix.mulnum(mtx, -1)
end
+matrix_meta.__eq = function(...)
+ return matrix.chqeql(...)
+end
+
local option = {
["*"] = function(m1)
return matrix.conjugate(m1)
@@ -927,7 +955,7 @@
local vector_meta = {}
function vector.new(vector, rows, columns, n)
- if columns ~= "e" then
+ if columns ~= "e" and columns ~= "zero" then
local tbl = {}
for i = 1, #rows do
tbl[i] = rows[i]
@@ -945,6 +973,13 @@
end
return setmetatable(vec, vector_meta)
end
+
+ if columns == "zero" then
+ for i = 1, rows do
+ vec[i] = 0
+ end
+ return setmetatable(vec, vector_meta)
+ end
end
setmetatable(
@@ -1221,6 +1256,18 @@
return str
end
+function vector.chqeql(v1, v2)
+ if #v1 ~= #v2 then
+ return false
+ end
+ for j = 1, #v1 do
+ if not(lnumChqEql(v1[j],v2[j])) then
+ return false
+ end
+ end
+ return true
+end
+
vector_meta.__tostring = function(...)
return vector.show(...)
end
@@ -1237,6 +1284,10 @@
return vector.mulnum(vec, -1)
end
+vector_meta.__eq = function(...)
+ return vector.chqeql(...)
+end
+
vector_meta.__mul = function(v1, v2)
if getmetatable(v1) ~= vector_meta then
return vector.mulnum(v2, v1)
@@ -1475,6 +1526,12 @@
}%
}
+\newcommand\matrixEql[2]{%
+\directlua{%
+tex.sprint(tostring(matrix.chqeql(matrices['#1'],matrices['#2'])))
+}%
+}
+
% ========= KEY DEFINITIONS =========
\define at key{matrixrr}{type}{\def\moprr at type{#1}}
\define at key{matrixrr}{truncate}{\def\moprr at truncate{#1}}
@@ -1624,6 +1681,12 @@
}%
}
+\newcommand\vectorEql[2]{%
+\directlua{%
+tex.sprint(tostring(vector.chqeql(vectors['#1'],vectors['#2'])))
+}%
+}
+
% ========= KEY DEFINITIONS =========
\define at key{vecrr}{brckt}{\def\voprr at brckt{#1}}
\define at key{vecrr}{truncate}{\def\voprr at truncate{#1}}
More information about the tex-live-commits
mailing list.