n       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !!!!!!!! ! ! ! ! """"########$$$$$$$ $!$"$#$$$%$&$'$($)$*$+%,%-%.%/%0%1%2%3%4%5%6%7%8%9&:&;&<&=&>&?&@&A&B&CDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`'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){*|*}*~****+++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,--------------------------------------------.......//0000000000;uses ffi provisional!Alberto Ruiz (aruiz at um dot es)1portable (uses FFI) provisionalAlberto Ruiz <aruiz@um.es>1description of GSL error codes clear the fpu     debug x = trace (show x) x useful for expressions like sortBy (compare `on` length) partit 3 [1..9] == [[1,2,3],[4,5,6],[7,8,9]]1obtains the common value of a property of a list postfix function application (flip ($)) specialized fromIntegral Aerror codes for the auxiliary functions required by the wrappers check the error code 4     1     2portable (uses FFI) provisionalAlberto Ruiz <aruiz@um.es>HA one-dimensional array of objects stored in a contiguous memory block. number of elements $foreign pointer to the memory block  creates a Vector from a list: > fromList [2,3,5,7] 4 |> [2.0,3.0,5.0,7.0] '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). 1access to Vector elements without range checking /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. $# $ %  !"    !"3portable (uses FFI) provisionalAlberto Ruiz <aruiz@um.es>-&'()*Auxiliary class. +(r0,c0) starting position  (rt,ct) dimensions of submatrix ,-.@Matrix representation suitable for GSL and LAPACK computations. /012 !"#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 )(creates a Matrix from a list of vectors *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 ]0Bapplication of a vector function on the flattened matrix elements 1Dapplication of a vector function on the flattened matrices elements 34562$Extracts a submatrix from a matrix. (r0,c0) starting position  (rt,ct) dimensions of submatrix  input matrix result 72obtains the complex conjugate of a complex vector 8Dcreates a complex vector from vectors with real and imaginary parts 9the inverse of 8 3"Saves a matrix as 2D ASCII table. format (%f, %g, %e) 7&'()*+,-./012 !:"#$%&;'()*+,-<=./>0134?@A562BC7893-&'()*+,-+,-.1/20/012! !"#$%&'()*+,-./01345627893portable (uses FFI) provisionalAlberto Ruiz <aruiz@um.es>5DEFGHIJ456789:;<=>?@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 `&elementwise operation on real vectors a)elementwise operation on complex vectors .456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a.4:98765[IZYXWVUTSRQPONMLKJ\]BHGFEDC^_;A@?>=<`a.4:9876556789:;A@?>=<<=>?@ABHGFEDCCDEFGHIZYXWVUTSRQPONMLKJJKLMNOPQRSTUVWXYZ[\]^_`a4portable provisionalAlberto Ruiz <aruiz@um.es>     # $ %  !"&'()*+,-./012 !:"#$%&;'()*+,-<=./>0134?@A562BC7893portable provisionalAlberto Ruiz <aruiz@um.es>"bKcLMNdefghijklmnopOPqrstuvwxyz{|}bcdefghijklmnopqrstuvwxyz{|}cpdkfmnijb}qysz{vwoghel|turxbcdefghijklmnopqrstuvwxyz{|}uses ffi provisional!Alberto Ruiz (aruiz at um dot es)QVconversion of Haskell functions into function pointers that can be used in the C side RS'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)TUVVconversion 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)WFast 1D Fourier transform of a  (X Y) 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)Z0Solution 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][5\]^Vconversion of Haskell functions into function pointers that can be used in the C side _`a\]^_`abc\]^_`a6uses ffi provisional!Alberto Ruiz (aruiz at um dot es) defghijkaccess to a sf_result laccess to sf_result_e10 hijkl hijkl uses ffi provisional!Alberto Ruiz (aruiz at um dot es)0mnopqrstuvwxyz{|}~ 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)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)*+,uses ffi provisional!Alberto Ruiz (aruiz at um dot es)0-./0123456789:;<=>?@ABCD !"#$%&'()*+,-./0123 !"#$%&'()*+,-./0123 !"#$%&'()*+,-./0123 !"#$%&'()*+,-./0123uses ffi provisional!Alberto Ruiz (aruiz at um dot es)EFGHIJKLMNOP456789:;<=>? 456789:;<=>? 456789:;<=>? 456789:;<=>?uses ffi provisional!Alberto Ruiz (aruiz at um dot es)&QRSTUVWXYZ[\]^_`abc@ABCDEFGHIJKLMdNOPQ@ABCDEFGHIJKLMNOPQ@ABCDEFGHIJKLMNOPQ@ABCDEFGHIJKLMNOPQuses ffi provisional!Alberto Ruiz (aruiz at um dot es)8efghijklmnopqrstuvwxyz{|}~RSTUVWXYZ[\]^_`abcdefghijklmRSTUVWXYZ[\]^_`abcdefghijklmRSTUVWXYZ[\]^_`abcdefghijklmRSTUVWXYZ[\]^_`abcdefghijklmuses ffi provisional!Alberto Ruiz (aruiz at um dot es)$nopqrstuvwxyz{|}~nopqrstuvwxyz{|}~nopqrstuvwxyz{|}~nopqrstuvwxyz{|}~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      !%%%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)./0123456789:;                "uses ffi provisional!Alberto Ruiz (aruiz at um dot es)<=>?    #uses ffi provisional!Alberto Ruiz (aruiz at um dot es)@ABCDEFG$uses ffi provisional!Alberto Ruiz (aruiz at um dot es)2HIJKLMNOPQRSTUVWXYZ[\]^_`abc !"#$de%&f'g()* !"#$%&'()* !"#$%&'()* !"#$%&'()*%uses ffi provisional!Alberto Ruiz (aruiz at um dot es)hijklmnopqrstu+,-./012345678+,-./012345678+,-./012345678+,-./0123456787uses ffi provisional!Alberto Ruiz (aruiz at um dot es)      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./012345678&portable provisionalAlberto Ruiz <aruiz@um.es> 92Creates 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) vw;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) ?@AB 9:;<=>?@AB ;=<>9:@?AB 9:;<=>?@ABportable provisionalAlberto Ruiz <aruiz@um.es>  !"$%&. .&! "$%portable provisionalAlberto Ruiz <aruiz@um.es>C4Creates a real vector containing a range of values: > linspace 5 (-3,7) 5 |> [-3.0,-0.5,2.0,4.5,7.0]DEFGH: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] CDEFGH  HCDEFGCDEFGHportable provisionalAlberto Ruiz <aruiz@um.es>x2creates a matrix from a vertical list of matrices y4creates a matrix from a horizontal list of matrices ICCreates a matrix from blocks given as a list of lists of matrices: > let a = L $   [5,7,2] > let b = / 4 $ H (-1) 12 > fromBlocks [[a,b],[b,a]] (6><7) , [ 5.0, 0.0, 0.0, -1.0, -1.0, -1.0, -1.0 , , 0.0, 7.0, 0.0, -1.0, -1.0, -1.0, -1.0 , , 0.0, 0.0, 2.0, -1.0, -1.0, -1.0, -1.0 , , -1.0, -1.0, -1.0, -1.0, 5.0, 0.0, 0.0 , , -1.0, -1.0, -1.0, -1.0, 0.0, 7.0, 0.0 , , -1.0, -1.0, -1.0, -1.0, 0.0, 0.0, 2.0 ]JReverse rows KReverse columns L/Creates a square matrix with a given diagonal. M&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 ]N0extracts the diagonal from a rectangular matrix O/creates the identity matrix of given dimension P 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 ]Q9Creates a matrix with the first n rows of another matrix R4Creates a copy of a matrix without the first n rows S<Creates a matrix with the first n columns of another matrix T7Creates a copy of a matrix without the first n columns U 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 ]V%creates a 1-row matrix from a vector W(creates a 1-column matrix from a vector XzYZCreates 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 = putStrLn . format " " (printf "%.2f")Z<reads a matrix from a string containing a table of numbers. [=obtains the number of rows and columns in an ASCII data file  (provisionally using unix's wc). \;Loads a matrix from an ASCII file formatted as a 2D table. ]]Loads a matrix from an ASCII file (the number of rows and columns must be known in advance). ^Urearranges the rows of a matrix according to the order given in a list of integers. _Lcreates 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 ](#'()*+,-/0123IJKLMNOPQRSTUVWXYZ[\]^_,P#/'U(-VW)*+,I_JK2QRST^OLMN01Y\3][ZXIJKLMNOPQRSTUVWXYZ[\]^_'uses ffi provisional!Alberto Ruiz (aruiz at um dot es) {|`abcdefghl"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 mMinimization 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 `abcdefghijklmlfhgm`edcbaijk `edcbaabcdefhgghlm(uses ffi provisional!Alberto Ruiz (aruiz at um dot es)}~nopqrstuvwxNNonlinear 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 yUNonlinear 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 nopqrstuvwxy xswvutynrqpo nrqpoopqrswvuttuvwxy)uses -fffi and -fglasgow-exts provisional!Alberto Ruiz (aruiz at um dot es)zVThis 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. X~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./012345678`abcdefghijklmnopqrstuvwxyzzz*uses ffi provisional!Alberto Ruiz (aruiz at um dot es){conversion utilities |}~Qconverts a real vector into a complex representation (with zero imaginary parts) RX #'()*+,-/0123CDEFGHIJKLMNOPQRSTUVWXYZ[\]^_{|}~{|}~{|}~|}~+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. "element by element multiplication element by element division 7scale the element by element reciprocal of the object: scaleRecip 2 (fromList [5,i]#) == 2 |> [0.4 :+ 0.0,0.0 :+ (-2.0)]    8portable provisional!Alberto Ruiz (aruiz at um dot es),portable (uses FFI) provisional!Alberto Ruiz (aruiz at um dot es)9Matrix product based on BLAS's dgemm. Matrix product based on BLAS's zgemm. Wrapper for LAPACK's dgesvd>, which computes the full svd decomposition of a real matrix. (u,s,v)=full svdR m so that m=u <> s <> # v. Wrapper for LAPACK's dgesvd>, which computes the full svd decomposition of a real matrix. (u,s,v)=full svdRdd m so that m=u <> s <> # v. Wrapper for LAPACK's zgesvdA, which computes the full svd decomposition of a complex matrix. (u,s,v)=full svdC m so that m=u <> comp s <> # v. Wrapper for LAPACK's zgeevU, which computes the eigenvalues and right eigenvectors of a general complex matrix: if  (l,v)=eigC m then m <> v = v <> diag l. 'The eigenvectors are the columns of v. ! The eigenvalues are not sorted. Wrapper for LAPACK's dgeevR, which computes the eigenvalues and right eigenvectors of a general real matrix: if  (l,v)=eigR m then m <> v = v <> diag l. 'The eigenvectors are the columns of v. ! The eigenvalues are not sorted. Wrapper for LAPACK's dsyevT, which computes the eigenvalues and right eigenvectors of a symmetric real matrix: if  (l,v)=eigSl m then m <> v = v <> diag l. 'The eigenvectors are the columns of v. 9 The eigenvalues are sorted in descending order (use eigS' for ascending order). Wrapper for LAPACK's zheevW, which computes the eigenvalues and right eigenvectors of a hermitian complex matrix: if  (l,v)=eigH m then m <> s v = v <> diag l. 'The eigenvectors are the columns of v. 9 The eigenvalues are sorted in descending order (use eigH' for ascending order). Wrapper for LAPACK's dgesvr, which solves a general real linear system (for several right-hand sides) internally using the lu decomposition. Wrapper for LAPACK's zgesvu, which solves a general complex linear system (for several right-hand sides) internally using the lu decomposition. Wrapper for LAPACK's dgels, which obtains the least squared error solution of an overconstrained real linear system or the minimum norm solution of an underdetermined system, for several right-hand sides. For rank deficient systems use . Wrapper for LAPACK's zgels, which obtains the least squared error solution of an overconstrained complex linear system or the minimum norm solution of an underdetermined system, for several right-hand sides. For rank deficient systems use . Wrapper for LAPACK's dgelss, which obtains the minimum norm solution to a real linear least squares problem Ax=B using the svd, for several right-hand sides. 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) Wrapper for LAPACK's zgelss, which obtains the minimum norm solution to a complex linear least squares problem Ax=B using the svd, for several right-hand sides. 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) Wrapper for LAPACK's zpotrf1, which computes the Cholesky factorization of a - complex Hermitian positive definite matrix. Wrapper for LAPACK's dpotrf1, which computes the Cholesky factorization of a * real symmetric positive definite matrix. Wrapper for LAPACK's dgeqr26, which computes a QR factorization of a real matrix. Wrapper for LAPACK's zgeqr29, which computes a QR factorization of a complex matrix. Wrapper for LAPACK's dgehrdE, which computes a Hessenberg factorization of a square real matrix. Wrapper for LAPACK's zgehrdH, which computes a Hessenberg factorization of a square complex matrix. Wrapper for LAPACK's dgees@, which computes a Schur factorization of a square real matrix. Wrapper for LAPACK's zgeesC, which computes a Schur factorization of a square complex matrix. Wrapper for LAPACK's dgetrf>, which computes a LU factorization of a general real matrix. Wrapper for LAPACK's zgeesC, which computes a Schur factorization of a square complex matrix. Wrapper for LAPACK's dgetrsp, which solves a general real linear system (for several right-hand sides) from a precomputed LU decomposition. Wrapper for LAPACK's zgetrsp, which solves a general real linear system (for several right-hand sides) from a precomputed LU decomposition. -uses ffi provisional!Alberto Ruiz (aruiz at um dot es)>Objects 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. )Singular value decomposition using lapack's dgesvd or zgesvd. RObtains the LU decomposition of a matrix in a compact data structure suitable for . aSolution of a linear system (for several right hand sides) from the precomputed LU factorization  obtained by . PSolution of a general linear system (for several right-hand sides) using lapacks' dgesv or zgesv.  It is similar to  . , but  linearSolve1 raises an error if called on a singular system. , See also other versions of linearSolve in Numeric.LinearAlgebra.LAPACK. DEigenvalues and eigenvectors of a general square matrix using lapack's dgeev or zgeev. If  (s,v) = eig m then m < > v == v <> diag s  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. QR factorization using lapack's dgeqr2 or zgeqr2. If  (q,r) = qr m then m == q <> r0, where q is unitary and r is upper triangular. %Hessenberg factorization using lapack's dgehrd or zgehrd. If (p,h) = hess m then m == p <> h < > ctrans p, where p is unitary $ and h is in upper Hessenberg form.  Schur factorization using lapack's dgees or zgees. 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. YEigenvalues and Eigenvectors of a complex hermitian or real symmetric matrix using lapack's dsyev or zheev. If (s,v) = eigSH m then m == v < > diag s < > ctrans v XCholesky factorization of a positive definite hermitian or symmetric matrix using lapack's dpotrf or zportrf. If  c = chol m then m == ctrans c <> c. Ddeterminant of a square matrix, computed from the LU decomposition. :Explicit LU factorization of a general matrix using lapack's dgetrf or zgetrf. 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 using lapacks' dgesv and zgesv. .Pseudoinverse of a general matrix using lapack's dgelss or zgelss.  A version of H which returns an appropriate diagonal matrix with the singular values. If (u,d,v) = full svd m then m == u <> d < > trans v.  A version of i which returns only the nonzero singular values and the corresponding rows and columns of the rotations. If (u,s,v) = economy svd m then m == u < > diag s < > trans v. #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. relative tolerance in  units  input matrix /list of unitary vectors spanning the nullspace _The nullspace of a matrix, assumed to be one-dimensional, with default tolerance (shortcut for last . nullspacePrec 1). NReciprocal of the 2-norm condition number of a matrix, computed from the SVD. 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 ],,+.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. 9uses ffi provisional!Alberto Ruiz (aruiz at um dot es)X #'()*+,-/0123CDEFGHIJKLMNOPQRSTUVWXYZ[\]^_{|}~:portable provisional!Alberto Ruiz (aruiz at um dot es) ;portable provisional!Alberto Ruiz (aruiz at um dot es) /portable provisional!Alberto Ruiz (aruiz at um dot es)9All tests must pass with a maximum dimension of about 20 A (some tests may fail with bigger sizes due to precision loss). maximum dimension 0uses gnuplot and ImageMagick provisional!Alberto Ruiz (aruiz at um dot es) 6Loads 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.   <1=1>1?1@1A2B2C2D2E2F2G2H2I2J2K2L2M2N2O2P2Q2R2S2T2U2V3W3X3Y3Z3[3\3]3^3_3`3a3b3c3d3e3f3g3h3i3j3k3l3m3n3opqrstuvwxyz{|}~ 6666                                  ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 789:;<=>?@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&{&|&}&~''''''''''''''(((((((((((()*******+++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,--------------------V-------------------- - - - - .......//0000000000 !1"1#1$1%1&1'1(1)1*1+1,1-1.1/101112131415161718191:1;1<1=1>1?1@1A1B1C1D1E1F1G1H1I1J1K1L1M1N1O1P2Q2R2S2T2U2V2W2X2Y2Z2[2\2]2^2_3`3a3b3c3d3e3f3g3h3i3j3k3l3m3n3o3p3333q3r3s3t3u3v3w3x3y3z{|}~   55555555666666666                                                                                                                             ! " # $ % & ' ( ) * + , - ./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc d e!f!g!h!i!j!k!l!m!n!o!p!q!r!s"t"u"v"w#x#y#z#{#|#}#~#$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%&&''((*88,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,-------------------....{:::::::::::::::::::::::::: : : : : :::::;;;;;;;;;;;;;;; ;!;";#;$;%;&;';(;);*;+;,;-;.;/;0;1;2//3045hmatrix-0.5.2.2Numeric.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.Root Numeric.GSL Data.PackedNumeric.LinearAlgebra.LinearNumeric.LinearAlgebra.LAPACK Numeric.LinearAlgebra.AlgorithmsNumeric.LinearAlgebra.InterfaceNumeric.LinearAlgebra.Tests Graphics.PlotData.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 liftVector liftVector2 mapVector zipVector foldVectorfoldLoop foldVectorG fscanfVector fprintfVector freadVector fwriteVectorElementMatrixrowscols MatrixOrder ColumnMajorRowMajororderOftranscmatfmatmatflattentoListsfromRowstoRows fromColumns toColumns@@> createMatrixreshape liftMatrix liftMatrix2 subMatrix saveMatrixFunCodeSMinMinIdxMaxMaxIdxAbsSumNorm2 FunCodeVVATan2PowDivMulSubAdd FunCodeSVPowVSPowSVNegate AddConstantRecipScaleFunCodeVSqrtSignLogExpATanhACoshASinhTanhCoshSinhATanACosASinAbsTanCosSin toScalarR vectorMapR vectorMapC vectorMapValR vectorMapValC vectorZipR vectorZipCSTMatrixSTVector 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 fromBlocksflipudfliprldiagdiagRecttakeDiagident><takeRowsdropRows takeColumns dropColumns fromListsasRowasColumn fromArray2DformatfileDimensions loadMatrixfromFile extractRowsrepmatMinimizeMethodDSteepestDescent VectorBFGS2 VectorBFGS ConjugatePR ConjugateFRMinimizeMethod NMSimplex2 NMSimplexminimizeNMSimplexminimizeConjugateGradientminimizeVectorBFGS2minimize minimizeD RootMethodJGNewtonNewtonHybridJHybridsJ RootMethodBroydenDNewtonHybridHybridsrootrootJsetErrorHandlerOff Container toComplex fromComplexcompconjrealcomplexLinearscale addConstantaddsubmuldivide scaleRecipequal multiplyR multiplyCsvdRsvdRddsvdCeigCeigReigSeigS'eigHeigH' linearSolveR linearSolveClinearSolveLSRlinearSolveLSClinearSolveSVDRlinearSolveSVDCcholHcholSqrRqrChessRhessCschurRschurCluRluClusRlusCNormedpnormNormTypePNorm2PNorm1InfinityFieldsvdluPackedluSolve linearSolvelinearSolveSVDeigeigSH'cholSHqrhessschurctranseigSHcholdetluinvpinvfulleconomyepsi nullspacePrec nullVectorpinvTol haussholderunpackQR unpackHessrcondrankmatFuncexpmsqrtmdotouter kronecker<><.>.**/<\><|><->qCheckrunTestsmeshdomgnuplotXmeshmesh'splotmplotplotparametricPlot matrixToPGMimshowgsl_sf_elljac_e gsl_strerrorfinitTMMCVMTMCVMTCVMTVCVTCMCVTCVCVCVTCVCVTCVTCMCMCMTCMCMVCMTCMVCMTVCMTCMCM TCMCMCVCMTMCMCVCMTCMCVCMTCVCMTCMTMMVMTMVMTMMVTMVTVVMTVMTMMMTMVMMTVMMTMMTMTVVVTVVTVPCPDdebugonpartitcommon//fi errorCodecheckww2ww3ww4gsl_vector_fwritegsl_vector_freadgsl_vector_fprintfgsl_vector_fscanfVfptrinlinePerformIOat'atasReal asComplex cloneVector withVectorsafeReadsafematrix_fprintf cconstantC cconstantRctransCctransR subMatrixD transdata constantDMtMFfdatMCcdatcompat transdata' constantR constantCxdat withMatrixatM'matrixFromVector singleton transdataAux constant' constantAux subMatrix'' subMatrix' 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' mkVecMatfun 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 joinHorizdsp' c_minimizeD c_minimizec_rootjc_rootphase magnitudepolarcismkPolar conjugateimagPartrealPart:+ internalcomp liftMatrix2'compat'zgetrsdgetrszgetrfdgetrfzgeesdgeeszgehrddgehrdzgeqr2dgeqr2dpotrfzpotrfzgelssdgelsszgelsdgelszgesvdgesvzheevdsyevdgeevzgeevdgesddzgesvddgesvdzgemmcdgemmcTQTWeigRauxsvd' luPacked'luSolve' linearSolve'linearSolveSVD'eig'eigSH''cholSH'qr'hess'schur'ctrans' multiply'mXmmXvvXmnorm2norm1golubepsJoinablejoinHjoinVCMRM ConsistentPosDefSqWCWCHerRotSqtrivialshrinkListElementwise shrinkPairrMcMrHercHerrRotcRotrSqcSqrWCcWCrSqWCcSqWCrPosDefcPosDefrConsistcConsistAprox:~dist~:|~|squareunitary hermitianwellCondpositiveDefinite upperTriangupperHessenbergzerosonesluPropinvProppinvPropdetProp nullspacePropsvdProp1svdProp2eigProp eigSHPropqrProphessProp schurProp1 schurProp2cholProp expmDiagProp multProp1 multProp2linearSolveProprottoFile'