$      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !!!!!! ! ! ! ! !!""""########$$$$$ $!$"$#$$$%$&$'$($)$*$+$,$-%.%/%0%1%2%3%4%5%6%7%8%9%:%;&<&=&>&?&@&A&B&C&D&EFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghij'k'l'm'n'o'p'q'r's't'u'v'w'x'y'z({(|(}(~(((((((()))))))))))))*+++++++,,,,,,,,,,----------------------------------------------...................................................... . . . / //////0001112222222 2!2"2#2>uses ffi provisional!Alberto Ruiz (aruiz at um dot es)$3portable (uses FFI) provisionalAlberto Ruiz <aruiz@um.es>"%&'()*+,-./0123456789:;<=>?@ABCDEF"%&'()*+,-./0123456789:;<=>?@ABCDEF"%&'()*+,-./0123456789:;<=>?@ABCDEF4portable (uses FFI) provisionalAlberto Ruiz <aruiz@um.es>Gdescription of GSL error codes Hclear the fpu IsplitEvery 3 [1..9] == [[1,2,3],[4,5,6],[7,8,9]]J1obtains the common value of a property of a list Kcommon value with " adaptable" 1 LFormatting tool Mpostfix function application (flip ($)) Nspecialized fromIntegral OAerror codes for the auxiliary functions required by the wrappers Pcheck the error code IJKLMNP IJKLMNP5portable (uses FFI) provisionalAlberto Ruiz <aruiz@um.es>QRSTHA one-dimensional array of objects stored in a contiguous memory block. UVnumber of elements W$foreign pointer to the memory block Number of elements  creates a Vector from a list: > fromList [2,3,5,7] 4 |> [2.0,3.0,5.0,7.0]X 'extracts the Vector elements to a list > toList (linspace 5 (1,10)) [1.0,3.25,5.5,7.75,10.0] An alternative to  $ with explicit dimension. The input F list is explicitly truncated if it is too long, so it may safely 1 be used, for instance, with infinite lists. >This is the format used in the instances for Show (Vector a). Y1access to Vector elements without range checking Z/access to Vector elements with range checking. 5takes a number of consecutive elements from a Vector  > subVector 2 3 (fromList [1..10]) 3 |> [3.0,4.0,5.0]index of the starting element number of elements to extract source result Reads a vector position: > fromList [0..9] @> 7 7.02creates a new Vector by joining a list of Vectors > join [fromList [1..5], constant 1 3] %8 |> [1.0,2.0,3.0,4.0,5.0,1.0,1.0,1.0][Ztransforms a complex vector into a real vector with alternating real and imaginary parts \Ytransforms a real vector into a complex vector with alternating real and imaginary parts ]map on Vectors zipWith for Vectors ULoads a vector from an ASCII file (the number of elements must be known in advance). TSaves the elements of a vector, with a given format (%f, %e, %g), to an ASCII file. ULoads a vector from a binary file (the number of elements must be known in advance). 1Saves the elements of a vector to a binary file. UVW^ Y_Z [\]UVWUVW YZ [\]6portable (uses FFI) provisionalAlberto Ruiz <aruiz@um.es>/`abcdAuxiliary class. e(r0,c0) starting position  (rt,ct) dimensions of submatrix fgh@Matrix representation suitable for GSL and LAPACK computations. ijklmn !Matrix transpose. "#$%*Creates a vector by concatenation of rows > flatten (ident 3) )9 |> [1.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,1.0]&the inverse of Data.Packed.Matrix.fromLists '(Create a matrix from a list of vectors. + All vectors must have the same dimension, 6 or dimension 1, which is are automatically expanded. (3extracts the rows of a matrix as a list of vectors )4Creates a matrix from a list of vectors, as columns *7Creates a list of vectors from the columns of a matrix +Reads a matrix position. ,-Creates a matrix from a vector by grouping the elements in rows with the desired number of columns. (GNU-Octave groups by columns. To do it you can define reshapeF r = trans . reshape r (where r is the desired number of rows.) > reshape 4 (  [1..12]) (3><4)  [ 1.0, 2.0, 3.0, 4.0  , 5.0, 6.0, 7.0, 8.0  , 9.0, 10.0, 11.0, 12.0 ].Bapplication of a vector function on the flattened matrix elements /Dapplication of a vector function on the flattened matrices elements opqr0$Extracts a submatrix from a matrix. (r0,c0) starting position  (rt,ct) dimensions of submatrix  input matrix result s2obtains the complex conjugate of a complex vector tDcreates a complex vector from vectors with real and imaginary parts uthe inverse of t 1"Saves a matrix as 2D ASCII table. format (%f, %g, %e) (efgijklmn !"#$v%&'()*+w,-x./0stu1%efgefgkilmnlmjijklmn !"#$%&'()*+,-./0stu1portable (uses FFI) provisionalAlberto Ruiz <aruiz@um.es>:yz{|}~23>normal distribution with mean zero and standard deviation one 4uniform distribution in [0,1) 56789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\Vobtains different functions of a vector: norm1, norm2, max, min, posmax, posmin, etc. ](map of real vectors with given function ^+map of complex vectors with given function _(map of real vectors with given function `+map of complex vectors with given function a&elementwise operation on real vectors b)elementwise operation on complex vectors cObtains a vector of pseudorandom elements from the the mt19937 generator in GSL, with a given seed. Use randomIO to get a random seed. seed  distribution  vector size 223456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc25;:9876\J[ZYXWVUTSRQPONMLK]^CIHGFED_`<BA@?>=ab243c2243345;:98766789:;<BA@?>==>?@ABCIHGFEDDEFGHIJ[ZYXWVUTSRQPONMLKKLMNOPQRSTUVWXYZ[\]^_`abc7portable provisionalAlberto Ruiz <aruiz@um.es>s%&'()*+,-./0123456789:;<=>?@ABCDEFIJKLMNPUVW^ Y_Z [\]efgijklmn !"#$v%&'()*+w,-x./0stu1portable provisionalAlberto Ruiz <aruiz@um.es>"defghijklmnopqrstuvwxyz{|}~defghijklmnopqrstuvwxyz{|}~erfmhopklds{u|}xyqijgn~vwtzdefghijklmnopqrstuvwxyz{|}~uses ffi provisional!Alberto Ruiz (aruiz at um dot es)Vconversion of Haskell functions into function pointers that can be used in the C side 'type: 0 central, 1 forward, 2 backward initial step size  function $point where the derivative is taken result and error 'Adaptive central difference algorithm, gsl_deriv_central. For example: " > let deriv = derivCentral 0.01  > deriv sin (pi/4) ,(0.7071067812000676,1.0600063101654055e-10)  > cos (pi/4) 0.7071067811865476 initial step size  function $point where the derivative is taken result and absolute error 'Adaptive forward difference algorithm, gsl_deriv_forwardX. The function is evaluated only at points greater than x, and never at x itself. The derivative is returned in result and an estimate of its absolute error is returned in abserr. This function should be used if f(x) has a discontinuity at x, or is undefined for values less than x. A backward derivative can be obtained using a negative step. initial step size  function $point where the derivative is taken result and absolute error (Adaptive backward difference algorithm, gsl_deriv_backward. initial step size  function $point where the derivative is taken result and absolute error uses ffi provisional!Alberto Ruiz (aruiz at um dot es)Vconversion of Haskell functions into function pointers that can be used in the C side Numerical integration using gsl_integration_qags9 (adaptive integration with singularities). For example: >% let quad = integrateQAGS 1E-9 1000 ># let f a x = x**(-0.5) * log (a*x) > quad (f 1) 0 1 *(-3.999999999999974,4.871658632055187e-13)precision (e.g. 1E-9) (size of auxiliary workspace (e.g. 1000) 0function to be integrated on the interval (a,b) a b $result of the integration and error Numerical integration using gsl_integration_qngA (useful for fast integration of smooth functions). For example: > let quad = integrateQNG 1E-6 > quad (\x -> 4/(1+x*x)) 0 1 )(3.141592653589793,3.487868498008632e-14)precision (e.g. 1E-9) 0function to be integrated on the interval (a,b) a b $result of the integration and error  uses ffi provisional!Alberto Ruiz (aruiz at um dot es)Fast 1D Fourier transform of a  ( ) using gsl_fft_complex_forward6. It uses the same scaling conventions as GNU Octave. > fft (  [1,2,3,4]) Dvector (4) [10.0 :+ 0.0,(-2.0) :+ 2.0,(-2.0) :+ 0.0,(-2.0) :+ (-2.0)]The inverse of , using gsl_fft_complex_inverse.  uses ffi provisional!Alberto Ruiz (aruiz at um dot es)0Solution of general polynomial equations, using gsl_poly_complex_solve. For example, ( the three solutions of x^3 + 8 = 0 > polySolve [8,0,0,1] [(-1.9999999999999998) :+ 0.0,  1.0 :+ 1.732050807568877,  1.0 :+ (-1.732050807568877)]@The example in the GSL manual: To find the roots of x^5 -1 = 0: > polySolve [-1, 0, 0, 0, 0, 1] .[(-0.8090169943749475) :+ 0.5877852522924731, 0(-0.8090169943749475) :+ (-0.5877852522924731), +0.30901699437494734 :+ 0.9510565162951536, .0.30901699437494734 :+ (-0.9510565162951536),  1.0 :+ 0.0]8Vconversion of Haskell functions into function pointers that can be used in the C side  9uses ffi provisional!Alberto Ruiz (aruiz at um dot es) access to a sf_result access to sf_result_e10   uses ffi provisional!Alberto Ruiz (aruiz at um dot es)0 uses ffi provisional!Alberto Ruiz (aruiz at um dot es)      !"#$%&'()*+,XXX uses ffi provisional!Alberto Ruiz (aruiz at um dot es)-.uses ffi provisional!Alberto Ruiz (aruiz at um dot es)/0123456789:;<=>?uses ffi provisional!Alberto Ruiz (aruiz at um dot es)@ABCDEFGHI  JK      uses ffi provisional!Alberto Ruiz (aruiz at um dot es)LM        uses ffi provisional!Alberto Ruiz (aruiz at um dot es)NOPQRSTUVWXY       uses ffi provisional!Alberto Ruiz (aruiz at um dot es) Z[\]^_`auses ffi provisional!Alberto Ruiz (aruiz at um dot es)bcduses ffi provisional!Alberto Ruiz (aruiz at um dot es)0efghijklmnopqrstuvwxyz{| !"#$%&'()*+,-./012345 !"#$%&'()*+,-./012345 !"#$%&'()*+,-./012345 !"#$%&'()*+,-./012345uses ffi provisional!Alberto Ruiz (aruiz at um dot es)}~6789:;<=>?@A 6789:;<=>?@A 6789:;<=>?@A 6789:;<=>?@Auses ffi provisional!Alberto Ruiz (aruiz at um dot es)&BCDEFGHIJKLMNOPQRSBCDEFGHIJKLMNOPQRSBCDEFGHIJKLMNOPQRSBCDEFGHIJKLMNOPQRSuses ffi provisional!Alberto Ruiz (aruiz at um dot es)8TUVWXYZ[\]^_`abcdefghijklmnoTUVWXYZ[\]^_`abcdefghijklmnoTUVWXYZ[\]^_`abcdefghijklmnoTUVWXYZ[\]^_`abcdefghijklmnouses ffi provisional!Alberto Ruiz (aruiz at um dot es)$pqrstuvwxyz{|}~pqrstuvwxyz{|}~pqrstuvwxyz{|}~pqrstuvwxyz{|}~uses ffi provisional!Alberto Ruiz (aruiz at um dot es)X(((uses ffi provisional!Alberto Ruiz (aruiz at um dot es)uses ffi provisional!Alberto Ruiz (aruiz at um dot es),     uses ffi provisional!Alberto Ruiz (aruiz at um dot es) !"uses ffi provisional!Alberto Ruiz (aruiz at um dot es)#$%&uses ffi provisional!Alberto Ruiz (aruiz at um dot es)X'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXY%%%uses ffi provisional!Alberto Ruiz (aruiz at um dot es)Z[\]^_`abc uses ffi provisional!Alberto Ruiz (aruiz at um dot es)de!uses ffi provisional!Alberto Ruiz (aruiz at um dot es)fghijklmnopqrs                       "uses ffi provisional!Alberto Ruiz (aruiz at um dot es)tuvw#uses ffi provisional!Alberto Ruiz (aruiz at um dot es)xyz{|}~$uses ffi provisional!Alberto Ruiz (aruiz at um dot es)2 !"#$%&'()*+, !"#$%&'()*+, !"#$%&'()*+, !"#$%&'()*+,%uses ffi provisional!Alberto Ruiz (aruiz at um dot es)-./0123456789:-./0123456789:-./0123456789:-./0123456789::uses ffi provisional!Alberto Ruiz (aruiz at um dot es)      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:&portable provisionalAlberto Ruiz <aruiz@um.es> ;2Creates a StorableArray indexed from 0 to dim -1. T (Memory is efficiently copied, so you can then freely modify the obtained array) <'Creates a Vector from a StorableArray. ` (Memory is efficiently copied, so posterior changes in the array will not affect the result) =Ccreates an immutable Array from an hmatrix Vector (to do: unboxed) >@creates a mutable array from an hmatrix Vector (to do: unboxed) ?@bcreates a mutable Array from an hmatrix Vector for manipulation with runSTUArray (to do: unboxed) ABCD ;<=>?@ABCD =?>@;<BACD ;<=>?@ABCDportable provisionalAlberto Ruiz <aruiz@um.es>  "#$, ,$ "#portable provisionalAlberto Ruiz <aruiz@um.es>E4Creates a real vector containing a range of values: > linspace 5 (-3,7) 5 |> [-3.0,-0.5,2.0,4.5,7.0]/Logarithmic spacing can be defined as follows: )logspace n (a,b) = 10 ** linspace n (a,b)FGHIJ:creates a vector with a given number of equal components: > constant 2 7 !7 |> [2.0,2.0,2.0,2.0,2.0,2.0,2.0]KHcreates a Vector of the specified length using the supplied function to 2 to map the index to the value at that index. > buildVector 4 fromIntegral 4 |> [0.0,1.0,2.0,3.0]L5Show a vector using a function for showing matrices. disp = putStr . vecdisp (dispf 2)  > disp (E 10 (0,1)) A10 |> 0.00 0.11 0.22 0.33 0.44 0.56 0.67 0.78 0.89 1.00  EFGHIJKL K JELFGHIEFGHIJKLportable provisionalAlberto Ruiz <aruiz@um.es>"2creates a matrix from a vertical list of matrices 4creates a matrix from a horizontal list of matrices MCCreates a matrix from blocks given as a list of lists of matrices.  Single row/:column components are automatically expanded to match the %corresponding common row and column: > let disp = putStr . dispf 2 >. let vector xs = fromList xs :: Vector Double > let diagl = diag . vector > let rowm = asRow . vector  >+ disp $ fromBlocks [[ident 5, 7, rowm[10,20]], [3, diagl[1,2,3], 0]]  8x10 1 0 0 0 0 7 7 7 10 20 0 1 0 0 0 7 7 7 10 20 0 0 1 0 0 7 7 7 10 20 0 0 0 1 0 7 7 7 10 20 0 0 0 0 1 7 7 7 10 20 3 3 3 3 3 1 0 0 0 0 3 3 3 3 3 0 2 0 0 0 3 3 3 3 3 0 0 3 0 0NReverse rows OReverse columns P/Creates a square matrix with a given diagonal. Q&creates a rectangular diagonal matrix /> diagRect (constant 5 3) 3 4 :: Matrix Double (3><4)  [ 5.0, 0.0, 0.0, 0.0  , 0.0, 5.0, 0.0, 0.0  , 0.0, 0.0, 5.0, 0.0 ]R0extracts the diagonal from a rectangular matrix S/creates the identity matrix of given dimension T An easy way to create a matrix: > (2><3)[1..6] (2><3)  [ 1.0, 2.0, 3.0  , 4.0, 5.0, 6.0 ]GThis is the format produced by the instances of Show (Matrix a), which can also be used for input. 7The input list is explicitly truncated, so that it can Csafely be used with lists that are too long (like infinite lists).  Example: > (2>|<3)[1..] (2><3)  [ 1.0, 2.0, 3.0  , 4.0, 5.0, 6.0 ]U9Creates a matrix with the first n rows of another matrix V4Creates a copy of a matrix without the first n rows W<Creates a matrix with the first n columns of another matrix X7Creates a copy of a matrix without the first n columns Y Creates a , from a list of lists (considered as rows). > fromLists [[1,2],[3,4],[5,6]] (3><2)  [ 1.0, 2.0  , 3.0, 4.0  , 5.0, 6.0 ]Z%creates a 1-row matrix from a vector [(creates a 1-column matrix from a vector \Fcreates a Matrix of the specified size using the supplied function to  to map the row(column position to the value at that rowcolumn position. > buildMatrix 3 4 ( *(r,c) -> fromIntegral r * fromIntegral c) (3><4)  [ 0.0, 0.0, 0.0, 0.0, 0.0  , 0.0, 1.0, 2.0, 3.0, 4.0  , 0.0, 2.0, 4.0, 6.0, 8.0]]^ZCreates a string from a matrix given a separator and a function to show each entry. Using Gthis function the user can easily define any desired display function: import Text.Printf(printf)disp = putStr . format " " (printf "%.2f")_Show a matrix with " autoscaling"' and a given number of decimal places. disp = putStr . disps 2  > disp $ 120 * (3><4) [1..] 3x4 E3  0.12 0.24 0.36 0.48  0.60 0.72 0.84 0.96  1.08 1.20 1.32 1.44 `5Show a matrix with a given number of decimal places. disp = putStr . dispf 3  > disp (1/ 3 + ident 4) 4x4 1.333 0.333 0.333 0.333 0.333 1.333 0.333 0.333 0.333 0.333 1.333 0.333 0.333 0.333 0.333 1.333 5Show a vector using a function for showing matrices. "disp = putStr . vecdisp (dispf 2)  > disp (linspace 10 (0,1)) A10 |> 0.00 0.11 0.22 0.33 0.44 0.56 0.67 0.78 0.89 1.00 a,Tool to display matrices with latex syntax. type of braces: "matrix", "bmatrix", "pmatrix", etc. AFormatted matrix, with elements separated by spaces and newlines =Pretty print a complex number with at most n decimal digits. b=Pretty print a complex matrix with at most n decimal digits. c<reads a matrix from a string containing a table of numbers. d=obtains the number of rows and columns in an ASCII data file  (provisionally using unix's wc). e;Loads a matrix from an ASCII file formatted as a 2D table. f]Loads a matrix from an ASCII file (the number of rows and columns must be known in advance). gUrearranges the rows of a matrix according to the order given in a list of integers. hLcreates matrix by repetition of a matrix a given number of rows and columns (> repmat (ident 2) 2 3 :: Matrix Double (4><6)  [ 1.0, 0.0, 1.0, 0.0, 1.0, 0.0  , 0.0, 1.0, 0.0, 1.0, 0.0, 1.0  , 1.0, 0.0, 1.0, 0.0, 1.0, 0.0  , 0.0, 1.0, 0.0, 1.0, 0.0, 1.0 ]i A version of /m which automatically adapt matrices with a single row or column to match the dimensions of the other matrix. .!%&'()*+-./01MNOPQRSTUVWXYZ[\]^_`abcdefghi.T!-%Y&\+Z['()*MhNO0UVWXgSPQR./i`_ba^e1fdc]MNOPQRSTUVWXYZ[\]^_`abcdefghi'uses ffi provisional!Alberto Ruiz (aruiz at um dot es)jklmnopqrv!Minimization without derivatives .desired precision of the solution (size test) %maximum number of iterations allowed  sizes of the initial search box function to minimize starting point &solution vector and optimization path w2Minimization without derivatives (vector version) .desired precision of the solution (size test) %maximum number of iterations allowed  sizes of the initial search box function to minimize starting point &solution vector and optimization path xMinimization with derivatives. 2desired precision of the solution (gradient test) %maximum number of iterations allowed size of the first trial step (tol (precise meaning depends on method) function to minimize  gradient starting point &solution vector and optimization path y/Minimization with derivatives (vector version) 2desired precision of the solution (gradient test) %maximum number of iterations allowed size of the first trial step (tol (precise meaning depends on method) function to minimize  gradient starting point &solution vector and optimization path jklmnopqrstuvwxyvwprqxyjonmlkstu jonmlkklmnoprqqrvwxy(uses ffi provisional!Alberto Ruiz (aruiz at um dot es)z{|}~NNonlinear multidimensional root finding using algorithms that do not require 8 any derivative information to be supplied by the user. @ Any derivatives needed are approximated by finite differences. maximum residual %maximum number of iterations allowed function to minimize starting point &solution vector and optimization path UNonlinear multidimensional root finding using both the function and its derivatives. maximum residual %maximum number of iterations allowed function to minimize  Jacobian starting point &solution vector and optimization path z{|}~ z~}|{ z~}|{{|}~)uses ffi provisional!Alberto Ruiz (aruiz at um dot es)Stepping functions M=2 implicit Gear method. M=1 implicit Gear method. ]Implicit Bulirsch-Stoer method of Bader and Deuflhard. This algorithm requires the Jacobian. 3Implicit 4th order Runge-Kutta at Gaussian points. 3Implicit 2nd order Runge-Kutta at Gaussian points. 2Embedded Runge-Kutta Prince-Dormand (8,9) method. .Embedded Runge-Kutta Cash-Karp (4, 5) method. _Embedded Runge-Kutta-Fehlberg (4, 5) method. This method is a good general-purpose integrator. 4th order (classical) Runge-Kutta. The error estimate is obtained by halving the step-size. For more efficient estimate of the error, use . $Embedded Runge-Kutta (2, 3) method.  A version of Q with reasonable default parameters and system of equations defined using lists.  xdot(t,x) initial conditions desired solution times  solution 9Evolution of the system with adaptive step-size control. initial step size (absolute tolerance for the state vector (relative tolerance for the state vector  xdot(t,x) optional jacobian initial conditions desired solution times  solution    *uses -fffi and -fglasgow-exts provisional!Alberto Ruiz (aruiz at um dot es)VThis action removes the GSL default error handler (which aborts the program), so that N GSL errors can be handled by Haskell (using Control.Exception) and ghci doesn' t abort.       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:jklmnopqrstuvwxyz{|}~+uses ffi provisional!Alberto Ruiz (aruiz at um dot es)conversion utilities Qconverts a real vector into a complex representation (with zero imaginary parts) X !%&'()*+-./01EFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghi,uses ffi provisional!Alberto Ruiz (aruiz at um dot es) jA generic interface for vectors and matrices to a few element-by-element functions in Numeric.GSL.Vector. )create a structure with a single element 7scale the element by element reciprocal of the object: scaleRecip 2 (fromList [5,i]#) == 2 |> [0.4 :+ 0.0,0.0 :+ (-2.0)]"element by element multiplication element by element division     ;portable provisional!Alberto Ruiz (aruiz at um dot es)-portable (uses FFI) provisional!Alberto Ruiz (aruiz at um dot es)MMatrix product based on BLAS's dgemm. Matrix product based on BLAS's zgemm. &Full SVD of a real matrix using LAPACK's dgesvd. &Full SVD of a real matrix using LAPACK's dgesdd. )Full SVD of a complex matrix using LAPACK's zgesvd. )Full SVD of a complex matrix using LAPACK's zgesdd. 'Thin SVD of a real matrix, using LAPACK's dgesvd with jobu == jobvt == 'S'. *Thin SVD of a complex matrix, using LAPACK's zgesvd with jobu == jobvt == 'S'. 'Thin SVD of a real matrix, using LAPACK's dgesdd with jobz == 'S'. *Thin SVD of a complex matrix, using LAPACK's zgesdd with jobz == 'S'. .Singular values of a real matrix, using LAPACK's dgesvd with jobu == jobvt == 'N'. 1Singular values of a complex matrix, using LAPACK's zgesvd with jobu == jobvt == 'N'. .Singular values of a real matrix, using LAPACK's dgesdd with jobz == 'N'. 1Singular values of a complex matrix, using LAPACK's zgesdd with jobz == 'N'. MSingular values and all right singular vectors of a real matrix, using LAPACK's dgesvd with jobu == 'N' and jobvt == 'A'. PSingular values and all right singular vectors of a complex matrix, using LAPACK's zgesvd with jobu == 'N' and jobvt == 'A'. LSingular values and all left singular vectors of a real matrix, using LAPACK's dgesvd with jobu == 'A' and jobvt == 'N'. OSingular values and all left singular vectors of a complex matrix, using LAPACK's zgesvd with jobu == 'A' and jobvt == 'N'. LEigenvalues and right eigenvectors of a general complex matrix, using LAPACK's zgeev. H The eigenvectors are the columns of v. The eigenvalues are not sorted. 5Eigenvalues of a general complex matrix, using LAPACK's zgeev with jobz == 'N'. ! The eigenvalues are not sorted. IEigenvalues and right eigenvectors of a general real matrix, using LAPACK's dgeev. H The eigenvectors are the columns of v. The eigenvalues are not sorted. 2Eigenvalues of a general real matrix, using LAPACK's dgeev with jobz == 'N'. ! The eigenvalues are not sorted. KEigenvalues and right eigenvectors of a symmetric real matrix, using LAPACK's dsyev. ( The eigenvectors are the columns of v. 5 The eigenvalues are sorted in descending order (use  for ascending order).  in ascending order NEigenvalues and right eigenvectors of a hermitian complex matrix, using LAPACK's zheev. ( The eigenvectors are the columns of v. 5 The eigenvalues are sorted in descending order (use  for ascending order).  in ascending order 4Eigenvalues of a symmetric real matrix, using LAPACK's dsyev with jobz == 'N'. 1 The eigenvalues are sorted in descending order. 7Eigenvalues of a hermitian complex matrix, using LAPACK's zheev with jobz == 'N'. 1 The eigenvalues are sorted in descending order. Solve a real linear system (for square coefficient matrix and several right-hand sides) using the LU decomposition, based on LAPACK's dgesv6. For underconstrained or overconstrained systems use  or  . See also . Solve a complex linear system (for square coefficient matrix and several right-hand sides) using the LU decomposition, based on LAPACK's zgesv6. For underconstrained or overconstrained systems use  or  . See also . Least squared error solution of an overconstrained real linear system, or the minimum norm solution of an underconstrained system, using LAPACK's dgels!. For rank-deficient systems use . Least squared error solution of an overconstrained complex linear system, or the minimum norm solution of an underconstrained system, using LAPACK's zgels!. For rank-deficient systems use . hMinimum norm solution of a general real linear least squares problem Ax=B using the SVD, based on LAPACK's dgelss6. Admits rank-deficient systems but it is slower than . The effective rank of A is determined by treating as zero those singular valures which are less than rcond times the largest singular value. If rcond == Nothing machine precision is used. rcond coefficient matrix right hand sides (as columns) solution vectors (as columns) kMinimum norm solution of a general complex linear least squares problem Ax=B using the SVD, based on LAPACK's zgelss6. Admits rank-deficient systems but it is slower than . The effective rank of A is determined by treating as zero those singular valures which are less than rcond times the largest singular value. If rcond == Nothing machine precision is used. rcond coefficient matrix right hand sides (as columns) solution vectors (as columns) TCholesky factorization of a complex Hermitian positive definite matrix, using LAPACK's zpotrf. QCholesky factorization of a real symmetric positive definite matrix, using LAPACK's dpotrf. /QR factorization of a real matrix, using LAPACK's dgeqr2. 2QR factorization of a complex matrix, using LAPACK's zgeqr2. >Hessenberg factorization of a square real matrix, using LAPACK's dgehrd. AHessenberg factorization of a square complex matrix, using LAPACK's zgehrd. 9Schur factorization of a square real matrix, using LAPACK's dgees. <Schur factorization of a square complex matrix, using LAPACK's zgees. 7LU factorization of a general real matrix, using LAPACK's dgetrf. :LU factorization of a general complex matrix, using LAPACK's zgetrf. @Solve a real linear system from a precomputed LU decomposition (), using LAPACK's dgetrs. @Solve a real linear system from a precomputed LU decomposition (), using LAPACK's zgetrs. ....uses ffi provisional!Alberto Ruiz (aruiz at um dot es)OObjects which have a p-norm. / Using it you can define convenient shortcuts: norm2 x = pnorm PNorm2 x!frobenius m = norm2 . flatten $ m\Auxiliary typeclass used to define generic computations for both real and complex matrices. #Full singular value decomposition.  A version of  which returns only the min (rows m) (cols m) singular vectors of m. If (u,s,v) = thinSVD m then m == u < > diag s < > trans v. Singular values only.  A version of H which returns an appropriate diagonal matrix with the singular values. If (u,d,v) = fullSVD m then m == u <> d < > trans v.  Similar to U, returning only the nonzero singular values and the corresponding singular vectors. 0Singular values and all right singular vectors. 0Singular values and all right singular vectors. RObtains the LU decomposition of a matrix in a compact data structure suitable for . mSolution of a linear system (for several right hand sides) from the precomputed LU factorization obtained by . Solve a linear system (for square coefficient matrix and several right-hand sides) using the LU decomposition. For underconstrained or overconstrained systems use  or .  It is similar to  . , but  linearSolve1 raises an error if called on a singular system. Minimum norm solution of a general linear least squares problem Ax=B using the SVD. Admits rank-deficient systems but it is slower than g. The effective rank of A is determined by treating as zero those singular valures which are less than # times the largest singular value. Least squared error solution of an overconstrained linear system, or the minimum norm solution of an underconstrained system. For rank-deficient systems use . 9Eigenvalues and eigenvectors of a general square matrix. If  (s,v) = eig m then m < > v == v <> diag s (Eigenvalues of a general square matrix.  Similar to C without checking that the input matrix is hermitian or symmetric.  Similar to C without checking that the input matrix is hermitian or symmetric. NEigenvalues and Eigenvectors of a complex hermitian or real symmetric matrix. If (s,v) = eigSH m then m == v < > diag s < > ctrans v =Eigenvalues of a complex hermitian or real symmetric matrix. QR factorization. If  (q,r) = qr m then m == q <> r0, where q is unitary and r is upper triangular. RQ factorization. If  (r,q) = rq m then m == r <> q0, where q is unitary and r is upper triangular. Hessenberg factorization. If (p,h) = hess m then m == p <> h < > ctrans p, where p is unitary V and h is in upper Hessenberg form (it has zero entries below the first subdiagonal). Schur factorization. If (u,s) = schur m then m == u <> s < > ctrans u, where u is unitary \ and s is a Shur matrix. A complex Schur matrix is upper triangular. A real Schur matrix is ! upper triangular in 2x2 blocks. "GAnything that the Jordan decomposition can do, the Schur decomposition  can do better!" (Van Loan) Generic conjugate transpose. Matrix product.  Similar to C without checking that the input matrix is hermitian or symmetric. MCholesky factorization of a positive definite hermitian or symmetric matrix. If  c = chol m then m == ctrans c <> c.  Determinant of a square matrix. /Explicit LU factorization of a general matrix. If (l,u,p,s) = lu m then m == p <> l <> u, where l is lower triangular, ] u is upper triangular, p is a permutation matrix and s is the signature of the permutation. Inverse of a square matrix. #Pseudoinverse of a general matrix. 5Numeric rank of a matrix from the SVD decomposition. numeric zero (e.g. 1*) input matrix m sv of m  rank of m 3Numeric rank of a matrix from its singular values. numeric zero (e.g. 1*)  maximum dimension of the matrix singular values  rank of m #The machine precision of a Double: eps = 2.22044604925031e-16! (the value used by GNU-Octave). The imaginary unit: i = 0.0 :+ 1.0 6The nullspace of a matrix from its SVD decomposition. Left "numeric" zero (eg. 1*),  or Right " theoretical" matrix rank. input matrix m  of m /list of unitary vectors spanning the nullspace $The nullspace of a matrix. See also . relative tolerance in  units (e.g., use 3 to get 3*)  input matrix /list of unitary vectors spanning the nullspace RThe nullspace of a matrix, assumed to be one-dimensional, with machine precision. ZReciprocal of the 2-norm condition number of a matrix, computed from the singular values. 0Number of linearly independent rows or columns. DGeneric matrix functions for diagonalizable matrices. For instance: logm = matFunc logNMatrix exponential. It uses a direct translation of Algorithm 11.3.1 in Golub & Van Loan, + based on a scaled Pade approximation. [Matrix square root. Currently it uses a simple iterative algorithm described in Wikipedia. jIt only works with invertible matrices that have a real solution. For diagonalizable matrices you can try  matFunc sqrt. m = (2><2) [4,9  ,0,4] :: Matrix Double>sqrtm m (2><2)  [ 2.0, 2.25  , 0.0, 2.0 ] Euclidean inner product.  Outer product of two vectors. >   [1,2,3] `outer`   [5,2,3] (3><3)  [ 5.0, 2.0, 3.0  , 10.0, 4.0, 6.0  , 15.0, 6.0, 9.0 ] #Kronecker product of two matrices. m1=(2><3)  [ 1.0, 2.0, 0.0  , 0.0, -1.0, 3.0 ] m2=(4><3)  [ 1.0, 2.0, 3.0  , 4.0, 5.0, 6.0  , 7.0, 8.0, 9.0  , 10.0, 11.0, 12.0 ]> kronecker m1 m2 (8><9) ; [ 1.0, 2.0, 3.0, 2.0, 4.0, 6.0, 0.0, 0.0, 0.0 ; , 4.0, 5.0, 6.0, 8.0, 10.0, 12.0, 0.0, 0.0, 0.0 ; , 7.0, 8.0, 9.0, 14.0, 16.0, 18.0, 0.0, 0.0, 0.0 ; , 10.0, 11.0, 12.0, 20.0, 22.0, 24.0, 0.0, 0.0, 0.0 ; , 0.0, 0.0, 0.0, -1.0, -2.0, -3.0, 3.0, 6.0, 9.0 ; , 0.0, 0.0, 0.0, -4.0, -5.0, -6.0, 12.0, 15.0, 18.0 ; , 0.0, 0.0, 0.0, -7.0, -8.0, -9.0, 21.0, 24.0, 27.0 ; , 0.0, 0.0, 0.0, -10.0, -11.0, -12.0, 30.0, 33.0, 36.0 ]9   9   6   /portable provisional!Alberto Ruiz (aruiz at um dot es)  matrix product  u <.> v = dot u vx .* a = scale x aa */ x = scale (recip x) a:least squares solution of a linear system, similar to the \ operator of Matlab/"Octave (based on linearSolveSVD). 2Horizontal concatenation of matrices and vectors:  > (ident 3 <-> 3 * ident 3) <|> fromList [1..6.0] (6><4)  [ 1.0, 0.0, 0.0, 1.0  , 0.0, 1.0, 0.0, 2.0  , 0.0, 0.0, 1.0, 3.0  , 3.0, 0.0, 0.0, 4.0  , 0.0, 3.0, 0.0, 5.0  , 0.0, 0.0, 3.0, 6.0 ]0Vertical concatenation of matrices and vectors.       0 provisionalAlberto Ruiz <aruiz@um.es>IObtains a matrix whose rows are pseudorandom samples from a multivariate  Gaussian distribution. seed number of rows  mean vector covariance matrix result IObtains a matrix whose rows are pseudorandom samples from a multivariate  uniform distribution. seed number of rows ranges for each column result CCompute mean vector and covariance matrix of the rows of a matrix. 234c243c<uses ffi provisional!Alberto Ruiz (aruiz at um dot es) !%&'()*+-./01234cEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghi     =portable provisional!Alberto Ruiz (aruiz at um dot es)            !"        >portable provisional!Alberto Ruiz (aruiz at um dot es)#$%&',#$&(')*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNO#$$&'1portable provisional!Alberto Ruiz (aruiz at um dot es)PQ9All tests must pass with a maximum dimension of about 20 A (some tests may fail with bigger sizes due to precision loss). maximum dimension Performance measurements. 2uses gnuplot and ImageMagick provisional!Alberto Ruiz (aruiz at um dot es) R6Loads a real matrix from a formatted ASCII text file "fromFile :: FilePath -> IO Matrix CfromFile filename = readFile filename >>= return . readMatrix read 3Saves a real matrix to a formatted ascii text file lFrom vectors x and y, it generates a pair of matrices to be used as x and y arguments for matrix functions. 4Draws a 3D surface representation of a real matrix.  > mesh (hilb 20) NIn certain versions you can interactively rotate the graphic using the mouse. mDraws the surface represented by the function f in the desired ranges and number of points, internally using .  > let f x y = cos (x + y) " > splot f (0,pi) (0,2*pi) 50 -plots several vectors against the first one TDraws a list of functions over a desired range and with a desired number of points + > plot [sin, cos, sin.(3*)] (0,2*pi) 1000  SDraws a parametric curve. For instance, to draw a spiral we can do something like: > > parametricPlot (\t->(t * sin t, t * cos t)) (0,10*pi) 1000 !"writes a matrix to pgm image file "Qimshow shows a representation of a matrix as a gray level image using ImageMagick' s display. #  !"#  !"#  !"#S?4@4A4B4C4D5E5F5G5H5I5J5K5L5M5N5O5P5Q5R5S5T5U5V5W6X6Y6Z6[6\6]6^6_6`6a6b6c6d6e6f6g6h6i6j6k6l6m6n6o6pqrstuvwxyz{|}~ 9999                                  ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; <=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>? @ A!B!C!D!E!F!G!H!I!J!K!L!M"N"O"P"Q#R#S#T#U#V#W#X#Y$Z$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k%l%m%n%o%p%q%r%s%t%u%v%w%x%y&z&{&|&}&~&&&&&''''''''''''''''(((((((((((()))))))))))))*+++++++,,,,,,,,,,--------------------------------------- - - - - ---................ .!.".#.$.%.&.'.(.).*.+.,.-.../.0.[.1.2.3.4.5.6.7.8.9.:.;.<.=.>.?.@.A.B.C.D.E.F.G.H/I/J/K/L/M/N/O0P0Q0R1S1T1U2V2W2X2Y2Z2[2\2]2^2_2`a3b3c3d3e3f3g3h3i3j3k3l3m3n3o3p3q3r3s3t3u3v3w3x3y3z3{3|3}3~3333344444444445555555555555556666666666666666666666666   8888888888999999999                                                                  ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h ijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !!!!!!!!!!!!!!""""########$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%&&''(()+------------ - - - - ---------------.... .!.".#.$.%.&.'.(.).*.+.,.-.../.0.1.2.3.4.5/6/7/8/=9=:=;=;=<=<=====>=>=?=?=@=@=A=A=B=C=D=E=F=G=H=I=J=K=L=M=N=O=P=Q=R=S=T>U>V>B>W>X>Y>Z>[>\>]>^>_>`>a>b>c>d>e>f>g>h>i>j>k>l>m>n>o>p>q>r>s>t>u>v>w>x>y>z>{>|>}>~>>1B12hmatrix-0.8.3.1Numeric.GSL.Special.ElljacData.Packed.DevelopmentData.Packed.VectorData.Packed.MatrixNumeric.GSL.VectorData.Packed.STNumeric.GSL.DifferentiationNumeric.GSL.IntegrationNumeric.GSL.FourierNumeric.GSL.PolynomialsNumeric.GSL.Special.AiryNumeric.GSL.Special.BesselNumeric.GSL.Special.ClausenNumeric.GSL.Special.CoulombNumeric.GSL.Special.CouplingNumeric.GSL.Special.DawsonNumeric.GSL.Special.DebyeNumeric.GSL.Special.DilogNumeric.GSL.Special.ElementaryNumeric.GSL.Special.EllintNumeric.GSL.Special.ErfNumeric.GSL.Special.ExpNumeric.GSL.Special.ExpintNumeric.GSL.Special.Fermi_diracNumeric.GSL.Special.GammaNumeric.GSL.Special.GegenbauerNumeric.GSL.Special.HypergNumeric.GSL.Special.LaguerreNumeric.GSL.Special.LambertNumeric.GSL.Special.LegendreNumeric.GSL.Special.LogNumeric.GSL.Special.Pow_intNumeric.GSL.Special.PsiNumeric.GSL.Special.SynchrotronNumeric.GSL.Special.TransportNumeric.GSL.Special.TrigNumeric.GSL.Special.ZetaData.Packed.ConvertNumeric.GSL.MinimizationNumeric.GSL.RootNumeric.GSL.ODE Numeric.GSL Data.PackedNumeric.LinearAlgebra.LinearNumeric.LinearAlgebra.LAPACK Numeric.LinearAlgebra.AlgorithmsNumeric.LinearAlgebra.InterfaceData.Packed.RandomNumeric.LinearAlgebra.Tests Graphics.PlotData.Packed.Internal.SignaturesData.Packed.Internal.CommonData.Packed.Internal.VectorData.Packed.Internal.MatrixData.Packed.InternalNumeric.GSL.InternalNumeric.GSL.Special.InternalNumeric.GSL.SpecialNumeric.LinearAlgebra.InstancesNumeric.LinearAlgebra%Numeric.LinearAlgebra.Tests.Instances&Numeric.LinearAlgebra.Tests.Propertieselljac_eAdaptapp1app2app3app4Vectordimvec createVectorfromListtoList|> subVector@>join mapVector zipVector foldVectorfoldLoop foldVectorG fscanfVector fprintfVector freadVector fwriteVectorElementMatrix MatrixOrder ColumnMajorRowMajorrowscolsorderOftranscmatfmatmatflattentoListsfromRowstoRows fromColumns toColumns@@> createMatrixreshape liftMatrix liftMatrix2 subMatrix saveMatrixRandDistGaussianUniformFunCodeSMinMinIdxMaxMaxIdxAbsSumNorm2 FunCodeVVATan2PowDivMulSubAdd FunCodeSVPowVSPowSVNegate AddConstantRecipScaleFunCodeVSqrtSignLogExpATanhACoshASinhTanhCoshSinhATanACosASinAbsTanCosSin toScalarR vectorMapR vectorMapC vectorMapValR vectorMapValC vectorZipR vectorZipC randomVectorSTMatrixSTVector thawVectorunsafeThawVector runSTVectorunsafeReadVectorunsafeWriteVector modifyVector liftSTVector freezeVectorunsafeFreezeVector readVector writeVectornewUndefinedVector newVector thawMatrixunsafeThawMatrix runSTMatrixunsafeReadMatrixunsafeWriteMatrix modifyMatrix liftSTMatrixunsafeFreezeMatrix freezeMatrix readMatrix writeMatrixnewUndefinedMatrix newMatrix derivCentral derivForward derivBackward integrateQAGS integrateQNGfftifft polySolve Precision PrecApprox PrecSingle PrecDouble airy_Ai_eairy_Ai airy_Bi_eairy_Biairy_Ai_scaled_eairy_Ai_scaledairy_Bi_scaled_eairy_Bi_scaledairy_Ai_deriv_e airy_Ai_derivairy_Bi_deriv_e airy_Bi_derivairy_Ai_deriv_scaled_eairy_Ai_deriv_scaledairy_Bi_deriv_scaled_eairy_Bi_deriv_scaledairy_zero_Ai_e airy_zero_Aiairy_zero_Bi_e airy_zero_Biairy_zero_Ai_deriv_eairy_zero_Ai_derivairy_zero_Bi_deriv_eairy_zero_Bi_deriv bessel_J0_e bessel_J0 bessel_J1_e bessel_J1 bessel_Jn_e bessel_Jn bessel_Y0_e bessel_Y0 bessel_Y1_e bessel_Y1 bessel_Yn_e bessel_Yn bessel_I0_e bessel_I0 bessel_I1_e bessel_I1 bessel_In_e bessel_Inbessel_I0_scaled_ebessel_I0_scaledbessel_I1_scaled_ebessel_I1_scaledbessel_In_scaled_ebessel_In_scaled bessel_K0_e bessel_K0 bessel_K1_e bessel_K1 bessel_Kn_e bessel_Knbessel_K0_scaled_ebessel_K0_scaledbessel_K1_scaled_ebessel_K1_scaledbessel_Kn_scaled_ebessel_Kn_scaled bessel_j0_e bessel_j0 bessel_j1_e bessel_j1 bessel_j2_e bessel_j2 bessel_jl_e bessel_jl bessel_y0_e bessel_y0 bessel_y1_e bessel_y1 bessel_y2_e bessel_y2 bessel_yl_e bessel_ylbessel_i0_scaled_ebessel_i0_scaledbessel_i1_scaled_ebessel_i1_scaledbessel_i2_scaled_ebessel_i2_scaledbessel_il_scaled_ebessel_il_scaledbessel_k0_scaled_ebessel_k0_scaledbessel_k1_scaled_ebessel_k1_scaledbessel_k2_scaled_ebessel_k2_scaledbessel_kl_scaled_ebessel_kl_scaled bessel_Jnu_e bessel_Jnu bessel_Ynu_e bessel_Ynubessel_Inu_scaled_ebessel_Inu_scaled bessel_Inu_e bessel_Inubessel_Knu_scaled_ebessel_Knu_scaled bessel_Knu_e bessel_Knubessel_lnKnu_e bessel_lnKnubessel_zero_J0_ebessel_zero_J0bessel_zero_J1_ebessel_zero_J1bessel_zero_Jnu_ebessel_zero_Jnu clausen_eclausenhydrogenicR_1_e hydrogenicR_1 hydrogenicR_e hydrogenicR coulomb_CL_e coupling_3j_e coupling_3j coupling_6j_e coupling_6jcoupling_RacahW_ecoupling_RacahW coupling_9j_e coupling_9jdawson_edawson debye_1_edebye_1 debye_2_edebye_2 debye_3_edebye_3 debye_4_edebye_4 debye_5_edebye_5 debye_6_edebye_6dilog_edilog multiply_emultiplymultiply_err_eellint_Kcomp_e ellint_Kcompellint_Ecomp_e ellint_Ecompellint_Pcomp_e ellint_Pcompellint_Dcomp_e ellint_Dcomp ellint_F_eellint_F ellint_E_eellint_E ellint_P_eellint_P ellint_D_eellint_D ellint_RC_e ellint_RC ellint_RD_e ellint_RD ellint_RF_e ellint_RF ellint_RJ_e ellint_RJerfc_eerfc log_erfc_elog_erfcerf_eerferf_Z_eerf_Q_eerf_Zerf_Qhazard_ehazardexp_eexp exp_e10_e exp_mult_eexp_multexp_mult_e10_eexpm1_eexpm1exprel_eexprel exprel_2_eexprel_2 exprel_n_eexprel_n exp_err_e exp_err_e10_eexp_mult_err_eexp_mult_err_e10_e expint_E1_e expint_E1 expint_E2_e expint_E2 expint_En_e expint_Enexpint_E1_scaled_eexpint_E1_scaledexpint_E2_scaled_eexpint_E2_scaledexpint_En_scaled_eexpint_En_scaled expint_Ei_e expint_Eiexpint_Ei_scaled_eexpint_Ei_scaledshi_eshichi_echi expint_3_eexpint_3si_esici_eci atanint_eatanintfermi_dirac_m1_efermi_dirac_m1fermi_dirac_0_e fermi_dirac_0fermi_dirac_1_e fermi_dirac_1fermi_dirac_2_e fermi_dirac_2fermi_dirac_int_efermi_dirac_intfermi_dirac_mhalf_efermi_dirac_mhalffermi_dirac_half_efermi_dirac_halffermi_dirac_3half_efermi_dirac_3halffermi_dirac_inc_0_efermi_dirac_inc_0 lngamma_elngammagamma_egamma gammastar_e gammastar gammainv_egammainv taylorcoeff_e taylorcoefffact_efact doublefact_e doublefactlnfact_elnfactlndoublefact_e lndoublefact lnchoose_elnchoosechoose_echooselnpoch_elnpochpoch_epoch pochrel_epochrel gamma_inc_Q_e gamma_inc_Q gamma_inc_P_e gamma_inc_P gamma_inc_e gamma_inclnbeta_elnbetabeta_ebeta beta_inc_ebeta_inc gegenpoly_1_e gegenpoly_2_e gegenpoly_3_e gegenpoly_1 gegenpoly_2 gegenpoly_3 gegenpoly_n_e gegenpoly_n hyperg_0F1_e hyperg_0F1hyperg_1F1_int_ehyperg_1F1_int hyperg_1F1_e hyperg_1F1hyperg_U_int_e hyperg_U_inthyperg_U_int_e10_e hyperg_U_ehyperg_Uhyperg_U_e10_e hyperg_2F1_e hyperg_2F1hyperg_2F1_conj_ehyperg_2F1_conjhyperg_2F1_renorm_ehyperg_2F1_renormhyperg_2F1_conj_renorm_ehyperg_2F1_conj_renorm hyperg_2F0_e hyperg_2F0 laguerre_1_e laguerre_2_e laguerre_3_e laguerre_1 laguerre_2 laguerre_3 laguerre_n_e laguerre_n lambert_W0_e lambert_W0 lambert_Wm1_e lambert_Wm1 legendre_Pl_e legendre_Pl legendre_P1_e legendre_P2_e legendre_P3_e legendre_P1 legendre_P2 legendre_P3 legendre_Q0_e legendre_Q0 legendre_Q1_e legendre_Q1 legendre_Ql_e legendre_Qllegendre_Plm_e legendre_Plmlegendre_sphPlm_elegendre_sphPlmlegendre_array_sizeconicalP_half_e conicalP_halfconicalP_mhalf_econicalP_mhalf conicalP_0_e conicalP_0 conicalP_1_e conicalP_1conicalP_sph_reg_econicalP_sph_regconicalP_cyl_reg_econicalP_cyl_reglegendre_H3d_0_elegendre_H3d_0legendre_H3d_1_elegendre_H3d_1legendre_H3d_e legendre_H3dlog_elog log_abs_elog_abs log_1plusx_e log_1plusxlog_1plusx_mx_e log_1plusx_mx pow_int_epow_int psi_int_epsi_intpsi_epsi psi_1piy_epsi_1piy psi_1_int_e psi_1_intpsi_1_epsi_1psi_n_epsi_nsynchrotron_1_e synchrotron_1synchrotron_2_e synchrotron_2 transport_2_e transport_2 transport_3_e transport_3 transport_4_e transport_4 transport_5_e transport_5sin_esincos_ecoshypot_ehypotsinc_esinclnsinh_elnsinhlncosh_elncosh sin_err_e cos_err_eangle_restrict_symmangle_restrict_posangle_restrict_symm_err_eangle_restrict_pos_err_e zeta_int_ezeta_intzeta_ezetazetam1_ezetam1 zetam1_int_e zetam1_inthzeta_ehzeta eta_int_eeta_inteta_eetavectorToStorableArraystorableArrayToVectorarrayFromVectormArrayFromVectorvectorFromArrayvectorFromMArraymatrixFromArrayarrayFromMatrixmArrayFromMatrixmatrixFromMArraylinspace vectorMax vectorMinvectorMaxIndexvectorMinIndexconstant buildVectorvecdisp fromBlocksflipudfliprldiagdiagRecttakeDiagident><takeRowsdropRows takeColumns dropColumns fromListsasRowasColumn buildMatrix fromArray2Dformatdispsdispf latexFormatdispcffileDimensions loadMatrixfromFile extractRowsrepmatliftMatrix2AutoMinimizeMethodDSteepestDescent VectorBFGS2 VectorBFGS ConjugatePR ConjugateFRMinimizeMethod NMSimplex2 NMSimplexminimizeNMSimplexminimizeConjugateGradientminimizeVectorBFGS2minimize minimizeV minimizeD minimizeVD RootMethodJGNewtonNewtonHybridJHybridsJ RootMethodBroydenDNewtonHybridHybridsrootrootJ ODEMethodGear2Gear1BSimpRK4impRK2impRK8pdRKckRKf45RK4RK2odeSolve odeSolveVsetErrorHandlerOff Container toComplex fromComplexcompconjrealcomplexLinearscalarscale scaleRecip addConstantaddsubmuldivideequal multiplyR multiplyCsvdRsvdRdsvdCsvdCdthinSVDRthinSVDC thinSVDRd thinSVDCdsvRsvCsvRdsvCdrightSVRrightSVCleftSVRleftSVCeigCeigOnlyCeigReigOnlyReigSeigS'eigHeigH'eigOnlySeigOnlyH linearSolveR linearSolveClinearSolveLSRlinearSolveLSClinearSolveSVDRlinearSolveSVDCcholHcholSqrRqrChessRhessCschurRschurCluRluClusRlusCNormedpnormNormTypePNorm2PNorm1InfinityFieldsvdthinSVDsingularValuesfullSVD compactSVDrightSVleftSVfulleconomyluPackedluSolve linearSolvelinearSolveSVD linearSolveLSeig eigenvalueseigSH'eigenvaluesSH'eigSH eigenvaluesSHqrrqhessschurctranscholSHcholdetluinvpinvranksvepsi nullspaceSVD nullspacePrec nullVectorpinvTol haussholderunpackQR unpackHessrcondrankmatFuncexpmsqrtmdotouter kronecker<><.>.**/<\><|><->gaussianSample uniformSamplemeanCovqCheckrunTests runBenchmarksmeshdomgnuplotXmeshmesh'splotmplotplotparametricPlot matrixToPGMimshow gnuplotpdfgsl_sf_elljac_eTMMCVMTMCVMTCVMTVCVTCMCVTCVCVCVTCVCVTCVTCMCMCMTCMCMVCMTCMVCMTVCMTCMCM TCMCMCVCMTMCMCVCMTCMCVCMTCVCMTCMTMMVMTMVMTMMVTMVTVVMTVMTMMMTMVMMTVMMTMMTMTVVVTVVTVPCPD gsl_strerrorfinit splitEverycommon compatdimtable//fi errorCodecheckgsl_vector_fwritegsl_vector_freadgsl_vector_fprintfgsl_vector_fscanfVidimfptrinlinePerformIOat'atasReal asComplex cloneVector withVectorsafematrix_fprintf cconstantC cconstantRctransCctransR subMatrixD transdata constantDMtMFfdatMCirowsicolscdatcompat transdata' constantR constantC withMatrixmatrixFromVector singletonc_random_vector c_vectorZipC c_vectorZipRc_vectorMapValCc_vectorMapValR c_vectorMapC c_vectorMapR c_toScalarRioReadVioWriteVioReadMioWriteMmkfunc_derivderivGenc_integrate_qngc_integrate_qagsc_fftbase Data.ComplexComplexghc-prim GHC.TypesDouble c_polySolve polySolve'mkDoubleVecMatfun mkVecMatfunmkDoubleVecVecfun mkVecVecfunmkVecfunivaux_vTovaux_vTomcreateV createMIOGsl_sf_result_e10SFE Gsl_sf_resultSFSize_t Gsl_mode_tprecCode createSFR createSFR_E10gsl_sf_airy_zero_Bi_derivgsl_sf_airy_zero_Bi_deriv_egsl_sf_airy_zero_Ai_derivgsl_sf_airy_zero_Ai_deriv_egsl_sf_airy_zero_Bigsl_sf_airy_zero_Bi_egsl_sf_airy_zero_Aigsl_sf_airy_zero_Ai_egsl_sf_airy_Bi_deriv_scaledgsl_sf_airy_Bi_deriv_scaled_egsl_sf_airy_Ai_deriv_scaledgsl_sf_airy_Ai_deriv_scaled_egsl_sf_airy_Bi_derivgsl_sf_airy_Bi_deriv_egsl_sf_airy_Ai_derivgsl_sf_airy_Ai_deriv_egsl_sf_airy_Bi_scaledgsl_sf_airy_Bi_scaled_egsl_sf_airy_Ai_scaledgsl_sf_airy_Ai_scaled_egsl_sf_airy_Bigsl_sf_airy_Bi_egsl_sf_airy_Aigsl_sf_airy_Ai_egsl_sf_bessel_zero_Jnugsl_sf_bessel_zero_Jnu_egsl_sf_bessel_zero_J1gsl_sf_bessel_zero_J1_egsl_sf_bessel_zero_J0gsl_sf_bessel_zero_J0_egsl_sf_bessel_lnKnugsl_sf_bessel_lnKnu_egsl_sf_bessel_Knugsl_sf_bessel_Knu_egsl_sf_bessel_Knu_scaledgsl_sf_bessel_Knu_scaled_egsl_sf_bessel_Inugsl_sf_bessel_Inu_egsl_sf_bessel_Inu_scaledgsl_sf_bessel_Inu_scaled_egsl_sf_bessel_sequence_Jnu_egsl_sf_bessel_Ynugsl_sf_bessel_Ynu_egsl_sf_bessel_Jnugsl_sf_bessel_Jnu_egsl_sf_bessel_kl_scaled_arraygsl_sf_bessel_kl_scaledgsl_sf_bessel_kl_scaled_egsl_sf_bessel_k2_scaledgsl_sf_bessel_k2_scaled_egsl_sf_bessel_k1_scaledgsl_sf_bessel_k1_scaled_egsl_sf_bessel_k0_scaledgsl_sf_bessel_k0_scaled_egsl_sf_bessel_il_scaled_arraygsl_sf_bessel_il_scaledgsl_sf_bessel_il_scaled_egsl_sf_bessel_i2_scaledgsl_sf_bessel_i2_scaled_egsl_sf_bessel_i1_scaledgsl_sf_bessel_i1_scaled_egsl_sf_bessel_i0_scaledgsl_sf_bessel_i0_scaled_egsl_sf_bessel_yl_arraygsl_sf_bessel_ylgsl_sf_bessel_yl_egsl_sf_bessel_y2gsl_sf_bessel_y2_egsl_sf_bessel_y1gsl_sf_bessel_y1_egsl_sf_bessel_y0gsl_sf_bessel_y0_egsl_sf_bessel_jl_steed_arraygsl_sf_bessel_jl_arraygsl_sf_bessel_jlgsl_sf_bessel_jl_egsl_sf_bessel_j2gsl_sf_bessel_j2_egsl_sf_bessel_j1gsl_sf_bessel_j1_egsl_sf_bessel_j0gsl_sf_bessel_j0_egsl_sf_bessel_Kn_scaled_arraygsl_sf_bessel_Kn_scaledgsl_sf_bessel_Kn_scaled_egsl_sf_bessel_K1_scaledgsl_sf_bessel_K1_scaled_egsl_sf_bessel_K0_scaledgsl_sf_bessel_K0_scaled_egsl_sf_bessel_Kn_arraygsl_sf_bessel_Kngsl_sf_bessel_Kn_egsl_sf_bessel_K1gsl_sf_bessel_K1_egsl_sf_bessel_K0gsl_sf_bessel_K0_egsl_sf_bessel_In_scaled_arraygsl_sf_bessel_In_scaledgsl_sf_bessel_In_scaled_egsl_sf_bessel_I1_scaledgsl_sf_bessel_I1_scaled_egsl_sf_bessel_I0_scaledgsl_sf_bessel_I0_scaled_egsl_sf_bessel_In_arraygsl_sf_bessel_Ingsl_sf_bessel_In_egsl_sf_bessel_I1gsl_sf_bessel_I1_egsl_sf_bessel_I0gsl_sf_bessel_I0_egsl_sf_bessel_Yn_arraygsl_sf_bessel_Yngsl_sf_bessel_Yn_egsl_sf_bessel_Y1gsl_sf_bessel_Y1_egsl_sf_bessel_Y0gsl_sf_bessel_Y0_egsl_sf_bessel_Jn_arraygsl_sf_bessel_Jngsl_sf_bessel_Jn_egsl_sf_bessel_J1gsl_sf_bessel_J1_egsl_sf_bessel_J0gsl_sf_bessel_J0_ebessel_Jn_arraybessel_Yn_arraybessel_In_arraybessel_In_scaled_arraybessel_Kn_arraybessel_Kn_scaled_arraybessel_jl_arraybessel_jl_steed_arraybessel_yl_arraybessel_il_scaled_arraybessel_kl_scaled_arraybessel_sequence_Jnu_egsl_sf_clausengsl_sf_clausen_egsl_sf_coulomb_CL_arraygsl_sf_coulomb_CL_egsl_sf_coulomb_wave_sphF_arraygsl_sf_coulomb_wave_FGp_arraygsl_sf_coulomb_wave_FG_arraygsl_sf_coulomb_wave_F_arraygsl_sf_coulomb_wave_FG_egsl_sf_hydrogenicRgsl_sf_hydrogenicR_egsl_sf_hydrogenicR_1gsl_sf_hydrogenicR_1_ecoulomb_wave_FG_ecoulomb_wave_F_arraycoulomb_wave_FG_arraycoulomb_wave_FGp_arraycoulomb_wave_sphF_arraycoulomb_CL_arraygsl_sf_coupling_6j_INCORRECTgsl_sf_coupling_6j_INCORRECT_egsl_sf_coupling_9jgsl_sf_coupling_9j_egsl_sf_coupling_RacahWgsl_sf_coupling_RacahW_egsl_sf_coupling_6jgsl_sf_coupling_6j_egsl_sf_coupling_3jgsl_sf_coupling_3j_ecoupling_6j_INCORRECT_ecoupling_6j_INCORRECT gsl_sf_dawsongsl_sf_dawson_egsl_sf_debye_6gsl_sf_debye_6_egsl_sf_debye_5gsl_sf_debye_5_egsl_sf_debye_4gsl_sf_debye_4_egsl_sf_debye_3gsl_sf_debye_3_egsl_sf_debye_2gsl_sf_debye_2_egsl_sf_debye_1gsl_sf_debye_1_egsl_sf_complex_spence_xy_egsl_sf_complex_dilog_egsl_sf_complex_dilog_xy_e gsl_sf_diloggsl_sf_dilog_ecomplex_dilog_xy_ecomplex_dilog_ecomplex_spence_xy_egsl_sf_multiply_err_egsl_sf_multiplygsl_sf_multiply_egsl_sf_ellint_RJgsl_sf_ellint_RJ_egsl_sf_ellint_RFgsl_sf_ellint_RF_egsl_sf_ellint_RDgsl_sf_ellint_RD_egsl_sf_ellint_RCgsl_sf_ellint_RC_egsl_sf_ellint_Dgsl_sf_ellint_D_egsl_sf_ellint_Pgsl_sf_ellint_P_egsl_sf_ellint_Egsl_sf_ellint_E_egsl_sf_ellint_Fgsl_sf_ellint_F_egsl_sf_ellint_Dcompgsl_sf_ellint_Dcomp_egsl_sf_ellint_Pcompgsl_sf_ellint_Pcomp_egsl_sf_ellint_Ecompgsl_sf_ellint_Ecomp_egsl_sf_ellint_Kcompgsl_sf_ellint_Kcomp_e gsl_sf_hazardgsl_sf_hazard_e gsl_sf_erf_Q gsl_sf_erf_Zgsl_sf_erf_Q_egsl_sf_erf_Z_e gsl_sf_erf gsl_sf_erf_egsl_sf_log_erfcgsl_sf_log_erfc_e gsl_sf_erfc gsl_sf_erfc_egsl_sf_exp_mult_err_e10_egsl_sf_exp_mult_err_egsl_sf_exp_err_e10_egsl_sf_exp_err_egsl_sf_exprel_n_CF_egsl_sf_exprel_ngsl_sf_exprel_n_egsl_sf_exprel_2gsl_sf_exprel_2_e gsl_sf_exprelgsl_sf_exprel_e gsl_sf_expm1gsl_sf_expm1_egsl_sf_exp_mult_e10_egsl_sf_exp_multgsl_sf_exp_mult_egsl_sf_exp_e10_e gsl_sf_exp gsl_sf_exp_e exprel_n_CF_egsl_sf_atanintgsl_sf_atanint_e gsl_sf_Ci gsl_sf_Ci_e gsl_sf_Si gsl_sf_Si_egsl_sf_expint_3gsl_sf_expint_3_e gsl_sf_Chi gsl_sf_Chi_e gsl_sf_Shi gsl_sf_Shi_egsl_sf_expint_Ei_scaledgsl_sf_expint_Ei_scaled_egsl_sf_expint_Eigsl_sf_expint_Ei_egsl_sf_expint_En_scaledgsl_sf_expint_En_scaled_egsl_sf_expint_E2_scaledgsl_sf_expint_E2_scaled_egsl_sf_expint_E1_scaledgsl_sf_expint_E1_scaled_egsl_sf_expint_Engsl_sf_expint_En_egsl_sf_expint_E2gsl_sf_expint_E2_egsl_sf_expint_E1gsl_sf_expint_E1_egsl_sf_fermi_dirac_inc_0gsl_sf_fermi_dirac_inc_0_egsl_sf_fermi_dirac_3halfgsl_sf_fermi_dirac_3half_egsl_sf_fermi_dirac_halfgsl_sf_fermi_dirac_half_egsl_sf_fermi_dirac_mhalfgsl_sf_fermi_dirac_mhalf_egsl_sf_fermi_dirac_intgsl_sf_fermi_dirac_int_egsl_sf_fermi_dirac_2gsl_sf_fermi_dirac_2_egsl_sf_fermi_dirac_1gsl_sf_fermi_dirac_1_egsl_sf_fermi_dirac_0gsl_sf_fermi_dirac_0_egsl_sf_fermi_dirac_m1gsl_sf_fermi_dirac_m1_egsl_sf_beta_incgsl_sf_beta_inc_e gsl_sf_beta gsl_sf_beta_egsl_sf_lnbeta_sgn_e gsl_sf_lnbetagsl_sf_lnbeta_egsl_sf_gamma_incgsl_sf_gamma_inc_egsl_sf_gamma_inc_Pgsl_sf_gamma_inc_P_egsl_sf_gamma_inc_Qgsl_sf_gamma_inc_Q_egsl_sf_pochrelgsl_sf_pochrel_e gsl_sf_poch gsl_sf_poch_egsl_sf_lnpoch_sgn_e gsl_sf_lnpochgsl_sf_lnpoch_e gsl_sf_choosegsl_sf_choose_egsl_sf_lnchoosegsl_sf_lnchoose_egsl_sf_lndoublefactgsl_sf_lndoublefact_e gsl_sf_lnfactgsl_sf_lnfact_egsl_sf_doublefactgsl_sf_doublefact_e gsl_sf_fact gsl_sf_fact_egsl_sf_taylorcoeffgsl_sf_taylorcoeff_egsl_sf_lngamma_complex_egsl_sf_gammainvgsl_sf_gammainv_egsl_sf_gammastargsl_sf_gammastar_e gsl_sf_gammagsl_sf_gamma_egsl_sf_lngamma_sgn_egsl_sf_lngammagsl_sf_lngamma_e lngamma_sgn_elngamma_complex_e lnpoch_sgn_e lnbeta_sgn_egsl_sf_gegenpoly_arraygsl_sf_gegenpoly_ngsl_sf_gegenpoly_n_egsl_sf_gegenpoly_3gsl_sf_gegenpoly_2gsl_sf_gegenpoly_1gsl_sf_gegenpoly_3_egsl_sf_gegenpoly_2_egsl_sf_gegenpoly_1_egegenpoly_arraygsl_sf_hyperg_2F0gsl_sf_hyperg_2F0_egsl_sf_hyperg_2F1_conj_renormgsl_sf_hyperg_2F1_conj_renorm_egsl_sf_hyperg_2F1_renormgsl_sf_hyperg_2F1_renorm_egsl_sf_hyperg_2F1_conjgsl_sf_hyperg_2F1_conj_egsl_sf_hyperg_2F1gsl_sf_hyperg_2F1_egsl_sf_hyperg_U_e10_egsl_sf_hyperg_Ugsl_sf_hyperg_U_egsl_sf_hyperg_U_int_e10_egsl_sf_hyperg_U_intgsl_sf_hyperg_U_int_egsl_sf_hyperg_1F1gsl_sf_hyperg_1F1_egsl_sf_hyperg_1F1_intgsl_sf_hyperg_1F1_int_egsl_sf_hyperg_0F1gsl_sf_hyperg_0F1_egsl_sf_laguerre_ngsl_sf_laguerre_n_egsl_sf_laguerre_3gsl_sf_laguerre_2gsl_sf_laguerre_1gsl_sf_laguerre_3_egsl_sf_laguerre_2_egsl_sf_laguerre_1_egsl_sf_lambert_Wm1gsl_sf_lambert_Wm1_egsl_sf_lambert_W0gsl_sf_lambert_W0_egsl_sf_legendre_H3d_arraygsl_sf_legendre_H3dgsl_sf_legendre_H3d_egsl_sf_legendre_H3d_1gsl_sf_legendre_H3d_1_egsl_sf_legendre_H3d_0gsl_sf_legendre_H3d_0_egsl_sf_conicalP_cyl_reggsl_sf_conicalP_cyl_reg_egsl_sf_conicalP_sph_reggsl_sf_conicalP_sph_reg_egsl_sf_conicalP_1gsl_sf_conicalP_1_egsl_sf_conicalP_0gsl_sf_conicalP_0_egsl_sf_conicalP_mhalfgsl_sf_conicalP_mhalf_egsl_sf_conicalP_halfgsl_sf_conicalP_half_egsl_sf_legendre_array_size"gsl_sf_legendre_sphPlm_deriv_arraygsl_sf_legendre_sphPlm_arraygsl_sf_legendre_sphPlmgsl_sf_legendre_sphPlm_egsl_sf_legendre_Plm_deriv_arraygsl_sf_legendre_Plm_arraygsl_sf_legendre_Plmgsl_sf_legendre_Plm_egsl_sf_legendre_Qlgsl_sf_legendre_Ql_egsl_sf_legendre_Q1gsl_sf_legendre_Q1_egsl_sf_legendre_Q0gsl_sf_legendre_Q0_egsl_sf_legendre_P3gsl_sf_legendre_P2gsl_sf_legendre_P1gsl_sf_legendre_P3_egsl_sf_legendre_P2_egsl_sf_legendre_P1_egsl_sf_legendre_Pl_deriv_arraygsl_sf_legendre_Pl_arraygsl_sf_legendre_Plgsl_sf_legendre_Pl_elegendre_Pl_arraylegendre_Pl_deriv_arraylegendre_Plm_arraylegendre_Plm_deriv_arraylegendre_sphPlm_arraylegendre_sphPlm_deriv_arraylegendre_H3d_arraygsl_sf_log_1plusx_mxgsl_sf_log_1plusx_mx_egsl_sf_log_1plusxgsl_sf_log_1plusx_egsl_sf_complex_log_egsl_sf_log_absgsl_sf_log_abs_e gsl_sf_log gsl_sf_log_e complex_log_egsl_sf_pow_intgsl_sf_pow_int_e gsl_sf_psi_ngsl_sf_psi_n_e gsl_sf_psi_1gsl_sf_psi_1_egsl_sf_psi_1_intgsl_sf_psi_1_int_egsl_sf_complex_psi_egsl_sf_psi_1piygsl_sf_psi_1piy_e gsl_sf_psi gsl_sf_psi_egsl_sf_psi_intgsl_sf_psi_int_e complex_psi_egsl_sf_synchrotron_2gsl_sf_synchrotron_2_egsl_sf_synchrotron_1gsl_sf_synchrotron_1_egsl_sf_transport_5gsl_sf_transport_5_egsl_sf_transport_4gsl_sf_transport_4_egsl_sf_transport_3gsl_sf_transport_3_egsl_sf_transport_2gsl_sf_transport_2_egsl_sf_angle_restrict_pos_err_e gsl_sf_angle_restrict_symm_err_egsl_sf_angle_restrict_posgsl_sf_angle_restrict_pos_egsl_sf_angle_restrict_symmgsl_sf_angle_restrict_symm_egsl_sf_cos_err_egsl_sf_sin_err_egsl_sf_rect_to_polargsl_sf_polar_to_rect gsl_sf_lncoshgsl_sf_lncosh_e gsl_sf_lnsinhgsl_sf_lnsinh_e gsl_sf_sinc gsl_sf_sinc_egsl_sf_complex_logsin_egsl_sf_complex_cos_egsl_sf_complex_sin_e gsl_sf_hypotgsl_sf_hypot_e gsl_sf_cos gsl_sf_cos_e gsl_sf_sin gsl_sf_sin_e complex_sin_e complex_cos_ecomplex_logsin_e polar_to_rect rect_to_polarangle_restrict_symm_eangle_restrict_pos_e gsl_sf_eta gsl_sf_eta_egsl_sf_eta_intgsl_sf_eta_int_e gsl_sf_hzetagsl_sf_hzeta_egsl_sf_zetam1_intgsl_sf_zetam1_int_e gsl_sf_zetam1gsl_sf_zetam1_e gsl_sf_zeta gsl_sf_zeta_egsl_sf_zeta_intgsl_sf_zeta_int_eunsafeVectorToStorableArray unsafeFreeze'joinVert joinHoriz showComplexcompat' c_minimizeD c_minimizec_rootjc_rootode_cphase magnitudepolarcismkPolar conjugateimagPartrealPart:+ internalcompzgetrsdgetrszgetrfdgetrfzgeesdgeeszgehrddgehrdzgeqr2dgeqr2dpotrfzpotrfzgelssdgelsszgelsdgelszgesvdgesvzheevdsyevzgeevdgeevzgesdddgesddzgesvddgesvdzgemmcdgemmcTQTWeigRauxsvd'thinSVD'sv' luPacked'luSolve' linearSolve'linearSolveSVD'linearSolveLS'eig'eigSH''eigOnly eigOnlySHcholSH'qr'hess'schur'ctrans' multiply'rankSVDmXmmXvvXmnorm2norm1golubepsJoinablejoinHjoinVCMRM ConsistentPosDefSqWCWCHerRotSqtrivialshrinkListElementwise shrinkPairrMcMrHercHerrRotcRotrSqcSqrWCcWCrSqWCcSqWCrPosDefcPosDefrConsistcConsistAprox:~dist~:|~|squareunitary hermitianwellCondpositiveDefinite upperTriangupperHessenbergzerosonesluPropinvProppinvPropdetProp nullspacePropsvdProp1 svdProp1asvdProp2svdProp3svdProp4 svdProp5a svdProp5b svdProp6a svdProp6bsvdProp7eigProp eigSHPropeigProp2 eigSHProp2qrProprqProphessProp schurProp1 schurProp2cholProp expmDiagProp multProp1 multProp2linearSolveProplinearSolveProp2rottoFile'