texlive[67816] Master/texmf-dist: lualinalg (4aug23)
commits+karl at tug.org
commits+karl at tug.org
Fri Aug 4 23:15:35 CEST 2023
Revision: 67816
http://tug.org/svn/texlive?view=revision&revision=67816
Author: karl
Date: 2023-08-04 23:15:35 +0200 (Fri, 04 Aug 2023)
Log Message:
-----------
lualinalg (4aug23)
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
Removed Paths:
-------------
trunk/Master/texmf-dist/tex/lualatex/lualinalg/lualinalg-complex.lua
trunk/Master/texmf-dist/tex/lualatex/lualinalg/lualinalg-fractions.lua
Modified: trunk/Master/texmf-dist/doc/lualatex/lualinalg/README.txt
===================================================================
--- trunk/Master/texmf-dist/doc/lualatex/lualinalg/README.txt 2023-08-04 21:15:19 UTC (rev 67815)
+++ trunk/Master/texmf-dist/doc/lualatex/lualinalg/README.txt 2023-08-04 21:15:35 UTC (rev 67816)
@@ -1,5 +1,5 @@
# The lualinalg package
-# version 1.3
+# version 1.4
# 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-04 21:15:19 UTC (rev 67815)
+++ trunk/Master/texmf-dist/doc/lualatex/lualinalg/lualinalg.tex 2023-08-04 21:15:35 UTC (rev 67816)
@@ -1046,7 +1046,7 @@
\renewcommand*{\arraystretch}{1.0}
The command \verb|\matrixGaussJordan| is used to obtain Gauss-Jordan elimination of an augmented matrix.
\begin{lstlisting}
-\def\a{{{1,1,1},{2,-1,-1},{1,-1,1}}}
+\def\a{{{lfrac(1,2),1,1},{2,-1,-1},{1,-1,1}}}
\def\b{{{3},{3},{9}}}
\matrixNew{S}{\a}
\matrixNew{T}{\b}
@@ -1056,11 +1056,12 @@
$$U = \matrixPrint{U}$$
\end{lstlisting}
The above code produces the following output.
-\def\a{{{1,1,1},{2,-1,-1},{1,-1,1}}}
+\def\a{{{lfrac(1,2),1,1},{2,-1,-1},{1,-1,1}}}
\def\b{{{3},{3},{9}}}
\matrixNew{S}{\a}
\matrixNew{T}{\b}
\matrixConcatH{W}{S}{T}
+\renewcommand{\arraystretch}{1.5}
\begin{framed}
$$W = \matrixPrint{W}$$
\matrixGaussJordan{U}{S}{T}
@@ -1070,6 +1071,7 @@
\begin{framed}
\matrixGaussJordanSteps{S}{T}
\end{framed}
+\renewcommand{\arraystretch}{1.0}
\section{Customized usage}\label{customuse}
The commands available in the package can be used for performing further operations on vectors and matrices. The command \verb|\vectorAdd| can be extended to add more than two vectors. The latex document (listing \ref{code:custluavec}) provides some instances of such usage.
\begin{lstlisting}[label={code:custluavec}, caption={Customized usage of the lualinalg package}]
@@ -1179,4 +1181,5 @@
\item The error handling mechanism in the tool is not robust. There are some custom errors included in the package. However the package mostly depends on error handling mechanism of Lua. The error handling can be strengthened in future updates of the package.
\end{itemize}
+
\end{document}
\ No newline at end of file
Deleted: trunk/Master/texmf-dist/tex/lualatex/lualinalg/lualinalg-complex.lua
===================================================================
--- trunk/Master/texmf-dist/tex/lualatex/lualinalg/lualinalg-complex.lua 2023-08-04 21:15:19 UTC (rev 67815)
+++ trunk/Master/texmf-dist/tex/lualatex/lualinalg/lualinalg-complex.lua 2023-08-04 21:15:35 UTC (rev 67816)
@@ -1,347 +0,0 @@
---Version=1.3, Date=30-July-2023
--- provides module for complex numbers
---Contains a modified version of the file complex.lua. It is availalbe on the link https://github.com/davidm/lua-matrix/blob/master/lua/complex.lua. This is licensed under the same terms as Lua itself. This license allows to freely copy, modify and distribute the file for any purpose and without any restrictions.
---Licensed under the same terms as Lua itself. This license allows to freely copy, modify and distribute the file for any purpose and without any restrictions.
-
-frac= require("luamaths-fractions")
-complex = {}
-complex_meta = {}
-
-local function parse_scalar(s, pos0)
- local x, n, pos = s:match('^([+-]?[%d%.]+)(.?)()', pos0)
- if not x then return end
- if n == 'e' or n == 'E' then
- local x2, n2, pos2 = s:match('^([+-]?%d+)(.?)()', pos)
- if not x2 then error 'number format error' end
- x = tonumber(x..n..x2)
- if not x then error 'number format error' end
- return x, n2, pos2
- else
- x = tonumber(x)
- if not x then error 'number format error' end
- return x, n, pos
- end
-end
-local function parse_component(s, pos0)
- local x, n, pos = parse_scalar(s, pos0)
- if not x then
- local x2, n2, pos2 = s:match('^([+-]?)(i)()$', pos0)
- if not x2 then error 'number format error' end
- return (x2=='-' and -1 or 1), n2, pos2
- end
- if n == '/' then
- local x2, n2, pos2 = parse_scalar(s, pos)
- x = x / x2
- return x, n2, pos2
- end
- return x, n, pos
-end
-local function parse_complex(s)
- local x, n, pos = parse_component(s, 1)
- if n == '+' or n == '-' then
- local x2, n2, pos2 = parse_component(s, pos)
- if n2 ~= 'i' or pos2 ~= #s+1 then error 'number format error' end
- if n == '-' then x2 = - x2 end
- return x, x2
- elseif n == '' then
- return x, 0
- elseif n == 'i' then
- if pos ~= #s+1 then error 'number format error' end
- return 0, x
- else
- error 'number format error'
- end
-end
-
-function complex.to( num )
- -- check for table type
- if type( num ) == "table" then
- -- check for a complex number
- if getmetatable( num ) == complex_meta then
- return num
- end
-
- if getmetatable( num) == frac_mt then
- return setmetatable( { num, 0 }, complex_meta )
- end
-
- local real,imag = tonumber( num[1] ),tonumber( num[2] )
- if real and imag then
- return setmetatable( { real,imag }, complex_meta )
- end
- return
- end
- local isnum = tonumber( num )
- if isnum then
- return setmetatable( { isnum,0 }, complex_meta )
- end
- if type( num ) == "string" then
- local real, imag = parse_complex(num)
- return setmetatable( { real, imag }, complex_meta )
- end
-end
-
-setmetatable( complex, { __call = function( _,num ) return complex.to( num ) end } )
-
-function complex.new( x,y)
- return setmetatable( {x,y}, complex_meta )
-end
-
-lcomplex = complex.new
-function complex.type( arg )
- if getmetatable( arg ) == complex_meta then
- return "complex"
- end
-end
-
-function complex.convpolar( radius, phi )
- return setmetatable( { radius * math.cos( phi ), radius * math.sin( phi ) }, complex_meta )
-end
-
-function complex.convpolardeg( radius, phi )
- phi = phi/180 * math.pi
- return setmetatable( { radius * math.cos( phi ), radius * math.sin( phi ) }, complex_meta )
-end
-
-function complex.tostring( cx,formatstr )
- imunit = "\\imUnit"
- local real,imag = cx[1],cx[2]
- if type(cx[1]) ~= "table" and type(cx[2]) ~= "table" then
- if imag == 0 then
- return real
- elseif real == 0 then
- return ((imag==1 and "") or (imag==-1 and "-") or imag)..imunit
- elseif imag > 0 then
- return real.."+"..(imag==1 and "" or imag)..imunit
- end
- return real..(imag==-1 and "-" or imag)..imunit
- end
-
- if type(cx[1]) == "table" and type(cx[2]) ~= "table" then
- if cx[2] == 0 then
- return frac.tostring(cx[1])
- end
- if cx[2] > 0 then
- return frac.tostring(cx[1]).. "+"..(imag==1 and "" or imag)..imunit
- end
- if cx[2] < 0 then
- return frac.tostring(cx[1])..(imag==-1 and "-" or imag)..imunit
- end
-
- end
-
- if type(cx[1]) ~= "table" and type(cx[2]) == "table" then
- if frac.toFnumber(cx[2])==0 then return cx[1] end
- return cx[1].."+"..frac.tostring(cx[2])..imunit
- end
-
- if type(cx[1]) == "table" and type(cx[2]) == "table" then
- if frac.toFnumber(cx[1]) == 0 and frac.toFnumber(cx[2]) ~= 0 then
- return frac.tostring(cx[2])..imunit
- end
-
- if frac.toFnumber(cx[2]) == 0 then
- return frac.tostring(cx[1] + 0)
- end
-
- if cx[2].d == 1 then
- if cx[2].n > 0 then
- return frac.tostring(cx[1]).. "+"..(cx[2].n==1 and "" or math.floor(cx[2].n))..imunit
- end
- if cx[2].n < 0 then
- return frac.tostring(cx[1])..(cx[2].n==-1 and "-" or math.floor(cx[2].n))..imunit
- end
- end
- end
- return frac.tostring(cx[1]).. "+"..frac.tostring(cx[2])..imunit
-end
-
-function complex.print( ... )
- print( complex.tostring( ... ) )
-end
-
-function complex.polar( cx )
- return math.sqrt( cx[1]^2 + cx[2]^2 ), math.atan2( cx[2], cx[1] )
-end
-
-function complex.polardeg( cx )
- return math.sqrt( cx[1]^2 + cx[2]^2 ), math.atan2( cx[2], cx[1] ) / math.pi * 180
-end
-
-function complex.norm2( cx )
- return cx[1]^2 + cx[2]^2
-end
-
-function complex.abs( cx )
- return math.sqrt( cx[1]^2 + cx[2]^2 )
-end
-
-function complex.get( cx )
- return cx[1],cx[2]
-end
-
-function complex.set( cx,real,imag )
- cx[1],cx[2] = real,imag
-end
-
-function complex.is( cx,real,imag )
- if cx[1] == real and cx[2] == imag then
- return true
- end
- return false
-end
-
-function complex.copy( cx )
- return setmetatable( { cx[1],cx[2] }, complex_meta )
-end
-
-function complex.add( cx1,cx2 )
- return setmetatable( { cx1[1]+cx2[1], cx1[2]+cx2[2] }, complex_meta )
-end
-
-function complex.sub( cx1,cx2 )
- return setmetatable( { cx1[1]-cx2[1], cx1[2]-cx2[2] }, complex_meta )
-end
-
-function complex.mul( cx1,cx2 )
- return setmetatable( { cx1[1]*cx2[1] - cx1[2]*cx2[2],cx1[1]*cx2[2] + cx1[2]*cx2[1] }, complex_meta )
-end
-
-function complex.mulnum( cx,num )
- return setmetatable( { cx[1]*num,cx[2]*num }, complex_meta )
-end
-
-function complex.div( cx1,cx2 )
- local val = cx2[1]*cx2[1] + cx2[2]*cx2[2]
- return setmetatable( { (cx1[1]*cx2[1]+cx1[2]*cx2[2])/val,(cx1[2]*cx2[1]-cx1[1]*cx2[2])/val }, complex_meta )
-end
-
-function complex.divnum( cx,num )
- return setmetatable( { cx[1]/num,cx[2]/num }, complex_meta )
-end
-
-function complex.pow( cx,num )
- if math.floor( num ) == num then
- if num < 0 then
- local val = cx[1]^2 + cx[2]^2
- cx = { cx[1]/val,-cx[2]/val }
- num = -num
- end
- local real,imag = cx[1],cx[2]
- for i = 2,num do
- real,imag = real*cx[1] - imag*cx[2],real*cx[2] + imag*cx[1]
- end
- return setmetatable( { real,imag }, complex_meta )
- end
- local length,phi = math.sqrt( cx[1]^2 + cx[2]^2 )^num, math.atan2( cx[2], cx[1] )*num
- return setmetatable( { length * math.cos( phi ), length * math.sin( phi ) }, complex_meta )
-end
-
-function complex.sqrt( cx )
- local h
- local k
-
- if type(cx[1]) ~= "table" then h = cx[1] end
- if type(cx[2]) ~= "table" then k = cx[2] end
-
- if type(cx[1]) == "table" then h = frac.toFnumber(cx[1]) end
- if type(cx[2]) == "table" then k = frac.toFnumber(cx[2]) end
- local len = math.sqrt( h^2 + k^2 )
- local sign = ( h<0 and -1) or 1
- return setmetatable( { math.sqrt((h +len)/2), sign*math.sqrt((len-h)/2) }, complex_meta )
-end
-
-function complex.ln( cx )
- return setmetatable( { math.log(math.sqrt( cx[1]^2 + cx[2]^2 )),
- math.atan2( cx[2], cx[1] ) }, complex_meta )
-end
-
-function complex.exp( cx )
- local expreal = math.exp(cx[1])
- return setmetatable( { expreal*math.cos(cx[2]), expreal*math.sin(cx[2]) }, complex_meta )
-end
-
-function complex.conjugate( cx )
- return setmetatable( { cx[1], -cx[2] }, complex_meta )
-end
-
-function Xround(num, numDecimalPlaces)
- if type(num)=="number" then
- if num==math.floor(num) then
- return math.floor(num)
- end
- end
- if type(num)=="number" then
- local mult = 10^(numDecimalPlaces or 0)
- return math.floor(num * mult + 0.5) / mult
- end
- return num
-end
-
-function complex.round( cx,idp )
- local mult =10^( idp or 0 )
- if type(cx[1]) ~= "table" and type(cx[2]) ~= "table" then
- return setmetatable( {Xround(cx[1],idp), Xround(cx[2],idp)}, complex_meta )
- end
- if type(cx[1]) ~= "table" and type(cx[2]) == "table" then
- return setmetatable( {Xround(cx[1],idp), cx[2]}, complex_meta )
- end
- if type(cx[1]) == "table" and type(cx[2]) ~= "table" then
- return setmetatable({cx[1],Xround(cx[2],idp)}, complex_meta )
- end
- if type(cx[1]) == "table" and type(cx[2]) == "table" then
- return setmetatable({cx[1],cx[2]}, complex_meta )
- end
-end
-
-complex.zero = complex.new(0, 0)
-complex.one = complex.new(1, 0)
-
-complex_meta.__add = function( cx1,cx2 )
-local cx1,cx2 = complex.to( cx1 ),complex.to( cx2 )
-return complex.add( cx1,cx2 )
-end
-complex_meta.__sub = function( cx1,cx2 )
-local cx1,cx2 = complex.to( cx1 ),complex.to( cx2 )
-return complex.sub( cx1,cx2 )
-end
-complex_meta.__mul = function( cx1,cx2 )
-local cx1,cx2 = complex.to( cx1 ),complex.to( cx2 )
-return complex.mul( cx1,cx2 )
-end
-complex_meta.__div = function( cx1,cx2 )
-local cx1,cx2 = complex.to( cx1 ),complex.to( cx2 )
-return complex.div( cx1,cx2 )
-end
-complex_meta.__pow = function( cx,num )
-if num == "*" then
-return complex.conjugate( cx )
-end
-return complex.pow( cx,num )
-end
-complex_meta.__unm = function( cx )
-return setmetatable( { -cx[1], -cx[2] }, complex_meta )
-end
-complex_meta.__eq = function( cx1,cx2 )
-if cx1[1] == cx2[1] and cx1[2] == cx2[2] then
-return true
-end
-return false
-end
-complex_meta.__tostring = function( cx )
-return tostring( complex.tostring( cx ) )
-end
-complex_meta.__concat = function( cx,cx2 )
-return tostring(cx)..tostring(cx2)
-end
--- cx( cx, formatstr )
-complex_meta.__call = function( ... )
-print( complex.tostring( ... ) )
-end
-complex_meta.__index = {}
-for k,v in pairs( complex ) do
-complex_meta.__index[k] = v
-end
-
-return complex
-
Deleted: trunk/Master/texmf-dist/tex/lualatex/lualinalg/lualinalg-fractions.lua
===================================================================
--- trunk/Master/texmf-dist/tex/lualatex/lualinalg/lualinalg-fractions.lua 2023-08-04 21:15:19 UTC (rev 67815)
+++ trunk/Master/texmf-dist/tex/lualatex/lualinalg/lualinalg-fractions.lua 2023-08-04 21:15:35 UTC (rev 67816)
@@ -1,225 +0,0 @@
--- The luafractions module
--- Authors: Chetan Shirore and Ajit Kumar
--- version 1.0, Date=03-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.
-
-M = {} -- the module
-frac_mt = {} -- the metatable
-function M.new (n, d, mode)
- mode = mode or 'fracs'
- if mode == 'nofracs' then
- return (n/d)
- end
- if mode == 'fracs' then
- if n~=math.floor(n) or d~=math.floor(d) then
- error('Only integers are expected.')
- end
- if d == 0 then
- error('Invalid fraction')
- end
- local fr = {}
- local g = M.lgcd(n,d)
- fr = {n=n/g, d=d/g}
- return setmetatable(fr,frac_mt)
- end
-end
-lfrac = M.new
-
-function M.lgcd (a, b)
- local r
- while (b ~= 0) do
- r = a % b
- a = b
- b = r
- end
- return a
-end
-
-function M.simp (num)
- local cf = gcd(num[1], num[2])
- return M.new(num[1] / cf, num2[2] / cf)
-end
-
-function M.toFnumber(c)
- return c.n / c.d
-end
-
-function M.toFrac(x)
- if type(x) == "number" then
- if x==math.floor(x) then
- return M.new(math.floor(x),1)
- else
- return x
- end
- end
- return x
-end
-
-
-function addFracs (c1, c2)
- return M.new(c1.n * c2.d + c1.d * c2.n, c1.d*c2.d)
-end
-
-function subFracs (c1, c2)
- return M.new(c1.n * c2.d - c1.d * c2.n, c1.d*c2.d)
-end
-
-function mulFracs (c1, c2)
- return M.new(c1.n * c2.n, c1.d*c2.d)
-end
-
-function divFracs (c1, c2)
- return M.new(c1.n * c2.d, c1.d*c2.n)
-end
-
-function minusFracs (c1)
- return M.new(-c1.n,c1.d)
-end
-
-function powerFracs (c1,m)
- return M.new((c1.n)^m,(c1.d)^m)
-end
-
-
-function M.add(a, b)
- if type(a) == "number" then
- if a==math.floor(a) then
- return addFracs(M.new(a,1),b)
- else
- return a + M.toFnumber(b)
- end
- end
-
- if type(b) == "number" then
- if b==math.floor(b) then
- return addFracs(a,M.new(b,1))
- else
- return M.toFnumber(a) + b
- end
- end
-
- if type( a ) == "table" and type(b) =="table" then
- if getmetatable( a ) == frac_mt and getmetatable( b ) == complex_meta then
- return setmetatable( { a+b[1], b[2] }, complex_meta )
- end
- end
-
- if type( a ) == "table" and type(b) =="table" then
- if getmetatable( b ) == frac_mt and getmetatable( a ) == complex_meta then
- return setmetatable( { b+a[1], a[2] }, complex_meta )
- end
- end
- return addFracs(a, b)
-end
-
-
-function M.sub(a, b)
- if type(a) == "number" then
- if a==math.floor(a) then
- return subFracs(M.new(a,1),b)
- else
- return a - M.toFnumber(b)
- end
- end
-
- if type(b) == "number" then
- if b==math.floor(b) then
- return subFracs(a,M.new(b,1))
- else
- return M.toFnumber(a) - b
- end
- end
-
- if type( a ) == "table" and type(b) =="table" then
- if getmetatable( a ) == frac_mt and getmetatable( b ) == complex_meta then
- return setmetatable( { a-b[1], b[2] }, complex_meta )
- end
- end
-
- if type( a ) == "table" and type(b) =="table" then
- if getmetatable( b ) == frac_mt and getmetatable( a ) == complex_meta then
- return setmetatable( { a[1]-b, a[2] }, complex_meta )
- end
- end
- return subFracs(a, b)
-end
-
-
-function M.mul(a, b)
- if type(a) == "number" then
- if a==math.floor(a) then
- return mulFracs(M.new(a,1),b)
- else
- return a * M.toFnumber(b)
- end
- end
-
- if type(b) == "number" then
- if b==math.floor(b) then
- return mulFracs(a,M.new(b,1))
- else
- return M.toFnumber(a) * b
- end
- end
-
- if type( a ) == "table" and type(b) =="table" then
- if getmetatable( a ) == frac_mt and getmetatable( b ) == complex_meta then
- return setmetatable( { a*b[1], a*b[2] }, complex_meta )
- end
- end
-
- if type( a ) == "table" and type(b) =="table" then
- if getmetatable( b ) == frac_mt and getmetatable( a ) == complex_meta then
- return setmetatable( { b*a[1], b*a[2] }, complex_meta )
- end
- end
- return mulFracs(a, b)
-end
-
-
-function M.div(a, b)
- if type(a) == "number" then
- if a==math.floor(a) then
- return divFracs(M.new(a,1),b)
- else
- return a / M.toFnumber(b)
- end
- end
-
- if type(b) == "number" then
- if b==math.floor(b) then
- return divFracs(a,M.new(b,1))
- else
- return M.toFnumber(a) / b
- end
- end
-
- if type( a ) == "table" and type(b) =="table" then
- if getmetatable( a ) == frac_mt and getmetatable( b ) == complex_meta then
- b= setmetatable( { M.toFrac(b[1]), M.toFrac(b[2]) }, complex_meta )
- return a*(1/b)
- end
- end
- return divFracs(a, b)
-end
-
-function M.tostring (c)
- if c.d == 1 then
- return string.format("%g",c.n)
- end
- if c.d == -1 then
- return string.format("%g",-c.n)
- end
- return string.format("\\frac{%g}{%g}", c.n, c.d)
-end
-
---Setting Metatable operations.
-frac_mt.__add = M.add
-frac_mt.__sub = M.sub
-frac_mt.__mul = M.mul
-frac_mt.__div = M.div
-frac_mt.__unm = minusFracs
-frac_mt.__pow = powerFracs
-frac_mt.__tostring = M.tostring
-
-return M
\ No newline at end of file
Modified: trunk/Master/texmf-dist/tex/lualatex/lualinalg/lualinalg.sty
===================================================================
--- trunk/Master/texmf-dist/tex/lualatex/lualinalg/lualinalg.sty 2023-08-04 21:15:19 UTC (rev 67815)
+++ trunk/Master/texmf-dist/tex/lualatex/lualinalg/lualinalg.sty 2023-08-04 21:15:35 UTC (rev 67816)
@@ -1,19 +1,18 @@
% The lualinalg package
% Authors: Chetan Shirore and Ajit Kumar
-% version 1.3, Date=03-Aug-2023
+% version 1.4, Date=04-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.3]
+\ProvidesPackage{lualinalg}[1.4]
\RequirePackage{xkeyval}
\RequirePackage{amsmath}
\RequirePackage{luamaths}
\RequirePackage{luacode}
\begin{luacode*}
-local complex = require "lualinalg-complex"
- local lfrac = require "lualinalg-fractions"
+
-- matrices part
matrices = {}
@@ -774,9 +773,9 @@
tostring(stepCnt) ..
": Divide row " ..
tostring(r) ..
- " by " ..
+ " by $" ..
tostring(complex.round(complex(m), dignum)) ..
- ".$$" ..
+ "$. $$" ..
tostring(matrix.show(matrix.concath(mtx, augmt), fom, dignum)) ..
"$$"
end
@@ -798,9 +797,9 @@
tostring(stepCnt) ..
": Multiply row " ..
tostring(r) ..
- " by " ..
+ " by $" ..
tostring(complex.round(complex(m), dignum)) ..
- " and subtract it from row " ..
+ "$ and subtract it from row " ..
tostring(i) ..
".$$" ..
tostring(
@@ -1183,9 +1182,9 @@
str = str .. "\\ \\newline Take given vectors as $v_1,\\ldots, v_" .. k .. "$ in order."
if vector.euclidnorm(inptTbl[1]) ~= complex(0.0) then
- tbl[1] = vector.mulnum(inptTbl[1], 1 / vector.euclidnorm(inptTbl[1]))
+ tbl[1] = vector.mulnum(inptTbl[1], 1.0 / vector.euclidnorm(inptTbl[1]))
else
- tbl[1] = vector.mulnum(inptTbl[1], 1)
+ tbl[1] = vector.mulnum(inptTbl[1], 1.0)
end
setmetatable(tbl[1], vector_meta)
str = str .. "\\ \\newline Step " .. cnt .. ": $$ u_" .. cnt .. "=v_" .. cnt .. "="
@@ -1206,7 +1205,7 @@
if vector.euclidnorm(tbl[i]) ~= complex(0.0) then
tbl[i] = vector.mulnum(tbl[i], 1 / vector.euclidnorm(tbl[i]))
else
- tbl[i] = vector.mulnum(tbl[i], 1)
+ tbl[i] = vector.mulnum(tbl[i], 1.0)
end
cnt = cnt + 1
More information about the tex-live-commits
mailing list.