My      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                             ! " # $ % & ' ( ) * + , - . / 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 VWXYZ[\]^_`abcdefghijklmnopqrstuvwx!NoneCMyYield log_b(n)6 when it is a non-negative integer (otherwise error).z{|y}z{|y}None !"%&(357KLNSane synonym for ~. Sane synonym for .!Sane synonym for ."Sane synonym for .#Sane synonym for .$Convenient synonym for (Ord a, Transcendental a)%Sane synonym for .&Sane synonym for .'Sane synonym for .(Sane synonym for .)Sane synonym for .*Sane synonym for .+Sane synonym for .,Sane synonym for .-Sane synonym for ..Sane synonym for ./Sane synonym for .0Sane synonym for .1The Prelude definition of 1.2The Prelude definition of 2.3The sane definition of 3 from  rather than the default from NumericPrelude.4The hidden NP function from .5BOur custom exponentiation, overriding NP's version that requires  exponent. Copied from Jhttp://hackage.haskell.org/package/base-4.7.0.0/docs/src/GHC-Real.html#%5E6 Inverse of a modulo q , in range 0..q-1'. (Argument order is infix-friendly.)7XDecompose an element into a list of "centered" digits with respect to relative radices.83Deterministically round to the nearest multiple of i.9<Randomly round to the nearest larger or smaller multiple of i1, where the round-off term has expectation zero.: Variant of ) in which the remainder is in the range  [-b/2,b/2)."IntegralDomain instance for Double !"#$%&'()*+,-./0123456789: dividend adivisor b(quotient, remainder)       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !"#$%&'()*+,-./0123456789: !"#$%&'()*+,-./0123456789:None%(*3457>CLN;9Newtype wrapper (with slightly different instances) for  Rhttps://hackage.haskell.org/package/numeric-prelude-0.4.2/docs/Number-Complex.htmlnumeric-prelude Complex.<@Rounds the real and imaginary components to the nearest integer.== t9 is a complex value with magnitude 1 and phase t (modulo 2*Pi).>#Real component of a complex number.?(Imaginary component of a complex number.@:Embeds a scalar as the real component of a complex number.;<=>?@;<=>?@ ;<=>?@None!"%&'()>LN M Convert a  to an integral type.NKind-restricted synonym for .OKind-restricted synonym for .V Convert a  to an integral type.W Template Haskell splice for the  type representing a given , e.g.,  $(posType 8).X Template Haskell splice for the  type representing a given , e.g.,  $(binType 89).Y)Template Haskell splice that defines the  type synonym Pn.Z)Template Haskell splice that defines the  type synonym Bn.[6Template Haskell splice that declares a type synonym  pfxn as the type f n.\;Infinite list of primes, built using Sieve of Erastothenes.]Search for the argument in \. This is not particularly fast, but works well enough for moderate-sized numbers that would appear as (divisors of) cyclotomic indices of interest.R ABCDEFGHIJKLMNOPQRSTUVWXYZ[ pfx f n\], ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]9 ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]None(^_`abcdefghijklmnopqrstuvwxyz{|}~ ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~AOMLBKCWYJHIDEFG PNVXZUSTQR[\]mlkjihgfedcba`_^~}|{zyxwvutsrqpon^_`abcdefghijklmnopqrstuvwxyz{|}~None!"&'()>KLN,Type synonym for (prime, exponent) pair.&Constraint synonym for coprimality of  types.'Constraint synonym for divisibility of  types.Kind-restricted synonym for .Kind-restricted synonym for . Kind-restricted synonym for . ,Type (family) synonym for multiplication of  types &Type (family) synonym for division of  types :Entails constraint for transitivity of division, i.e. if k|l and l|m, then k|m.(Entailment for divisibility by GCD: if  g=GCD(m1,m2) then g|m1 and g|m2.%Entailment for LCM divisibility: if  l=LCM(m1,m2) then m1|l and m2|l.=Entailment for LCM divisibility: the LCM of two divisors of m also divides m.Entailment for p-free division: if f is m after removing all p-factors, then f|m and  gcd(f,p)=1.Entailment for p-free division: if m|m', then p-free(m) | p-free(m').2Value-level prime-power factorization tagged by a  type.The value of a  type.The totient of a  type's value.The "hat" of a  type's value: hat{m} is m if m is odd, and m/2 otherwise.-The radical (product of prime divisors) of a  type.5The odd radical (product of odd prime divisors) of a  type. Reflect a  type to a  value.!Reflect the prime component of a  type.$Reflect the exponent component of a  type.The value of a  type.The totient of a  type's value.The value of a  type.Return m if m is odd, and m/2 otherwise.  Conversion.!The value of a prime power."Totient of a prime power.#The radical of a prime power.$!The odd radical of a prime power.% Product of values of individual s&"Product of totients of individual s'"Product of radicals of individual s(&Product of odd radicals of individual s) Template Haskell splice for the ? type corresponding to a given positive prime integer. (Uses ] to enforce primality of the base, so should only be used on small-to-moderate-sized arguments.) This is the preferred (and only) way of constructing a concrete ! type (and is used to define the Primep type synonyms).* Template Haskell splice for the  type corresponding to a given  . (Calls ) on the first component of its argument, so should only be used on small-to-moderate-sized numbers.) This is the preferred (and only) way of constructing a concrete  type.+ Template Haskell splice for the u type corresponding to a given positive integer. Factors its argument using a naive trial-division algorithm with \o, so should only be used on small-to-moderate-sized arguments (any reasonable cyclotomic index should be OK).,)Template Haskell splice that defines the  type synonym Primep for a positive prime integer p.-)Template Haskell splice that defines the  type synonym PPn, where n=p^e..)Template Haskell splice that defines the  type synonym Fn for a positive integer n.Factorize a positive integer into an ordered list of its prime divisors, with multiplicities. First argument is infinite list of primes left to consider.kFactorize a positive integer into a list of (prime,exponent) pairs, in strictly increasing order by prime..       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdef    ghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-. ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-.       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdef    ghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-.None(F/0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~+.*- ),      !"#$%&'(.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/0/7654321;:98>=<~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?/0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~None '(3457>NReflection without fundep, and with tagged value. Intended only for low-level code; build specialized wrappers around it for specific functionality.)Reflect the value assiated with the type a.None7Represents cyclotomic rings that are rescalable over their base rings. (This is a class because it allows for more efficient specialized implementations.)Rescale in the given basis."Specialized convenience functions."Specialized convenience functions.None&(-./47>?CLN/Indexed Zip Vector: a wrapper around a (boxed)  that has zip-py  behavior, analogous to  for lists. The index m9 enforces proper lengths (and is necessary to implement ). DeconstructorVSmart constructor that checks whether length of input is right (should be totient of m).None%&'(*34579>CIKLNRepresents that the target ring can "noisily encode" values from the source ring, in either "most significant digit" (MSD) or "least significant digit" (LSD) encodings, and provides conversion factors between the two types of encodings.The factor that converts an element from LSD to MSD encoding in the target field, with associated scale factor to apply to correct the resulting encoded value.Represents that a can be rescaled to b-, as an "approximate" additive homomorphism.Fun-dep version of Lift.The type of representatives of b.Represents that b can be lifted to a "short" a congruent to b.Represents that b is a quotient group of a.0Represents a quotient group modulo some integer. Poor man's .4The characteristic of a ring, represented as a type.Inverted entries of .*A default implementation of rescaling for  types.>Deterministically round to a nearby value in the desired coset Version of  with an error message.(Apply any applicative to a Tagged value.#Expose the monad of a tagged value.!Hide the monad of a tagged value.DUse a singleton as a witness to extract a value from a tagged value.Transformer version of .-       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~<12340/.-,+*)('&%$#"! 56789:;<=>?@$None %345>LN ,A ring with a ring embedding into some ring CRTExt r0 that has an invertible CRT transformation for every positive index m. Embeds from r to CRTExt rProjects from CRTExt r to raA ring that (possibly) supports invertible Chinese remainder transformations of various indices.The values of  for different indices m- should be consistent, in the sense that if omega, omega'+ are respectively the values returned for m, m' where m' divides m#, then it should be the case that omega^(m/m')=omega'. for a given index m. The method itself may be slow, but the function it returns should be fast, e.g., via internal memoization. The default implementation returns .^Information that characterizes the (invertible) Chinese remainder transformation over a ring r , namely: a function that returns the ith power of some  principal m"th root of unity (for any integer i)the multiplicative inverse of \hat{m} in r. wrapper for  types. wrapper for  types. wrapper for  types.A function that returns the ith embedding of  g_{p^e} = g_p for i in Z*_{p^e}.A function that returns the ith embedding of g_p for i in Z*_p , i.e.,  1-omega_p^i.  None%&'(47>?CLN "Convenience data type for writing  instances.Represents fields over which we can get irreducible polynomials of desired degrees. (An instance of this class is defined in   and exported from !".)$A finite field of given degree over F_p.Yield a list of length exactly d* (i.e., including trailing zeros) of the fp--coefficients with respect to the power basis"Yield a field element given up to d/ coefficients with respect to the power basis.The order of the field: size (GF fp d) = p^dTrace into the prime subfield.;Traces of the power basis elements 1, x, x^2, ..., x^(d-1).!Convenience function for writing  instances. None&'(4>FIKLN62A Kronecker product of zero of more matrices over r.Y encapsulates all the core linear transformations needed for cyclotomic ring arithmetic. The type t m r6 represents a cyclotomic coefficient tensor of index m over base ring r. Most of the methods represent linear transforms corresponding to operations in particular bases. CRT-related methods are wrapped in (K because they are well-defined only when a CRT basis exists over the ring r for index m._The superclass constraints are for convenience, to ensure that we can sample error tensors of s.WARNING:5 as with all fixed-point arithmetic, the methods in  may result in overflow (and thereby incorrect answers and potential security flaws) if the input arguments are too close to the bounds imposed by the base type. The acceptable range of inputs for each method is determined by the linear transform it implements.Constraints needed by t to hold type r.-Properties that hold for any index. Use with .EProperties that hold for any (legal) fully-applied tensor. Use with .3Convert a scalar to a tensor in the powerful basis.P converts from decoding-basis representation to powerful-basis representation;  is its inverse.P converts from decoding-basis representation to powerful-basis representation;  is its inverse. Multiply by g in the powerful/decoding basis Multiply by g in the powerful/decoding basis Divide by g& in the powerful/decoding basis. The (j output indicates that the operation may fail, which happens exactly when the input is not divisible by g. Divide by g& in the powerful/decoding basis. The (j output indicates that the operation may fail, which happens exactly when the input is not divisible by g.FA tuple of all the operations relating to the CRT basis, in a single ( value for safety. Clients should typically not use this method directly, but instead call the corresponding top-level functions: the elements of the tuple correpond to the functions , , , , .6Sample from the "tweaked" Gaussian error distribution t*D in the decoding basis, where D has scaled variance v. Given the coefficient tensor of e( with respect to the decoding basis of R%, yield the (scaled) squared norm of  g_m cdot e* under the canonical embedding, namely, ,hat{m}^{ -1 } cdot || sigma(g_m cdot e) ||^2 .The twaceS linear transformation, which is the same in both the powerful and decoding bases. The embed> linear transformations, for the powerful and decoding bases. The embed> linear transformations, for the powerful and decoding bases. A tuple of all the extension-related operations involving the CRT bases, for safety. Clients should typically not use this method directly, but instead call the corresponding top-level functions: the elements of the tuple correpond to the functions , . BMap a tensor in the powerful/decoding/CRT basis, representing an O_m'. element, to a vector of tensors representing O_m% elements in the same kind of basis. 7The powerful extension basis w.r.t. the powerful basis.'A list of tensors representing the mod-p CRT set of the extension.!Potentially optimized version of 2 when the input and output element types satisfy .Potentially optimized monadic .Potentially optimized .Unzip for types that satisfy .Unzip for arbitrary types.;Synonym for constraints required for CRT-related functions.%Convenience value indicating whether  exists.cYield a tensor for a scalar in the CRT basis. (This function is simply an appropriate entry from .) Multiply by gG in the CRT basis. (This function is simply an appropriate entry from .) Divide by gH in the CRT basis. (This function is simply an appropriate entry from .)HThe CRT transform. (This function is simply an appropriate entry from .)PThe inverse CRT transform. (This function is simply an appropriate entry from .)\The "tweaked trace" function for tensors in the CRT basis: For cyclotomic indices m | m', #Tw(x) = (mhat/m'hat) * Tr(g'/g * x)6. (This function is simply an appropriate entry from  .)Embed a tensor with index m* in the CRT basis to a tensor with index m'G in the CRT basis. (This function is simply an appropriate entry from  .) Extract the (i,j) element of a .The "tweaked" CRT^* matrix: CRT^* . diag(sigma(g_m))./The "tweaked" CRT^* matrix (for prime powers): CRT^* * diag(sigma(g_p))./Base-p digit reversal; input and output are in [p^e].  Convert a Z_m^*# index to a linear tensor index in [m].For a prime power p^e6, map a tensor index to the corresponding power j in  [phi(p^e)], as in the powerful basis.For a prime power p^e8, map a tensor index to the corresponding element i in  Z_{p^e}^*./Convert a Z_m^* index to a linear tensor index. Inverse of .Correspondences between the linear indexes into a basis of O_m', and pair indices into (extension basis) otimes (basis of O_m). The work the same for Pow,Dec,CRT bases because all these bases have that factorization. The first argument is the list of (phi(m),phi(m'))( pairs for the (merged) prime powers of m,m'.!rA collection of useful information for working with tensor extensions. The first component is a list of triples (p,e,e') where e, e') are respectively the exponents of prime p in m, m'. The next two components are phi(m) and phi(m')". The final component is a pair (phi(p^e), phi(p^e'))) for each triple in the first component." A vector of phi(m) entries, where the i;th entry is the index into the powerful/decoding basis of O_m' of the i+th entry of the powerful/decoding basis of O_m.# A vector of phi(m) blocks of phi(m')/phi(m)T consecutive entries. Each block contains all those indices into the CRT basis of O_m'A that "lie above" the corresponding index into the CRT basis of O_m.$A lookup table for  applied to indices  [phi(m')].%A lookup table for  applied to indices  [phi(m')].&Same as $7, but only includes the second component of each pair.'The i0th entry of the i1 th vector is  (i1,i0).Convenient reindexing functionsMaps an index of the extension ring array to its corresponding index in the base ring array (if it exists), with sign, under the decoding basis.F      !"#$%&'4      !"#$%&'4      !"#'$%&%      !"#$%&'#None %'35>LNConvenience function. None4>L()Represents integers modulo a prime power.)8An implementation of the integers modulo the prime base.*&The prime and exponent of the modulus.+ Lift from Z_p to a representative.()*+()*+()*+()*+ None!"%&'()3457>IKLN,Convenient synonym for -able element type.-5Constraints needed for many operations involving the . CRT (/) representation..%Represents a cyclotomic ring such as Z[zeta], Zq[zeta], and Q(zeta) in an explicit representation: t is the ' type for storing coefficient tensors; m is the cyclotomic index; rep is the representation (1, 0, or /); r- is the base ring of the coefficients (e.g., Z, Zq).The , ,  and ? instances all work coefficient-wise (in the specified basis)./,Nullary index type representing a CRT basis.03Nullary index type representing the decoding basis.13Nullary index type representing the powerful basis.2"Embed a scalar from the base ring.3"Embed a scalar from the base ring.4XType-restricted (and potentially more efficient) map for powerful-basis representation.5XType-restricted (and potentially more efficient) map for decoding-basis representation.6Unzip for unrestricted types.77Type-restricted (and potentially more efficient) unzip.8 Multiply by the special element g.9Divide by the special element g.:!Yield the scaled squared norm of  g_m cdot e* under the canonical embedding, namely, ,hat{m}^{ -1 } cdot || sigma(g_m cdot e) ||^2 .;6Sample from the "tweaked" Gaussian error distribution t*D in the decoding basis, where D has scaled variance v. (Note: This implementation uses Double precision to generate the Gaussian sample, which may not be sufficient for rigorous proof-based security.)<Generate an LWE error term from the "tweaked" Gaussian with given scaled variance, deterministically rounded using the decoding basis.=MGenerate an LWE error term from the "tweaked" Gaussian with scaled variance v * p^23, deterministically rounded to the given coset of R_p using the decoding basis.>5Embed into an extension ring, for the powerful basis.?5Embed into an extension ring, for the decoding basis.@CEmbed into an extension ring, for a CRT basis. (The output is an = because in some cases it is most efficient to preserve the .M internal invariant by producing output with respect to the powerful basis.)A-Twace into a subring, for the powerful basis.B-Twace into a subring, for the decoding basis.C;Twace into a subring, for a CRT basis. (The output is an = because in some cases it is most efficient to preserve the .M internal invariant by producing output with respect to the powerful basis.)D Yield the O_m-coefficients of an O_m'1-element, with respect to the relative powerful O_m-basis.E Yield the O_m-coefficients of an O_m'1 element, with respect to the relative decoding O_m-basis.FThe relative powerful basis of  O_m' / O_m.GThe relative mod-r CRT set of  O_m' / O_mm, represented with respect to the powerful basis (which seems to be the best choice for typical use cases).H)Convert to powerful-basis representation.I)Convert to decoding-basis representation.J&Convert to a CRT-basis representation.G,-./0123456789:;<=>?@ABCDEFGHIJ      !"#$%&'(),-./0123456789:;<=>?@ABCDEFGHIJ.10/-,HIJ45672389:;<=>?@ABCDEFGC,-./0123456789:;<=>?@ABCDEFGHIJ      !"#$%&'()$None%N*Using polar form of Box-Muller transform, returns a pair of centered, Gaussian-distributed real numbers with scaled variance svar = true variance * (2*pi). See < Thttp://www.alpheratz.net/murison/Maple/GaussianDistribution/GaussianDistribution.pdf this link> for details.+ Generate n0 real, independent gaussians of scaled variance svar = true variance * (2*pi).,|Execute an action repeatedly until its result fails to satisfy a predicate, and return that result (discarding all others).- Analogue of (%&)0 Yields the result of applying f until p holds.*+,-*+*+,- None&'(3457>FLN K&Error correction relative to a gadget.L4Error-correct a "noisy" encoding of an element (see R7), returning the encoded element and the error vector.M#Decomposition relative to a gadget.NThe ring that u decomposes over.OYield a short vector x such that  <g, x> = u.PGadget) vectors, parameterized by an index type.QThe gadget vector over u.RYield an error-tolerant encoding of an element with respect to the gadget. (Mathematically, this should just be the product of the input with the gadget, but it is a class method to allow for optimized implementations.)S#Dummy type representing the gadget  [1,b,b^2,...].T#Dummy type representing the gadget [1]. KLMNOPQRST./0 KLMNOPQRST PQRMNOKLTSKLMNOPQRST./0 None%&'(*3457>?CLNU The ring Z_q of integers modulo q!, using underlying integer type z.1Yield a  principal mth root of unity  omega_m in Z_q^*. The implementation requires q3 to be prime. It works by finding a generator of Z_q^* and raising it to the (q-1)/m4 power. Therefore, outputs for different values of m are consistent, i.e., omega_{m'}^(m'/m) = omega_m@.2 The base-b gadget for modulus q$, over integers (not mod anything).3TYield the error vector for a noisy multiple of the gadget (all over the integers). (4U567891:23modulus qbase b input vector v = s cdot g^t + eerror e;<=>?@ABCDEFGHIJKLMNOPQRSTUVWUU%4U5891:23;<=>6?7@ABCDEFGHIJKLMNOPQRSTUVW'None &'3457>LNXDClass to safely match Haskell types with the appropriate C function.HXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~YZ[\]^_`abcdep6X YZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~(None!"%&(3457>?CIKLN*a DSL for tensor transforms on Repa arrays| identity sentinel&| (function) composition of transforms3Indexed newtype for 1-dimensional Unbox repa arraysAn  filled with the argument.Monadic version of .ZFor a factored index, tensors up any function defined for (and tagged by) any prime powerYFor a prime power p^e, tensors up any function f defined for (and tagged by) a prime to I_(p^{e-1}) otimes f-Returns the (linear) dimension of a transform#smart constructor from a Tensorablecompose transforms!tensor/Kronecker product (otimes)ACreates an evaluatable Haskell function from a tensored transformMonadic version of ~maps the innermost dimension to a 2-dim array with innermost dim d, for performing a I_l otimes f_d otimes I_r transformationinverse of expose6general matrix multiplication along innermost dim of v7multiplication by a diagonal matrix along innermost dimeEmbeds a scalar into a powerful-basis representation of a Repa array, tagged by the cyclotomic index+Forces a delayed array to a manifest array.5Sum the inner-most dimension of an array sequentially.Sum all array indices to a scalar sequentially"                           ! " # $ % & ' ( ) * + , - . / 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)None%&4N WGiven v=r^2P, yields the decoding-basis coefficients of a sample from the tweaked Gaussian  t_m cdot D_r. XThe E_m! transformation for an arbitrary m. YThe E_p transformation for a prime p. ZGiven coefficient tensor e( with respect to the decoding basis of R%, yield the (scaled) squared norm of  g_m cdot e+ under the canonical embedding, namely, /hat{m}^{ -1 } cdot || sigma(g_m -- cdot e) ||^2 . [ Multiply by hat{m}- times the Gram matrix of decoding basis of R^vee. \GMultiply by (scaled) Gram matrix of decoding basis: (I_{p-1} + all-1s). W X Y Z [ \ W Z W X Y Z [ \*None !"%&47IN ]Arbitrary-index LQ transform, which converts from decoding-basis to powerful-basis representation. ^Arbitrary-index L^{ -1 }Q transform, which converts from powerful-basis to decoding-basis representation. _"Arbitrary-index multiplication by g_m in the powerful basis. `"Arbitrary-index multiplication by g_m in the decoding basis. aArbitrary-index division by g_m! in the powerful basis. Outputs * if the input is not evenly divisible by g_m. Warning: not constant time! bArbitrary-index division by g_m! in the decoding basis. Outputs ) if the input is no evenly divisible by g_m. Warning: not constant time! chThis is not a constant-time algorithm! Depending on its usage, it might provide a timing side-channel. ] ^ _ ` a b d c e f g h i j k ] ^ _ ` a b ] ^ _ ` a b d c e f g h i j k+None!"&4N l4Embeds a scalar into the CRT basis (when it exists). m Multiply by g_m# in the CRT basis (when it exists). n Divide by g# in the CRT basis (when it exists). oThe representation of g# in the CRT basis (when it exists). pThe representation of g^{ -1 }# in the CRT basis (when it exists). qXThe chinese remainder transform. Exists if and only if crt exists for all prime powers. r`The inverse chinese remainder transform. Exists if and only if crt exists for all prime powers. l m n o p q r s t u v w x y z { | } l m n o p q r l m n o p q r s t u v w x y z { | },None %&'(4>KLN ~The multiplicative order of p (the argument) modulo m . Requires  gcd(p,m)=1. Given p', returns a partition of the cosets of Z_{m'}^* / <p>y (specified by representatives), where the cosets in each component are in bijective correspondence with the cosets of  Z_m^* / <p> under the natural (mod m) homomorphism. ~  ~  ~ -None %&'(4>KLN O(n)5 Yield the vector obtained by replacing each element i of the index vector by xs i. This is equivalent to  (xs ) is# but is often much more efficient. 3backpermute <a,b,c,d> <0,3,2,3,1,0> = <a,d,c,d,b,a> Embeds an vector in the powerful basis of the the mth cyclotomic ring to an vector in the powerful basis of the m'th cyclotomic ring when m | m' Embeds an vector in the decoding basis of the the mth cyclotomic ring to an vector in the decoding basis of the m'th cyclotomic ring when m | m' Embeds an vector in the CRT basis of the the mth cyclotomic ring to an vector in the CRT basis of the m'th cyclotomic ring when m | m' maps a vector in the powerful/decoding basis, representing an O_m' element, to a vector of arrays representing O_m elements in the same type of basis The "tweaked trace" function in either the powerful or decoding basis of the m'th cyclotomic ring to the mth cyclotomic ring when m | m'. wThe powerful extension basis, wrt the powerful basis. Outputs a list of vectors in O_m' that are an O_m basis for O_m' KA list of vectors representing the mod-p CRT set of the extension O_m'/O_m is index vector (of length n)xs value vector   None!"%&'()*3457>?CFIKLNVAn implementation of  backed by C code.  Newtype wrapper around a Vector. Useful coersion for defining coeffs in the Tensor interface. Using  * alone is insufficient for type inference. Useful coersion for defining  powBasisPow and  crtSetDec in the Tensor interface. Using  * alone is insufficient for type inference.2 V VV. V  .None&'(3457>KLN The "tweaked trace" function in either the powerful or decoding basis of the m'th cyclotomic ring to the mth cyclotomic ring when m | m'. mThe "tweaked trace" function in the CRT basis of the m'th cyclotomic ring to the mth cyclotomic ring when m | m'. Embeds an array in the powerful basis of the the mth cyclotomic ring to an array in the powerful basis of the m'th cyclotomic ring when m | m' Embeds an array in the decoding basis of the the mth cyclotomic ring to an array in the decoding basis of the m'th cyclotomic ring when m | m' Embeds an array in the CRT basis of the the mth cyclotomic ring to an array in the CRT basis of the m'th cyclotomic ring when m | m' maps an array in the powerful/decoding basis, representing an O_m' element, to an array of arrays representing O_m elements in the same type of basis vThe powerful extension basis, wrt the powerful basis. Outputs a list of arrays in O_m' that are an O_m basis for O_m' JA list of arrays representing the mod-p CRT set of the extension O_m'/O_m    None!"%&'(*3457>?KLNWAn implementation of  backed by repa.W WWW None!"&'(3457>IKLN X1Constraints needed for many operations involving Y data.Y%Represents a cyclotomic ring such as Z[zeta], Zq[zeta], and Q(zeta) in an explicit representation: t is the ' type for storing coefficient tensors; m is the cyclotomic index; r. is the base ring of the coefficients (e.g., Z, Zq).ZWrap a . as a Y.[Wrap a . as a Y.\Wrap a . as a Y.]:Embed a scalar from the base ring as a cyclotomic element.^ Unwrap a Y as a ." in powerful-basis representation._ Unwrap a Y as a ." in decoding-basis representation.` Unwrap a Y as a . in CRT-basis representation.aSame as c,, but for the powerful-basis representation.bSame as c,, but for the powerful-basis representation.c!Yield an equivalent element that mayS be in a CRT representation. This can serve as an optimization hint. E.g., call c; prior to multiplying the same value by many other values.d Multiply by the special element g of the mth cyclotomic.e Divide by g , returning  if not evenly divisible. WARNING: this implementation is not a constant-time algorithm, so information about the argument may be leaked through a timing channel.f6Sample from the "tweaked" Gaussian error distribution t*D in the decoding basis, where D has scaled variance v. (Note: This implementation uses Double precision to generate the Gaussian sample, which may not be sufficient for rigorous proof-based security.)g!Yield the scaled squared norm of  g_m cdot e* under the canonical embedding, namely, ,hat{m}^{ -1 } cdot || sigma(g_m cdot e) ||^2 .huGenerate an LWE error term with given scaled variance, deterministically rounded with respect to the decoding basis.i6Generate an LWE error term with given scaled variance * p^2V over the given coset, deterministically rounded with respect to the decoding basis.j&Embed (lazily) into an extension ring. Force to a non- % constructor (for internal use only).k&The "tweaked trace" (twace) function 'Tw(x) = (mhat / m'hat) * Tr(g' / g * x), which fixes R pointwise (i.e., twace . embed == id).lReturn the given element's coefficient vector with respect to the (relative) powerful/decoding basis of the cyclotomic extension  O_m' / O_m.mThe relative powerful basis of  O_m' / O_m.nThe relative mod-r CRT set of the extension.oLift using the specified basis.pLift using the powerful basis.qLift using the decoding basis.rUnzip for unrestricted types.s7Type-restricted (and potentially more efficient) unzip. ?Force to powerful-basis representation (for internal use only). ?Force to decoding-basis representation (for internal use only). 4Force to CRT representation (for internal use only).7XY Z[\]^_`abcdefghij klmnopqrs ",XYZ[\]^_`abcdefghijklmnopqrs"YX,Z[\]^_`rsdegopqabcfhijklmn2XY Z[\]^_`abcdefghij klmnopqrs None&(*47>?CKLNtQA convenient constraint synonym for extending a linear function to larger rings.uAn E-linear function from R to S.v Construct an E8-linear function given a list of its output values (in S$) on the relative decoding basis of R/EM. The number of elements in the list must not exceed the size of the basis.w1Evaluates the given linear function on the input.x Extend an E-linear function R->S to an E'-linear function R'->S'2. (Mathematically, such extension only requires lcm(r,e') | r' (not equality), but this generality would significantly complicate the implementation, and for our purposes there's no reason to use any larger r'.) tu vwx tuvwxutvwx tu vwx /None       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~,KLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrs 0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !9"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%& ' ( ) * + , - . / 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 1 I e f g h i j k l m n < = O o p N q r s t u v w x y z { | } ~    ijlkmnstgTbbbbbbbbbbbbbbbb00000000000000000000000000000000000000000000000000 0  0  0 0 000000000000000 0!0"0#0$0%0&0'(0')0'*0'+0,0-0.0/00102030405060708090:0;0<0=0>0?0@0A0B0C0D0E0F0G0H0I0J0K0L0M0N0O0P0Q0R0S0T0U0V0W0XY0Z0[0\0&0]0^0_0`0a0b0c0defghijklmnopqrstuvwxyz{|}~?>pQRd8b      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~000X00000     ! !"#$ % & ' ( ) * + , - . / 0 1 2 3 4 5 6#7#89:;0<0=   > ? @ 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((((((((((((((((((((((((((((((((((                                A             !  "  # > ?  $  %  & B   '  (  )  *  +  , - . - / - 0 - 1 - 2 - 3 - 4 5 6 7 8 7 9 7 : ; < ; = ; > ; ? ; @ ; A ; ; B ; C D E D F D G D H  I  J  K c L M L N L O L P Q R Q S Q T U V U W X Y X Y X Z X Z X [ X \ X ] X ^ X _ ` a ` b ` c ` d ` e ` f ` f ` g ` g ` h ` i ` j ` k ` l ` m n o n p n q n r n s n t u# u v u w u x u y u z u { u | } ~ }" }  }  }  }  }  }  }  }  }           $            ) ) ) ) ) ) * * * * * * * * * * * * * * * + + + + + + + + + + + + + + + + + + , , , -  - - - - - - -                                               . . . . . . . . . . . . .U.V.W.X.Y.Z.                                      ! " # $ % & ' ( ) * + , -7fXysETTcEJD2XYZkt5FrzCrypto.Lol.LatticePreludeCrypto.Lol.PosBinCrypto.Lol.FactoredCrypto.Lol.Types.RandomCrypto.Lol.Reflects Crypto.Lol.Cyclotomic.RescaleCycCrypto.Lol.CRTransCrypto.Lol.Types.FiniteFieldCrypto.Lol.Cyclotomic.TensorCrypto.Lol.Types.ZPPCrypto.Lol.Cyclotomic.UCycCrypto.Lol.GadgetCrypto.Lol.Types.ZqBasic$Crypto.Lol.Cyclotomic.Tensor.CTensor'Crypto.Lol.Cyclotomic.Tensor.RepaTensorCrypto.Lol.Cyclotomic.CycCrypto.Lol.Cyclotomic.LinearCrypto.Lol.Types.NumericNumericPreludeNumericAlgebra ToRationalAlgebra.IntegralDomaindivModCrypto.Lol.Types.ComplexCrypto.Lol.PosBinDefsCrypto.Lol.FactoredDefsCrypto.Lol.Types.IZipVectorControl.ApplicativeZipListCrypto.Lol.TypesIrreducibleChar2CryptoLol!Crypto.Lol.Types.IrreducibleChar2Crypto.Lol.GaussRandomPreludeuntil,Crypto.Lol.Cyclotomic.Tensor.CTensor.Backend0Crypto.Lol.Cyclotomic.Tensor.RepaTensor.RTCommon+Crypto.Lol.Cyclotomic.Tensor.RepaTensor.Dec*Crypto.Lol.Cyclotomic.Tensor.RepaTensor.GL+Crypto.Lol.Cyclotomic.Tensor.RepaTensor.CRTCrypto.Lol.Types.ZmStar.Crypto.Lol.Cyclotomic.Tensor.CTensor.Extension1Crypto.Lol.Cyclotomic.Tensor.RepaTensor.Extension Crypto.LolbaseGHC.IntInt64subPosaddPosPosOSBinB1D0D1unFunPPprimePP exponentPPPrime PrimePowerFactoredfMulfPPMul fOddRadicalfDivfDividesfLCMfGCDppToFpToPPpToFpFreeIzlpQP0JWan1ENG8LIQ6lMData.Constraint\\LZgdm1kToIL9YGun9g90aJData.SingletonsSing CryptoRand PolynomialPID RealIntegralAbsolute ToIntegerOrdFloatRealTranscendentalTranscendental Algebraic RealFieldRealRingFieldIntegralDomainModuleRingAdditive ZeroTestablemaxminabs realToField^modinvdecomp roundMultroundScalarCentered divModCentComplex roundComplexcisrealimagfromRealSPosAddPosSubPos AddPosSym0 AddPosSym1 SubPosSym0 SubPosSym1SSym0SSym1OSym0sSubPossAddPosposToIntBinCPosCSBinD1Sym0D1Sym1D0Sym0D0Sym1B1Sym0binToIntposTypebinTypeposDecbinDecintDecprimesprimeP16P15P14P13P12P11P10P9P8P7P6P5P4P3P2P1B128B127B126B125B124B123B122B121B120B119B118B117B116B115B114B113B112B111B110B109B108B107B106B105B104B103B102B101B100B99B98B97B96B95B94B93B92B91B90B89B88B87B86B85B84B83B82B81B80B79B78B77B76B75B74B73B72B71B70B69B68B67B66B65B64B63B62B61B60B59B58B57B56B55B54B53B52B51B50B49B48B47B46B45B44B43B42B41B40B39B38B37B36B35B34B33B32B31B30B29B28B27B26B25B24B23B22B21B20B19B18B17B16B15B14B13B12B11B10B9B8B7B6B5B4B3B2 SFactored SPrimePowerSPrime ExponentPPPrimePPUnPPUnFsUnFsUnPPFPPMulFMulPToFPToPPPpToFFGCDFLCMFDividesFDiv FOddRadicalsPpToFsPToPPsPToFPPCoprimeDividesFactPPowPrim*/PFree transDivides gcdDivides lcmDivides lcm2DividespSplitTheorems pFreeDividesppsFact valueFact totientFact valueHatFact radicalFactoddRadicalFactppPPow primePPow exponentPPow valuePPow totientPPow valuePrimevalueHatppToPPvaluePP totientPP radicalPP oddRadicalPPvaluePPs totientPPs radicalPPs oddRadicalPPspTypeppTypefTypepDecppDecfDecF512F511F510F509F508F507F506F505F504F503F502F501F500F499F498F497F496F495F494F493F492F491F490F489F488F487F486F485F484F483F482F481F480F479F478F477F476F475F474F473F472F471F470F469F468F467F466F465F464F463F462F461F460F459F458F457F456F455F454F453F452F451F450F449F448F447F446F445F444F443F442F441F440F439F438F437F436F435F434F433F432F431F430F429F428F427F426F425F424F423F422F421F420F419F418F417F416F415F414F413F412F411F410F409F408F407F406F405F404F403F402F401F400F399F398F397F396F395F394F393F392F391F390F389F388F387F386F385F384F383F382F381F380F379F378F377F376F375F374F373F372F371F370F369F368F367F366F365F364F363F362F361F360F359F358F357F356F355F354F353F352F351F350F349F348F347F346F345F344F343F342F341F340F339F338F337F336F335F334F333F332F331F330F329F328F327F326F325F324F323F322F321F320F319F318F317F316F315F314F313F312F311F310F309F308F307F306F305F304F303F302F301F300F299F298F297F296F295F294F293F292F291F290F289F288F287F286F285F284F283F282F281F280F279F278F277F276F275F274F273F272F271F270F269F268F267F266F265F264F263F262F261F260F259F258F257F256F255F254F253F252F251F250F249F248F247F246F245F244F243F242F241F240F239F238F237F236F235F234F233F232F231F230F229F228F227F226F225F224F223F222F221F220F219F218F217F216F215F214F213F212F211F210F209F208F207F206F205F204F203F202F201F200F199F198F197F196F195F194F193F192F191F190F189F188F187F186F185F184F183F182F181F180F179F178F177F176F175F174F173F172F171F170F169F168F167F166F165F164F163F162F161F160F159F158F157F156F155F154F153F152F151F150F149F148F147F146F145F144F143F142F141F140F139F138F137F136F135F134F133F132F131F130F129F128F127F126F125F124F123F122F121F120F119F118F117F116F115F114F113F112F111F110F109F108F107F106F105F104F103F102F101F100F99F98F97F96F95F94F93F92F91F90F89F88F87F86F85F84F83F82F81F80F79F78F77F76F75F74F73F72F71F70F69F68F67F66F65F64F63F62F61F60F59F58F57F56F55F54F53F52F51F50F49F48F47F46F45F44F43F42F41F40F39F38F37F36F35F34F33F32F31F30F29F28F27F26F25F24F23F22F21F20F19F18F17F16F15F14F13F12F11F10F9F8F7F6F5F4F3F2F1F2048F1024PP128PP64PP32PP16PP8PP4PP2PP81PP27PP9PP3PP11PP7PP5Prime659Prime653Prime647Prime643Prime641Prime631Prime619Prime617Prime613Prime607Prime601Prime599Prime593Prime587Prime577Prime571Prime569Prime563Prime557Prime547Prime541Prime523Prime521Prime509Prime503Prime499Prime491Prime487Prime479Prime467Prime463Prime461Prime457Prime449Prime443Prime439Prime433Prime431Prime421Prime419Prime409Prime401Prime397Prime389Prime383Prime379Prime373Prime367Prime359Prime353Prime349Prime347Prime337Prime331Prime317Prime313Prime311Prime307Prime293Prime283Prime281Prime277Prime271Prime269Prime263Prime257Prime251Prime241Prime239Prime233Prime229Prime227Prime223Prime211Prime199Prime197Prime193Prime191Prime181Prime179Prime173Prime167Prime163Prime157Prime151Prime149Prime139Prime137Prime131Prime127Prime113Prime109Prime107Prime103Prime101Prime97Prime89Prime83Prime79Prime73Prime71Prime67Prime61Prime59Prime53Prime47Prime43Prime41Prime37Prime31Prime29Prime23Prime19Prime17Prime13Prime11Prime7Prime5Prime3Prime2Reflectsvalue RescaleCyc rescaleCycBasisPowDec rescalePow rescaleDecEncodelsdToMSDRescalerescaleLift'liftLiftOfLiftReducereduceModModRepmodulus EnumerablevaluesCharOfmsdToLSD rescaleMod roundCoset fromJust'pureTpeelTpasteT withWitness withWitnessTCRTEmbedCRTExttoExtfromExtCRTranscrtInfoCRTInfo crtInfoFact crtInfoPPow crtInfoPrimegEmbPPow gEmbPrimeXIrreduciblePolyirreduciblePoly TensorCoeffsCoeffsunCoeffsGFCtx PrimeFieldGFtoListfromListsizetrace^^MatrixTensorTElt entailIndexT entailEqT entailZTT entailNFDataT entailRandomT entailShowT entailModuleT scalarPowllInvmulGPowmulGDecdivGPowdivGDeccrtFuncs tGaussianDec gSqNormDec twacePowDecembedPowembedDec crtExtFuncscoeffs powBasisPow crtSetDecfmapTfmapTMzipWithT unzipTEltunzipTCRTElt hasCRTFuncs scalarCRTmulGCRTdivGCRTcrtcrtInvtwaceCRTembedCRTindexMtwCRTsdigitRevzmsToIndexFact indexInfoextIndicesPowDec extIndicesCRTbaseIndicesPowbaseIndicesDecbaseIndicesCRTextIndicesCoeffsZPPZpOf modulusZPPliftZpNFEltUCEltUCycCDPfmapPowfmapDecunzipCyc unzipUCEltmulGdivGgSqNorm tGaussian errorRounded errorCosettwacePowtwaceDec coeffsPow coeffsDecpowBasiscrtSettoPowtoDectoCRTCorrectcorrect DecomposeDecompOf decomposeGadgetgadgetencodeBaseBGadTrivGadZqBasicCTRTCEltCyccycPowcycDeccycCRT scalarCycuncycPowuncycDecuncycCRT advisePow adviseDec adviseCRTembedtwace coeffsCycliftCycliftPowliftDec unzipCElt ExtendLinIdxLinear linearDecevalLin extendLinintLogintBytes bytesToInt$fRandomGenCryptoRandKVWGmXI5BRW2yBDwdARC5FMathObj.PolynomialTAlgebra.PrincipalIdealDomainAlgebra.RealIntegralAlgebra.AbsoluteAlgebra.ToIntegerAlgebra.RealTranscendentalAlgebra.TranscendentalAlgebra.AlgebraicAlgebra.RealFieldAlgebra.RealRing Algebra.FieldAlgebra.ToRationalAlgebra.Module Algebra.RingAlgebra.AdditiveAlgebra.ZeroTestable integer-gmpGHC.Integer.TypeInteger $fCDouble $fNFDataTGHC.Base++GHC.Errerrorghc-primGHC.PrimseqGHC.Listfilterzip System.IOprint Data.Tuplefstsnd otherwisemap$ undefinedGHC.EnumenumFrom enumFromThen enumFromToenumFromThenTo GHC.Classes==>=fail>>=>>fmapreturnGHC.Real realToFracBoundedEnumEqMonadFunctorOrdGHC.ReadReadGHC.ShowShow GHC.TypesBoolCharDoubleFloatIntOrderingIO Data.EitherEitherStringFalseTrueLeftRightLTEQGTJustNothingminBound takeWhilemaxBoundData.TraversablesequencemapMreadIOreadLn appendFile writeFilereadFileinteract getContentsgetLinegetCharputStrLnputStrputCharGHC.IO.ExceptionioErrorGHC.IOFilePath userErrorIOError Text.Readreadreads Data.FoldablenotElemallanyorand concatMapconcat sequence_mapM_minimummaximumelemlengthnullfoldl1foldr1foldlfoldreither Data.OldListunwordswordsunlineslineslex readParenreadList readsPrecText.ParserCombinators.ReadPReadSfromEnumtoEnumpredsucc showParen showStringshowCharshowsShowSshowListshow showsPrecunzip3unzipzipWith3zipWithzip3!!lookupreversebreakspansplitAtdroptake dropWhilecycle replicaterepeatiteratescanr1scanrscanl1scanlinitlasttailhead Data.MaybemaybeuncurrycurryasTypeOf$!flip.constid=<<Maybe<$/=compare<=&&||not<>atan2approxRationalroundtruncatefloorceilingfraction splitFraction*>^?atanhacoshasinhtanhcoshsinhatanacosasintancossin**logBaselogexppi^/sqrt fieldPower ringPower fromIntegral toIntegerquotRemremquot toRational fromRational^- fromRational'recip Number.Ratio% denominator numeratorRationalsignumextendedEuclideuclidlcmgcd extendedGCD Algebra.Units stdUnitInvstdUnit stdAssociateisUnitoddevendividesmoddivproduct1productsqr fromIntegeroneisZerosum1sumsubtractnegate-+zeroNumericPrelude.BasecatchFmRMS3RTa3iA2aVFq2IbmcData.Bool.HT.Private ifThenElse V_Complex MV_Complex $fEltComplex$fRandomComplex$fNFDataComplex $fCComplex3TFCo:R:VectorComplexSingIEquals_1627523214Compare_1627523448Equals_1627529853Case_1627529904Case_1627529917Compare_1627529922Compare_1627523448Sym0#Compare_1627523448Sym0KindInferenceCompare_1627523448Sym1#Compare_1627523448Sym1KindInferenceCompare_1627523448Sym2AddPosSym0KindInferenceAddPosSym1KindInference AddPosSym2SubPosSym0KindInferenceSubPosSym1KindInference SubPosSym2SSym0KindInferenceSOSSTFCo:R:DemoteRepPosKProxyCompare_1627529922Sym0#Compare_1627529922Sym0KindInferenceCompare_1627529922Sym1#Compare_1627529922Sym1KindInferenceCompare_1627529922Sym2!Let1627529909Scrutinee_1627529849%Let1627529909Scrutinee_1627529849Sym02Let1627529909Scrutinee_1627529849Sym0KindInference%Let1627529909Scrutinee_1627529849Sym12Let1627529909Scrutinee_1627529849Sym1KindInference%Let1627529909Scrutinee_1627529849Sym2!Let1627529896Scrutinee_1627529851%Let1627529896Scrutinee_1627529851Sym02Let1627529896Scrutinee_1627529851Sym0KindInference%Let1627529896Scrutinee_1627529851Sym12Let1627529896Scrutinee_1627529851Sym1KindInference%Let1627529896Scrutinee_1627529851Sym2D1Sym0KindInferenceD0Sym0KindInferenceSB1SD0SD1TFCo:R:DemoteRepBinKProxy factorize' factorizeunPFEquals_1627571442Equals_1627571453Equals_1627571464Compare_1627571517ppMulppsMulCase_1627576736 ppsOddRadppsDiv ppsDividesppsLCMppsGCDCase_1627585210Case_1627585330Case_1627585366Case_1627585402Case_1627585499Case_1627585695Case_1627585823Case_1627616116Compare_1627571517Sym0#Compare_1627571517Sym0KindInferenceCompare_1627571517Sym1#Compare_1627571517Sym1KindInferenceCompare_1627571517Sym2UnPUnPSym0UnPSym0KindInferenceUnPSym1ExponentPPSym0ExponentPPSym0KindInferenceExponentPPSym1 PrimePPSym0PrimePPSym0KindInference PrimePPSym1UnPPSym0UnPPSym0KindInferenceUnPPSym1UnFSym0UnFSym0KindInferenceUnFSym1FSym0FSym0KindInferenceFSym1PPSym0PPSym0KindInferencePPSym1PSym0PSym0KindInferencePSym1SFSPPSPsPrimePP sExponentPPsUnPTFCo:R:DemoteRepFactoredKProxyPpsMulPpMul FPPMulSym0FPPMulSym0KindInference FPPMulSym1FPPMulSym1KindInference FPPMulSym2FMulSym0FMulSym0KindInferenceFMulSym1FMulSym1KindInferenceFMulSym2 PpsMulSym0PpsMulSym0KindInference PpsMulSym1PpsMulSym1KindInference PpsMulSym2 PpMulSym0PpMulSym0KindInference PpMulSym1PpMulSym1KindInference PpMulSym2!Let1627576710Scrutinee_1627576617%Let1627576710Scrutinee_1627576617Sym02Let1627576710Scrutinee_1627576617Sym0KindInference%Let1627576710Scrutinee_1627576617Sym12Let1627576710Scrutinee_1627576617Sym1KindInference%Let1627576710Scrutinee_1627576617Sym22Let1627576710Scrutinee_1627576617Sym2KindInference%Let1627576710Scrutinee_1627576617Sym32Let1627576710Scrutinee_1627576617Sym3KindInference%Let1627576710Scrutinee_1627576617Sym42Let1627576710Scrutinee_1627576617Sym4KindInference%Let1627576710Scrutinee_1627576617Sym5Let1627576634PpLet1627576634PpsLet1627576634Pp'Let1627576634PpSym0 Let1627576634PpSym0KindInferenceLet1627576634PpSym1 Let1627576634PpSym1KindInferenceLet1627576634PpSym2 Let1627576634PpSym2KindInferenceLet1627576634PpSym3 Let1627576634PpSym3KindInferenceLet1627576634PpSym4 Let1627576634PpSym4KindInferenceLet1627576634PpSym5Let1627576634PpsSym0!Let1627576634PpsSym0KindInferenceLet1627576634PpsSym1!Let1627576634PpsSym1KindInferenceLet1627576634PpsSym2!Let1627576634PpsSym2KindInferenceLet1627576634PpsSym3!Let1627576634PpsSym3KindInferenceLet1627576634PpsSym4!Let1627576634PpsSym4KindInferenceLet1627576634PpsSym5Let1627576634Pp'Sym0!Let1627576634Pp'Sym0KindInferenceLet1627576634Pp'Sym1!Let1627576634Pp'Sym1KindInferenceLet1627576634Pp'Sym2!Let1627576634Pp'Sym2KindInferenceLet1627576634Pp'Sym3!Let1627576634Pp'Sym3KindInferenceLet1627576634Pp'Sym4!Let1627576634Pp'Sym4KindInferenceLet1627576634Pp'Sym5sPpMulsPpsMulsFMulsFPPMul&TFCo:R:Apply(->)PrimePowerFPPMulSym0l0PpsGCDPpsLCM PpsDividesPpsDiv PpsOddRadPToFSym0PToFSym0KindInferencePToFSym1 PToPPSym0PToPPSym0KindInference PToPPSym1 PpToFSym0PpToFSym0KindInference PpToFSym1FGCDSym0FGCDSym0KindInferenceFGCDSym1FGCDSym1KindInferenceFGCDSym2FLCMSym0FLCMSym0KindInferenceFLCMSym1FLCMSym1KindInferenceFLCMSym2 FDividesSym0FDividesSym0KindInference FDividesSym1FDividesSym1KindInference FDividesSym2FDivSym0FDivSym0KindInferenceFDivSym1FDivSym1KindInferenceFDivSym2FOddRadicalSym0FOddRadicalSym0KindInferenceFOddRadicalSym1 PpsGCDSym0PpsGCDSym0KindInference PpsGCDSym1PpsGCDSym1KindInference PpsGCDSym2 PpsLCMSym0PpsLCMSym0KindInference PpsLCMSym1PpsLCMSym1KindInference PpsLCMSym2PpsDividesSym0PpsDividesSym0KindInferencePpsDividesSym1PpsDividesSym1KindInferencePpsDividesSym2 PpsDivSym0PpsDivSym0KindInference PpsDivSym1PpsDivSym1KindInference PpsDivSym2 PpsOddRadSym0PpsOddRadSym0KindInference PpsOddRadSym1!Let1627585789Scrutinee_1627585170%Let1627585789Scrutinee_1627585170Sym02Let1627585789Scrutinee_1627585170Sym0KindInference%Let1627585789Scrutinee_1627585170Sym12Let1627585789Scrutinee_1627585170Sym1KindInference%Let1627585789Scrutinee_1627585170Sym22Let1627585789Scrutinee_1627585170Sym2KindInference%Let1627585789Scrutinee_1627585170Sym32Let1627585789Scrutinee_1627585170Sym3KindInference%Let1627585789Scrutinee_1627585170Sym42Let1627585789Scrutinee_1627585170Sym4KindInference%Let1627585789Scrutinee_1627585170Sym52Let1627585789Scrutinee_1627585170Sym5KindInference%Let1627585789Scrutinee_1627585170Sym6Let1627585722YsLet1627585722XsLet1627585722YsSym0 Let1627585722YsSym0KindInferenceLet1627585722YsSym1 Let1627585722YsSym1KindInferenceLet1627585722YsSym2 Let1627585722YsSym2KindInferenceLet1627585722YsSym3 Let1627585722YsSym3KindInferenceLet1627585722YsSym4 Let1627585722YsSym4KindInferenceLet1627585722YsSym5 Let1627585722YsSym5KindInferenceLet1627585722YsSym6Let1627585722XsSym0 Let1627585722XsSym0KindInferenceLet1627585722XsSym1 Let1627585722XsSym1KindInferenceLet1627585722XsSym2 Let1627585722XsSym2KindInferenceLet1627585722XsSym3 Let1627585722XsSym3KindInferenceLet1627585722XsSym4 Let1627585722XsSym4KindInferenceLet1627585722XsSym5 Let1627585722XsSym5KindInferenceLet1627585722XsSym6!Let1627585661Scrutinee_1627585172%Let1627585661Scrutinee_1627585172Sym02Let1627585661Scrutinee_1627585172Sym0KindInference%Let1627585661Scrutinee_1627585172Sym12Let1627585661Scrutinee_1627585172Sym1KindInference%Let1627585661Scrutinee_1627585172Sym22Let1627585661Scrutinee_1627585172Sym2KindInference%Let1627585661Scrutinee_1627585172Sym32Let1627585661Scrutinee_1627585172Sym3KindInference%Let1627585661Scrutinee_1627585172Sym42Let1627585661Scrutinee_1627585172Sym4KindInference%Let1627585661Scrutinee_1627585172Sym52Let1627585661Scrutinee_1627585172Sym5KindInference%Let1627585661Scrutinee_1627585172Sym6Let1627585528Pp'Let1627585528YsLet1627585528PpLet1627585528XsLet1627585528Pp'Sym0!Let1627585528Pp'Sym0KindInferenceLet1627585528Pp'Sym1!Let1627585528Pp'Sym1KindInferenceLet1627585528Pp'Sym2!Let1627585528Pp'Sym2KindInferenceLet1627585528Pp'Sym3!Let1627585528Pp'Sym3KindInferenceLet1627585528Pp'Sym4!Let1627585528Pp'Sym4KindInferenceLet1627585528Pp'Sym5!Let1627585528Pp'Sym5KindInferenceLet1627585528Pp'Sym6Let1627585528YsSym0 Let1627585528YsSym0KindInferenceLet1627585528YsSym1 Let1627585528YsSym1KindInferenceLet1627585528YsSym2 Let1627585528YsSym2KindInferenceLet1627585528YsSym3 Let1627585528YsSym3KindInferenceLet1627585528YsSym4 Let1627585528YsSym4KindInferenceLet1627585528YsSym5 Let1627585528YsSym5KindInferenceLet1627585528YsSym6Let1627585528PpSym0 Let1627585528PpSym0KindInferenceLet1627585528PpSym1 Let1627585528PpSym1KindInferenceLet1627585528PpSym2 Let1627585528PpSym2KindInferenceLet1627585528PpSym3 Let1627585528PpSym3KindInferenceLet1627585528PpSym4 Let1627585528PpSym4KindInferenceLet1627585528PpSym5 Let1627585528PpSym5KindInferenceLet1627585528PpSym6Let1627585528XsSym0 Let1627585528XsSym0KindInferenceLet1627585528XsSym1 Let1627585528XsSym1KindInferenceLet1627585528XsSym2 Let1627585528XsSym2KindInferenceLet1627585528XsSym3 Let1627585528XsSym3KindInferenceLet1627585528XsSym4 Let1627585528XsSym4KindInferenceLet1627585528XsSym5 Let1627585528XsSym5KindInferenceLet1627585528XsSym6Let1627585514XsLet1627585514XsSym0 Let1627585514XsSym0KindInferenceLet1627585514XsSym1 Let1627585514XsSym1KindInferenceLet1627585514XsSym2!Let1627585465Scrutinee_1627585178%Let1627585465Scrutinee_1627585178Sym02Let1627585465Scrutinee_1627585178Sym0KindInference%Let1627585465Scrutinee_1627585178Sym12Let1627585465Scrutinee_1627585178Sym1KindInference%Let1627585465Scrutinee_1627585178Sym22Let1627585465Scrutinee_1627585178Sym2KindInference%Let1627585465Scrutinee_1627585178Sym32Let1627585465Scrutinee_1627585178Sym3KindInference%Let1627585465Scrutinee_1627585178Sym42Let1627585465Scrutinee_1627585178Sym4KindInference%Let1627585465Scrutinee_1627585178Sym52Let1627585465Scrutinee_1627585178Sym5KindInference%Let1627585465Scrutinee_1627585178Sym6Let1627585431XsLet1627585431XsSym0 Let1627585431XsSym0KindInferenceLet1627585431XsSym1 Let1627585431XsSym1KindInferenceLet1627585431XsSym2 Let1627585431XsSym2KindInferenceLet1627585431XsSym3 Let1627585431XsSym3KindInferenceLet1627585431XsSym4 Let1627585431XsSym4KindInferenceLet1627585431XsSym5 Let1627585431XsSym5KindInferenceLet1627585431XsSym6!Let1627585368Scrutinee_1627585184%Let1627585368Scrutinee_1627585184Sym02Let1627585368Scrutinee_1627585184Sym0KindInference%Let1627585368Scrutinee_1627585184Sym12Let1627585368Scrutinee_1627585184Sym1KindInference%Let1627585368Scrutinee_1627585184Sym22Let1627585368Scrutinee_1627585184Sym2KindInference%Let1627585368Scrutinee_1627585184Sym32Let1627585368Scrutinee_1627585184Sym3KindInference%Let1627585368Scrutinee_1627585184Sym42Let1627585368Scrutinee_1627585184Sym4KindInference%Let1627585368Scrutinee_1627585184Sym52Let1627585368Scrutinee_1627585184Sym5KindInference%Let1627585368Scrutinee_1627585184Sym6!Let1627585332Scrutinee_1627585182%Let1627585332Scrutinee_1627585182Sym02Let1627585332Scrutinee_1627585182Sym0KindInference%Let1627585332Scrutinee_1627585182Sym12Let1627585332Scrutinee_1627585182Sym1KindInference%Let1627585332Scrutinee_1627585182Sym22Let1627585332Scrutinee_1627585182Sym2KindInference%Let1627585332Scrutinee_1627585182Sym32Let1627585332Scrutinee_1627585182Sym3KindInference%Let1627585332Scrutinee_1627585182Sym42Let1627585332Scrutinee_1627585182Sym4KindInference%Let1627585332Scrutinee_1627585182Sym52Let1627585332Scrutinee_1627585182Sym5KindInference%Let1627585332Scrutinee_1627585182Sym6!Let1627585296Scrutinee_1627585180%Let1627585296Scrutinee_1627585180Sym02Let1627585296Scrutinee_1627585180Sym0KindInference%Let1627585296Scrutinee_1627585180Sym12Let1627585296Scrutinee_1627585180Sym1KindInference%Let1627585296Scrutinee_1627585180Sym22Let1627585296Scrutinee_1627585180Sym2KindInference%Let1627585296Scrutinee_1627585180Sym32Let1627585296Scrutinee_1627585180Sym3KindInference%Let1627585296Scrutinee_1627585180Sym42Let1627585296Scrutinee_1627585180Sym4KindInference%Let1627585296Scrutinee_1627585180Sym52Let1627585296Scrutinee_1627585180Sym5KindInference%Let1627585296Scrutinee_1627585180Sym6Let1627585229YsLet1627585229PpLet1627585229YsSym0 Let1627585229YsSym0KindInferenceLet1627585229YsSym1 Let1627585229YsSym1KindInferenceLet1627585229YsSym2 Let1627585229YsSym2KindInferenceLet1627585229YsSym3 Let1627585229YsSym3KindInferenceLet1627585229YsSym4 Let1627585229YsSym4KindInferenceLet1627585229YsSym5 Let1627585229YsSym5KindInferenceLet1627585229YsSym6Let1627585229PpSym0 Let1627585229PpSym0KindInferenceLet1627585229PpSym1 Let1627585229PpSym1KindInferenceLet1627585229PpSym2 Let1627585229PpSym2KindInferenceLet1627585229PpSym3 Let1627585229PpSym3KindInferenceLet1627585229PpSym4 Let1627585229PpSym4KindInferenceLet1627585229PpSym5 Let1627585229PpSym5KindInferenceLet1627585229PpSym6!Let1627585197Scrutinee_1627585186%Let1627585197Scrutinee_1627585186Sym02Let1627585197Scrutinee_1627585186Sym0KindInference%Let1627585197Scrutinee_1627585186Sym12Let1627585197Scrutinee_1627585186Sym1KindInference%Let1627585197Scrutinee_1627585186Sym22Let1627585197Scrutinee_1627585186Sym2KindInference%Let1627585197Scrutinee_1627585186Sym3 sPpsOddRadsPpsDiv sPpsDividessPpsLCMsPpsGCD sFOddRadicalsFDiv sFDividessFLCMsFGCD#TFCo:R:ApplyFactoredPrimePToFSym0l0 PFreeSym0PFreeSym0KindInference PFreeSym1PFreeSym1KindInference PFreeSym2Let1627616047GoLet1627616047GoSym0 Let1627616047GoSym0KindInferenceLet1627616047GoSym1 Let1627616047GoSym1KindInferenceLet1627616047GoSym2 Let1627616047GoSym2KindInferenceLet1627616047GoSym3!Let1627616090Scrutinee_1627616032%Let1627616090Scrutinee_1627616032Sym02Let1627616090Scrutinee_1627616032Sym0KindInference%Let1627616090Scrutinee_1627616032Sym12Let1627616090Scrutinee_1627616032Sym1KindInference%Let1627616090Scrutinee_1627616032Sym22Let1627616090Scrutinee_1627616032Sym2KindInference%Let1627616090Scrutinee_1627616032Sym32Let1627616090Scrutinee_1627616032Sym3KindInference%Let1627616090Scrutinee_1627616032Sym42Let1627616090Scrutinee_1627616032Sym4KindInference%Let1627616090Scrutinee_1627616032Sym5Let1627616064PpLet1627616064PpSym0 Let1627616064PpSym0KindInferenceLet1627616064PpSym1 Let1627616064PpSym1KindInferenceLet1627616064PpSym2 Let1627616064PpSym2KindInferenceLet1627616064PpSym3 Let1627616064PpSym3KindInferenceLet1627616064PpSym4 Let1627616064PpSym4KindInferenceLet1627616064PpSym5sPFree coerceFDivs coerceGCD TFCo:R:Apply(->)PrimePFreeSym0l0$fReflects*reia$fReflectsFactoredmi$fReflectsPrimePowerppi$fReflectsPrimepi$fReflectsNatai IZipVectorL9gd3eHjwn82NRtvEp9glS Data.VectorVector Applicativepure unIZipVector iZipVectorunzipIZVrepl $fCVector$fApplicativeIZipVectorfromJust $fNFDataProxyV_MaybeMV_Maybe $fRandom(,) $fEncodes(,) $fRescaleb(,) $fRescalea(,) $fRescale(,)a $fRescale(,)c$fRescale(,)a0 $fRescale(,)b $fReducea(,)$fMod(,)$fC(,)$fC(,)0$fC(,)1 $fLift'(,)TFCo:R:LiftOf(,) $fDefaultBoolTFCo:R:VectorMaybe Data.Proxy asProxyTypeOfProxyKProxyBcsZLWM18gPDoFBjP6n4HbData.Functor.Trans.TaggedwitnessTtagTWith untagTSelftagTSelfunproxyTproxyTasTaggedTypeOf reflectedM reflected mapTaggedTretagtagTwitnesstagWith untagSelftagSelfunproxyproxyuntagtagTaggeduntagTTagTTaggedT omegaPowC$fCRTEmbedInteger$fCRTEmbedInt64 $fCRTEmbedInt$fCRTEmbedDouble$fCRTransInteger$fCRTransInt64 $fCRTransInt$fCRTransDouble$fCRTEmbedComplex$fCRTransComplex $fCRTEmbed(,) $fCRTrans(,) powTraceschunksOfsizePP isPrimitivedotptrace'$fCGFTensorCoeffs $fCRTransGF$fCGF$fCGF0$fEnumerableGF twCRTsPPow indexToPow indexToZms zmsToIndex zmsToIndexPP toIndexPair baseIndexDec fromIndexPairMNilMKronMatrixCMCfMatrixindexToPowPPowindexToZmsPPow baseWrappermergePPstotients taggedProxy$fIrreduciblePolyadeeps_6vMKxt5sPFR0XsbRWvvq59Control.DeepSeqdeepseqFoldable TraversableCRTrCRTe $fNFDataUCyc$fArbitraryUCyc$fArbitraryUCyc0$fArbitraryUCyc1 $fShowUCyc$fRandomEither$fTraversableUCyc$fTraversableUCyc0$fFoldableUCyc$fFoldableUCyc0$fApplicativeUCyc$fApplicativeUCyc0 $fFunctorUCyc$fFunctorUCyc0$fRescaleUCycUCyc$fRescaleUCycUCyc0 $fLift'UCyc $fLift'UCyc0TFCo:R:LiftOfUCycTFCo:R:LiftOfUCyc0$fReduceUCycUCyc$fReduceUCycUCyc0 $fCGFUCyc$fCrUCyc $fCrUCyc0 $fCrUCyc1$fCUCyc$fCUCyc0$fCUCyc1$fCUCyc2$fCUCyc3$fCUCyc4$fCUCyc5$fEqUCyc $fEqUCyc0 $fEqUCyc1 realGaussian realGaussians iterateWhile iterateUntilM$fCorrectkgad(,)$fDecomposekgad(,)$fGadgetkgad(,)principalRootUnitygadgetZcorrectZ ReflectsTIZqB V_ZqBasic MV_ZqBasicreduce'decode'gadlen$fVectorVectorZqBasic$fMVectorMVectorZqBasic$fUnboxZqBasicTFCo:R:VectorZqBasicTFCo:R:MVectorsZqBasic$fArbitraryZqBasic$fRandomZqBasic$fCorrect*BaseBGadZqBasic$fDecompose*BaseBGadZqBasic$fGadget*BaseBGadZqBasic$fCorrect*TrivGadZqBasic$fDecompose*TrivGadZqBasic$fGadget*TrivGadZqBasic $fCZqBasic $fCZqBasic0 $fCZqBasic1 $fCZqBasic2$fCRTEmbedZqBasic$fCRTransZqBasic$fEncodeZqBasicZqBasic$fRescaleZqBasicZqBasic$fLift'ZqBasicTFCo:R:LiftOfZqBasic$fReduceIntegerZqBasic$fReducezZqBasic $fZPPZqBasicTFCo:R:CharOfkZqBasic $fModZqBasic$fEnumerableZqBasic Dispatch'dcrtdcrtinv dgaussdecdldlinvdnormdmulgpowdmulgdecdginvpowdginvdecdadddmulDispatchTuple numComponentsZqTupleModPairs getModuliCTypeOfInt64DDoubleDComplexDZqB64DCPPp'e'addDaddCaddRaddRqmulCmulRqtensorGaussianDec tensorCRTInvCtensorCRTInvRq tensorCRTC tensorCRTRqtensorGInvDecRqtensorGInvDecRtensorGInvPowCtensorGInvPowRqtensorGInvPowR tensorGDecRq tensorGDecR tensorGPowC tensorGPowRq tensorGPowR tensorNormSqR tensorLInvCtensorLCtensorLInvDouble tensorLDouble tensorLInvRq tensorLRq tensorLInvRtensorLRmarshalFactors withPtrArraystore$fDispatch'Int64Dr$fDispatch'DoubleDr$fDispatch'ComplexDr$fDispatch'ZqB64Dr $fTuple*(,) $fTupleka $fZqTuple*(,)$fZqTuple*ZqBasic $fStorable(,) $fShowCPP $fStorableCPPForeign.Marshal.Array withArrayTransIdTSnocArrreplMfTensorppTensordimtrans.*@*evalevalMexposeunexposemulMatmulDiag scalarPow'forcesumSsumAllSTransC TensorabledimCevalC$fArbitraryArr $fRandomArr $fNFDataArray$fCArr$fCArr0$fCArr1FhM6xMmDQye5PUaGdhV0i3Data.Array.Repa.Repr.VectorAVectorData.Array.Repa.Repr.CursoredcursoredExtent ACursored loadCursor shiftCursor makeCursorData.Array.Repa.Repr.Undefined AUndefinedData.Array.Repa.Repr.UnboxedAUnboxed Data.Array.Repa.Repr.PartitionedAPart#Data.Array.Repa.Repr.HintInterleave AInterleaveData.Array.Repa.Repr.ForeignPtr AForeignPtrData.Array.Repa.Repr.ByteString AByteStringData.Array.Repa.Repr.DelayedADelayedData.Array.Repa.Repr.HintSmallASmall#Data.Array.Repa.Operators.ReductionequalsSequalsPfoldAllPfoldAllSfoldPfoldS!Data.Array.Repa.Operators.MappingszipWithsmapTR Structured#Data.Array.Repa.Operators.SelectionselectPunzip6unzip5unzip4zip6zip5zip4 toUnboxed fromUnboxedfromListUnboxedcomputeUnboxedPcomputeUnboxedSUData.Array.Repa.EvalnowsuspendedCopyPcopyScopyPsuspendedComputePcomputeScomputeP Data.Array.Repa.Eval.InterleavedfillInterleavedP$Data.Array.Repa.Operators.Interleave interleave4 interleave3 interleave2$Data.Array.Repa.Operators.IndexSpacesliceextendbackpermuteDft backpermuteextract transposeappendreshape#Data.Array.Repa.Operators.Traversal traverse4 traverse3 traverse2traversedelay toFunction fromFunctionData.Array.Repa.Eval.ChunkedfillChunkedIOP fillChunkedP fillBlock2S fillLinearSData.Array.Repa.Eval.CursoredfillCursoredBlock2SfillCursoredBlock2P fillBlock2PData.Array.Repa.Eval.SelectionselectChunkedPselectChunkedSData.Array.Repa.SliceAllAny FullShape SliceShape fullOfSlice sliceOfFullSliceData.Array.Repa.Indexix5ix4ix3ix2ix1Z:.DIM0DIM1DIM2DIM3DIM4DIM5Data.Array.Repa.Eval.LoadloadPloadSLoad loadRangeP loadRangeS LoadRangeData.Array.Repa.Eval.Target touchMVec deepSeqMVecunsafeFreezeMVecunsafeWriteMVecnewMVecMVecTargetData.Array.Repa.Base deepSeqArrays! deepSeqArrayunsafeLinearIndex linearIndex unsafeIndexindexextentArraySourceData.Array.Repa.Shape showShapeinShapedeepSeq shapeOfList listOfShape inShapeRange fromIndextoIndex sizeIsValidaddDim intersectDimunitDimzeroDimrankShapeData.Array.Repa.Eval.ElttouchEltData.Vector.Unboxed.BaseUnbox tGaussianDec'fEpE gSqNormDec' fGramDec'pGramDecfLfLInvfGPowfGDecfGInvPowfGInvDecdivCheck wrapGInv'pWrappLpLInvpGPowpGDec pGInvPow' pGInvDec' scalarCRT'mulGCRT'divGCRT'gCRTgInvCRTfCRTfCRTInvppDFT ppDFTInv'ppCRT ppCRTInv' butterflypDFTpDFTInv'pCRTpCRTInv'ppTwid ppTwidHatorderpartitionCosetscosets backpermute'Data.Vector.Generic embedPow' embedDec' embedCRT'coeffs' twacePowDec' powBasisPow' crtSetDec'CT' coerceCoeffscoerce coerceBasisEmTwZVunCTtoCTtoZVzvToCT'wrapwrapMcoerceTwcoerceEmmulGPow'divGPow' withBasicArgs basicDispatchctCRTctCRTInvcheckDiv divIfDivis cZipDispatchcDispatchGaussianruruInv gCoeffsCRT gInvCoeffsCRT twaceCRT' $fNFDataCT $fRandomCT $fRandomCT' $fArbitraryCT$fArbitraryCT' $fTensorCT$fTraversableCT $fFoldableCT$fApplicativeCT $fFunctorCT$fCGFCT$fCCT$fCCT0$fEqCT $fDefault:. $fDefaultZV_DIM1MV_DIM1TFCo:R:Vector:.zvToArrtoRT $fNFDataRT $fArbitraryRT $fRandomRT$fCGFRT$fCRT$fCRT0$fTraversableRT $fFoldableRT$fApplicativeRT $fFunctorRT $fTensorRT$fEqRTembed'SubtoPow'toDec'toCRT'CRTScalartoZLfromZL $fShowCyc$fArbitraryCyc $fRandomCyc $fNFDataCyc$fCorrectkgadCyc$fDecomposekgadCyc$fGadgetkgadCyc$fRescaleCycCyc(,)b$fRescaleCycCycabTFCo:R:LiftOfCyc$fReduceCycCyc$fCGFCyc$fCCyc$fCCyc0$fEqCyc$fCCyc1RD $fLift'LinearTFCo:R:LiftOfLinear$fReduceLinearLinear $fCLinear