Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
documentation:language_reference:objects:responsefunction:start [2024/10/05 17:06] Sina Shokridocumentation:language_reference:objects:responsefunction:start [2024/10/07 10:00] (current) Sina Shokri
Line 8: Line 8:
 A more compact way to store this spectrum, as a function of $\omega$ (and $\gamma$), is by just using two arrays for the values of $ \{R_k\} $ (residues) and $ \{\omega_k\} $ (poles). This is precicely the purpose of the object //Response Function//. In other words, response functions in Quanty are functions that, given a complex number as input ($\omega + i \gamma/2$) return a complex number (single valued functions). Additionally, the output could be a matrix (matrix functions) when the response function is defined using array of matrices, instead of array of numbers. Response functions fullfil the Kramers Kronig relations and "causality". A more compact way to store this spectrum, as a function of $\omega$ (and $\gamma$), is by just using two arrays for the values of $ \{R_k\} $ (residues) and $ \{\omega_k\} $ (poles). This is precicely the purpose of the object //Response Function//. In other words, response functions in Quanty are functions that, given a complex number as input ($\omega + i \gamma/2$) return a complex number (single valued functions). Additionally, the output could be a matrix (matrix functions) when the response function is defined using array of matrices, instead of array of numbers. Response functions fullfil the Kramers Kronig relations and "causality".
  
-The response functions can also be defined by matrices such that the function is given by $ A_0 + B_0^* \frac{ 1 }{\omega - H + i \gamma / 2} B_0^{T} $where $A_0$, $B_0$ and $H$ are matrices. $H$ can have different forms whereby only a few elements/blocks are non-zero. In Quanty, there are 4 different forms (types) for the matrix $H$:+The response functions can also be defined by matrices such that the function is given by  
 +$$ A_0 + B_0^* \frac{ 1 }{\omega - H + i \gamma / 2} \Bigg|_{[0,0]} B_0^{T} $$  
 +where $A_0$, $B_0$ and $H$ are matrices. Any unitary transformation that leaves the [0,0] element of $H$ unchanged results in the same spectrum. Hence $H$ can have different formswhereby only a few elements/blocks are non-zero. In Quanty, there are 4 different forms (types) for the matrix $H$:
   * list of poles (//ListOfPoles//)   * list of poles (//ListOfPoles//)
   * tri-diagonal (//Tri//)   * tri-diagonal (//Tri//)
Line 16: Line 18:
 These types are related to each other by unitary transformations and the Quanty function //[[documentation/language_reference/objects/responsefunction/functions/changetype|ChangeType()]]// can be used to transform between these types. List of poles is exactly the representation in Eq. (1). These types are related to each other by unitary transformations and the Quanty function //[[documentation/language_reference/objects/responsefunction/functions/changetype|ChangeType()]]// can be used to transform between these types. List of poles is exactly the representation in Eq. (1).
  
-In order to define a response function, +In order to define a response function, one needs to set the meta table to "ResponseFunctionMeta" in Lua. Note that there is no type-check, (i.e. setting the meta table is optional) for the functions acting on these tables.
  
-===== Table of contents ===== +==== Definitions ==== 
-{{indexmenu>.#2}}+<code Quanty Example.Quanty> 
 +-- Defining single-valued response functions 
 + 
 +a = {0, -1,-0.5, 0,   0.5,  1,  1.5} 
 +b = {  0.2, 0.1, 0.1, 0.1, 0.2, 0.3} 
 +GA_L = {a,b,mu=0,type="ListOfPoles", name="A"
 +setmetatable(GA_L, ResponseFunctionMeta) 
 + 
 +a = {0, 1,   1,   1,   1,   1,  1} 
 +b = {   1, 0.5, 0.5, 0.5, 0.5, 0.5} 
 +GB_T = {a,b,mu=0,type="Tri", name="B"
 +setmetatable(GB_T, ResponseFunctionMeta) 
 + 
 +a = {0, 1, 1.5,   2, 2.5,   3, 3.5} 
 +b = {   1, 0.5, 0.5, 0.5, 0.5, 0.5} 
 +GC_A = {a,b,mu=0,type="And", name="C"
 +setmetatable(GC_A, ResponseFunctionMeta) 
 + 
 +acon = {0,         1,   1,   1,   1,   1,  1} 
 +bcon = {   sqrt(1/2), 0.5, 0.5, 0.5, 0.5, 0.5} 
 +Gcon = {acon,bcon,mu=0,type="Tri"
 +setmetatable(Gcon, ResponseFunctionMeta) 
 +aval = {0,        -1,  -1,  -1,  -1,  -1, -1} 
 +bval = {   sqrt(1/2), 0.5, 0.5, 0.5, 0.5, 0.5} 
 +Gval = {aval,bval,mu=0,type="Tri"
 +setmetatable(Gval, ResponseFunctionMeta) 
 +a0=0 
 +b0=1 
 +GD_N = {{a0,b0},val=Gval,con=Gcon,mu=0,type="Nat", name="D"
 +setmetatable(GD_N, ResponseFunctionMeta) 
 + 
 +-- For a more efficient storage, one can convert from Table to Userdata 
 +GA_l ResponseFunction.ToUserdata(GA_L) 
 +GB_t ResponseFunction.ToUserdata(GB_T) 
 +GC_a ResponseFunction.ToUserdata(GC_A) 
 +GD_n ResponseFunction.ToUserdata(GD_N) 
 + 
 +print("GA_L:"
 +print(GA_L) 
 +print("GA_l:"
 +print(GA_l) 
 + 
 +print("GB_T:"
 +print(GB_T) 
 +print("GB_t:"
 +print(GB_t) 
 + 
 +print("GC_A:"
 +print(GC_A) 
 +print("GC_a:"
 +print(GC_a) 
 + 
 +print("GD_N:"
 +print(GD_N) 
 +print("GD_n:"
 +print(GD_n) 
 + 
 +-- response functions in Quanty are functions that, given  
 +-- a complex number as input w + I gamma/2 return a complex 
 +-- number (single valued functions) or a matrix (matrix functions) 
 +omega 0.764 
 +gamma = 0.1 
 +print("omega = ", omega) 
 +print("gamma = ", gamma) 
 + 
 +print(""
 +print("GA_L(omega, gamma) = ", GA_L(omega, gamma)) 
 +print("GA_l(omega, gamma) = ", GA_l(omega, gamma)) 
 + 
 +print("GB_T(omega, gamma) = ", GB_T(omega, gamma)) 
 +print("GB_t(omega, gamma) = ", GB_t(omega, gamma)) 
 + 
 +print("GC_A(omega, gamma) = ", GC_A(omega, gamma)) 
 +print("GC_a(omega, gamma) = ", GC_a(omega, gamma)) 
 + 
 +print("GD_N(omega, gamma) = ", GD_N(omega, gamma)) 
 +print("GD_n(omega, gamma) = ", GD_n(omega, gamma)) 
 + 
 + 
 +-- Defining matrix response functions 
 + 
 +A0 = {{0,0,0},{0,0,0},{0,0,0}} 
 +setmetatable(A0, MatrixMeta) 
 +A1 = {{1,2,3},{2,5,6},{3,6,9}} 
 +setmetatable(A1, MatrixMeta) 
 +A2 = {{2,2,3},{2,5,6},{3,6,9}} 
 +setmetatable(A2, MatrixMeta) 
 +A3 = {{3,2,3},{2,5,6},{3,6,9}} 
 +setmetatable(A3, MatrixMeta) 
 +a1 = -1 
 +a2 = 0 
 +a3 = 1 
 +av1 = -0.
 +av2 = -1.0 
 +av3 = -1.5 
 +ac1 = 0.5 
 +ac2 = 1.0 
 +ac3 = 1.5 
 +B0s = {{1,0,0},{0,1,0},{0,0,1}} 
 +setmetatable(B0s, MatrixMeta) 
 +t=sqrt(0.5) 
 +B0vs = {{t,0,0},{0,t,0},{0,0,t}} 
 +setmetatable(B0vs, MatrixMeta) 
 +B0cs = {{t,0,0},{0,t,0},{0,0,t}} 
 +setmetatable(B0cs, MatrixMeta) 
 +B0 = B0s * B0s 
 +B0v = B0vs * B0vs 
 +B0c = B0cs * B0cs 
 +B1s = {{1,I,3},{-I,5,6},{3,6,9}} 
 +setmetatable(B1s, MatrixMeta) 
 +B1 = B1s * B1s 
 +B2s = {{2,0,3},{0,5,6},{3,6,9}} 
 +setmetatable(B2s, MatrixMeta) 
 +B2 = B2s * B2s 
 +B3s = {{3,0,3},{0,5,6},{3,6,9}} 
 +setmetatable(B3s, MatrixMeta) 
 +B3 = B3s * B3s 
 + 
 +MA_L = { {A0,a1,a2,a3}, {B1,B2,B3}, mu=0, type="ListOfPoles", name="A"
 +setmetatable(MA_L, ResponseFunctionMeta) 
 + 
 +MB_T = { {A0,A1,A2,A3}, {B0,B1,B2}, mu=0, type="Tri", name="B"
 +setmetatable(MB_T, ResponseFunctionMeta) 
 + 
 +MC_A = { {A0,A1,A2,A3}, {B0,B1,B2}, mu=0, type="And", name="C"
 +setmetatable(MC_A, ResponseFunctionMeta) 
 + 
 +MD_Nv = { {A0,av1,av2,av3}, {B1,B2,B3}, mu=0, type="ListOfPoles", name="Dv"
 +setmetatable(MD_Nv, ResponseFunctionMeta) 
 + 
 +MD_Nc = { {A0,ac1,ac2,ac3}, {B1,B2,B3}, mu=0, type="ListOfPoles", name="Dc"
 +setmetatable(MD_Nc, ResponseFunctionMeta) 
 + 
 +MD_N = {{A0,B0},val=MD_Nv,con=MD_Nc,mu=0,type="Nat", name="D"
 +setmetatable(MD_N, ResponseFunctionMeta) 
 + 
 +-- For a more efficient storage, one can convert from Table to Userdata 
 +MA_l = ResponseFunction.ToUserdata(MA_L) 
 +MB_t = ResponseFunction.ToUserdata(MB_T) 
 +MC_a = ResponseFunction.ToUserdata(MC_A) 
 +MD_n = ResponseFunction.ToUserdata(MD_N) 
 + 
 + 
 +print("MA_L:"
 +print(MA_L) 
 +print("MA_l:"
 +print(MA_l) 
 + 
 +print("MB_T:"
 +print(MB_T) 
 +print("MB_t:"
 +print(MB_t) 
 + 
 +print("MC_A:"
 +print(MC_A) 
 +print("MC_a:"
 +print(MC_a) 
 + 
 +print("MD_N:"
 +print(MD_N) 
 +print("MD_n:"
 +print(MD_n) 
 + 
 + 
 +-- response functions in Quanty are functions that, given  
 +-- a complex number as input w + I gamma/2 return a complex 
 +-- number (single valued functions) or a matrix (matrix functions) 
 +omega = 0.764 
 +gamma = 0.1 
 +print("omega = ", omega) 
 +print("gamma = ", gamma) 
 + 
 +print(""
 +print("MA_L(omega, gamma) = ") 
 +print(MA_L(omega, gamma)) 
 +print("MA_l(omega, gamma) = ") 
 +print(MA_l(omega, gamma)) 
 + 
 +print(""
 +print("MB_T(omega, gamma) = ") 
 +print(MB_T(omega, gamma)) 
 +print("MB_t(omega, gamma) = ") 
 +print(MB_t(omega, gamma)) 
 + 
 +print(""
 +print("MC_A(omega, gamma) = ") 
 +print(MC_A(omega, gamma)) 
 +print("MC_a(omega, gamma) = ") 
 +print(MC_a(omega, gamma)) 
 + 
 +print(""
 +print("MD_N(omega, gamma) = ") 
 +print(MD_N(omega, gamma)) 
 +print("MD_n(omega, gamma) = ") 
 +print(MD_n(omega, gamma)) 
 +</code>
  
-==== Result ==== 
 <file Quanty_Output> <file Quanty_Output>
-text produced as output+GA_L: 
 +{ { 0 , -1 , -0.5 , 0 , 0.5 , 1 , 1.5 } ,  
 +  { 0.2 , 0.1 , 0.1 , 0.1 , 0.2 , 0.3 } , 
 +  type = ListOfPoles , 
 +  mu = 0 , 
 +  name = A } 
 +GA_l: 
 +ResponseFunction in userdata format use ToTable() in order to get a table form 
 +GB_T: 
 +{ { 0 , 1 , 1 , 1 , 1 , 1 , 1 } ,  
 +  { 1 , 0.5 , 0.5 , 0.5 , 0.5 , 0.5 } , 
 +  type = Tri , 
 +  mu = 0 , 
 +  name = B } 
 +GB_t: 
 +ResponseFunction in userdata format use ToTable() in order to get a table form 
 +GC_A: 
 +{ { 0 , 1 , 1.5 , 2 , 2.5 , 3 , 3.5 } ,  
 +  { 1 , 0.5 , 0.5 , 0.5 , 0.5 , 0.5 } , 
 +  type = And , 
 +  mu = 0 , 
 +  name = C } 
 +GC_a: 
 +ResponseFunction in userdata format use ToTable() in order to get a table form 
 +GD_N: 
 +{ { 0 , 1 } , 
 +  type = Nat , 
 +  val = { { 0 , -1 , -1 , -1 , -1 , -1 , -1 } ,  
 +  { 0.70710678118655 , 0.5 , 0.5 , 0.5 , 0.5 , 0.5 } , 
 +  mu = 0 , 
 +  type = Tri } , 
 +  con = { { 0 , 1 , 1 , 1 , 1 , 1 , 1 } ,  
 +  { 0.70710678118655 , 0.5 , 0.5 , 0.5 , 0.5 , 0.5 } , 
 +  mu = 0 , 
 +  type = Tri } , 
 +  name = D , 
 +  mu = 0 } 
 +GD_n: 
 +ResponseFunction in userdata format use ToTable() in order to get a table form 
 +omega = 0.764 
 +gamma = 0.1 
 + 
 +GA_L(omega, gamma) = (-0.52850742098896 - 0.28351791776891 I) 
 +GA_l(omega, gamma) = (-0.52850742098896 - 0.28351791776891 I) 
 +GB_T(omega, gamma) = (-1.6762624946074 - 5.2043002596032 I) 
 +GB_t(omega, gamma) = (-1.6762624946074 - 5.2043002596032 I) 
 +GC_A(omega, gamma) = (1.5075603166492 - 0.20713674761056 I) 
 +GC_a(omega, gamma) = (1.5075603166492 - 0.20713674761056 I) 
 +GD_N(omega, gamma) = (-0.52770560643508 - 2.61282805234 I) 
 +GD_n(omega, gamma) = (-0.52770560643508 - 2.61282805234 I) 
 +MA_L: 
 +{ { { { 0 , 0 , 0 } ,  
 +  { 0 , 0 , 0 } ,  
 +  { 0 , 0 , 0 } } , -1 , 0 , 1 } ,  
 +  { { { 11 , (18 + 6 I) , (30 + 6 I) } ,  
 +  { (18 - 6 I) , 62 , (84 - 3 I) } ,  
 +  { (30 - 6 I) , (84 + 3 I) , 126 } } ,  
 +  { { 13 , 18 , 33 } ,  
 +  { 18 , 61 , 84 } ,  
 +  { 33 , 84 , 126 } } ,  
 +  { { 18 , 18 , 36 } ,  
 +  { 18 , 61 , 84 } ,  
 +  { 36 , 84 , 126 } } } , 
 +  type = ListOfPoles , 
 +  mu = 0 , 
 +  name = A } 
 +MA_l: 
 +ResponseFunction in userdata format use ToTable() in order to get a table form 
 +MB_T: 
 +{ { { { 0 , 0 , 0 } ,  
 +  { 0 , 0 , 0 } ,  
 +  { 0 , 0 , 0 } } ,  
 +  { { 1 , 2 , 3 } ,  
 +  { 2 , 5 , 6 } ,  
 +  { 3 , 6 , 9 } } ,  
 +  { { 2 , 2 , 3 } ,  
 +  { 2 , 5 , 6 } ,  
 +  { 3 , 6 , 9 } } ,  
 +  { { 3 , 2 , 3 } ,  
 +  { 2 , 5 , 6 } ,  
 +  { 3 , 6 , 9 } } } ,  
 +  { { { 1 , 0 , 0 } ,  
 +  { 0 , 1 , 0 } ,  
 +  { 0 , 0 , 1 } } ,  
 +  { { 11 , (18 + 6 I) , (30 + 6 I) } ,  
 +  { (18 - 6 I) , 62 , (84 - 3 I) } ,  
 +  { (30 - 6 I) , (84 + 3 I) , 126 } } ,  
 +  { { 13 , 18 , 33 } ,  
 +  { 18 , 61 , 84 } ,  
 +  { 33 , 84 , 126 } } } , 
 +  type = Tri , 
 +  mu = 0 , 
 +  name = B } 
 +MB_t: 
 +ResponseFunction in userdata format use ToTable() in order to get a table form 
 +MC_A: 
 +{ { { { 0 , 0 , 0 } ,  
 +  { 0 , 0 , 0 } ,  
 +  { 0 , 0 , 0 } } ,  
 +  { { 1 , 2 , 3 } ,  
 +  { 2 , 5 , 6 } ,  
 +  { 3 , 6 , 9 } } ,  
 +  { { 2 , 2 , 3 } ,  
 +  { 2 , 5 , 6 } ,  
 +  { 3 , 6 , 9 } } ,  
 +  { { 3 , 2 , 3 } ,  
 +  { 2 , 5 , 6 } ,  
 +  { 3 , 6 , 9 } } } ,  
 +  { { { 1 , 0 , 0 } ,  
 +  { 0 , 1 , 0 } ,  
 +  { 0 , 0 , 1 } } ,  
 +  { { 11 , (18 + 6 I) , (30 + 6 I) } ,  
 +  { (18 - 6 I) , 62 , (84 - 3 I) } ,  
 +  { (30 - 6 I) , (84 + 3 I) , 126 } } ,  
 +  { { 13 , 18 , 33 } ,  
 +  { 18 , 61 , 84 } ,  
 +  { 33 , 84 , 126 } } } , 
 +  type = And , 
 +  mu = 0 , 
 +  name = C } 
 +MC_a: 
 +ResponseFunction in userdata format use ToTable() in order to get a table form 
 +MD_N: 
 +{ { { { 0 , 0 , 0 } ,  
 +  { 0 , 0 , 0 } ,  
 +  { 0 , 0 , 0 } } ,  
 +  { { 1 , 0 , 0 } ,  
 +  { 0 , 1 , 0 } ,  
 +  { 0 , 0 , 1 } } } , 
 +  type = Nat , 
 +  val = { { { { 0 , 0 , 0 } ,  
 +  { 0 , 0 , 0 } ,  
 +  { 0 , 0 , 0 } } , -0.5 , -1 , -1.5 } ,  
 +  { { { 11 , (18 + 6 I) , (30 + 6 I) } ,  
 +  { (18 - 6 I) , 62 , (84 - 3 I) } ,  
 +  { (30 - 6 I) , (84 + 3 I) , 126 } } ,  
 +  { { 13 , 18 , 33 } ,  
 +  { 18 , 61 , 84 } ,  
 +  { 33 , 84 , 126 } } ,  
 +  { { 18 , 18 , 36 } ,  
 +  { 18 , 61 , 84 } ,  
 +  { 36 , 84 , 126 } } } , 
 +  type = ListOfPoles , 
 +  mu = 0 , 
 +  name = Dv } , 
 +  con = { { { { 0 , 0 , 0 } ,  
 +  { 0 , 0 , 0 } ,  
 +  { 0 , 0 , 0 } } , 0.5 , 1 , 1.5 } ,  
 +  { { { 11 , (18 + 6 I) , (30 + 6 I) } ,  
 +  { (18 - 6 I) , 62 , (84 - 3 I) } ,  
 +  { (30 - 6 I) , (84 + 3 I) , 126 } } ,  
 +  { { 13 , 18 , 33 } ,  
 +  { 18 , 61 , 84 } ,  
 +  { 33 , 84 , 126 } } ,  
 +  { { 18 , 18 , 36 } ,  
 +  { 18 , 61 , 84 } ,  
 +  { 36 , 84 , 126 } } } , 
 +  type = ListOfPoles , 
 +  mu = 0 , 
 +  name = Dc } , 
 +  name = D , 
 +  mu = 0 } 
 +MD_n: 
 +ResponseFunction in userdata format use ToTable() in order to get a table form 
 +omega = 0.764 
 +gamma = 0.1 
 + 
 +MA_L(omega, gamma) =  
 +{ { (-49.82074737235 - 16.750435144161 I) , (-39.242754250336 - 13.890672203015 I) , (-85.890426598686 - 30.827754261851 I) } ,  
 +  { (-39.435420350993 - 20.687932234176 I) , (-132.74935751632 - 58.607579693628 I) , (-183.63057392827 - 82.382725361235 I) } ,  
 +  { (-86.083092699343 - 37.625014293012 I) , (-183.53424087794 - 78.984095345655 I) , (-275.37361110465 - 121.02511553017 I) } } 
 +MA_l(omega, gamma) =  
 +{ { (-49.82074737235 - 16.750435144161 I) , (-39.242754250336 - 13.890672203015 I) , (-85.890426598686 - 30.827754261851 I) } ,  
 +  { (-39.435420350993 - 20.687932234176 I) , (-132.74935751632 - 58.607579693628 I) , (-183.63057392827 - 82.382725361235 I) } ,  
 +  { (-86.083092699343 - 37.625014293012 I) , (-183.53424087794 - 78.984095345655 I) , (-275.37361110465 - 121.02511553017 I) } } 
 + 
 +MB_T(omega, gamma) =  
 +{ { (0.99841211757801 - 0.4318886700871 I) , (-0.92217346376056 - 0.59364349550167 I) , (0.33618642304746 + 0.56252370645231 I) } ,  
 +  { (-0.51999398150154 + 0.87279523667066 I) , (0.69431808205569 - 0.1748977600005 I) , (-0.34355189835894 - 0.03809026037919 I) } ,  
 +  { (0.13982839704936 - 0.53101630282404 I) , (-0.25718128095213 + 0.17938506335344 I) , (0.080137084707226 - 0.049212538037938 I) } } 
 +MB_t(omega, gamma) =  
 +{ { (0.99841211757801 - 0.4318886700871 I) , (-0.92217346376056 - 0.59364349550167 I) , (0.33618642304746 + 0.56252370645231 I) } ,  
 +  { (-0.51999398150154 + 0.87279523667066 I) , (0.69431808205569 - 0.1748977600005 I) , (-0.34355189835894 - 0.03809026037919 I) } ,  
 +  { (0.13982839704936 - 0.53101630282404 I) , (-0.25718128095213 + 0.17938506335344 I) , (0.080137084707226 - 0.049212538037938 I) } } 
 + 
 +MC_A(omega, gamma) =  
 +{ { (0.0033404740201663 - 0.049014208032374 I) , (-0.0092579857609902 - 0.018133779674219 I) , (0.0041464743284782 + 0.021581712320061 I) } ,  
 +  { (0.001131475130102 - 0.019625764066449 I) , (-0.006620607647268 - 0.0094591143626733 I) , (0.0044705980344151 + 0.010254424901895 I) } ,  
 +  { (0.0018776712535675 + 0.024036826455971 I) , (0.0083397043445284 + 0.01003150710377 I) , (-0.0056913744700838 - 0.011590149052798 I) } } 
 +MC_a(omega, gamma) =  
 +{ { (0.0033404740201663 - 0.049014208032374 I) , (-0.0092579857609902 - 0.018133779674219 I) , (0.0041464743284782 + 0.021581712320061 I) } ,  
 +  { (0.001131475130102 - 0.019625764066449 I) , (-0.006620607647268 - 0.0094591143626733 I) , (0.0044705980344151 + 0.010254424901895 I) } ,  
 +  { (0.0018776712535675 + 0.024036826455971 I) , (0.0083397043445284 + 0.01003150710377 I) , (-0.0056913744700838 - 0.011590149052798 I) } } 
 + 
 +MD_N(omega, gamma) =  
 +{ { (-12.839446772164 - 21.169048830916 I) , (5.1855777994224 - 3.9320983625761 I) , (-10.184899840804 - 27.575394683943 I) } ,  
 +  { (-3.5000860033155 - 57.291484603566 I) , (7.3025877301526 - 104.46376534286 I) , (1.7613982402315 - 156.19487348125 I) } ,  
 +  { (-18.870563643542 - 80.934780924933 I) , (6.1042301416005 - 129.51518036075 I) , (5.8992212863723 - 214.2825403815 I) } } 
 +MD_n(omega, gamma) =  
 +{ { (-12.839446772164 - 21.169048830916 I) , (5.1855777994224 - 3.9320983625761 I) , (-10.184899840804 - 27.575394683943 I) } ,  
 +  { (-3.5000860033155 - 57.291484603566 I) , (7.3025877301526 - 104.46376534286 I) , (1.7613982402315 - 156.19487348125 I) } ,  
 +  { (-18.870563643542 - 80.934780924933 I) , (6.1042301416005 - 129.51518036075 I) , (5.8992212863723 - 214.2825403815 I) } }
 </file> </file>
  
 ===== Table of contents ===== ===== Table of contents =====
-{{indexmenu>.#1|msort}}+{{indexmenu>.#2}}
  
Print/export