Changeset aa7c1c2 in git


Ignore:
Timestamp:
Jun 14, 2018, 1:08:24 PM (6 years ago)
Author:
Karim Abou Zeid <karim23697@…>
Branches:
(u'spielwiese', '5b153614cbc72bfa198d75b1e9e33dab2645d9fe')
Children:
8c73fdea988c87d699605750b3180fa69edf5d10
Parents:
a718906498691a0860e186cfee5db4fc1142ccd6db48f3ea705fcb451c2ea640a2b72f643bae2f22
Message:
Merge branch 'spielwiese' into letterplace_kernel_multiplication
Files:
8 added
32 edited

Legend:

Unmodified
Added
Removed
  • Singular/LIB/freegb.lib

    rdb48f3e raa7c1c2  
    1 /////////////////////////////////////////////////////////////////////////////
    21/////////////////////////////////////////////////////////////////////////////
    32version="version freegb.lib 4.1.1.0 Dec_2017 "; // $Id$
     
    9291    ERROR("uptodeg and lV do not agree on the basering!");
    9392  }
    94   // a kind of dirty hack
    95   list L = ringlist(R);
    96   attrib(L,"maxExp",1);
    97   def @R = ring(L);
    98     // Set letterplace-specific attributes for the output ring!
     93
     94  // Set letterplace-specific attributes for the output ring!
     95  // a kind of dirty hack, getting the ringlist again
     96  list RL = ringlist(R);
     97  attrib(RL, "isLetterplaceRing", lV);
     98  attrib(RL, "maxExp", 1);
     99  def @R = ring(RL);
     100
    99101  attrib(@R, "uptodeg", uptodeg);
    100102  attrib(@R, "isLetterplaceRing", lV);
  • Singular/LIB/grobcov.lib

    ra718906 raa7c1c2  
    66category="General purpose";
    77info="
    8 LIBRARY:  grobcov.lib  February 2018.
    9           Groebner Cover for parametric ideals.
    10           Comprehensive Groebner Systems, Groebner Cover,
    11           Canonical Forms,  Parametric Polynomial Systems,
    12           Automatic Deduction of Geometric Theorems,
    13           Dynamic Geometry, Loci, Envelope, Constructible sets.
    14           See: A. Montes A, M. Wibmer,
    15           \"Groebner Bases for Polynomial Systems with parameters\",
    16           Journal of Symbolic Computation 45 (2010) 1391-1425.
    17           (https://www.mat.upc.edu//en/people/antonio.montes/).
     8LIBRARY:  grobcov.lib  February 2018.  Groebner Cover for parametric ideals.
    189
    1910IMPORTANT: The book,  not yet published:
    2011           A. Montes. \" The Groebner Cover\":
    2112           (Discussing Parametric Polynomial Systems).
    22            can be used as a user manual of all
    23            the  routines included in this library.
    24            It defines and proves all the theoretic results used
    25            here,  and shows examples of all the routines.
     13           can be used as a user manual of all the  routines included in this library.
     14           It defines and proves all the theoretic results used here,  and shows examples of all the routines.
    2615           It will be published soon.
    27            There are many previous papers realted to the subject,
    28            but the book actualices all the contents.
     16           There are many previous papers realted to the subject, but the book actualices all the contents.
     17           (https://www.mat.upc.edu/en/people/antonio.montes/).
    2918
    3019AUTHORS:  Antonio Montes (Universitat Politecnica de Catalunya),
    3120          Hans Schoenemann (Technische Universitaet Kaiserslautern).
    3221
    33 OVERVIEW: In 2010, the library was designed to contain
    34           Montes-Wibmer's
    35           algorithms for computing the Canonical Groebner
    36           Cover of a  parametric ideal. The central  routine is
    37           grobcov. Given  a  parametric ideal, grobcov outputs
    38           its Canonical  Groebner Cover, consisting of a set
    39           of triplets of (lpp, basis,  segment). The basis
    40           (after normalization) is the reduced  Groebner basis
    41           for each point of the segment. The segments
    42           are disjoint, locally closed and  correspond to
    43           constant lpp (leading power product) of the basis,
    44           and are represented in canonical representation.
     22PURPOSE: The routine grobcov computes a Groebner cover of a parametric ideal.
     23        This is a disjoint covering of the parameter space by locally closed sets (set theoretical the difference of two
     24        varieties given by two ideals), on which the Groebner basis of the input ideal is constant (and hence all invariants
     25        which can be computed from the Groebner basis or its leading ideal). Moreover it computes for each locally
     26        closed subset the corresponding Groebner basis and the leading ideal.
     27        This is the fundamental routine of the library.
     28
     29OVERVIEW: In 2010, the library was designed to contain Montes-Wibmer's algorithms
     30          for computing the Canonical Groebner Cover of a  parametric ideal.s
     31          The central  routine is grobcov. Given  a  parametric ideal,
     32          grobcov outputs its Canonical  Groebner Cover, consisting of a set
     33          of triplets of (lpp, basis,  segment).
     34          The basis (after normalization) is the reduced  Groebner basis
     35          for each point of the segment. The segments are disjoint,
     36          locally closed and  correspond to constant lpp (leading power product)
     37          of the basis, and are represented in canonical representation.
    4538          The segments cover the  whole parameter space.
    46           The output is canonical, it only depends on the
    47           given parametric ideal and the monomial order.
    48           This is much more than a simple Comprehensive
    49           Groebner System.  The algorithm grobcov allows
    50           options to solve  partially the problem when the
    51           whole automatic algorithm  does not finish in
    52           reasonable time.
    53 
    54           grobcov uses a first algorithm cgsdr that outputs a
    55           disjoint  reduced Comprehensive Groebner System
    56           with constant lpp. For this purpose, in this library,
    57           the implemented algorithm is Kapur-Sun-Wang
    58           algorithm, because it is actually the most efficient
     39          The output is canonical, it only depends on the given parametric ideal
     40          and the monomial order.  This is much more than a simple Comprehensive
     41          Groebner System.  The algorithm grobcov allows options to solve
     42          partially the problem when the whole automatic algorithm does not
     43          finish in reasonable time.
     44
     45          grobcov uses a first algorithm cgsdr that outputs a disjoint reduced
     46          Comprehensive Groebner System with constant lpp.
     47          For this purpose, in this library, the implemented algorithm is
     48          Kapur-Sun-Wang algorithm, because it is actually the most efficient
    5949          algorithm known for this purpose.
    60           D. Kapur, Y. Sun, and D.K. Wang \"A New Algorithm
    61           for  Computing Comprehensive Groebner Systems\".
     50          D. Kapur, Y. Sun, and D.K. Wang \"A New Algorithm for  Computing Comprehensive Groebner Systems\".
    6251          Proceedings of ISSAC'2010, ACM Press, (2010), 29-36.
    6352
    64           The library has evolved to include new applications of
    65           the  Groebner Cover, and new theoretical developments
    66           have been done. The actual version also includes a
    67           routine (ConsLevels) for computing the canonical form
    68           of a constructible set, given as a union of locally
    69           closed sets. It determines the canonical locally closed
    70           level sets of a constructible set. It is described in:
    71           J.M. Brunat, A. Montes, \"Computing the canonical
    72           representation of constructible sets\".
     53          The library has evolved to include new applications of the  Groebner Cover,
     54          and new theoretical developments have been done. The actual version
     55          also includes a routine (ConsLevels) for computing the canonical form
     56          of a constructible set, given as a union of locally closed sets.
     57          It determines the canonical locally closed level sets of a constructible set.
     58          It is described in:
     59          J.M. Brunat, A. Montes, \"Computing the canonical representation of constructible sets\".
    7360          Math.  Comput. Sci. (2016) 19: 165-178.
    7461
    75           A new routine locus has been included to compute
    76           loci of points, and determining the taxonomy of the
    77           components. It is  described in the book
    78           A. Montes. \"The Groebner Cover\" (Discussing
    79           Parametric Polynomial Systems).
    80           Additional routines to transform the output to string
    81           (locusdg,  locusto) are also included and used in the
    82           Dynamic Geometry software  GeoGebra. They were
    83           described in:
    84           M.A. Abanades, F. Botana, A. Montes, T. Recio:
    85           \''An Algebraic Taxonomy  for Locus Computation in
    86           Dynamic Geometry\''.
     62          A new routine locus has been included to compute loci of points,
     63          and determining the taxonomy of the components. It is  described in the book
     64          A. Montes. \"The Groebner Cover\" (Discussing Parametric Polynomial Systems).
     65          Additional routines to transform the output to string (locusdg,  locusto)
     66          are also included and used in the Dynamic Geometry software GeoGebra.
     67          They were described in:
     68          M.A. Abanades, F. Botana, A. Montes, T. Recio: \"An Algebraic Taxonomy  for Locus Computation in Dynamic Geometry\".
    8769          Computer-Aided Design 56 (2014) 22-33.
    8870
    89           Recently also routines for computing the generalized
    90           envelope  of a family of hyper-surfaces (envelop),
    91           to be used in Dynamic Geometry, has been included
    92           and is described in the book
    93           A. Montes. \"The Groebner Cover\" (Discussing
    94           Parametric Polynomial Systems).
    95 
    96           The last inclusion is an automatic algorithm for
    97           Automatic Deduction of Geometric Theorems,
     71          Recently also routines for computing the generalized envelope  of a family of hyper-surfaces (envelop),
     72          to be used in Dynamic Geometry, has been included and is described in the book
     73          A. Montes. \"The Groebner Cover\" (Discussing Parametric Polynomial Systems).
     74
     75          The last inclusion is an automatic algorithm for Automatic Deduction of Geometric Theorems,
    9876          described in the book \"Groebner Cover\".
    9977
    10078          This version was finished on 10/02/2018
    10179
    102 NOTATIONS: Before calling any routine of the library grobcov,
    103           the user  must define the ideal Q[a][x], and all the
    104           input polynomials and  ideals defined on it.
    105           Internally the routines define and use also other
    106           ideals: Q[a], Q[x,a] and so on.
     80NOTATIONS: Before calling any routine of the library grobcov, the user  must define the ideal Q[a][x],
     81          and all the input polynomials and  ideals defined on it.
     82          Internally the routines define and use also other ideals: Q[a], Q[x,a] and so on.
    10783
    10884PROCEDURES:
     
    25052481proc grobcov(ideal F,list #)
    25062482"USAGE: grobcov(ideal F[,options]);
    2507        F: ideal in Q[a][x] (a=parameters, x=variables) to be
    2508        discussed.This is the fundamental routine of the
    2509        library. It computes the Groebner Cover of a parametric
    2510        ideal F in Q[a][x]. See
    2511        A. Montes , M. Wibmer, \"Groebner Bases for Polynomial
    2512        Systems with parameters\".
     2483       F: ideal in a ring with parameters and variables (the names can be arbitrary)
     2484RETURN:  list, say G, where all the data of the Groebner cover of F are stored.
     2485        G is a list of lists G[1],G[2],...,G[s] (G[i] is called below: (lpp_i, basis_i, segment_i, [lpph_i])
     2486        - each list G[i], consists of 2 ideals: G[i][1] and G[i][2] in the variables
     2487           and a list G[i][3] of 2 ideals G[i][3][1] and G[i][3][2] in the parameters
     2488           [and a fourth list,G[i][4] of 2 ideals in the parameters if option (\"rep\",2) is set]
     2489        Meaning of the ideals G[i][1] and G[i][2]:
     2490        - G[i][1] (= lpp_i) is the leading power product ideal of the input ideal F under the conditions in G[i][3]
     2491
     2492        - G[i][2] (= basis_i) is the Groebner basis of the input ideal F under the conditions in G[i][3]
     2493        Meaning of the list G[i][3] (and  similar for G[i][4]):
     2494
     2495         - G[i][3] (= segment_i) describes the locally closed set which has G[i][1] as (reduced) Groebner basis@*
     2496           G[i][3][1] is the ideal of the closed conditions@*
     2497           G[i][3][2] is the ideal of the open conditions@*
     2498           i.e. in the set V(G[i][3][1]) \ G[i][3][2] the input ideal has  leading ideal G[i][1] and Groebner basis G[i][2]
     2499NOTE: grobcov is only tested for ideals in rings with global ordering over QQ
     2500OPTIONS: An option is a pair of arguments: string, integer.
     2501       To modify the default options, pairs of arguments
     2502       -option name, value- of valid options must be added to the call.
     2503EXPLANATION: In the list G[1]=[[lpp_1,basis_1,segment_1], ..., G[s]=[lpp_s,basis_s,segment_s]]
     2504(optionally [[ lpp_1,basis_1,segment_1,lpph_1], ..., [lpp_s,basis_s,segment_s,lpph_s]])
     2505The lpp (leading power products) are constant over a segment and are the set of lpp of the reduced
     2506Groebner basis for each point of the segment.
     2507
     2508         option (\"showhom\",1): the lpph will be shown: The lpph are the lpp of the homogenized ideal and are
     2509        different for each segment. It is given as a string, and shown only for information.
     2510        With the default option \"can\",1, the segments have different lpph.
     2511
     2512        basis: to each element of lpp corresponds an I-regular function given in full representation (by option (\"ext\",1))
     2513        or in generic representation (default option (\"ext\",0)). The I-regular function is the corresponding
     2514        element of the reduced Groebner basis for each point of the segment with the given lpp.
     2515        For each point in the segment, the polynomial or the set of polynomials representing it
     2516        (if they do not specialize to 0) specializes to the corresponding element of the reduced Groebner basis
     2517        after normalization.
     2518        In the full representation at least one of the polynomials representing the I-regular function specializes
     2519        to non-zero.
     2520
     2521        option (\"rep\",0): With the default option (\"rep\",0) the representation of the segment is the P-representation.
     2522        The P-representation of a segment is of the form [[p_1,[p_11,..,p_1k1]],..,[p_r,[p_r1,..,p_rkr]]] representing
     2523        the segment Union_i ( V(p_i) \ ( Union_j V(p_ij) ) ), where the p's are prime ideals.
     2524
     2525        option (\"rep\",1): With option (\"rep\",1) the representation of the segment is the C-representation.
     2526        The C-representation of a segment is of the form (E,N) representing V(E) \ V(N), and the ideals E and N
     2527        are radical and N contains E.
     2528
     2529        option (\"rep\",2): With option (\"rep\",2) both representations of the segment are given.
     2530
     2531        With the default option the homogenized ideal is computed before obtaining the Groebner Cover,
     2532        so that the result is the canonical Groebner Cover. Setting (\"can\",0) only homogenizes the basis so
     2533        the result is not exactly canonical, but the computation is shorter.
     2534
     2535        \"ext\",0-1: The default is (\"ext\",0).
     2536        With the default (\"ext\",0), only the generic representation of the bases is computed (single polynomials,
     2537        but not specializing to non-zero for every point of the segment.
     2538        With option (\"ext\",1) the full representation of the bases is computed (possible sheaves) and sometimes a
     2539        simpler result is obtained, but the computation is more time consuming.
     2540
     2541        \"rep\",0-1-2: The default is (\"rep\",0)
     2542        and then the segments are given in canonical P-representation;
     2543        option (\"rep\",1) represents the segments in canonical C-representation, and
     2544        option (\"rep\",2) gives both representations.
     2545
     2546        \"comment\",0-3: The default is (\"comment\",0).
     2547        Setting \"comment\" higher will provide information about the development of the computation.
     2548
     2549        \"showhom\",0-1: The default is (\"showhom\",0).
     2550        Setting \"showhom\",1 will output the set of lpp of the homogenized ideal of each segment as last element.
     2551
     2552        One can give none or whatever of these options.
     2553THEORY: A. Montes , M. Wibmer, \"Groebner Bases for Polynomial Systems with parameters\".
    25132554       JSC 45 (2010) 1391-1425.)
    25142555       or the not yet published book
    2515        A. Montes. \" The Groebner Cover\" (Discussing
    2516        Parametric Polynomial Systems).
    2517        The Groebner Cover of a parametric ideal F consist
    2518        of a set of pairs(S_i,B_i), where the S_i are disjoint
    2519        locally closed segments of the parameter space,
    2520        and the B_i are the reducedGroebner bases of the
    2521        ideal on every point of S_i. The ideal F must be
    2522        defined on a parametric ring Q[a][x] (a=parameters,
    2523        x=variables).
    2524 RETURN: The list  [[lpp_1,basis_1,segment_1],  ...,
    2525        [lpp_s,basis_s,segment_s]]
    2526        optionally  [[ lpp_1,basis_1,segment_1,lpph_1],  ...,
    2527        [lpp_s,basis_s,segment_s,lpph_s]]
    2528        The lpp are constant over a segment and
    2529        correspond to the set of lpp of the reduced
    2530        Groebner basis for each point of the segment.
    2531        With option (\"showhom\",1) the lpph will be
    2532        shown: The lpph corresponds to the lpp of the
    2533        homogenized ideal and is different for each
    2534        segment. It is given as a string, and shown
    2535        only for information. With the default option
    2536        \"can\",1, the segments have different lpph.
    2537        Basis: to each element of lpp corresponds
    2538        an I-regular function given in full
    2539        representation (by option (\"ext\",1)) or
    2540        in generic representation (default option (\"ext\",0)).
    2541        The I-regular function is the corresponding
    2542        element of the reduced Groebner basis for
    2543        each point of the segment with the given lpp.
    2544        For each point in the segment, the polynomial
    2545        or the set of polynomials  representing it,
    2546        if they do not specialize to 0, then after
    2547        normalization, specializes to the corresponding
    2548        element of the reduced Groebner basis.
    2549        In the full representation at least one of the
    2550        polynomials representing the I-regular function
    2551        specializes to non-zero.
    2552        With the default option (\"rep\",0) the
    2553        representation of the segment is the
    2554        P-representation.
    2555        With option (\"rep\",1) the representation
    2556        of the segment is the C-representation.
    2557        With option (\"rep\",2) both representations
    2558        of the segment are given.
    2559        The P-representation of a segment is of the form
    2560        [[p_1,[p_11,..,p_1k1]],..,[p_r,[p_r1,..,p_rkr]]]
    2561        representing the segment
    2562        Union_i ( V(p_i) \ ( Union_j V(p_ij) ) ),
    2563        where the p's are prime ideals.
    2564        The C-representation of a segment is of the form
    2565        (E,N) representing V(E) \ V(N), and the ideals E
    2566        and N are radical and N contains E.
    2567 OPTIONS: An option is a pair of arguments: string,
    2568        integer. To modify the default options, pairs
    2569        of arguments -option name, value- of valid options
    2570        must be added to the call.
    2571        \"null\",ideal E: The default is (\"null\",ideal(0)).
    2572        \"nonnull\",ideal N: The default is
    2573        (\"nonnull\",ideal(1)).
    2574        When options \"null\" and/or \"nonnull\" are given,
    2575        then the parameter space is restricted to V(E) \ V(N).
    2576        \"can\",0-1: The default is (\"can\",1).
    2577        With the default option the homogenized
    2578        ideal is computed before obtaining the Groebner
    2579        Cover, so that the result is the canonical Groebner
    2580        Cover. Setting (\"can\",0) only homogenizes the
    2581        basis so the result is not exactly canonical,
    2582        but the computation is shorter.
    2583        \"ext\",0-1: The default is (\"ext\",0).
    2584        With the default (\"ext\",0), only the generic
    2585        representation of the bases is computed
    2586        (single polynomials, but not specializing
    2587        to non-zero for every point of the segment.
    2588        With option (\"ext\",1) the full representation
    2589        of the bases is computed (possible sheaves)
    2590        and sometimes a simpler result is obtained,
    2591        but the computation is more time consuming.
    2592        \"rep\",0-1-2: The default is (\"rep\",0)
    2593        and then the segments are given in canonical
    2594        P-representation.
    2595        Option (\"rep\",1) represents the segments
    2596        in canonical C-representation, and
    2597        option (\"rep\",2) gives both representations.
    2598        \"comment\",0-3: The default is (\"comment\",0).
    2599        Setting \"comment\" higher will provide
    2600        information about the development of the
    2601        computation.
    2602        \"showhom\",0-1: The default is (\"showhom\",0).
    2603        Setting \"showhom\",1 will output the set
    2604        of lpp of the homogenized ideal of each segment
    2605        as last element. One can give none or whatever
    2606        of these options.
    2607 NOTE:    The basering R, must be of the form Q[a][x],
    2608        (a=parameters, x=variables), and
    2609        should be defined previously. The ideal
    2610        must be defined on R.
     2556       A. Montes. \" The Groebner Cover\" (Discussing Parametric Polynomial Systems).
    26112557KEYWORDS: Groebner cover; parametric ideal; canonical; discussion of parametric ideal
    26122558EXAMPLE:  grobcov; shows an example"
     
    27192665"EXAMPLE:"; echo = 2;
    27202666// Casas conjecture for degree 4:
    2721   if(defined(R)){kill R;}
    2722   ring R=(0,a0,a1,a2,a3,a4),(x1,x2,x3),dp;
     2667  ring R1=(0,a0,a1,a2,a3,a4),(x1,x2,x3),dp;
    27232668  short=0;
    27242669  ideal F=x1^4+(4*a3)*x1^3+(6*a2)*x1^2+(4*a1)*x1+(a0),
     
    27372682  //    Springer-Verlag 118: 1-29 (2000).;
    27382683  //    (18. Mathematical robotics: Problem 4, two-arm robot)."
    2739   if (defined(R)){kill R;}
    2740   ring R=(0,a,b,l2,l3),(c3,s3,c1,s1), dp;
     2684  ring R2=(0,a,b,l2,l3),(c3,s3,c1,s1), dp;
    27412685  short=0;
    27422686  ideal S12=a-l3*c3-l2*c1,b-l3*s3-l2*s1,c1^2+s1^2-1,c3^2+s3^2-1;
    27432687  S12;
    27442688  grobcov(S12);
     2689  // EXAMPLE: different segments may have different dimensions
     2690  ring R3=(0,g,h),(y,z,v,w,t),dp;
     2691  ideal I = -4*v2+zw+(h)*zt + (g)*vy, zv-4*v2+(h)*t2, -v2+vw+(-g)*vt+(-h)*t2;
     2692  list G = grobcov(I);
     2693  G;
     2694  //Compute the dimension and the degree at the segment G[1][3]: V(0) \ V(h,g) = {h!=0 and g!=0}
     2695  degree(std(G[1][1]));
     2696  //Compute the dimension and the degree at the segment G[4][3]: V(h) \ V(h,g) = {h=0 and g!=0}
     2697  degree(std(G[4][1]));
    27452698}
    27462699
  • Singular/LIB/primdec.lib

    ra718906 raa7c1c2  
    68326832  attrib(I, "isSB", 1);   // I needs to be a reduced standard basis
    68336833  list indep, fett;
    6834   intvec @w, @hilb, op;
     6834  intvec op;
    68356835  int @wr, @n, @m, lauf, di;
    68366836  ideal fac, @h, collectrad, lsau;
     
    68406840  def @P = basering;
    68416841  int jdim = dim(I);               // Computes the dimension of I
    6842   int  homo = homog(I);            // Finds out if I is homogeneous
    68436842  ideal rad = ideal(1);            // The unit ideal
    68446843  ideal te = ser;
     
    68466845  {
    68476846    @wr = #[1];
    6848   }
    6849   if(homo == 1)
    6850   {
    6851     for(@n = 1; @n <= nvars(basering); @n++)
    6852     {
    6853       @w[@n] = ord(var(@n));
    6854     }
    6855     @hilb = hilb(I, 1, @w);
    68566847  }
    68576848
     
    69116902                              + indep[@m][2] + ");");
    69126903      execute("map phi = @P," + @va + ";");
    6913       if(homo == 1)
    6914       {
    6915         ideal @j = std(phi(I), @hilb, @w);
    6916       }
    6917       else
    6918       {
    6919         ideal @j = groebner(phi(I));
    6920       }
     6904      ideal @j = groebner(phi(I));
    69216905    }
    69226906    if((deg(@j[1]) == 0) || (dim(@j) < jdim))
     
    70607044    {
    70617045      break;
    7062     }
    7063     if(homo==1)
    7064     {
    7065       @hilb = hilb(I, 1, @w);
    70667046    }
    70677047  }
  • Singular/LIB/primdecint.lib

    ra718906 raa7c1c2  
    919919{
    920920   def R = basering;
    921    execute("ring S=integer,( X(1..nvars(R)) ), ( dp(nvars(R)) );");
     921   ring S=integer,( X(1..nvars(R)) ), ( dp(nvars(R)) );
    922922   ideal I = fetch(R,I);
    923923   ideal J = fetch(R,J);
    924    execute("ring St=integer, ( t, X(1..nvars(R))  ), ( dp(1), dp(nvars(R)) );");
     924   ring St=integer, ( t, X(1..nvars(R))  ), ( dp(1), dp(nvars(R)) );
    925925   ideal I = imap(S,I);
    926926   ideal J = imap(S,J);
    927927   ideal K =  var(1)*I+(1-var(1))*J;
    928    K = stdZ(K);
     928   K = std(K);
    929929   int i;
    930930   ideal L;
  • Singular/dyn_modules/interval/interval.cc

    ra718906 raa7c1c2  
    217217
    218218    // check if second argument exists
    219     if (args->Typ() == intervalID)
    220     {
    221       RES = new interval(n1, n2);
    222     }
    223     else if (args->next == NULL)
     219    if (args->next == NULL)
    224220    {
    225221      RES = new interval(n1);
  • Singular/grammar.cc

    ra718906 raa7c1c2  
    580580#define YYFINAL  2
    581581/* YYLAST -- Last index in YYTABLE.  */
    582 #define YYLAST   2583
     582#define YYLAST   2593
    583583
    584584/* YYNTOKENS -- Number of terminals.  */
     
    706706     112,    -1,   112,     9,   112,    -1,   112,     4,   112,    -1,
    707707     112,     3,   112,    -1,   112,    97,   112,    -1,     8,   112,
    708       -1,    89,   112,    -1,   120,   127,    -1,   111,    86,    -1,
     708      -1,    89,   112,    -1,   120,   127,    -1,   111,   127,    -1,
    709709      69,    -1,   102,   112,   102,    -1,    54,   110,    -1,    55,
    710710     110,    -1,    56,   110,    -1,    57,   110,    -1,   128,   110,
     
    748748     551,   555,   559,   563,   567,   571,   575,   579,   583,   587,
    749749     591,   595,   599,   603,   607,   611,   615,   619,   623,   627,
    750      631,   637,   641,   645,   649,   653,   658,   662,   673,   679,
    751      684,   685,   689,   693,   697,   701,   705,   709,   713,   717,
    752      721,   738,   745,   744,   762,   770,   778,   787,   791,   795,
    753      799,   803,   807,   811,   815,   819,   823,   827,   831,   835,
    754      847,   854,   855,   874,   875,   887,   892,   897,   901,   905,
    755      941,   967,   988,   996,  1000,  1001,  1015,  1023,  1032,  1077,
    756     1078,  1087,  1088,  1094,  1101,  1103,  1105,  1114,  1119,  1124,
    757     1131,  1139,  1151,  1168,  1188,  1192,  1196,  1201,  1205,  1209,
    758     1213,  1217,  1222,  1228,  1234,  1240,  1246,  1252,  1258,  1270,
    759     1277,  1281,  1318,  1325,  1330,  1343,  1350,  1350,  1353,  1421,
    760     1425,  1454,  1467,  1484,  1493,  1498,  1506,  1518,  1537,  1547,
    761     1566,  1589,  1595,  1607,  1613
     750     631,   637,   641,   645,   649,   653,   658,   662,   673,   676,
     751     677,   678,   682,   686,   690,   694,   698,   702,   706,   710,
     752     714,   731,   738,   737,   755,   763,   771,   780,   784,   788,
     753     792,   796,   800,   804,   808,   812,   816,   820,   824,   828,
     754     840,   847,   848,   867,   868,   880,   885,   890,   894,   898,
     755     932,   956,   977,   985,   989,   990,  1004,  1012,  1021,  1066,
     756    1067,  1076,  1077,  1083,  1090,  1091,  1092,  1100,  1105,  1110,
     757    1117,  1125,  1137,  1154,  1174,  1178,  1182,  1187,  1191,  1195,
     758    1199,  1203,  1208,  1214,  1220,  1226,  1232,  1238,  1244,  1256,
     759    1263,  1267,  1304,  1311,  1316,  1329,  1336,  1336,  1339,  1407,
     760    1411,  1440,  1453,  1470,  1479,  1484,  1492,  1504,  1523,  1533,
     761    1552,  1575,  1581,  1593,  1599
    762762};
    763763#endif
     
    881881      85,   162,    82,    84,     0,     0,     0,     0,     0,   172,
    882882     171,   155,   127,   100,     0,     0,     0,     5,     0,     0,
    883      102,     0,     0,     0,    88,     0,    87,     0,     0,     0,
    884        0,     0,     0,     0,     0,     0,     0,     0,    29,     0,
    885      123,     0,     6,   101,     0,    70,     0,    70,   158,     0,
     883     123,     0,   102,     0,     0,    88,     0,    87,     0,     0,
     884       0,     0,     0,     0,     0,     0,     0,     0,     0,    29,
     885       0,     0,     6,   101,     0,    70,     0,    70,   158,     0,
    886886       0,     0,     0,     0,     0,    68,   168,     0,   114,     0,
    887887       0,     0,     0,     0,     0,     0,     0,    59,     0,    68,
     
    913913      -1,     1,    55,    56,    57,    58,    59,    60,   145,    62,
    914914     219,    63,    64,   246,    65,    66,    67,    68,    69,   189,
    915      370,   371,   382,   372,   173,    98,    71,    72,    73,    74,
     915     370,   371,   382,   372,   152,    98,    71,    72,    73,    74,
    916916      75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
    917917      85,    86,    87,    88
     
    920920/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    921921   STATE-NUM.  */
    922 #define YYPACT_NINF -362
     922#define YYPACT_NINF -366
    923923static const yytype_int16 yypact[] =
    924924{
    925     -362,   383,  -362,   -84,  1887,  -362,  -362,  1953,   -75,  -362,
    926     -362,   -72,   -58,   -53,   -50,   -43,   -28,   -11,     2,  2019,
    927     2085,  2151,  2217,    17,  1887,   -47,  1887,     4,  -362,  1887,
    928     -362,  -362,  -362,  -362,    42,    16,    36,  -362,  -362,    92,
    929       44,    64,    99,    77,  -362,   115,    88,  2283,   123,   123,
    930     1887,  1887,  -362,  1887,  1887,  -362,  -362,  -362,   107,  -362,
    931       -2,   -65,  1374,  1887,  1887,  -362,  1887,   192,   -52,  -362,
    932     2349,  -362,  -362,  -362,  -362,   129,  -362,  1887,  -362,  -362,
    933     1887,  -362,  -362,  -362,  -362,  -362,  -362,  -362,  -362,  -362,
    934      121,   -75,   132,   135,   137,   141,  -362,    23,   147,  1887,
    935      210,  1374,   -10,  2415,  1887,  1887,  1887,  1887,  1887,  1887,
    936     1887,  1491,  1887,   262,  1557,   265,  1887,   385,  1623,  1317,
    937      166,  -362,   169,   170,  -362,   203,  1689,  1374,    40,  1887,
    938     -362,  -362,  -362,  -362,   200,  1887,   212,  1755,  1953,  1374,
    939      186,  -362,  -362,    23,   -56,   -74,     3,  -362,  1887,  1821,
    940     -362,  1887,  1887,  1887,  -362,  1887,  -362,  1887,  1887,  1887,
    941     1887,  1887,  1887,  1887,  1887,  1887,   238,   554,   169,   219,
    942     -362,  1887,  -362,  -362,  1887,    51,  1887,    76,  1374,  1887,
    943     1887,  1557,  1887,  1623,  1887,   569,  -362,  1887,   584,   194,
    944      679,   694,   709,   181,   280,   724,   399,  -362,   -49,   739,
    945     -362,   -41,   754,  -362,   -40,  -362,  -362,    39,    41,    69,
    946       79,    93,    95,  -362,    33,    98,   224,  -362,   849,  1887,
    947      227,   864,  -362,  -362,   -36,  -362,  -362,  -362,  -362,  -362,
    948      -22,  1374,   252,   163,   163,  1403,    30,    30,    23,   414,
    949       18,  1389,    30,  -362,  1887,  -362,  -362,  1887,  -362,  1332,
    950      509,  1887,   472,  2415,   569,   739,   -19,   754,   -18,   509,
    951     -362,   879,  -362,  2415,  -362,  1887,  1887,  1887,  -362,  1887,
    952     -362,  1887,  1887,  -362,  -362,  -362,  -362,  -362,  -362,  -362,
    953     -362,  -362,  -362,  -362,  -362,  1495,  -362,  -362,  -362,  2481,
    954      894,   233,   -35,  -362,  -362,  -362,  1887,   909,   909,  1887,
    955     -362,   924,   138,  1374,   213,  -362,  -362,  1887,   214,  1019,
    956     1034,  1049,  1064,   524,   539,   216,   218,   221,   222,   223,
    957      230,   232,   116,   118,   126,   139,   144,  1079,  -362,  -362,
    958     -362,  -362,  1094,  -362,  -362,  1189,   242,  1887,  2415,   -15,
    959      -64,  -362,  1887,  -362,  1887,  1887,  -362,  1887,  -362,  -362,
    960     -362,  -362,  -362,  -362,  -362,  -362,  -362,  -362,  -362,  -362,
    961     -362,  -362,  -362,  1887,  1887,   -31,   256,  -362,  -362,   225,
    962      204,  -362,   246,  1204,  1219,  1234,  1249,  1264,  1359,  -362,
    963      -64,   258,   254,  1887,  -362,  -362,  -362,  -362,  -362,  -362,
    964     -362,  -362,   225,  -362,   -14,  -362,  -362
     925    -366,   393,  -366,   -80,  1897,  -366,  -366,  1963,   -68,  -366,
     926    -366,   -46,   -29,   -16,   -14,     2,    21,    24,    39,  2029,
     927    2095,  2161,  2227,     0,  1897,   -52,  1897,    47,  -366,  1897,
     928    -366,  -366,  -366,  -366,   -47,    50,    78,  -366,  -366,   -28,
     929      93,    95,    -9,    99,  -366,    32,   101,  2293,   137,   137,
     930    1897,  1897,  -366,  1897,  1897,  -366,  -366,  -366,   113,  -366,
     931      15,   -70,  1384,  1897,  1897,  -366,  1897,   201,   -77,  -366,
     932    2359,  -366,  -366,  -366,  -366,   126,  -366,  1897,  -366,  -366,
     933    1897,  -366,  -366,  -366,  -366,  -366,  -366,  -366,  -366,  -366,
     934     133,   -68,   135,   142,   144,   158,  -366,    54,   161,  1897,
     935     236,  1384,    -7,  2425,  1897,  1897,  1897,  1897,  1897,  1897,
     936    1897,  1501,  1897,   282,  1567,   305,  1897,   395,  1633,  1327,
     937     130,  -366,   170,   173,  -366,    67,  1699,  1384,    59,  1897,
     938    -366,  -366,  -366,  -366,   205,  1897,   215,  1765,  1963,  1384,
     939     193,  -366,  -366,    54,   -72,   -60,   149,  -366,  1897,  1831,
     940    -366,  1897,  -366,  1897,  1897,  -366,  1897,  -366,  1897,  1897,
     941    1897,  1897,  1897,  1897,  1897,  1897,  1897,   212,   564,   170,
     942     222,  1897,  -366,  -366,  1897,   224,  1897,   107,  1384,  1897,
     943    1897,  1567,  1897,  1633,  1897,   579,  -366,  1897,   594,   210,
     944     689,   704,   719,     3,   165,   734,   409,  -366,   -59,   749,
     945    -366,   -58,   764,  -366,   -45,  -366,  -366,    44,    65,    71,
     946     111,   118,   124,  -366,    22,   131,   244,  -366,   859,  1897,
     947     229,   874,  -366,  -366,   -42,  -366,  -366,  -366,  -366,  -366,
     948     -32,  1384,    18,   260,   260,  1413,    49,    49,    54,   424,
     949      66,  1399,    49,  -366,  1897,  -366,  -366,  1897,  -366,  1342,
     950     519,  1897,   186,  2425,   579,   749,   -31,   764,   -23,   519,
     951    -366,   889,  -366,  2425,  -366,  1897,  1897,  1897,  -366,  1897,
     952    -366,  1897,  1897,  -366,  -366,  -366,  -366,  -366,  -366,  -366,
     953    -366,  -366,  -366,  -366,  -366,   381,  -366,  -366,  -366,  2491,
     954     904,   250,   -37,  -366,  -366,  -366,  1897,   919,   919,  1897,
     955    -366,   934,   184,  1384,   213,  -366,  -366,  1897,   235,  1029,
     956    1044,  1059,  1074,   534,   549,   220,   232,   234,   243,   246,
     957     252,   254,   174,   226,   228,   238,   240,  1089,  -366,  -366,
     958    -366,  -366,  1104,  -366,  -366,  1199,   253,  1897,  2425,   -20,
     959     -61,  -366,  1897,  -366,  1897,  1897,  -366,  1897,  -366,  -366,
     960    -366,  -366,  -366,  -366,  -366,  -366,  -366,  -366,  -366,  -366,
     961    -366,  -366,  -366,  1897,  1897,   -10,   262,  -366,  -366,   289,
     962     261,  -366,   259,  1214,  1229,  1244,  1259,  1274,  1369,  -366,
     963     -61,   268,   264,  1897,  -366,  -366,  -366,  -366,  -366,  -366,
     964    -366,  -366,   289,  -366,   -13,  -366,  -366
    965965};
    966966
     
    968968static const yytype_int16 yypgoto[] =
    969969{
    970     -362,  -362,  -362,  -362,  -362,  -362,  -362,    -4,    -1,    48,
    971     -362,  -362,  -362,  -168,  -362,  -362,   303,   308,   209,  -249,
    972     -362,  -361,   -80,   -17,   185,     0,  -362,  -362,  -362,  -362,
    973     -362,  -362,  -362,  -362,  -362,  -362,  -362,  -362,  -362,  -362,
    974     -362,  -362,  -362,  -362
     970    -366,  -366,  -366,  -366,  -366,  -366,  -366,   207,    -1,    25,
     971    -366,  -366,  -366,   -49,  -366,  -366,   358,   319,   293,  -252,
     972    -366,  -365,   -21,    -6,   -65,     1,  -366,  -366,  -366,  -366,
     973    -366,  -366,  -366,  -366,  -366,  -366,  -366,  -366,  -366,  -366,
     974    -366,  -366,  -366,  -366
    975975};
    976976
     
    982982static const yytype_int16 yytable[] =
    983983{
    984       61,    70,   169,   100,   304,   368,   152,   153,   381,   148,
    985      154,    89,   155,   156,   308,   113,   115,   117,   119,   123,
    986      151,   150,   125,   122,   103,   154,   226,   104,   156,   151,
    987      154,   381,   330,   156,   170,   369,   225,   154,   151,   331,
    988      156,   105,   171,   172,   148,   151,   106,    70,   124,   107,
    989      144,   274,    97,   151,   151,   101,   108,   186,   151,   276,
    990      278,   379,   148,   151,   293,   168,   175,   101,   101,   101,
    991      101,   109,   151,   177,   101,   151,   151,   127,   294,   151,
    992      151,   305,   306,   120,   121,   367,   396,   148,   110,   366,
    993      157,   158,   159,   160,   161,   139,   162,   149,   143,   163,
    994      164,   111,   146,   126,   165,   227,   216,   217,   128,   161,
    995      198,   166,   167,   201,   161,   129,   162,   204,   101,   165,
    996      160,   161,   214,   162,   165,   101,   215,   285,   178,   333,
    997      334,   165,   149,   286,   100,   130,   224,  -110,   179,   279,
    998      103,   280,   251,   132,   228,  -110,  -110,   185,   230,   148,
    999      149,   188,   190,   191,   192,   193,   194,   195,   196,   131,
    1000      199,   243,   170,   133,   202,   134,   152,   249,   180,   281,
    1001      154,  -152,   252,   156,   101,   149,   135,   218,   181,   282,
    1002      256,   136,   258,   221,   152,   153,   101,   137,   154,    30,
    1003      155,   156,   182,   283,   183,   284,   101,   184,   287,   231,
    1004      232,   233,   147,   234,   169,   235,   236,   237,   238,   239,
    1005      240,   241,   242,   101,   148,   104,   356,   107,   357,   101,
    1006      179,   148,   250,   176,   101,   108,   358,   254,   255,   337,
    1007      257,   180,   259,  -153,   181,   261,   182,   149,   110,   359,
    1008      183,   152,   153,   111,   360,   154,   184,   155,   156,   302,
    1009      157,   158,   159,   160,   161,  -154,   162,   141,   142,   154,
    1010      164,   205,   156,   151,   165,   206,   220,   290,   157,   158,
    1011      159,   160,   161,   148,   162,   267,   148,   163,   164,   222,
    1012      171,   268,   165,   152,   153,   321,   248,   154,   263,   155,
    1013      156,   288,   297,   291,   368,   298,  -112,  -132,  -132,   301,
    1014      329,   303,   149,   383,  -112,  -112,   339,   338,   340,   149,
    1015      102,   303,   395,   309,   310,   311,   349,   312,   350,   313,
    1016      314,   351,   352,   353,   244,   157,   158,   159,   160,   161,
    1017      354,   162,   355,   364,   163,   164,   365,   327,   245,   165,
    1018      158,   159,   160,   161,   332,   162,   384,   335,  -105,   164,
    1019      380,  -106,   392,   165,   393,   140,  -105,  -105,     0,  -106,
    1020     -106,   149,   253,   391,   149,     0,     0,   157,   158,   159,
    1021      160,   161,     0,   162,   269,     0,   163,   164,     0,     0,
    1022      270,   165,   394,     2,     3,     0,   303,     0,     0,     0,
    1023      373,     4,   374,   375,     0,   376,   148,     5,     6,     7,
    1024        8,     0,   152,   153,     0,     9,   154,     0,   155,   156,
    1025        0,   377,   378,     0,     0,    10,     0,   152,   153,     0,
    1026        0,   154,     0,   155,   156,     0,     0,     0,     0,    11,
     984      61,   304,    70,   173,   381,   170,   153,   154,   368,   150,
     985     155,   308,   156,   157,   123,    89,   150,   171,   172,   128,
     986     225,  -154,   151,   122,   151,   155,   148,   381,   157,    97,
     987     330,   103,   101,   148,   151,   151,   151,   331,   369,   131,
     988     226,   274,   276,   124,   101,   101,   101,   101,    70,   151,
     989     144,   101,   151,   104,   127,   278,   155,   134,   293,   157,
     990     186,   155,   151,   151,   157,   169,   120,   121,   294,   305,
     991     105,   151,   139,   155,   151,   143,   157,   306,   148,   146,
     992     367,   151,   379,   106,   151,   107,   366,   396,   167,   168,
     993     158,   159,   160,   161,   162,   101,   163,   267,   136,   164,
     994     165,   108,   101,   268,   166,   178,   159,   160,   161,   162,
     995     198,   163,   253,   201,   149,   165,   285,   204,   148,   166,
     996     109,   149,   286,   110,   185,   216,   217,   215,   188,   190,
     997     191,   192,   193,   194,   195,   196,   224,   199,   111,   161,
     998     162,   202,   163,   179,   279,   162,   126,   163,   230,   129,
     999     166,   101,   153,   154,   218,   166,   155,   162,   156,   157,
     1000     221,  -132,  -132,   101,   103,   280,   149,   166,   153,   154,
     1001     180,   281,   155,   101,   156,   157,   231,   130,   232,   233,
     1002     256,   234,   258,   235,   236,   237,   238,   239,   240,   241,
     1003     242,   101,   132,   150,   133,   148,   101,   148,   135,   250,
     1004     137,   101,  -152,    30,   254,   255,   149,   257,   147,   259,
     1005     181,   282,   261,   170,   100,   153,   154,   182,   283,   155,
     1006     176,   156,   157,   183,   284,   205,   113,   115,   117,   119,
     1007     184,   287,   179,   125,   180,   148,   158,   159,   160,   161,
     1008     162,   181,   163,   182,   290,   164,   165,   148,   333,   334,
     1009     166,   227,   158,   159,   160,   161,   162,   183,   163,   269,
     1010     184,   164,   165,   153,   151,   270,   166,   155,   206,   297,
     1011     157,   220,   298,   104,   356,   337,   301,   175,   303,  -153,
     1012    -133,  -133,   222,   149,   177,   149,   321,   171,   303,   248,
     1013     309,   310,   311,   148,   312,   291,   313,   314,   244,   158,
     1014     159,   160,   161,   162,   263,   163,   339,   338,   164,   165,
     1015    -110,   288,   245,   166,   327,   251,   148,   329,  -110,  -110,
     1016     349,   332,  -112,   149,   335,   107,   357,   108,   358,   340,
     1017    -112,  -112,   350,   214,   351,   149,   365,   110,   359,   111,
     1018     360,   141,   142,   352,   364,   100,   353,   158,   159,   160,
     1019     161,   162,   354,   163,   355,   228,   380,   165,   368,   384,
     1020     383,   166,   392,   303,   393,   102,   140,   373,  -105,   374,
     1021     375,   395,   376,   243,   391,     0,  -105,  -105,   249,     0,
     1022       0,   149,   394,   252,     0,     0,     0,     0,   377,   378,
     1023       0,  -106,     0,     2,     3,     5,     6,   315,   316,  -106,
     1024    -106,     4,     0,     9,   149,     0,   148,     5,     6,     7,
     1025       8,     0,   153,   154,     0,     9,   155,     0,   156,   157,
     1026       0,     0,     0,     0,     0,    10,     0,   153,   154,     0,
     1027       0,   155,     0,   156,   157,   317,   318,   319,   320,    11,
    10271028      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    10281029      22,    23,    24,    25,    26,     0,    27,    28,    29,    30,
    1029        0,    31,    32,    33,    34,    35,    36,    37,    38,    39,
     1030     302,    31,    32,    33,    34,    35,    36,    37,    38,    39,
    10301031      40,    41,    42,    43,    44,    45,    46,    47,    48,     0,
    10311032      49,  -107,    50,     0,    51,     0,     0,     0,    52,  -107,
    1032     -107,     0,    53,   148,   149,    54,   157,   158,   159,   160,
    1033      161,     0,   162,   272,     0,   163,   164,     0,     0,   273,
    1034      165,   157,   158,   159,   160,   161,   295,   162,   296,     0,
    1035      163,   164,   152,   153,     0,   165,   154,     0,   155,   156,
    1036        0,     0,     0,     0,     0,     0,     0,   152,   153,     0,
    1037        0,   154,     0,   155,   156,     0,     0,     0,     0,     0,
    1038        0,     0,   152,   153,     0,     0,   154,     0,   155,   156,
    1039        0,     0,     0,     0,     0,     0,     0,   152,   153,     0,
    1040        0,   154,     0,   155,   156,     0,  -133,  -133,     0,     0,
    1041        0,   149,   152,   153,     0,     0,   154,     0,   155,   156,
    1042        0,     0,     0,     0,     0,     0,     0,   152,   153,     0,
    1043        0,   154,     0,   155,   156,     0,   157,   158,   159,   160,
    1044      161,     0,   162,   299,     0,   163,   164,     0,     0,   300,
    1045      165,   157,   158,   159,   160,   161,     0,   162,   345,     0,
    1046      163,   164,     0,     0,   346,   165,   157,   158,   159,   160,
    1047      161,     0,   162,   347,     0,   163,   164,     0,     0,   348,
    1048      165,   157,   158,   159,   160,   161,     0,   162,   247,     0,
    1049      163,   164,     0,     0,     0,   165,   157,   158,   159,   160,
    1050      161,     0,   162,     0,     0,   163,   164,     0,     0,   260,
    1051      165,   157,   158,   159,   160,   161,     0,   162,     0,     0,
    1052      163,   164,   152,   153,   262,   165,   154,     0,   155,   156,
    1053        0,     0,     0,     0,     0,     0,     0,   152,   153,     0,
    1054        0,   154,     0,   155,   156,     0,     0,     0,     0,     0,
    1055        0,     0,   152,   153,     0,     0,   154,     0,   155,   156,
    1056        0,     0,     0,     0,     0,     0,     0,   152,   153,     0,
    1057        0,   154,     0,   155,   156,     0,     0,     0,     0,     0,
    1058        0,     0,   152,   153,     0,     0,   154,     0,   155,   156,
    1059        0,     0,     0,     0,     0,     0,     0,   152,   153,     0,
    1060        0,   154,     0,   155,   156,     0,   157,   158,   159,   160,
    1061      161,     0,   162,     0,     0,   163,   164,     0,     0,   264,
    1062      165,   157,   158,   159,   160,   161,     0,   162,   265,     0,
    1063      163,   164,     0,     0,     0,   165,   157,   158,   159,   160,
    1064      161,     0,   162,   266,     0,   163,   164,     0,     0,     0,
    1065      165,   157,   158,   159,   160,   161,     0,   162,   271,     0,
    1066      163,   164,     0,     0,     0,   165,   157,   158,   159,   160,
    1067      161,     0,   162,     0,     0,   163,   164,     0,     0,   275,
    1068      165,   157,   158,   159,   160,   161,     0,   162,     0,     0,
    1069      163,   164,   152,   153,   277,   165,   154,     0,   155,   156,
    1070        0,     0,     0,     0,     0,     0,     0,   152,   153,     0,
    1071        0,   154,     0,   155,   156,     0,     0,     0,     0,     0,
    1072        0,     0,   152,   153,     0,     0,   154,     0,   155,   156,
    1073        0,     0,     0,     0,     0,     0,     0,   152,   153,     0,
    1074        0,   154,     0,   155,   156,     0,     0,     0,     0,     0,
    1075        0,     0,   152,   153,     0,     0,   154,     0,   155,   156,
    1076        0,     0,     0,     0,     0,     0,     0,   152,   153,     0,
    1077        0,   154,     0,   155,   156,     0,   157,   158,   159,   160,
    1078      161,     0,   162,   289,     0,   163,   164,     0,     0,     0,
    1079      165,   157,   158,   159,   160,   161,     0,   162,     0,     0,
    1080      163,   164,     0,     0,   292,   165,   157,   158,   159,   160,
    1081      161,     0,   162,   307,     0,   163,   164,     0,     0,     0,
    1082      165,   157,   158,   159,   160,   161,     0,   162,     0,     0,
    1083      163,   164,     0,     0,   328,   165,   157,   158,   159,   160,
    1084      161,     0,   162,     0,     0,   163,   164,     0,     0,   245,
    1085      165,   157,   158,   159,   160,   161,   336,   162,     0,     0,
    1086      163,   164,   152,   153,     0,   165,   154,     0,   155,   156,
    1087        0,     0,     0,     0,     0,     0,     0,   152,   153,     0,
    1088        0,   154,     0,   155,   156,     0,     0,     0,     0,     0,
    1089        0,     0,   152,   153,     0,     0,   154,     0,   155,   156,
    1090        0,     0,     0,     0,     0,     0,     0,   152,   153,     0,
    1091        0,   154,     0,   155,   156,     0,     0,     0,     0,     0,
    1092        0,     0,   152,   153,     0,     0,   154,     0,   155,   156,
    1093        0,     0,     0,     0,     0,     0,     0,   152,   153,     0,
    1094        0,   154,     0,   155,   156,     0,   157,   158,   159,   160,
    1095      161,     0,   162,     0,     0,   163,   164,     0,     0,   341,
    1096      165,   157,   158,   159,   160,   161,     0,   162,   342,     0,
    1097      163,   164,     0,     0,     0,   165,   157,   158,   159,   160,
    1098      161,     0,   162,     0,     0,   163,   164,     0,     0,   343,
    1099      165,   157,   158,   159,   160,   161,     0,   162,   344,     0,
    1100      163,   164,     0,     0,     0,   165,   157,   158,   159,   160,
    1101      161,     0,   162,     0,     0,   163,   164,     0,     0,   361,
    1102      165,   157,   158,   159,   160,   161,   362,   162,     0,     0,
    1103      163,   164,   152,   153,     0,   165,   154,     0,   155,   156,
    1104        0,     0,     0,     0,     0,     0,     0,   152,   153,     0,
    1105        0,   154,     0,   155,   156,     0,     0,     0,     0,     0,
    1106        0,     0,   152,   153,     0,     0,   154,     0,   155,   156,
    1107        0,     0,     0,     0,     0,     0,     0,   152,   153,     0,
    1108        0,   154,     0,   155,   156,     0,     0,     0,     0,     0,
    1109        0,     0,   152,   153,     0,     0,   154,     0,   155,   156,
    1110        0,     0,     0,     0,     0,     0,     0,   152,   153,     0,
    1111        0,   154,     0,   155,   156,     0,   157,   158,   159,   160,
    1112      161,     0,   162,   363,     0,   163,   164,     0,     0,     0,
    1113      165,   157,   158,   159,   160,   161,     0,   162,     0,     0,
    1114      163,   164,     0,     0,   385,   165,   157,   158,   159,   160,
    1115      161,     0,   162,     0,     0,   163,   164,     0,     0,   386,
    1116      165,   157,   158,   159,   160,   161,     0,   162,   148,     0,
    1117      163,   164,     0,     0,   387,   165,   157,   158,   159,   160,
    1118      161,     0,   162,   148,     0,   163,   164,     0,     0,   388,
    1119      165,   157,   158,   159,   160,   161,     0,   162,     0,     0,
    1120      163,   164,   152,   153,   389,   165,   154,     0,   155,   156,
    1121        0,     0,     0,     0,     0,     0,     0,   152,   153,     0,
    1122        0,   154,     0,   155,   156,     0,     0,     0,     0,     0,
    1123        0,     0,   152,   153,     0,     0,   154,     0,   155,   156,
    1124        0,     0,     0,  -108,     0,     0,   152,     0,     0,     0,
    1125      154,  -108,  -108,   156,     0,     0,   149,     0,  -111,     0,
     1033    -107,     0,    53,     0,   149,    54,   158,   159,   160,   161,
     1034     162,     0,   163,   272,     0,   164,   165,     0,     0,   273,
     1035     166,   158,   159,   160,   161,   162,   295,   163,   296,     0,
     1036     164,   165,   153,   154,     0,   166,   155,     0,   156,   157,
     1037       0,     0,     0,     0,     0,     0,     0,   153,   154,     0,
     1038       0,   155,     0,   156,   157,     0,     0,     0,     0,     0,
     1039       0,     0,   153,   154,     0,     0,   155,     0,   156,   157,
     1040       0,     0,     0,     0,     0,     0,     0,   153,   154,     0,
     1041       0,   155,     0,   156,   157,     0,     0,     0,     0,     0,
     1042       0,     0,   153,   154,     0,     0,   155,     0,   156,   157,
     1043       0,     0,     0,     0,     0,     0,     0,   153,   154,     0,
     1044       0,   155,     0,   156,   157,     0,   158,   159,   160,   161,
     1045     162,     0,   163,   299,     0,   164,   165,     0,     0,   300,
     1046     166,   158,   159,   160,   161,   162,     0,   163,   345,     0,
     1047     164,   165,     0,     0,   346,   166,   158,   159,   160,   161,
     1048     162,     0,   163,   347,     0,   164,   165,     0,     0,   348,
     1049     166,   158,   159,   160,   161,   162,     0,   163,   247,     0,
     1050     164,   165,     0,     0,     0,   166,   158,   159,   160,   161,
     1051     162,     0,   163,     0,     0,   164,   165,     0,     0,   260,
     1052     166,   158,   159,   160,   161,   162,     0,   163,     0,     0,
     1053     164,   165,   153,   154,   262,   166,   155,     0,   156,   157,
     1054       0,     0,     0,     0,     0,     0,     0,   153,   154,     0,
     1055       0,   155,     0,   156,   157,     0,     0,     0,     0,     0,
     1056       0,     0,   153,   154,     0,     0,   155,     0,   156,   157,
     1057       0,     0,     0,     0,     0,     0,     0,   153,   154,     0,
     1058       0,   155,     0,   156,   157,     0,     0,     0,     0,     0,
     1059       0,     0,   153,   154,     0,     0,   155,     0,   156,   157,
     1060       0,     0,     0,     0,     0,     0,     0,   153,   154,     0,
     1061       0,   155,     0,   156,   157,     0,   158,   159,   160,   161,
     1062     162,     0,   163,     0,     0,   164,   165,     0,     0,   264,
     1063     166,   158,   159,   160,   161,   162,     0,   163,   265,     0,
     1064     164,   165,     0,     0,     0,   166,   158,   159,   160,   161,
     1065     162,     0,   163,   266,     0,   164,   165,     0,     0,     0,
     1066     166,   158,   159,   160,   161,   162,     0,   163,   271,     0,
     1067     164,   165,     0,     0,     0,   166,   158,   159,   160,   161,
     1068     162,     0,   163,     0,     0,   164,   165,     0,     0,   275,
     1069     166,   158,   159,   160,   161,   162,     0,   163,     0,     0,
     1070     164,   165,   153,   154,   277,   166,   155,     0,   156,   157,
     1071       0,     0,     0,     0,     0,     0,     0,   153,   154,     0,
     1072       0,   155,     0,   156,   157,     0,     0,     0,     0,     0,
     1073       0,     0,   153,   154,     0,     0,   155,     0,   156,   157,
     1074       0,     0,     0,     0,     0,     0,     0,   153,   154,     0,
     1075       0,   155,     0,   156,   157,     0,     0,     0,     0,     0,
     1076       0,     0,   153,   154,     0,     0,   155,     0,   156,   157,
     1077       0,     0,     0,     0,     0,     0,     0,   153,   154,     0,
     1078       0,   155,     0,   156,   157,     0,   158,   159,   160,   161,
     1079     162,     0,   163,   289,     0,   164,   165,     0,     0,     0,
     1080     166,   158,   159,   160,   161,   162,     0,   163,     0,     0,
     1081     164,   165,     0,     0,   292,   166,   158,   159,   160,   161,
     1082     162,     0,   163,   307,     0,   164,   165,     0,     0,     0,
     1083     166,   158,   159,   160,   161,   162,     0,   163,     0,     0,
     1084     164,   165,     0,     0,   328,   166,   158,   159,   160,   161,
     1085     162,     0,   163,     0,     0,   164,   165,     0,     0,   245,
     1086     166,   158,   159,   160,   161,   162,   336,   163,     0,     0,
     1087     164,   165,   153,   154,     0,   166,   155,     0,   156,   157,
     1088       0,     0,     0,     0,     0,     0,     0,   153,   154,     0,
     1089       0,   155,     0,   156,   157,     0,     0,     0,     0,     0,
     1090       0,     0,   153,   154,     0,     0,   155,     0,   156,   157,
     1091       0,     0,     0,     0,     0,     0,     0,   153,   154,     0,
     1092       0,   155,     0,   156,   157,     0,     0,     0,     0,     0,
     1093       0,     0,   153,   154,     0,     0,   155,     0,   156,   157,
     1094       0,     0,     0,     0,     0,     0,     0,   153,   154,     0,
     1095       0,   155,     0,   156,   157,     0,   158,   159,   160,   161,
     1096     162,     0,   163,     0,     0,   164,   165,     0,     0,   341,
     1097     166,   158,   159,   160,   161,   162,     0,   163,   342,     0,
     1098     164,   165,     0,     0,     0,   166,   158,   159,   160,   161,
     1099     162,     0,   163,     0,     0,   164,   165,     0,     0,   343,
     1100     166,   158,   159,   160,   161,   162,     0,   163,   344,     0,
     1101     164,   165,     0,     0,     0,   166,   158,   159,   160,   161,
     1102     162,     0,   163,     0,     0,   164,   165,     0,     0,   361,
     1103     166,   158,   159,   160,   161,   162,   362,   163,     0,     0,
     1104     164,   165,   153,   154,     0,   166,   155,     0,   156,   157,
     1105       0,     0,     0,     0,     0,     0,     0,   153,   154,     0,
     1106       0,   155,     0,   156,   157,     0,     0,     0,     0,     0,
     1107       0,     0,   153,   154,     0,     0,   155,     0,   156,   157,
     1108       0,     0,     0,     0,     0,     0,     0,   153,   154,     0,
     1109       0,   155,     0,   156,   157,     0,     0,     0,     0,     0,
     1110       0,     0,   153,   154,     0,     0,   155,     0,   156,   157,
     1111       0,     0,     0,     0,     0,     0,     0,   153,   154,     0,
     1112       0,   155,     0,   156,   157,     0,   158,   159,   160,   161,
     1113     162,     0,   163,   363,     0,   164,   165,     0,     0,     0,
     1114     166,   158,   159,   160,   161,   162,     0,   163,     0,     0,
     1115     164,   165,     0,     0,   385,   166,   158,   159,   160,   161,
     1116     162,     0,   163,     0,     0,   164,   165,     0,     0,   386,
     1117     166,   158,   159,   160,   161,   162,     0,   163,   148,     0,
     1118     164,   165,     0,     0,   387,   166,   158,   159,   160,   161,
     1119     162,     0,   163,   148,     0,   164,   165,     0,     0,   388,
     1120     166,   158,   159,   160,   161,   162,     0,   163,     0,     0,
     1121     164,   165,   153,   154,   389,   166,   155,     0,   156,   157,
     1122       0,     0,     0,     0,     0,     0,     0,   153,   154,     0,
     1123       0,   155,     0,   156,   157,     0,     0,     0,     0,     0,
     1124       0,     0,   153,   154,     0,     0,   155,     0,   156,   157,
     1125       0,     0,     0,  -108,     0,     0,   153,     0,     0,     0,
     1126     155,  -108,  -108,   157,     0,     0,   149,     0,  -111,     0,
    11261127       0,     0,     0,     0,     0,     0,  -111,  -111,     0,     0,
    11271128       0,   149,     0,     0,     0,     0,     0,     0,     0,     0,
    1128        0,     0,     0,     0,     0,     0,   157,   158,   159,   160,
    1129      161,   390,   162,     0,     0,   163,   164,     0,     0,     0,
    1130      165,   157,   158,   159,   160,   161,     0,   162,     0,     0,
    1131      163,   164,     0,     0,     0,   165,   157,   158,   159,   160,
    1132      161,     0,   162,     0,     0,     0,   164,     0,     0,     0,
    1133      165,   158,   159,   160,   161,     0,   162,     0,     0,     4,
    1134      164,     0,     0,     0,   165,     5,     6,    90,    91,     5,
    1135        6,   315,   316,     9,     0,     0,     0,     9,     0,     0,
     1129       0,     0,     0,     0,     0,     0,   158,   159,   160,   161,
     1130     162,   390,   163,     0,     0,   164,   165,     0,     0,     0,
     1131     166,   158,   159,   160,   161,   162,     0,   163,     0,     0,
     1132     164,   165,     0,     0,     0,   166,   158,   159,   160,   161,
     1133     162,     0,   163,     0,     0,     0,   165,     0,     0,     0,
     1134     166,   159,   160,   161,   162,     0,   163,     0,     0,     4,
     1135     165,     0,     0,     0,   166,     5,     6,    90,    91,     0,
     1136       0,     0,     0,     9,     0,     0,     0,     0,     0,     0,
    11361137       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    11371138       0,     0,     0,     0,     0,     0,     0,    11,    12,    13,
    1138       14,    15,    16,    17,    18,    92,    93,    94,    95,   317,
    1139      318,   319,   320,     0,     0,     0,     0,    30,     0,    31,
     1139      14,    15,    16,    17,    18,    92,    93,    94,    95,     0,
     1140       0,     0,     0,     0,     0,     0,     0,    30,     0,    31,
    11401141      32,    33,     0,    35,    36,     4,     0,     0,    40,    41,
    11411142       0,     5,     6,    90,    91,     0,    96,     0,     0,     9,
     
    12451246static const yytype_int16 yycheck[] =
    12461247{
    1247        1,     1,    12,     7,   253,    69,     3,     4,   369,    11,
    1248        7,    95,     9,    10,   263,    19,    20,    21,    22,    66,
    1249       94,    86,    26,    24,    99,     7,   100,    99,    10,    94,
    1250        7,   392,    67,    10,    86,    99,    92,     7,    94,    74,
    1251       10,    99,    94,    95,    11,    94,    99,    47,    95,    99,
    1252       51,   100,     4,    94,    94,     7,    99,    67,    94,   100,
    1253      100,    92,    11,    94,   100,    66,    70,    19,    20,    21,
    1254       22,    99,    94,    77,    26,    94,    94,    29,   100,    94,
    1255       94,   100,   100,    66,    67,   100,   100,    11,    99,   338,
    1256       87,    88,    89,    90,    91,    47,    93,    99,    50,    96,
    1257       97,    99,    54,    99,   101,   102,    66,    67,    66,    91,
    1258      111,    63,    64,   114,    91,    99,    93,   118,    70,   101,
    1259       90,    91,   126,    93,   101,    77,   126,    94,    80,   297,
    1260      298,   101,    99,   100,   138,    99,   137,    86,    99,   100,
    1261       99,   100,    91,    99,   148,    94,    95,    99,   149,    11,
    1262       99,   103,   104,   105,   106,   107,   108,   109,   110,    67,
    1263      112,   165,    86,    99,   116,    66,     3,   171,    99,   100,
    1264        7,    95,   176,    10,   126,    99,    99,   129,    99,   100,
    1265      181,    66,   183,   135,     3,     4,   138,    99,     7,    66,
    1266        9,    10,    99,   100,    99,   100,   148,    99,   100,   151,
    1267      152,   153,    95,   155,    12,   157,   158,   159,   160,   161,
    1268      162,   163,   164,   165,    11,    99,   100,    99,   100,   171,
    1269       99,    11,   174,    94,   176,    99,   100,   179,   180,    91,
    1270      182,    99,   184,    95,    99,   187,    99,    99,    99,   100,
    1271       99,     3,     4,    99,   100,     7,    99,     9,    10,   253,
    1272       87,    88,    89,    90,    91,     3,    93,    48,    49,     7,
    1273       97,    95,    10,    94,   101,    95,    66,   219,    87,    88,
    1274       89,    90,    91,    11,    93,    94,    11,    96,    97,    67,
    1275       94,   100,   101,     3,     4,   285,    67,     7,    94,     9,
    1276       10,    67,   244,    66,    69,   247,    86,    94,    95,   251,
    1277       67,   253,    99,    99,    94,    95,   307,    94,    94,    99,
    1278        7,   263,   392,   265,   266,   267,   100,   269,   100,   271,
    1279      272,   100,   100,   100,    86,    87,    88,    89,    90,    91,
    1280      100,    93,   100,    91,    96,    97,   337,   289,   100,   101,
    1281       88,    89,    90,    91,   296,    93,   100,   299,    86,    97,
    1282       94,    86,    94,   101,   100,    47,    94,    95,    -1,    94,
    1283       95,    99,   177,   380,    99,    -1,    -1,    87,    88,    89,
    1284       90,    91,    -1,    93,    94,    -1,    96,    97,    -1,    -1,
    1285      100,   101,   383,     0,     1,    -1,   338,    -1,    -1,    -1,
    1286      342,     8,   344,   345,    -1,   347,    11,    14,    15,    16,
     1248       1,   253,     1,    68,   369,    12,     3,     4,    69,    86,
     1249       7,   263,     9,    10,    66,    95,    86,    94,    95,    66,
     1250      92,     3,    94,    24,    94,     7,    11,   392,    10,     4,
     1251      67,    99,     7,    11,    94,    94,    94,    74,    99,    67,
     1252     100,   100,   100,    95,    19,    20,    21,    22,    47,    94,
     1253      51,    26,    94,    99,    29,   100,     7,    66,   100,    10,
     1254      67,     7,    94,    94,    10,    66,    66,    67,   100,   100,
     1255      99,    94,    47,     7,    94,    50,    10,   100,    11,    54,
     1256     100,    94,    92,    99,    94,    99,   338,   100,    63,    64,
     1257      87,    88,    89,    90,    91,    70,    93,    94,    66,    96,
     1258      97,    99,    77,   100,   101,    80,    88,    89,    90,    91,
     1259     111,    93,   177,   114,    99,    97,    94,   118,    11,   101,
     1260      99,    99,   100,    99,    99,    66,    67,   126,   103,   104,
     1261     105,   106,   107,   108,   109,   110,   137,   112,    99,    90,
     1262      91,   116,    93,    99,   100,    91,    99,    93,   149,    99,
     1263     101,   126,     3,     4,   129,   101,     7,    91,     9,    10,
     1264     135,    94,    95,   138,    99,   100,    99,   101,     3,     4,
     1265      99,   100,     7,   148,     9,    10,   151,    99,   153,   154,
     1266     181,   156,   183,   158,   159,   160,   161,   162,   163,   164,
     1267     165,   166,    99,    86,    99,    11,   171,    11,    99,   174,
     1268      99,   176,    95,    66,   179,   180,    99,   182,    95,   184,
     1269      99,   100,   187,    12,     7,     3,     4,    99,   100,     7,
     1270      94,     9,    10,    99,   100,    95,    19,    20,    21,    22,
     1271      99,   100,    99,    26,    99,    11,    87,    88,    89,    90,
     1272      91,    99,    93,    99,   219,    96,    97,    11,   297,   298,
     1273     101,   102,    87,    88,    89,    90,    91,    99,    93,    94,
     1274      99,    96,    97,     3,    94,   100,   101,     7,    95,   244,
     1275      10,    66,   247,    99,   100,    91,   251,    70,   253,    95,
     1276      94,    95,    67,    99,    77,    99,   285,    94,   263,    67,
     1277     265,   266,   267,    11,   269,    66,   271,   272,    86,    87,
     1278      88,    89,    90,    91,    94,    93,   307,    94,    96,    97,
     1279      86,    67,   100,   101,   289,    91,    11,    67,    94,    95,
     1280     100,   296,    86,    99,   299,    99,   100,    99,   100,    94,
     1281      94,    95,   100,   126,   100,    99,   337,    99,   100,    99,
     1282     100,    48,    49,   100,    91,   138,   100,    87,    88,    89,
     1283      90,    91,   100,    93,   100,   148,    94,    97,    69,   100,
     1284      99,   101,    94,   338,   100,     7,    47,   342,    86,   344,
     1285     345,   392,   347,   166,   380,    -1,    94,    95,   171,    -1,
     1286      -1,    99,   383,   176,    -1,    -1,    -1,    -1,   363,   364,
     1287      -1,    86,    -1,     0,     1,    14,    15,    16,    17,    94,
     1288      95,     8,    -1,    22,    99,    -1,    11,    14,    15,    16,
    12871289      17,    -1,     3,     4,    -1,    22,     7,    -1,     9,    10,
    1288       -1,   363,   364,    -1,    -1,    32,    -1,     3,     4,    -1,
    1289       -1,     7,    -1,     9,    10,    -1,    -1,    -1,    -1,    46,
     1290      -1,    -1,    -1,    -1,    -1,    32,    -1,     3,     4,    -1,
     1291      -1,     7,    -1,     9,    10,    54,    55,    56,    57,    46,
    12901292      47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
    12911293      57,    58,    59,    60,    61,    -1,    63,    64,    65,    66,
    1292       -1,    68,    69,    70,    71,    72,    73,    74,    75,    76,
     1294     253,    68,    69,    70,    71,    72,    73,    74,    75,    76,
    12931295      77,    78,    79,    80,    81,    82,    83,    84,    85,    -1,
    12941296      87,    86,    89,    -1,    91,    -1,    -1,    -1,    95,    94,
    1295       95,    -1,    99,    11,    99,   102,    87,    88,    89,    90,
     1297      95,    -1,    99,    -1,    99,   102,    87,    88,    89,    90,
    12961298      91,    -1,    93,    94,    -1,    96,    97,    -1,    -1,   100,
    12971299     101,    87,    88,    89,    90,    91,    92,    93,    94,    -1,
     
    13011303      -1,    -1,     3,     4,    -1,    -1,     7,    -1,     9,    10,
    13021304      -1,    -1,    -1,    -1,    -1,    -1,    -1,     3,     4,    -1,
    1303       -1,     7,    -1,     9,    10,    -1,    94,    95,    -1,    -1,
    1304       -1,    99,     3,     4,    -1,    -1,     7,    -1,     9,    10,
     1305      -1,     7,    -1,     9,    10,    -1,    -1,    -1,    -1,    -1,
     1306      -1,    -1,     3,     4,    -1,    -1,     7,    -1,     9,    10,
    13051307      -1,    -1,    -1,    -1,    -1,    -1,    -1,     3,     4,    -1,
    13061308      -1,     7,    -1,     9,    10,    -1,    87,    88,    89,    90,
     
    13951397      91,    -1,    93,    -1,    -1,    -1,    97,    -1,    -1,    -1,
    13961398     101,    88,    89,    90,    91,    -1,    93,    -1,    -1,     8,
    1397       97,    -1,    -1,    -1,   101,    14,    15,    16,    17,    14,
    1398       15,    16,    17,    22,    -1,    -1,    -1,    22,    -1,    -1,
     1399      97,    -1,    -1,    -1,   101,    14,    15,    16,    17,    -1,
     1400      -1,    -1,    -1,    22,    -1,    -1,    -1,    -1,    -1,    -1,
    13991401      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    14001402      -1,    -1,    -1,    -1,    -1,    -1,    -1,    46,    47,    48,
    1401       49,    50,    51,    52,    53,    54,    55,    56,    57,    54,
    1402       55,    56,    57,    -1,    -1,    -1,    -1,    66,    -1,    68,
     1403      49,    50,    51,    52,    53,    54,    55,    56,    57,    -1,
     1404      -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,    -1,    68,
    14031405      69,    70,    -1,    72,    73,     8,    -1,    -1,    77,    78,
    14041406      -1,    14,    15,    16,    17,    -1,    85,    -1,    -1,    22,
     
    15251527      99,    67,    99,    99,    66,    99,    66,    99,    16,   112,
    15261528     120,   121,   121,   112,   111,   111,   112,    95,    11,    99,
    1527       86,    94,     3,     4,     7,     9,    10,    87,    88,    89,
    1528       90,    91,    93,    96,    97,   101,   112,   112,   111,    12,
    1529       86,    94,    95,   127,    99,   110,    94,   110,   112,    99,
     1529      86,    94,   127,     3,     4,     7,     9,    10,    87,    88,
     1530      89,    90,    91,    93,    96,    97,   101,   112,   112,   111,
     1531      12,    94,    95,   127,    99,   110,    94,   110,   112,    99,
    15301532      99,    99,    99,    99,    99,   112,    67,    99,   112,   122,
    15311533     112,   112,   112,   112,   112,   112,   112,   100,   111,   112,
     
    29052907    {
    29062908            if (iiARROW(&(yyval.lv),(yyvsp[(1) - (3)].name),(yyvsp[(3) - (3)].name))) YYERROR;
    2907             omFree((ADDRESS)(yyvsp[(3) - (3)].name))
     2909            omFree((ADDRESS)(yyvsp[(3) - (3)].name));
    29082910          ;}
    29092911    break;
     
    29322934    break;
    29332935
    2934   case 68:
    2935 
    2936 /* Line 1464 of yacc.c  */
    2937 #line 674 "grammar.y"
    2938     {
    2939             (yyval.lv) = (yyvsp[(1) - (1)].lv);
    2940           ;}
    2941     break;
    2942 
    2943   case 69:
    2944 
    2945 /* Line 1464 of yacc.c  */
    2946 #line 680 "grammar.y"
    2947     {
    2948             /*if ($1.typ == eunknown) YYERROR;*/
    2949             (yyval.lv) = (yyvsp[(1) - (1)].lv);
    2950           ;}
    2951     break;
    2952 
    2953   case 70:
    2954 
    2955 /* Line 1464 of yacc.c  */
    2956 #line 684 "grammar.y"
    2957     { (yyval.lv) = (yyvsp[(1) - (1)].lv); ;}
    2958     break;
    2959 
    29602936  case 71:
    29612937
    29622938/* Line 1464 of yacc.c  */
    2963 #line 686 "grammar.y"
     2939#line 679 "grammar.y"
    29642940    {
    29652941            if(iiExprArith3(&(yyval.lv),'[',&(yyvsp[(1) - (6)].lv),&(yyvsp[(3) - (6)].lv),&(yyvsp[(5) - (6)].lv))) YYERROR;
     
    29702946
    29712947/* Line 1464 of yacc.c  */
    2972 #line 690 "grammar.y"
     2948#line 683 "grammar.y"
    29732949    {
    29742950            if(iiExprArith2(&(yyval.lv),&(yyvsp[(1) - (4)].lv),'[',&(yyvsp[(3) - (4)].lv))) YYERROR;
     
    29792955
    29802956/* Line 1464 of yacc.c  */
    2981 #line 694 "grammar.y"
     2957#line 687 "grammar.y"
    29822958    {
    29832959            if (iiApply(&(yyval.lv), &(yyvsp[(3) - (6)].lv), (yyvsp[(5) - (6)].i), NULL)) YYERROR;
     
    29882964
    29892965/* Line 1464 of yacc.c  */
    2990 #line 698 "grammar.y"
     2966#line 691 "grammar.y"
    29912967    {
    29922968            if (iiApply(&(yyval.lv), &(yyvsp[(3) - (6)].lv), (yyvsp[(5) - (6)].i), NULL)) YYERROR;
     
    29972973
    29982974/* Line 1464 of yacc.c  */
    2999 #line 702 "grammar.y"
     2975#line 695 "grammar.y"
    30002976    {
    30012977            if (iiApply(&(yyval.lv), &(yyvsp[(3) - (6)].lv), (yyvsp[(5) - (6)].i), NULL)) YYERROR;
     
    30062982
    30072983/* Line 1464 of yacc.c  */
    3008 #line 706 "grammar.y"
     2984#line 699 "grammar.y"
    30092985    {
    30102986            if (iiApply(&(yyval.lv), &(yyvsp[(3) - (6)].lv), (yyvsp[(5) - (6)].i), NULL)) YYERROR;
     
    30152991
    30162992/* Line 1464 of yacc.c  */
    3017 #line 710 "grammar.y"
     2993#line 703 "grammar.y"
    30182994    {
    30192995            if (iiApply(&(yyval.lv), &(yyvsp[(3) - (6)].lv), (yyvsp[(5) - (6)].i), NULL)) YYERROR;
     
    30243000
    30253001/* Line 1464 of yacc.c  */
    3026 #line 714 "grammar.y"
     3002#line 707 "grammar.y"
    30273003    {
    30283004            if (iiApply(&(yyval.lv), &(yyvsp[(3) - (6)].lv), 0, &(yyvsp[(5) - (6)].lv))) YYERROR;
     
    30333009
    30343010/* Line 1464 of yacc.c  */
    3035 #line 718 "grammar.y"
     3011#line 711 "grammar.y"
    30363012    {
    30373013            (yyval.lv)=(yyvsp[(2) - (3)].lv);
     
    30423018
    30433019/* Line 1464 of yacc.c  */
    3044 #line 722 "grammar.y"
     3020#line 715 "grammar.y"
    30453021    {
    30463022            #ifdef SIQ
     
    30643040
    30653041/* Line 1464 of yacc.c  */
    3066 #line 739 "grammar.y"
     3042#line 732 "grammar.y"
    30673043    {
    30683044            iiTestAssume(&(yyvsp[(2) - (5)].lv),&(yyvsp[(4) - (5)].lv));
     
    30753051
    30763052/* Line 1464 of yacc.c  */
    3077 #line 745 "grammar.y"
     3053#line 738 "grammar.y"
    30783054    {
    30793055            #ifdef SIQ
     
    30863062
    30873063/* Line 1464 of yacc.c  */
    3088 #line 751 "grammar.y"
     3064#line 744 "grammar.y"
    30893065    {
    30903066            #ifdef SIQ
     
    31013077
    31023078/* Line 1464 of yacc.c  */
    3103 #line 763 "grammar.y"
     3079#line 756 "grammar.y"
    31043080    {
    31053081            #ifdef SIQ
     
    31123088
    31133089/* Line 1464 of yacc.c  */
    3114 #line 771 "grammar.y"
     3090#line 764 "grammar.y"
    31153091    {
    31163092            #ifdef SIQ
     
    31233099
    31243100/* Line 1464 of yacc.c  */
    3125 #line 779 "grammar.y"
     3101#line 772 "grammar.y"
    31263102    {
    31273103            #ifdef SIQ
     
    31343110
    31353111/* Line 1464 of yacc.c  */
    3136 #line 788 "grammar.y"
     3112#line 781 "grammar.y"
    31373113    {
    31383114            if(iiExprArith1(&(yyval.lv),&(yyvsp[(1) - (2)].lv),PLUSPLUS)) YYERROR;
     
    31433119
    31443120/* Line 1464 of yacc.c  */
    3145 #line 792 "grammar.y"
     3121#line 785 "grammar.y"
    31463122    {
    31473123            if(iiExprArith1(&(yyval.lv),&(yyvsp[(1) - (2)].lv),MINUSMINUS)) YYERROR;
     
    31523128
    31533129/* Line 1464 of yacc.c  */
    3154 #line 796 "grammar.y"
     3130#line 789 "grammar.y"
    31553131    {
    31563132            if(iiExprArith2(&(yyval.lv),&(yyvsp[(1) - (3)].lv),'+',&(yyvsp[(3) - (3)].lv))) YYERROR;
     
    31613137
    31623138/* Line 1464 of yacc.c  */
    3163 #line 800 "grammar.y"
     3139#line 793 "grammar.y"
    31643140    {
    31653141            if(iiExprArith2(&(yyval.lv),&(yyvsp[(1) - (3)].lv),'-',&(yyvsp[(3) - (3)].lv))) YYERROR;
     
    31703146
    31713147/* Line 1464 of yacc.c  */
    3172 #line 804 "grammar.y"
     3148#line 797 "grammar.y"
    31733149    { /* also for *,% */
    31743150            if(iiExprArith2(&(yyval.lv),&(yyvsp[(1) - (3)].lv),(yyvsp[(2) - (3)].i),&(yyvsp[(3) - (3)].lv))) YYERROR;
     
    31793155
    31803156/* Line 1464 of yacc.c  */
    3181 #line 808 "grammar.y"
     3157#line 801 "grammar.y"
    31823158    {
    31833159            if(iiExprArith2(&(yyval.lv),&(yyvsp[(1) - (3)].lv),'^',&(yyvsp[(3) - (3)].lv))) YYERROR;
     
    31883164
    31893165/* Line 1464 of yacc.c  */
    3190 #line 812 "grammar.y"
     3166#line 805 "grammar.y"
    31913167    { /* also for > */
    31923168            if(iiExprArith2(&(yyval.lv),&(yyvsp[(1) - (3)].lv),(yyvsp[(2) - (3)].i),&(yyvsp[(3) - (3)].lv))) YYERROR;
     
    31973173
    31983174/* Line 1464 of yacc.c  */
    3199 #line 816 "grammar.y"
     3175#line 809 "grammar.y"
    32003176    { /* also for |*/
    32013177            if(iiExprArith2(&(yyval.lv),&(yyvsp[(1) - (3)].lv),(yyvsp[(2) - (3)].i),&(yyvsp[(3) - (3)].lv))) YYERROR;
     
    32063182
    32073183/* Line 1464 of yacc.c  */
    3208 #line 820 "grammar.y"
     3184#line 813 "grammar.y"
    32093185    {
    32103186            if(iiExprArith2(&(yyval.lv),&(yyvsp[(1) - (3)].lv),NOTEQUAL,&(yyvsp[(3) - (3)].lv))) YYERROR;
     
    32153191
    32163192/* Line 1464 of yacc.c  */
    3217 #line 824 "grammar.y"
     3193#line 817 "grammar.y"
    32183194    {
    32193195            if(iiExprArith2(&(yyval.lv),&(yyvsp[(1) - (3)].lv),EQUAL_EQUAL,&(yyvsp[(3) - (3)].lv))) YYERROR;
     
    32243200
    32253201/* Line 1464 of yacc.c  */
    3226 #line 828 "grammar.y"
     3202#line 821 "grammar.y"
    32273203    {
    32283204            if(iiExprArith2(&(yyval.lv),&(yyvsp[(1) - (3)].lv),DOTDOT,&(yyvsp[(3) - (3)].lv))) YYERROR;
     
    32333209
    32343210/* Line 1464 of yacc.c  */
    3235 #line 832 "grammar.y"
     3211#line 825 "grammar.y"
    32363212    {
    32373213            if(iiExprArith2(&(yyval.lv),&(yyvsp[(1) - (3)].lv),':',&(yyvsp[(3) - (3)].lv))) YYERROR;
     
    32423218
    32433219/* Line 1464 of yacc.c  */
    3244 #line 836 "grammar.y"
     3220#line 829 "grammar.y"
    32453221    {
    32463222            if (siq>0)
     
    32593235
    32603236/* Line 1464 of yacc.c  */
    3261 #line 848 "grammar.y"
     3237#line 841 "grammar.y"
    32623238    {
    32633239            if(iiExprArith1(&(yyval.lv),&(yyvsp[(2) - (2)].lv),'-')) YYERROR;
     
    32653241    break;
    32663242
    3267   case 101:
    3268 
    3269 /* Line 1464 of yacc.c  */
    3270 #line 854 "grammar.y"
    3271     { (yyval.lv) = (yyvsp[(1) - (2)].lv); ;}
    3272     break;
    3273 
    32743243  case 102:
    32753244
    32763245/* Line 1464 of yacc.c  */
    3277 #line 856 "grammar.y"
     3246#line 849 "grammar.y"
    32783247    {
    32793248            if ((yyvsp[(1) - (2)].lv).rtyp==0)
     
    32953264
    32963265/* Line 1464 of yacc.c  */
    3297 #line 876 "grammar.y"
     3266#line 869 "grammar.y"
    32983267    {
    32993268            if ((yyvsp[(2) - (3)].lv).Typ()!=STRING_CMD)
     
    33093278
    33103279/* Line 1464 of yacc.c  */
    3311 #line 888 "grammar.y"
     3280#line 881 "grammar.y"
    33123281    {
    33133282            if (iiDeclCommand(&(yyval.lv),&(yyvsp[(2) - (2)].lv),myynest,(yyvsp[(1) - (2)].i),&((yyvsp[(2) - (2)].lv).req_packhdl->idroot)))
     
    33193288
    33203289/* Line 1464 of yacc.c  */
    3321 #line 893 "grammar.y"
     3290#line 886 "grammar.y"
    33223291    {
    33233292            if (iiDeclCommand(&(yyval.lv),&(yyvsp[(2) - (2)].lv),myynest,(yyvsp[(1) - (2)].i),&((yyvsp[(2) - (2)].lv).req_packhdl->idroot)))
     
    33293298
    33303299/* Line 1464 of yacc.c  */
    3331 #line 898 "grammar.y"
     3300#line 891 "grammar.y"
    33323301    {
    33333302            if (iiDeclCommand(&(yyval.lv),&(yyvsp[(2) - (2)].lv),myynest,(yyvsp[(1) - (2)].i),&(currRing->idroot), TRUE)) YYERROR;
     
    33383307
    33393308/* Line 1464 of yacc.c  */
    3340 #line 902 "grammar.y"
     3309#line 895 "grammar.y"
    33413310    {
    33423311            if (iiDeclCommand(&(yyval.lv),&(yyvsp[(2) - (2)].lv),myynest,(yyvsp[(1) - (2)].i),&(currRing->idroot), TRUE)) YYERROR;
     
    33473316
    33483317/* Line 1464 of yacc.c  */
    3349 #line 906 "grammar.y"
     3318#line 899 "grammar.y"
    33503319    {
    33513320            int r; TESTSETINT((yyvsp[(4) - (8)].lv),r);
     
    33623331              if (IDMATRIX(h)==NULL) YYERROR;
    33633332            }
    3364             else if ((yyvsp[(1) - (8)].i) == INTMAT_CMD)
     3333            else if (((yyvsp[(1) - (8)].i) == INTMAT_CMD)||((yyvsp[(1) - (8)].i) == BIGINTMAT_CMD))
    33653334            {
    33663335              if (iiDeclCommand(&(yyval.lv),&(yyvsp[(2) - (8)].lv),myynest,(yyvsp[(1) - (8)].i),&((yyvsp[(2) - (8)].lv).req_packhdl->idroot)))
     
    33683337              v=&(yyval.lv);
    33693338              h=(idhdl)v->data;
    3370               delete IDINTVEC(h);
    3371               IDINTVEC(h) = new intvec(r,c,0);
     3339              if ((yyvsp[(1) - (8)].i)==INTMAT_CMD)
     3340              {
     3341                delete IDINTVEC(h);
     3342                IDINTVEC(h) = new intvec(r,c,0);
     3343              }
     3344              else
     3345              {
     3346                delete IDBIMAT(h);
     3347                IDBIMAT(h) = new bigintmat(r, c, coeffs_BIGINT);
     3348              }
    33723349              if (IDINTVEC(h)==NULL) YYERROR;
    33733350            }
    3374             else /* BIGINTMAT_CMD */
    3375             {
    3376               if (iiDeclCommand(&(yyval.lv),&(yyvsp[(2) - (8)].lv),myynest,(yyvsp[(1) - (8)].i),&((yyvsp[(2) - (8)].lv).req_packhdl->idroot)))
    3377                 YYERROR;
    3378               v=&(yyval.lv);
    3379               h=(idhdl)v->data;
    3380               delete IDBIMAT(h);
    3381               IDBIMAT(h) = new bigintmat(r, c, coeffs_BIGINT);
    3382               if (IDBIMAT(h)==NULL) YYERROR;
    3383             }
    33843351          ;}
    33853352    break;
     
    33883355
    33893356/* Line 1464 of yacc.c  */
    3390 #line 942 "grammar.y"
     3357#line 933 "grammar.y"
    33913358    {
    33923359            if ((yyvsp[(1) - (2)].i) == MATRIX_CMD)
     
    33943361              if (iiDeclCommand(&(yyval.lv),&(yyvsp[(2) - (2)].lv),myynest,(yyvsp[(1) - (2)].i),&(currRing->idroot), TRUE)) YYERROR;
    33953362            }
    3396             else if ((yyvsp[(1) - (2)].i) == INTMAT_CMD)
     3363            else if (((yyvsp[(1) - (2)].i) == INTMAT_CMD)||((yyvsp[(1) - (2)].i) == BIGINTMAT_CMD))
    33973364            {
    33983365              if (iiDeclCommand(&(yyval.lv),&(yyvsp[(2) - (2)].lv),myynest,(yyvsp[(1) - (2)].i),&((yyvsp[(2) - (2)].lv).req_packhdl->idroot)))
    33993366                YYERROR;
    3400               leftv v=&(yyval.lv);
    3401               idhdl h;
    3402               do
     3367              if ((yyvsp[(1) - (2)].i) == INTMAT_CMD)
    34033368              {
    3404                  h=(idhdl)v->data;
    3405                  delete IDINTVEC(h);
    3406                  IDINTVEC(h) = new intvec(1,1,0);
    3407                  v=v->next;
    3408               } while (v!=NULL);
     3369                leftv v=&(yyval.lv);
     3370                idhdl h;
     3371                do
     3372                {
     3373                  h=(idhdl)v->data;
     3374                  delete IDINTVEC(h);
     3375                  IDINTVEC(h) = new intvec(1,1,0);
     3376                  v=v->next;
     3377                } while (v!=NULL);
     3378              }
    34093379            }
    3410             else /* BIGINTMAT_CMD */
    3411             {
    3412               if (iiDeclCommand(&(yyval.lv),&(yyvsp[(2) - (2)].lv),myynest,(yyvsp[(1) - (2)].i),&((yyvsp[(2) - (2)].lv).req_packhdl->idroot)))
    3413                 YYERROR;
    3414             }
    34153380          ;}
    34163381    break;
     
    34193384
    34203385/* Line 1464 of yacc.c  */
    3421 #line 968 "grammar.y"
     3386#line 957 "grammar.y"
    34223387    {
    34233388            int t=(yyvsp[(1) - (3)].lv).Typ();
     
    34453410
    34463411/* Line 1464 of yacc.c  */
    3447 #line 989 "grammar.y"
     3412#line 978 "grammar.y"
    34483413    {
    34493414            if (iiDeclCommand(&(yyval.lv),&(yyvsp[(2) - (2)].lv),myynest,(yyvsp[(1) - (2)].i),&((yyvsp[(2) - (2)].lv).req_packhdl->idroot)))
     
    34553420
    34563421/* Line 1464 of yacc.c  */
    3457 #line 1002 "grammar.y"
     3422#line 991 "grammar.y"
    34583423    {
    34593424            leftv v = &(yyvsp[(2) - (5)].lv);
     
    34713436
    34723437/* Line 1464 of yacc.c  */
    3473 #line 1016 "grammar.y"
     3438#line 1005 "grammar.y"
    34743439    {
    34753440          // let rInit take care of any errors
     
    34813446
    34823447/* Line 1464 of yacc.c  */
    3483 #line 1024 "grammar.y"
     3448#line 1013 "grammar.y"
    34843449    {
    34853450            memset(&(yyval.lv),0,sizeof((yyval.lv)));
     
    34953460
    34963461/* Line 1464 of yacc.c  */
    3497 #line 1033 "grammar.y"
     3462#line 1022 "grammar.y"
    34983463    {
    34993464            memset(&(yyval.lv),0,sizeof((yyval.lv)));
     
    35423507
    35433508/* Line 1464 of yacc.c  */
    3544 #line 1079 "grammar.y"
     3509#line 1068 "grammar.y"
    35453510    {
    35463511            (yyval.lv) = (yyvsp[(1) - (3)].lv);
     
    35533518
    35543519/* Line 1464 of yacc.c  */
    3555 #line 1089 "grammar.y"
     3520#line 1078 "grammar.y"
    35563521    {
    35573522            (yyval.lv) = (yyvsp[(2) - (3)].lv);
     
    35623527
    35633528/* Line 1464 of yacc.c  */
    3564 #line 1095 "grammar.y"
     3529#line 1084 "grammar.y"
    35653530    {
    35663531            expected_parms = TRUE;
     
    35683533    break;
    35693534
    3570   case 124:
    3571 
    3572 /* Line 1464 of yacc.c  */
    3573 #line 1102 "grammar.y"
    3574     { (yyval.i) = (yyvsp[(1) - (1)].i); ;}
    3575     break;
    3576 
    3577   case 125:
    3578 
    3579 /* Line 1464 of yacc.c  */
    3580 #line 1104 "grammar.y"
    3581     { (yyval.i) = (yyvsp[(1) - (1)].i); ;}
    3582     break;
    3583 
    3584   case 126:
     3535  case 127:
     3536
     3537/* Line 1464 of yacc.c  */
     3538#line 1101 "grammar.y"
     3539    { newFile((yyvsp[(2) - (2)].name)); omFree((yyvsp[(2) - (2)].name)); ;}
     3540    break;
     3541
     3542  case 128:
    35853543
    35863544/* Line 1464 of yacc.c  */
    35873545#line 1106 "grammar.y"
    3588     { (yyval.i) = (yyvsp[(1) - (1)].i); ;}
    3589     break;
    3590 
    3591   case 127:
    3592 
    3593 /* Line 1464 of yacc.c  */
    3594 #line 1115 "grammar.y"
    3595     { newFile((yyvsp[(2) - (2)].name)); omFree((yyvsp[(2) - (2)].name)); ;}
    3596     break;
    3597 
    3598   case 128:
    3599 
    3600 /* Line 1464 of yacc.c  */
    3601 #line 1120 "grammar.y"
    36023546    {
    36033547            feHelp((yyvsp[(2) - (3)].name));
     
    36093553
    36103554/* Line 1464 of yacc.c  */
    3611 #line 1125 "grammar.y"
     3555#line 1111 "grammar.y"
    36123556    {
    36133557            feHelp(NULL);
     
    36183562
    36193563/* Line 1464 of yacc.c  */
    3620 #line 1132 "grammar.y"
     3564#line 1118 "grammar.y"
    36213565    {
    36223566            singular_example((yyvsp[(2) - (3)].name));
     
    36283572
    36293573/* Line 1464 of yacc.c  */
    3630 #line 1140 "grammar.y"
     3574#line 1126 "grammar.y"
    36313575    {
    36323576          if (basePack!=(yyvsp[(2) - (2)].lv).req_packhdl)
     
    36423586
    36433587/* Line 1464 of yacc.c  */
    3644 #line 1152 "grammar.y"
     3588#line 1138 "grammar.y"
    36453589    {
    36463590          leftv v=&(yyvsp[(2) - (2)].lv);
     
    36643608
    36653609/* Line 1464 of yacc.c  */
    3666 #line 1169 "grammar.y"
     3610#line 1155 "grammar.y"
    36673611    {
    36683612          leftv v=&(yyvsp[(3) - (3)].lv);
     
    36863630
    36873631/* Line 1464 of yacc.c  */
    3688 #line 1189 "grammar.y"
     3632#line 1175 "grammar.y"
    36893633    {
    36903634            list_cmd((yyvsp[(3) - (4)].i),NULL,"// ",TRUE);
     
    36953639
    36963640/* Line 1464 of yacc.c  */
    3697 #line 1193 "grammar.y"
     3641#line 1179 "grammar.y"
    36983642    {
    36993643            list_cmd((yyvsp[(3) - (4)].i),NULL,"// ",TRUE);
     
    37043648
    37053649/* Line 1464 of yacc.c  */
    3706 #line 1197 "grammar.y"
     3650#line 1183 "grammar.y"
    37073651    {
    37083652            if ((yyvsp[(3) - (4)].i)==QRING_CMD) (yyvsp[(3) - (4)].i)=RING_CMD;
     
    37143658
    37153659/* Line 1464 of yacc.c  */
    3716 #line 1202 "grammar.y"
     3660#line 1188 "grammar.y"
    37173661    {
    37183662            list_cmd((yyvsp[(3) - (4)].i),NULL,"// ",TRUE);
     
    37233667
    37243668/* Line 1464 of yacc.c  */
    3725 #line 1206 "grammar.y"
     3669#line 1192 "grammar.y"
    37263670    {
    37273671            list_cmd(RING_CMD,NULL,"// ",TRUE);
     
    37323676
    37333677/* Line 1464 of yacc.c  */
    3734 #line 1210 "grammar.y"
     3678#line 1196 "grammar.y"
    37353679    {
    37363680            list_cmd((yyvsp[(3) - (4)].i),NULL,"// ",TRUE);
     
    37413685
    37423686/* Line 1464 of yacc.c  */
    3743 #line 1214 "grammar.y"
     3687#line 1200 "grammar.y"
    37443688    {
    37453689            list_cmd(PROC_CMD,NULL,"// ",TRUE);
     
    37503694
    37513695/* Line 1464 of yacc.c  */
    3752 #line 1218 "grammar.y"
     3696#line 1204 "grammar.y"
    37533697    {
    37543698            list_cmd(0,(yyvsp[(3) - (4)].lv).Fullname(),"// ",TRUE);
     
    37603704
    37613705/* Line 1464 of yacc.c  */
    3762 #line 1223 "grammar.y"
     3706#line 1209 "grammar.y"
    37633707    {
    37643708            if((yyvsp[(3) - (6)].lv).Typ() == PACKAGE_CMD)
     
    37713715
    37723716/* Line 1464 of yacc.c  */
    3773 #line 1229 "grammar.y"
     3717#line 1215 "grammar.y"
    37743718    {
    37753719            if((yyvsp[(3) - (6)].lv).Typ() == PACKAGE_CMD)
     
    37823726
    37833727/* Line 1464 of yacc.c  */
    3784 #line 1235 "grammar.y"
     3728#line 1221 "grammar.y"
    37853729    {
    37863730            if((yyvsp[(3) - (6)].lv).Typ() == PACKAGE_CMD)
     
    37933737
    37943738/* Line 1464 of yacc.c  */
    3795 #line 1241 "grammar.y"
     3739#line 1227 "grammar.y"
    37963740    {
    37973741            if((yyvsp[(3) - (6)].lv).Typ() == PACKAGE_CMD)
     
    38043748
    38053749/* Line 1464 of yacc.c  */
    3806 #line 1247 "grammar.y"
     3750#line 1233 "grammar.y"
    38073751    {
    38083752            if((yyvsp[(3) - (6)].lv).Typ() == PACKAGE_CMD)
     
    38153759
    38163760/* Line 1464 of yacc.c  */
    3817 #line 1253 "grammar.y"
     3761#line 1239 "grammar.y"
    38183762    {
    38193763            if((yyvsp[(3) - (6)].lv).Typ() == PACKAGE_CMD)
     
    38263770
    38273771/* Line 1464 of yacc.c  */
    3828 #line 1259 "grammar.y"
     3772#line 1245 "grammar.y"
    38293773    {
    38303774            if((yyvsp[(3) - (6)].lv).Typ() == PACKAGE_CMD)
     
    38373781
    38383782/* Line 1464 of yacc.c  */
    3839 #line 1271 "grammar.y"
     3783#line 1257 "grammar.y"
    38403784    {
    38413785            list_cmd(-1,NULL,"// ",TRUE);
     
    38463790
    38473791/* Line 1464 of yacc.c  */
    3848 #line 1277 "grammar.y"
     3792#line 1263 "grammar.y"
    38493793    { yyInRingConstruction = TRUE; ;}
    38503794    break;
     
    38533797
    38543798/* Line 1464 of yacc.c  */
    3855 #line 1286 "grammar.y"
     3799#line 1272 "grammar.y"
    38563800    {
    38573801            const char *ring_name = (yyvsp[(2) - (8)].lv).name;
     
    38913835
    38923836/* Line 1464 of yacc.c  */
    3893 #line 1319 "grammar.y"
     3837#line 1305 "grammar.y"
    38943838    {
    38953839            const char *ring_name = (yyvsp[(2) - (2)].lv).name;
     
    39033847
    39043848/* Line 1464 of yacc.c  */
    3905 #line 1326 "grammar.y"
     3849#line 1312 "grammar.y"
    39063850    {
    39073851            yyInRingConstruction = FALSE;
     
    39133857
    39143858/* Line 1464 of yacc.c  */
    3915 #line 1331 "grammar.y"
     3859#line 1317 "grammar.y"
    39163860    {
    39173861          yyInRingConstruction = FALSE;
     
    39283872
    39293873/* Line 1464 of yacc.c  */
    3930 #line 1344 "grammar.y"
     3874#line 1330 "grammar.y"
    39313875    {
    39323876            if (((yyvsp[(1) - (2)].i)!=LIB_CMD)||(jjLOAD((yyvsp[(2) - (2)].name),TRUE))) YYERROR;
    3933             omFree((yyvsp[(2) - (2)].name));
     3877            omFree((yyvsp[(2) - (2)].name));
    39343878          ;}
    39353879    break;
     
    39383882
    39393883/* Line 1464 of yacc.c  */
    3940 #line 1354 "grammar.y"
     3884#line 1340 "grammar.y"
    39413885    {
    39423886            if (((yyvsp[(1) - (2)].i)==KEEPRING_CMD) && (myynest==0))
     
    40083952
    40093953/* Line 1464 of yacc.c  */
    4010 #line 1422 "grammar.y"
     3954#line 1408 "grammar.y"
    40113955    {
    40123956            type_cmd(&((yyvsp[(2) - (2)].lv)));
     
    40173961
    40183962/* Line 1464 of yacc.c  */
    4019 #line 1426 "grammar.y"
     3963#line 1412 "grammar.y"
    40203964    {
    40213965            //Print("typ is %d, rtyp:%d\n",$1.Typ(),$1.rtyp);
     
    40453989
    40463990/* Line 1464 of yacc.c  */
    4047 #line 1455 "grammar.y"
     3991#line 1441 "grammar.y"
    40483992    {
    40493993            int i; TESTSETINT((yyvsp[(3) - (5)].lv),i);
     
    40634007
    40644008/* Line 1464 of yacc.c  */
    4065 #line 1468 "grammar.y"
     4009#line 1454 "grammar.y"
    40664010    {
    40674011            if (currentVoice->ifsw==1)
     
    40854029
    40864030/* Line 1464 of yacc.c  */
    4087 #line 1485 "grammar.y"
     4031#line 1471 "grammar.y"
    40884032    {
    40894033            int i; TESTSETINT((yyvsp[(3) - (5)].lv),i);
     
    40994043
    41004044/* Line 1464 of yacc.c  */
    4101 #line 1494 "grammar.y"
     4045#line 1480 "grammar.y"
    41024046    {
    41034047            if (exitBuffer(BT_break)) YYERROR;
     
    41094053
    41104054/* Line 1464 of yacc.c  */
    4111 #line 1499 "grammar.y"
     4055#line 1485 "grammar.y"
    41124056    {
    41134057            if (contBuffer(BT_break)) YYERROR;
     
    41194063
    41204064/* Line 1464 of yacc.c  */
    4121 #line 1507 "grammar.y"
     4065#line 1493 "grammar.y"
    41224066    {
    41234067            /* -> if(!$2) break; $3; continue;*/
     
    41334077
    41344078/* Line 1464 of yacc.c  */
    4135 #line 1519 "grammar.y"
     4079#line 1505 "grammar.y"
    41364080    {
    41374081            /* $2 */
     
    41544098
    41554099/* Line 1464 of yacc.c  */
    4156 #line 1538 "grammar.y"
     4100#line 1524 "grammar.y"
    41574101    {
    41584102            idhdl h = enterid((yyvsp[(2) - (3)].name),myynest,PROC_CMD,&IDROOT,TRUE);
     
    41694113
    41704114/* Line 1464 of yacc.c  */
    4171 #line 1548 "grammar.y"
     4115#line 1534 "grammar.y"
    41724116    {
    41734117            idhdl h = enterid((yyvsp[(1) - (3)].name),myynest,PROC_CMD,&IDROOT,TRUE);
     
    41934137
    41944138/* Line 1464 of yacc.c  */
    4195 #line 1567 "grammar.y"
     4139#line 1553 "grammar.y"
    41964140    {
    41974141            omFree((ADDRESS)(yyvsp[(3) - (4)].name));
     
    42184162
    42194163/* Line 1464 of yacc.c  */
    4220 #line 1590 "grammar.y"
     4164#line 1576 "grammar.y"
    42214165    {
    42224166            // decl. of type proc p(int i)
     
    42294173
    42304174/* Line 1464 of yacc.c  */
    4231 #line 1596 "grammar.y"
     4175#line 1582 "grammar.y"
    42324176    {
    42334177            // decl. of type proc p(i)
     
    42434187
    42444188/* Line 1464 of yacc.c  */
    4245 #line 1608 "grammar.y"
     4189#line 1594 "grammar.y"
    42464190    {
    42474191            iiRETURNEXPR.Copy(&(yyvsp[(3) - (4)].lv));
     
    42544198
    42554199/* Line 1464 of yacc.c  */
    4256 #line 1614 "grammar.y"
     4200#line 1600 "grammar.y"
    42574201    {
    42584202            if ((yyvsp[(1) - (3)].i)==RETURN)
     
    42684212
    42694213/* Line 1464 of yacc.c  */
    4270 #line 4269 "grammar.cc"
     4214#line 4213 "grammar.cc"
    42714215      default: break;
    42724216    }
  • Singular/grammar.y

    ra718906 raa7c1c2  
    654654          {
    655655            if (iiARROW(&$$,$1,$3)) YYERROR;
    656             omFree((ADDRESS)$3)
     656            omFree((ADDRESS)$3);
    657657          }
    658658        | '(' exprlist ')'    { $$ = $2; }
     
    672672          }
    673673        | expr
    674           {
    675             $$ = $1;
    676           }
    677674        ;
    678675
    679676expr:   expr_arithmetic
    680           {
    681             /*if ($1.typ == eunknown) YYERROR;*/
    682             $$ = $1;
    683           }
    684         | elemexpr       { $$ = $1; }
     677        | elemexpr
    685678        | expr '[' expr ',' expr ']'
    686679          {
     
    852845
    853846left_value:
    854         declare_ip_variable cmdeq  { $$ = $1; }
    855         | exprlist '='
     847        declare_ip_variable cmdeq
     848        | exprlist cmdeq
    856849          {
    857850            if ($1.rtyp==0)
     
    918911              if (IDMATRIX(h)==NULL) YYERROR;
    919912            }
    920             else if ($1 == INTMAT_CMD)
     913            else if (($1 == INTMAT_CMD)||($1 == BIGINTMAT_CMD))
    921914            {
    922915              if (iiDeclCommand(&$$,&$2,myynest,$1,&($2.req_packhdl->idroot)))
     
    924917              v=&$$;
    925918              h=(idhdl)v->data;
    926               delete IDINTVEC(h);
    927               IDINTVEC(h) = new intvec(r,c,0);
     919              if ($1==INTMAT_CMD)
     920              {
     921                delete IDINTVEC(h);
     922                IDINTVEC(h) = new intvec(r,c,0);
     923              }
     924              else
     925              {
     926                delete IDBIMAT(h);
     927                IDBIMAT(h) = new bigintmat(r, c, coeffs_BIGINT);
     928              }
    928929              if (IDINTVEC(h)==NULL) YYERROR;
    929930            }
    930             else /* BIGINTMAT_CMD */
     931          }
     932        | mat_cmd elemexpr
     933          {
     934            if ($1 == MATRIX_CMD)
     935            {
     936              if (iiDeclCommand(&$$,&$2,myynest,$1,&(currRing->idroot), TRUE)) YYERROR;
     937            }
     938            else if (($1 == INTMAT_CMD)||($1 == BIGINTMAT_CMD))
    931939            {
    932940              if (iiDeclCommand(&$$,&$2,myynest,$1,&($2.req_packhdl->idroot)))
    933941                YYERROR;
    934               v=&$$;
    935               h=(idhdl)v->data;
    936               delete IDBIMAT(h);
    937               IDBIMAT(h) = new bigintmat(r, c, coeffs_BIGINT);
    938               if (IDBIMAT(h)==NULL) YYERROR;
    939             }
    940           }
    941         | mat_cmd elemexpr
    942           {
    943             if ($1 == MATRIX_CMD)
    944             {
    945               if (iiDeclCommand(&$$,&$2,myynest,$1,&(currRing->idroot), TRUE)) YYERROR;
    946             }
    947             else if ($1 == INTMAT_CMD)
    948             {
    949               if (iiDeclCommand(&$$,&$2,myynest,$1,&($2.req_packhdl->idroot)))
    950                 YYERROR;
    951               leftv v=&$$;
    952               idhdl h;
    953               do
     942              if ($1 == INTMAT_CMD)
    954943              {
    955                  h=(idhdl)v->data;
    956                  delete IDINTVEC(h);
    957                  IDINTVEC(h) = new intvec(1,1,0);
    958                  v=v->next;
    959               } while (v!=NULL);
    960             }
    961             else /* BIGINTMAT_CMD */
    962             {
    963               if (iiDeclCommand(&$$,&$2,myynest,$1,&($2.req_packhdl->idroot)))
    964                 YYERROR;
     944                leftv v=&$$;
     945                idhdl h;
     946                do
     947                {
     948                  h=(idhdl)v->data;
     949                  delete IDINTVEC(h);
     950                  IDINTVEC(h) = new intvec(1,1,0);
     951                  v=v->next;
     952                } while (v!=NULL);
     953              }
    965954            }
    966955          }
     
    11001089
    11011090mat_cmd: MATRIX_CMD
    1102             { $$ = $1; }
    11031091        | INTMAT_CMD
    1104             { $$ = $1; }
    11051092        | BIGINTMAT_CMD
    1106             { $$ = $1; }
    11071093          ;
    11081094
     
    13441330          {
    13451331            if (($1!=LIB_CMD)||(jjLOAD($2,TRUE))) YYERROR;
    1346             omFree($2);
     1332            omFree($2);
    13471333          }
    13481334        ;
  • Singular/iparith.cc

    ra718906 raa7c1c2  
    14691469static BOOLEAN jjINDEX_V(leftv res, leftv u, leftv v)
    14701470{
    1471   poly p=(poly)u->CopyD(VECTOR_CMD);
    1472   poly r=p; // pointer to the beginning of component i
    1473   poly o=NULL;
     1471  poly p=(poly)u->Data();
    14741472  int i=(int)(long)v->Data();
    1475   while (p!=NULL)
    1476   {
    1477     if (pGetComp(p)!=i)
    1478     {
    1479       if (r==p) r=pNext(p);
    1480       if (o!=NULL)
    1481       {
    1482         if (pNext(o)!=NULL) pLmDelete(&pNext(o));
    1483         p=pNext(o);
    1484       }
    1485       else
    1486         pLmDelete(&p);
    1487     }
    1488     else
    1489     {
    1490       pSetComp(p, 0);
    1491       p_SetmComp(p, currRing);
    1492       o=p;
    1493       p=pNext(o);
    1494     }
    1495   }
    1496   res->data=(char *)r;
     1473  res->data=(char *)p_Vec2Poly(p,i,currRing);
    14971474  return FALSE;
    14981475}
     
    62676244  }
    62686245  return FALSE;
     6246}
     6247static BOOLEAN jjSUBST_Bu(leftv res, leftv u, leftv v,leftv w)
     6248{
     6249  // generic conversion from polyBucket to poly:
     6250  // force this to be the first try everytime
     6251  poly p; int l;
     6252  sBucket_pt bu=(sBucket_pt)w->CopyD();
     6253  sBucketDestroyAdd(bu,&p,&l);
     6254  sleftv tmpw;
     6255  tmpw.Init();
     6256  tmpw.rtyp=POLY_CMD;
     6257  tmpw.data=p;
     6258  return iiExprArith3(res, iiOp, u, v, &tmpw);
    62696259}
    62706260static BOOLEAN jjSUBST_P(leftv res, leftv u, leftv v,leftv w)
  • Singular/misc_ip.cc

    ra718906 raa7c1c2  
    807807#endif
    808808#ifdef HAVE_NTL
    809 #include <NTL/version.h>
    810809              StringAppend("NTL(%s),",NTL_VERSION);
    811810#endif
  • Singular/table.h

    ra718906 raa7c1c2  
    851851,{D(jjSTD_HILB_W),     STD_CMD,    IDEAL_CMD,  IDEAL_CMD,  INTVEC_CMD, INTVEC_CMD, ALLOW_PLURAL |NO_RING}
    852852,{D(jjSTD_HILB_W),     STD_CMD,    MODUL_CMD,  MODUL_CMD,  INTVEC_CMD, INTVEC_CMD, ALLOW_PLURAL |NO_RING}
     853,{D(jjSUBST_Bu),       SUBST_CMD,  ANY_TYPE,   DEF_CMD,    POLY_CMD,   BUCKET_CMD , ALLOW_PLURAL |ALLOW_RING}
    853854,{D(jjSUBST_P),        SUBST_CMD,  POLY_CMD,   POLY_CMD,   POLY_CMD,   POLY_CMD , ALLOW_PLURAL |ALLOW_RING}
    854855,{D(jjSUBST_P),        SUBST_CMD,  VECTOR_CMD, VECTOR_CMD, POLY_CMD,   POLY_CMD , ALLOW_PLURAL |ALLOW_RING}
  • Tst/New/stdZtests.res.gz.uu

    ra718906 raa7c1c2  
    11begin 640 stdZtests.res.gz
    2 M'XL("&XP/%@``W-T9%IT97-T<RYR97,`[%QM<QLY<O[N7S&U]X728"2\`W-;
    3 M=BIWFTO)M96*U_OI4NLMV:)EVK+D%>DSJ5\?O'0#C1F2DI/+MU39(F<`/`"Z
    4 MGVXT0`"O?_WIXC^ZKA,ONI\O_M+]L%EOSFY6;W_X\=EK2)$ONO#R]]7M:K,X
    5 M^?%9_.Q>O.C6FZN_;Y;KS?KL=OGM;+VYW)02ZD57ONNSC/OE?O7Y:OEN@FU(
    6 M3GO6G9^_7MU>?[VYO.]^O;]\U_W)*EO2W5G-Z\^Z^Y"SNW^^NMTLKY?W;+%A
    7 ME^PM>\>NV)*]9]?L`UNQCR?LVWHAV'#LWTEMSOBB6UTM+V^ZU>W%<WPK^%FG
    8 M6'D29]WUAUZ^7_7+C_6M/.NNPMMWJ_XM>:O"V_?A[75_2=X&D5PM>_DVO%W5
    9 MM^:L>Q??ON\O/Y06"?NBNUE>7BV"M!>A42>AL;__E_CM^;ME^)2_/;^*GRI\
    10 MO@^?.GQ^")_FM^?7\=/^]EP5)/>B^[2ZN>GN*[BOTA=CE/Z_KS8?OK[M_O5J
    11 MU?U)C9@F>96\%"CY\/]YMP#QG[#%ENW80_B\62_4"?MKE:J4*-67H<0@MP^J
    12 MW\K=`U,/X6$WJ.U.ULP*,U_'W+';+PF4?M']\/=OR]5F^>?`(OA64DTI6PI?
    13 MT](HS/@R?TG)2:#J(0LTM"Y+-#919J':K=K)IV;#RH*\[Y=77]\M%R]9K8;G
    14 MXKQD\ZB6V^O:T+$J1O&98DH=2E3%*/F(8JZ^%'Q5A'R1-&).MV]4+[@^W9[N
    15 MWJA!JO`A3Q\&(7TMI!LU"N%S[M.'WO#T-91X(X?\$`KK\73'1/A;TX26\7LH
    16 M7#6NJM9B:Y+6+JK2E&T(,66$*F+N%A<L(%1!8PY?<T1-=(=4H<8]JM"\JD(3
    17 M<>L@[KLOF]7=[2*`O_Y+;9$FWD]K4L(\9CE77R:6HVVK)W>Z[8.R'MB@;9#J
    18 M0Z^"YI@4I]M!5X%J=U2@VE<K*>G7-,-X4*0@L$3\(C?#]\C-B"H%(V<4+F[)
    19 MJ"HAHY].81-8LU_^QM*47R]7-R3--0(UB92[^)=UP002;<-#+U@'E.VC;<B8
    20 M4$'\4?F:\1'Y6HYNZ`(EN\N2E68KLW"%-,G!!*]BMLF_F)C\H+-7-]ODAUS\
    21 M%E_YZ)!TJ4!@!?]G-<CBW")#'B&(57L(8G4EB#65!-9^MYE8=X@+UA_F@ATG
    22 M7-@F-KC$@D@(ZT^1$T*..;D?/0LA0/9[X='/Z>'X47HX\0@]G)S1(U2OA1HY
    23 MYS#ZZ)%OLY"EU4)POGN8JM*$_#OY`-HTNZ3LH$[!G=\EW0:5"N&T=-PZ)90?
    24 MY2YJ>OSM^>BWNYA=\/1=YL$O-D3L$D&$3-]E`A4J/:A4L]"QR$['"D1D5"R=
    25 M'D(SPOB8OH9F;`$H\@IQ0LVA8$21/+[.B%*D05;FASCTZH?B/IR:4_W_I750
    26 M6OI[S-:9/6;K;#5;YPZ-@8Y$EF[\;H/VO#'-&$@$6],\F9QP;%`ZV:IB,7:)
    27 M!BH]L4`OCEJ@EX]8H%=S"S1R]%ID01D^CMH]9'&I7>82,FD')*J1H-=[./J_
    28 MP3/?HT5O]VC1NZH?[V>C<YES^;$ZYI&W>N3'8OY1$`V6ER$.6%A_+M5)4-DB
    29 M!(/G0H7O48$+J\^5.XFQ8K^PYMR)DQQ&!HTOQ'G(!7Z6+09Y[B`Q%!/G8\X:
    30 MQ^M:OZ+!ZD*=FX@0(J:%=N=:EP(!3?/S8.4GX-^E3%]41=(-F29<&DW+I2F5
    31 M1GML.C.ZXQ.6T1,B5@H=G,,X(9UQ5N,<1>*LY6#"]J%\8IV/1G\Y8W"C3XNK
    32 M!1=S!@HN"P,%5S,&NI)6(VC!'XN@:WPH>!'\ZG\<Z05:S!W)ZJ0F/Q))"S[N
    33 MU=\_-2+[YT=W880L#F;UJ(,18I]Z!5&OF*MW+&DZIOWG_=W;F^7G[O-JT]VL
    34 MN\NWR_ONTW)UVWTA"5=K]M.:W7P)6BZE32P=2JSO;OZQO/IS%XO<K5>W/POQ
    35 M2R3*W>VR6W^X^WISU6TN/RV[S8=E][>KY77(N-X$?71W[[LO/W_^Z^<*:2O?
    36 MQ*'Q39"5$R&JCQ22?^_JB)#44W:B=\GIA9%-Q\E>\EE"1V:R81Q$'@+CS+NR
    37 M=+*^$G-'A,IG)@+]!Y=\JY#H5L,D/'O!"J2.C9M"ZD?H3M9?]DS5A;2MMYNZ
    38 M.R$/S^7W,D\^<68O)(;ZZW_[X^OE36@TN\[P`K,H/LD2`#-BS;*/Z(H071TA
    39 MNDI$#ZW=A$E(]^%RTP'IE[?=M^7M;??Y\K9;?6[IFZG9W:X^?]YT<85UT_WM
    40 MI^5UP:S3)J$(;Y7[;A:J.E'Z`69*/Y#4\<`$2^@V4@O<RT-V(!OPBPW"Y$]_
    41 M2CQMXJ5!)IJ<%(D-650F+V&G/AK5A6#B$7;&=9DGA$W)9Q;F:/TH<[293^=S
    42 M]!T\KH!910SL>)Y(!'AETKAK8MB>';)+CCM&^C&,1^0]H9O0-703VE>EZ]D"
    43 MKBZ],'4!5YCO7L`-L6JK9%C@8R(OZ@6]@M,!3Y42@[_9O=%]>M&/^75%5*W+
    44 MBEXOSJ@C61)(^E-\5Z833U68B=,R^B@MS%P[0J)Z7)K"J3*1TG'"M]V!;N0V
    45 MZS&H1X>WJ*`=#)C"\JW*,\"0G%0;9X!Z"U.[4),/[W<P`0QY]`[F?W)KJI;C
    46 M>M63PWE15[#V^ECCR1(W=+>DC<=7I-N*[)Y5/6'KJIZPCRTXSXEDFW5GEY<P
    47 M8=TECG!A5M?;'(83LMAFX=GD6*Y7;<0O[-%E9&'MC`<E&@8#%3I8(V9WQY6"
    48 MV?Q1;=AQI@V#:8X?T`:F[QMM'!EMW&RTD25J=B1J=@>CYMU"G)WI$[:-G^JD
    49 MB9\=67J.<4E0R").U1;ZI!=A/KX0)T%5\9&%B`*3!IE3',M?4J$^?HON('ZW
    50 MS&%V=3+8]'VP^4FQF#,&Y=(VU5FHC^<*H;R()0I6SJLX>=`^EXO#2TIDZ0TD
    51 MQ[4^BZT,J5+#ZUY:Z!EDCZZKX)5629)'T#8D($`=`D5JTN!U*=0V/#:E=HMB
    52 M1KAMQ;8@,JBD1_S>:S9@*K205MUCU22/JGF",*3TH(TLP\%)II2=-C2D5G6'
    53 M\9'V`412VA&'=NMI=3IWIL>"?:ADJ(VHG:S]MT2EJ9%)1*,2")`+N=$3))4%
    54 MI!*;>"9OKRSF`.R0F-"Q*N.Q(1DVU!-&\"P-:21K.A.1Z7,11ERJRC917@VA
    55 M:CG3N:1J%IJ:$1$K\JD?/=0CD4QLD),&<2KLW`B::<ZIC%L[X7,*MO:-;%H7
    56 M::)IEZ&*2MAD5QY-Z3'K\+2?2!_XS*5IPW5IWH1O4`LT%FTC6K*A?L@U3@P5
    57 M/&ID!S0P*'H@@.&5X:2=T6^8QG$8;'`OG08SPR+%=XQMY9QFFPB(DPX'1TQ-
    58 MS&LH.!#1Q(B:ZYE',=2E-!6E)A.GXL`L!ZR[+]4&O\%98S34\K&5*,16(&QB
    59 M;`,UME(FRA.&#11:L+I@+X9(++Z!CA.C0RA/Z1QQ6X]#ZH1^5_.&2OI8X]10
    60 M8K4HFCEY^U8U?5'-S-R&QMPHI"(HT;84M&^PP-4@&L["VYGOB!F('S9T@(Z%
    61 M0%C4C`7I3N0J:52F&6F4`<ON"W(?6R);0R-M)WXK6Y[5C1-7K1>WZ,8MQX'`
    62 M@/UYJ>*84*!5\<')P1F+YLI++N+.'35X&P(A3,DRB3)0!OV$"5UJ>YY^7Y"2
    63 MNC@40'+K'/VZPY@E-(..T%FPA21,3NVR5YZ2@5JEH$8)_HE1-360;\IH.W,A
    64 M"M4T"%D+#D*IC-D4R3Z]DM6V>8JN):K6TS9K6;-/6%^[(U+X4>FE<62:]FTH
    65 M_*'#87S(E<SJ(%4TJ0U"30,[J,,9\S/]1"E5PVC-#!OB&\H,B@R[`X1,K/%*
    66 M.4E3B31,52AU3QI:2^2`I`JPU"$:+@RTS_OI)%I\@?@M5%-:D'I47TO,_9RA
    67 M,>S8Q@D-94K4/R6:+HQJR3UGH2:00Q&?LK2P(N$P&YI!+[+>-#4U[*&94?MJ
    68 M)"(9FM!B$+()B\'7-'6*:3N*`4,751NN0*4.;1EF167T40X]!"V5_,\L?":Y
    69 M2D0';8SAFJ==T9*4F,2-I)M!!+%<U3$Z1]:P$.`GHDR-;Y@*?21!2^RC<,4N
    70 M*$B<_M.921P,<MTD6Z4;;3,)W;+W!H/VDMI%*03!'K5N[&7UX]7KUT=1@EC9
    71 M#)%-OC*#GCJA#$#@2W6MUR_/42+S&$U21'#_U1QP?#VE4P[T)':6M1",@#>C
    72 MCI]$O*1VIF93$+&'%(H(NG$9A!3@-A`^!&YL+KUA'E4WRLKD)Z(9B2O(PTU1
    73 M$<="%N<;6!I[VJ#E)8B2JVF$I9&]EDU()*!8XY\AYVSZ1JE`C;*(<FS,JYVR
    74 MT1DOG<WW&%-BG-YC$X.00Z#4S%#I7&I0)3:G*HQR%I-A'P;,M"(3&^/I,%F[
    75 MY"1];/QX'BJ15UAA&1\:8XT[(Q>J%.EC=99.(7NMZ+2L3#)$TZ;>6MYT`]4_
    76 M&%BV"?5R[!&?C+'%7*C.XF1AJC-#AQ#5+'L$5)1P.WZCRB+E.5UI4;`$TR-0
    77 MGUHV,SH4`#9L$D`W01B=B!KPS#6<[K&1O>1Q,M7(,/T:625:R!\2J,)L"?2E
    78 MR13I1]X.*(5:<T<_[JE"D.=F@D.M((3S=8;A89Y@))`TS%TF*LT_<-7GOI%]
    79 M#$X:DU.6SE\R8?#=$/LWB^`QOB'^_VD^6,\,A[AQ^A0@Q30TZ:F=!<Y1AU1S
    80 MQ:%FW.=.Z_I/,W6/\3$XB%3IU"N6W(6"C9<TS5)PG=C.XK,TV^%MNSPZ;]8$
    81 MM]#;\:`?+=-_T4H$:V^"4B!]VXO8:S=;_&H6MF,#%?6C9<D#QF2(Y":2:3.W
    82 MC.CWB#='=Y43S;@S"7N!KVX6V==HL3Y//(G%'#V-[LK,ODPOZ8B3)8I/(U@>
    83 MA'T*WB1:1R\PXVMV7FW,(QQ5F:)D"M;'@=1[/,H47YU,.@(+`$T14EL9!8K,
    84 ML!LQH\>%-2U]\0IL$M7F-CO3:ETU(I..#@Q&[QL82@N4:\):.D:4&;0@K._+
    85 M"M3IK@X>=&:PK9X^:BH+M"S'[+/)<:JU9HHF]@A@4J3\3D2H0F<XL*AA)_4P
    86 M2ZV;-;:>?F&<-JOU'90X;,8,.Z5_/Y+ZVU\5%%6?PLG5W!_9J?O!3*I))]/&
    87 MME%9>)->N4D[FS78TG*8J2GJ>5695$]['W^MG>BG-8N&-2G6F\#@N.EFBF[=
    88 MC"H^)<?'Q3!Y"TI9WP[-PT2J&900OOW)!(9G-C3DZ<DX4!2IZ/)ZM(CJ=:3/
    89 MGI\U38F"::*&INXTTR2^9,1YIIOU<)!\MK2$+0<OXZFT1ER-<)5/!*7X=("`
    90 M@;-*I31EJL$4@DPEDVQ^:HR-8LMODW5)9#X(-<#5,]A'&#,S3,*AYN<(+,AF
    91 M9C>,U/1;JT.UI(?Z8[FK.Q1F>X2%PST9=4O&"#L/`A)L0`EP>0/*+K^+.[]#
    92 M&PK&2/8C'-RZ`7N74FF>=Z[PO&N%YSTK/.]7X;!7A<,^%0Y[5#CL3^%P-('#
    93 ML00.)Q(X'$?@<!:!PSD$#H<0.!Q`X'#V('T"G@0\"7@2\"3@2<"3@*<`3P&>
    94 MPHX"G@(\!7@*\!3@*<!3@*<!3P.>!CR-D@,\#7@:\#3@:<#3@&<`SP">`3P#
    95 M>`95`7@&\`S@&<`S@&<!SP*>!3P+>!;P+.H6\"S@6<"S@.<`SP&>`SP'>`[P
    96 M'.`Y)`O@.<!S@.<!SP.>!SP/>![P/.!YP//(/L#S@#<"W@AX(^"-@#<"W@AX
    97 M(^"-@#<BG0N?D=`<&<V1TAPYS9'4'%G-D=8<><V1V!R1JZD@<C&68BW%7(J]
    98 M%(,I%E-,!FU&H-$(6:P0D=%N!!J.0,L1:#H";4>@\0BT'H'F(]!^A"H&CLAH
    99 M0@)M2*`1";0B@68DT(X$&I+0=+N2W[==S)/M8GYV"%36PO40J/"'#X%^8]L_
    100 MV/93W%GV92%/6/@KFOUEWC0;%</P]BD,Z379-KL.PVCX+>Y/_!37K6JF>D0T
    101 MYHK5WZ^7[S;@=S%7V?@5G/U%^-_FS2,`R]O!.E*,N/&7#(N&]//S[O2T8JW6
    102 MW>U=W/%[>W5Y?]6]O5ROUL_V[D`;ZS8R+,TN*N+%=V'MVW(VDBUGXVS+F2[;
    103 M&$>RY6Q\RE%G$?>;1342!8[-@6>9=WRZ9K_GZ*@2;=K4'C(^]);%WY^&N(07
    104 MIE[,YY2V[-&3NV(<9WL$)2\G8R3GQW<82RZ.[0:47,YV`UH+)S?L:`/^`YS>
    105 MD'A`,9_3B?N$"X@ZOHD^!'7I:HY%NY&^FYV+E]RT&?,.^GT9@U+6JX=EK.;Y
    106 M<_C:[HV7W,VI(WD])2'Y_'X)CVFB;D^6HMV>W'`G4B8%HMM%V@5H3C*3-.60
    107 M%&6W\JL`L,T1:8K98@E6L@4NP]LT:Z)).B>E<IJ\-_$]_*XN$AP<HPC?!E%;
    108 M$`3V"N+`5Z1A049_I+[]<1]27]6$0LO+U.(`)FMB.:;\,?*=Y>0D@EXF<:2G
    109 M$/07'R9E8>KERTB2/[[>;5;+V\WB\O0C^WCR8]!$]R\E<V!MR/;CL_`G'05+
    110 M%914F5D2$I$8DPQ[#G=+60]W2YD.Z:R7U^\OO]YLUN5UNN[E[E,ZVW.[_+IL
    111 MCCZ47/72%RG]0:^2F2$S/?;L/):R/>P=?S1(RQ?I,T7T)6LY"9)'B;@6(4_B
    112 M#O:<4\:%U/19)DL$I3Z^D2E3A3UZ?$&J1XXO2*6..A>E'_$+:KX1/DNA9+`S
    113 M]Y3[GCU4T^=G<**!=OP9[)^OO8>WT7U5@>![K-4]T5W%$RI/<E?[KO&0Y!H/
    114 M&:_Q2,R[O?M6WLG*,ZT>Y5FF6#-VR7)4!((/T7#LC0+NR"P&7&^,*17"4.H)
    115 MS>+]'DB['O+GXJ20/4HL<AO(?F+IHWO8I=XS*&(7,C.@IYD3M85%Q8;/SR3H
    116 M7-35'DV+JU)</)$A1CZ1(6:?RS+$91DS9XBI!ZRD.7S`ZAA#ZL4A^3H7V$P;
    117 M*<`TT2TLFLY]2+U:)/'#$I\DY*"`<5K5]Z6H/7HKA;2/W$HAK3S*$CL_,B_Q
    118 M#!3M6=:R$+1[V7&0%Y4Z5L^I@ZS;1QVPLE+</)$Z\73(DZAC]\4YEL0YMIX&
    119 ME2Y=W;2Z3<=.;Y??VL-]W^[N/ZV[]>>[N\T'UD&N\'UYGXZMQO.JZ^[]W?WR
    120 M'\O[@B@(^N'S-\=(Z-J[GY(J0@X%DH]'\(K'451U??%7S+=D-5,_YMJKHB1X
    121 M0M3Z9(B,TZ\*6!UFA3MZM$<Z^PAWW=$S4]+Y^1$Q048^RMP9;96"UN:!#IYT
    122 MP9Z?`)+H+25Q=Y@_3J.?Q%@OGLC8>-O%C+&^WE$EO9X[.U]/EDI_^$*>8SSS
    123 M[55+<0,)'<P:"M5"GA)'MBQ1/7$EM<AXE!PC/ZK[4<QU#]-BTMJ#0]LXG]*I
    124 MJEDD"F963]3MJ)^HVW'/#2URK#>TR-'-=3O60Z-R/'PW2VA_5FNSQ*+XY,"O
    125 M[%%+-8MHK-\6JP?[U_&49\TMC^E/\:-AK^)ZS_'.DFCFHX>IT:QHK5J78O9I
    126 M>E+</4U/BN^YY$_Q>LF?$K-+_K0K:=7G*X$^_Q=8;HHW7V[)N3TEZBGG;5I_
    127 M"NJ)ET9N2P9-JL5UFM<-W,VZPMG'X'!`_(6]KJ4\J6-^+AFOEU'D8DDUN5B2
    128 M=*ZV9G+3@6-A)I>&GWBKQV#[>"5A/$A:"QQGC]3?<2)6R3W6IF2U-B7=K*MC
    129 M2?.DJ]]](Y*JD]*TJ,%V#[*O-A3GEGEEX=4OLW4'%:>67^YN=FEUX:&^!G=T
    130 M68^FIFX_E`SMN5OVP+:U<!F2\PI#76+H+D]?LNYE1^JW[0*#25^:FO9$54JA
    131 MT;SZI;XC-J-G-F.*JLA-C4H?C9/R8G+KXW03(F&(WL-D#(_.A#(ZOPG3M%JV
    132 M$9KP6%BCQ\F_PJ:)(2M3P#`3R%%/7U>B59T-7OR>9+Q_+5II7)\+V<);5=[O
    133 MDZHFICF_,D#B@IXB5P:H>F4`,<S%);MJ;MD]?*^NJA<(Q'MUT_6Y*Q;OR_T8
    134 M_O8RW8X+7U:U4+7=3.G_KNY8>R.WC=_O5RA)@?/=2CF1G*&D7*Y%@A0'&\B'
    135 MX%`4_9([G[VVU?AQ6*^;71?][^7P-:3$7>]="Q0-DJPECBAR.!K.BS.4_I9;
    136 M^=,U]^O+@](Y*,H&\.K5JWCY9*[!9%X9B:2)),DLMWUL=*TWVX;^ZK<,EUJ<
    137 MJS>3S0V'0TZ9J])1?$4:6S*5IT_C[YI*>BC?26J;A<!M#=NF8R#8-P_]1$:R
    138 M`%;(9Z%(HTKGL=O(]]0\AFP>PZ81L#5"YR,;4U66FW$V#3IR?\`TNH)$K4BM
    139 M2J;1[4MEFDPBFT&'V0SZS:*K&VWFH9B@.KUW!@>E+5!=21[IAFF":-6SU4SU
    140 MUFI6Q?S<'Q\NJV\T]+&=+6BJCQ:T-#WWQJ4;2%-RF_^4^1EX!CTPJSB)J>,4
    141 M*22<A%N13E*M7T;[O1%"UXDQ)()U'HR56`/X:Z)MNL"6"&^(KYK:*N,+?@WZ
    142 M+[?QL%/+3+A)&?/*W37K5+6QT='9G>3%0A=&;,'@19.-R*KB2O.MT(5*!B_3
    143 MY^/$!U%`5#*>(MK\*0.WO4W?P%W+?*D:Y4%S5#C=/W3!3RM:]V8=$3VD?/^D
    144 M9D_G/D?GVM%_@W&485:I%M!D4VYF4UIH"*OD4ZLU=G'@Y90L$DB?[V`0Z/O"
    145 M1HID/7R[;B."_2TZ&LM@&.>/LZ\T4?C4,!=!XQ>:*'YJHOB5I&V8J'J]RT=F
    146 M16VA74H?(VPKAM_KX8"VD-=6NX7I?7I6V'@O@K19Z<AQ@/%QE63"O^1$^)_5
    147 MQQ/Y3P-80="'EK$,[1S+*K8QEJ$M8_EH0[$+L6=*MW=_=;=:&Y"VXMNY&DUF
    148 M,8-P@W9[]I\.-#"H0:W_9[>V`Z0:YE!%3Q$(."RM&H@2GD2")]'MH+)T]IQY
    149 M[/;.91=+<##DC3:#,S?+A$(K3Z.&&746/>;_=64Q9>V-+`6`%-D>.J-4^80O
    150 M#J2:):JCO?'[/[;55U^5<24+A@K=>BCI:7<C(S@6<L;N@R^(5B`Y51A,G*?%
    151 MI2`G:8$05<8'+(H;LN&T%MF&(!E23"FLQ`C4C%K+6%9S+)=Q2XJJBTHX3@(4
    152 MCHE01(0IY`$;`N_81"A=0'L!K*!9@6+-"M1<LXI,"%BS`O@/-2N`+]"L`/9I
    153 M5@"14@,&3O_N72ZCWRGA<G0\]GQT+/:4?K6O.M+Y*B2](=3S2*&`7Z"P`:?`
    154 MX_$E5`U?JBT`9`$!N_0WP,QM-B%D#,;CF-TU$HW>^N1BVF;X(S*R&Y0,P3W*
    155 M-86>GLBG'\`*CDM(')?@')=5];>'Y?/[ZL>'R]C`WDM@[R5]YSLD\RFA9;[+
    156 M>-.0>1"14F=1S"V2"IF@#>%'>\A4RHVGFS=)8#60DCO/N@RV_`#-X#[];`Z:
    157 M1YZ"[F*Y/KLZ6M5IWYD!Y[B6+'P"YY@[D=4TFS/$%',G,BS@.I4?[=38I93=
    158 M2]T+7GR)W::%9+CK'=^-C_T.S_:)T&2>_:^.:Z8O0L?Z(G1.7ZR.;R^H8M32
    159 MS8&V\NK^YM0\MMR<WGRZ7D9XUA^A4R6V:-;7ZLX^=O">,<_^1DKVK!?;Q4;6
    160 ML."-*?$@CG[AQN3QR/7'Z*2;</Q$L1YK!IM^H*Q8<^=LLH2^#3CQAKSJ=[-%
    161 M6,?O\GJ\&6]/+7ZBZ[<BW^^WU5\#T,W=^</UDA2=\>9F>3Z>KB/Z>K9X0B]W
    162 MBIWL*8`^=P3;A*M-S\W9=S#4ULJ^2-JY`$NT2[[;/C)6.=IVK_D2R%'HN.C[
    163 M:(%OI$N(2DJ;89PZPA8,%]`G&!X\AM.M5T<A8$B0-)21E`E$G$6^^N47,KR#
    164 M58"X'3*[NX'AIBP4&81+1B*XW6#'+^?]]M'RN.UCE3(Y"G3]9#I?'Q$`&7;U
    165 MIF[K2AO:?F8ZK+I-O3$R5(1/<%.SS1P&1@^V)?2TL971@^TN]#`%83M##\N"
    166 MV.[$#;89;MCBC>TD0)L;<@]^SGB1\[#OI31L><]_:YG[XO(D-I(6ECSW_J0F
    167 M*)(A72B<K]5@?XDK.FXHU,:QW&[C)"`!F]BC*"X()KG1T>5&SQ<$A]C*,=4H
    168 M<,='33R1:1;%I&:4+9TA1.U2\RZ0$ZNBR$*IZ?,W3*`>YH'3*`[$L!CFW[)!
    169 MN_8%!Z@.BNJDOS)8[,'_#59`VOHH"GM;>82*83#BB^JUT`/V+J&N$3&586!M
    170 MU_:=,"JD=K<I*Z_J6QP&V75=JY3R\(/AZ$,/_HK.<TB4_H+8C>J4Z%"W0@KS
    171 MK^PY;:^2O:+K9^YDE!%CH96=,AM"VX:J<&;P73]T0POACIN#R_>KB9UAUZ)"
    172 MLP_)>+\C@Y1"<T=*:$-V8#.%AHK,F,&$6P-U(`T2[24=&>E[-$JJ$&J@=T(L
    173 M#8*23P,0!3NQZ3")X7]Q6BR,6LQ&??)_,.J"&P`E!]:@A,*WW<=6#K%!N3?$
    174 MIN"B1%+MYZHZRG[.D8]$\MBPDRGG6G["E)78P915'KF1R^@XB5>>L&SV+>]G
    175 M*-;/G'-ER[9?[&+++K3*<N809X4ASC1PZ)=)V#.J@N4$%>N8J/K",NK8RO%^
    176 M"/NJ/Q1BI!"RV@]-WUA>[5/?USZXIIDD3T?8&S&#,`_%]-&VS"?@($,H0L'`
    177 MA\`&/L/0/C>2`2$/@J5CW2[EORM004;XA:QM<O`MI9LS@H[`4*Z'\K)2.3;!
    178 MW>T-_T)L/R.Y.J)7-WVE`I>;O/:RL7GO$.[752@7-]"`%DDB<B1=OCR6PPH0
    179 M!&@HX!ZY7BZB/4"1DZ6(C7QN`O'I<Q,QTFL:[X4X.3BA%])YF!KI8Y15+;5-
    180 MXD.QFRKG-SH[2P&PD$G<'T/M=1S@_M!C+(4>!VUV&H.'A8!B@-CHPX63CERR
    181 M0@J%'7S4!H1HU]D[C*8"$B'S[!F-J>U"B&AC19GPO'M&4YJAW(FG1=OY7F"A
    182 ME18AP!;SJ3Q1-R"`[:I#&]H+*A7J1&?HGJQI\Y,EFI^FW(W<Z<6J(=CE<5SD
    183 M/GQL-I0&X'&QM6)H4H$+N[U!7-C-E]2OS6,$P:E'H]J!K:ZT&W3);M`=?@AI
    184 M91&RFGY17?9%Q32[SOY%AC&;;Q/M/G#D<W`EGU2_-Y`?^T)`*P9259%X>GF8
    185 M;1W[@LD1>S8Y8N]-CEGA[N^J;SH1U9B>C8_8=SM,.V2ZPX+I+K7>(>G_-I3M
    186 MRCRMK(]5>C>R%!P"@#8U5N;K;;)KFU(FN8;D%7%YWD9#)Y)9P;(![<R5G7W)
    187 M`OP(Z@@G/)PS9P:X*931K=U8%V$.BS`8!E(.R&8?L5!HCP"M4Y>\#*]93SSZ
    188 M2,=Q$],ELCWBK:$8+Y"]Y6D/P09&S8$8.`;>ZVOKERQ@N<'%YYG-7-6^CTA$
    189 M0RS4=/2V3E]PB!$3AYFA4;=L:-2M,S3^O+RY6VUI#K_%%C8IZG8>DK).G-VZ
    190 MS4YOR3J).="M$T*KD>\8;'T<+^GFS9L;^^:C]@4W&V1<W*V.QC?B=35^+]K6
    191 M_"P6+V*[82+_C!=&@@R>L..Y(*TI_K=R+9'='Z?M%"+A$'1\S'?-9_FO>$'&
    192 MIH;':3]87Q?MX[)JXTIIP:Q.BSZ/^`D?=@Q-UDGI,[VW])G;)++M05LO[.WZ
    193 M'\LSLTN0V;83;=]KJ(7N^LZ(X`R9U1_2C1./J\;:*])2,7I_!3-=<,).#+TZ
    194 M.EXG808SN(-V7RT+GD(MV5.HY3#5+@R*96"=6K&S4*NG*C>Q%4B3;E;<>S7I
    195 M93M*(FN5?00-E>/A]`E:8:X(&MR#+=FD&$3O40FUVF?%TXH5@Q/KS<]5PHH!
    196 M$Y$_3[M047FN$^^-OSB]OC^[^BH\12=`?WCW[B\___FHK=WSOJ:7Z:2V7;TP
    197 MKTW>`_.M%!YCX_SDAU`3&HF:V#$;ME$^!KNV#(6'&B4WW#'3*)O0PD,B!33+
    198 M<;I>K\:/5)7LZ_'^W8]?UPD3(CTMM)^4VN-JW$[QF*+Q]]5=/(ZMH2`L:F!A
    199 M4:,W,)^<WOYV1R[(Y7C_:5Q>QW8V,6N4+`I$2>"QC@9-%]=EB'1)'B0+=[0'
    200 M/G)7TK.LD'!!\>[=!JM%]2@WVX%^MT*8GXW:#G'\F'F/SL>+BZ.+FGPE[J]M
    201 M_(N<&X9$_D30M^OQ8ERNJ@_C!SJ[]W"_=$W+U>IN5=V=G3VLS,BIR5Q^7-(Y
    202 MOLJ][WJ\7=)+OS//'OC6#ZYONQ35>OMI69TOSPQ+MNZB;]V=YU?+ZT]N'J^?
    203 MQZEEEO;<[:51L_O:4W`;&1=VLTT7$[9%GM_U_?H]%25\(`GW]1]>/_LWN<N;
    204 %DTN&````
     2M'XL("/28%UL"`W-T9%IT97-T<RYR97,`[%QM<QLWDOZ>7S&5_4)I9B2@\3J;
     3MLJ]N-[M7=J6NSG$^[56<HBU:IBU+CDBO2?[ZPTL#:,P,*2FW]^VJ;)$S`!X`
     4MW4\W&B"`U[_\^.(_FZ;ASYN?7ORE^7Z[V5[<K-]^_\-WKS$%GC?NY6_KV_5V
     5M<?;#=_ZS>?Z\V6RO_K%=;;:;B]O5MXO-=KG-)<3S)G^7%Q'WR_WZ\]7JW0A;
     6MD9SZHKF\?+V^O?YZL[QO?KE?OFO^I(7.Z>:BY+47S;W+V=P_6]]N5]>K^VZQ
     7M[9;=V^Y==]6MNO?==?>A6W<?S[IOFP7O^E/_SDISAN?-^FJUO&G6MR^>I;><
     8M732BRT_\HKG^T,+[=;OZ6-["17/EWKY;MV_)6^'>OG=OK]LE>>M$<K5JX:U[
     9MNRYOU47SSK]]WRX_Y!9Q_;RY62VO%D[:"]>H,]?8W_Z;__KLW<I]PJ_/KORG
     10M<)_OW:=TGQ_<I_KUV;7_U+\^$QG)/&\^K6]NFOL";HOT^>"E_Q_K[8>O;YM_
     11MOUHW?Q)#2@-6)`\\2=[]?]8L4/QGW6+7[;N#^[S9+,19]]<B58`DU9>N1`^[
     12M@VAWL#]TXN`>]KW8[:%D%BGSM<_MN_V20,GGS??_^+9:;U=_=BS";SE5Y;*Y
     13M\#4MG83I7\8O(3D(5!RB0%WKHD1]$R$*5>_$'AZ;+57FY'V_NOKZ;K5XV95J
     14M6"S.<C:;U')[71HZ%,4(-E%,KD/PHA@!#RCFZDO&%UG(+X)&U/GNC6@YD^>[
     15M\_T;T8-P'W!^Z#G84DA6:N3<QMSGAU:Q\-65>`-]?'"%Y7"^[[C[6]*X!/_=
     16M%2X:%T5KOC5!:R^*TH2N"#%FA,AB;A8O.H=0!)URV)+#:Z(YI@HQS*A"LJ(*
     17M2<0MG;COOFS7=[<+!_[Z+Z5%DG@_*4D)]9#E7'T968[4M9[,^:YURCITO=1.
     18MJH=6.,UUP,]WO2P"E>:D0*4M5I+3KVF&X:A(46"!^%ENBLW(3?$B!043"F>W
     19MI$21D)*/I[!RK)F7O](TY9?E^H:DF4J@*I!R[_]VC3.!0%OWT/*N0<JVWC;`
     20M)Q00>U*^:GA`OIHE-_0B278?)0MJ!U&X'%1P,,ZKJ%WP+\HG'V3TZFH7_)#Q
     21MW_PKZQV2S!7P5,'_60V0G9MGR`,$T6*&(%H6@FA52*#UD\U$FV-<T/8X%_0P
     22MXL(NL,$$%GA":'N>.,%AB,GM8#L7`D2_YQ[ME!Z&G:2'X0_0P\"$'JYZR<7`
     23M&,/11PYL%X4,6G+.V/XP5J5R^?=P0&VJ?5"V4R=GQNZ#;IU*.3<2#--&<&$'
     24MV'M-#[\^&^QN[[-S%KY#'/Q\0_@^$(1#^`X!E(OP($+-7/HB>^DKX)Y1OG1X
     25M<,UPXV/XZIJQ0R#/JX3C:G8%/0HP_SHB`@^#+,0'/_3*0W8?1DRI_O_2.BHM
     26M^12S-6K&;(TN9FO,L3'0D,C2#$\V:,LJT_2!A+,UR8+)<=/U0@9;%9V/7;R!
     27M@B46:/E)"[3P@`5:,;5`!8.5/`I*L6&0YA#%)?:12XE)>R11B02MG.'H_P9/
     28M/46+5L]HT9JB'VLGHW.><]FA..:!U7IDIV+^@1,-YI<N#EAH>PGBS*ELX8+!
     29M2R[<=Z_`A9:7PISY6+%=:'5I^%D,(YW&%_S2Y4(_VRUZN#28Z(KQRR%F]>-U
     30MJ5_08'4A+I5'<!'30II+*7,!AR;9I;/R,_3O`.&+*$BR(M.(2X.JN32FTJ!/
     31M36<&<WK",EA"Q$*AHW,8P\$HHV6:HT":M1Q-V!WR9ZKSP>@O9G1N]'%Q-6=\
     32MRD#.(#.0,S%AH,EI)8+F3#TZ/N0L"W[]AR,]1XNI(UF?E>0'(FG.AEG]_4LC
     33MLG]]=.=&R.Q@U@\Z&,[GU,N)>KDXNK3`_5K(Y>5_W=^]O5E];CZOM\W-IEF^
     34M7=TWGU;KV^8+2;C:=#]NNILO3LNYM/*E78G-W<T_5U=_;GR1N\WZ]B?.?_9$
     35MN;M=-9L/=U]OKIKM\M.JV7Y8-7^_6EV[C)NMTT=S][[Y\M/GOWXND+KPC1\;
     36MWSA9.>&\^$@.[*FK(QRHIVQX:X+3<R.;]).]X+.X],SL^J'G<0CT,^_"TM'Z
     37MBL_M$0J?.^[HWYO@6SDDM^HFX=$+%B!Q:MSD(!^@.UE_F9FJ<]"UMQN[.P[F
     38M21-/#H^<V7-(H?[F;[]_7=ZX1G?7$9ZG+(*-LCC`B%BRS!%=$**+$T07@>BN
     39MM5LW"6D^++<-DGYUVWQ;W=XVGY>WS?IS3=](S>9V_?GSMO$KK-OF[S^NKC-F
     40MF39Q07@KS)-9*,I$Z7N<*7U/4H<C$RPNZTC-<2\.V8YLR*^NYRI^VG/B:0,O
     41M56*BBDF>V)A%1/(2=LJ349T+)AY@IU^7>438%'QF9HZ4#S)'JNET/D;?SN-R
     42MG%7XP([%B82#%RJ,N\J'[=$AF^"X?:3OP_B$/!.Z<5E"-RYM4;J<+.#*W`M5
     43M%G"Y>O("KHM5:R7C`E_'XZ*>TRLZ'?14(='YF_T;V887[1!?%T11NRSO]?R,
     44MVI,E@(0_V7=%.K%0A1HY+25/TD*IF=ET4H\)4SB1)U+23_AV>]0-[*(>G7JD
     45M>YL4M,<!DVNV$W$&Z)*#:OT,4.YP:N=JLN[]'B>`+H_<X_P/=JIHV:]7/3J<
     46MYV4%:];'*DN6N+&[.6TXO2)=5Z1G5O6X+JMZ7,.3B:2K=6<3ES!QW<6/<&Y6
     47MU^H8AA.RZ&KA6<58KA5UQ,_UR65DKO6$!SD:1@/ETEECRFY.*R5ELR>UH8>)
     48M-E1*,^R(-E+ZW&ACR&AC)J,-Y*C9D*C9'(V:]PM^<2'/NIW_%&=5_&S(TK./
     49M2YQ"%GZJMI!G+7?S\04_<ZKRCYV+*%)2#S'%=/%+*-3Z;]X=^.^Z,RF[..MU
     50M^-[K^"0ZG],'Y:"KZC36QV*%6)[[$ADKYA6,/$@;R_GA)21VX0TF^[4^G5KI
     51M4D'BZQ8T]@RS>]>5\7*K@.3AM`T!"%%[1Y&2U%N9"]4-]TTIW:*8'FY7L#6*
     52M#"MI$WYK9=>G5&PAK;I-59,\HN1QP@"PJ(THP]Y`)X0>-]2E%G6[\9'V`462
     53MV^&'=FUI=3)VIDT%6U=)7QI1.EGZKXE*0R.#B`;!$T`L9`9+D$04D`AL8I&\
     54MK=`I!V*[Q(">JE(V-23"NGK<"!ZE`0JZJC,>F3YG8?BEJF@3^57OJH:)SH&J
     55MF4MJ1G+*IW:P6`\D,G4]C!K$J+!C(VBF*:<B;NF$C2FIM6^@:IVGB:1=QBH*
     56M88-=V61*#UF'I?U,],'/6)HV7.;FC?B&M6!CDVUX2U;4#QD8VZ]7\"`3.["!
     57M3M$]`72O%).UWU"5XU"0/8>1:&:I2/8=0UTYH]E&`F+4?Q@M*P>"!7LB&A]1
     58M,SGQ*(JZE*JBT&3B5`R:99_J;G.USF^PKC(::OFIE4F(M4"ZD;'UU-AR&2]/
     59M'#:2T)S5.7M10&V%HT^F'H77I(T@'K?V.*1.['<Q;ZRD]36.#<57FT0S)6];
     60MJZ;-JIF86U^9&X44!,7;EL#V]1JYZD3#.O=VXCM\!N*'%1V@?:'DB8D9<](=
     61MSU72J$@STBB%EMUFY-:W!&I#(VTG?BM:GI:5$Q>U%]?)C6N6!@*%]F=!^#$A
     62M0XOL@X.#4SJ9*\NYB#LWU."U"X2*0V<H`Z$@L\%QN^IY^'T!@+JX)(#@UEGR
     63MZR;%+*X9=(2.@LTDZ6!LEZVPE`S4*CDU2O1/'553!?DFC[83%R*2FGH.U)<(
     64M$3&K(M&G%[+J.D_6-2356MIF"27[B/6E.SR$'X5>,HU,X[[UF3]T./0/L9))
     65M':2**K5"*&EH!V4XZ^Q$/UY*Q3!J,TL-L15E>D&&W1Y#IJ[R2C%)4HE43!5)
     66MZE;2<3>5B`%)$6"N@U=<Z&F?Y^G$:WR>\&NHJC0G]8BVE)CZ.45CV*&.$RK*
     67M[(X1369&U>2>LE`2R#Z+3VA:6)!PN.NK0<^S7E4U5>RAF9/VQ4!$TE>A1<^A
     68M"HO1UU1U\G$[L@%C%T4=KF"EQIY7LZ(\^@B3/`0M%?S/)'PFN7)$AVWTX9J%
     69MBJ2DQ"AN)-UT(O#EBHZ3<^PJ%B+\2)2A\153L8\D:/%]Y";;!07QTW\Z,_&#
     70M0:R;9"MTHVTFH5OTWFC0%JIX-Q7"8(]:=^IE\>/%ZY='GH-8J`/!*K371P:)
     71M"$#@<W6UU\_/7B+3&`VJJ#6Z?W$V`A#5E"-Y$CW)F@E&P*M1QXXB7E)[)^R4
     72M2E-2B&,N@Y`"W4:"=X%;-Y5>/XVJ*V5%\A/1#$!-JU(12X5TFF^DTJFG%5I<
     73M@LBYJD9H&ME+J$(BCL4J_YP&Q?'TC5*!&F46Y5"95SUE8[5W*.:68LH4I[>I
     74MB4[(+E#BD[E7=E(Y-J<J]'+FHV$?!\RP(N,;8^DP6;IDH.(:]>-QJ$R\2A7F
     75M\:$R5K\S,H^NGG.N.DVGD*T4=%J6)QF\#@FU9E4WDOI[A<LVKEZ6>L1&8VPV
     76M%ZHS/UD8ZTS1(414RQX.-4FX'K^3RCSEF:T\HDY]9ZGSK)L:71)`:M@H@*Z"
     77M,#H15>B92SC=ID:VP/QDJI)A^#621$Q9AJ*E"M,YT`<5*=(.K!Y0,K6FCGZ8
     78MJ8*3YVJ"PZJU%U-F&!;G"0J0I&[N,E)I_(&+#A>L7H>1E<D)3><OD3#I7>_[
     79M-XG@4WQ#_/_C?+"<&`YQX_3)0?)Q:-)2.W.<HPZ)KN^T)!(B[I2/(JOB7@4Z
     80MB%#IV"OFW)F"E9=4>F[=9"8^"[,=5K?+LKR41(-;[.UPU(]RLNJPF['"*BBE
     81MBQYD0,ZA6]5^70_R@OK1O.2!8S)&<B/)U)EK1K0SXHW17>%$->Z,PE[DJ['3
     82MN1P;Q>%L9F$X!:JBFJS4(5<UXD2)IJ<!+0_#/H%O`JV]%YCP-3JO.N;A1D_<
     83M:![8&;-C!U\<Q-2CU!W!!8"J"*DMCP)99JD;/J--"VL2;%DY&$6U9>&.ZE14
     84M(@-#!P8EYP:&W`)AH)Y.LNG:%&=T/4(H&,75]<Q@5SR]UU04:%Z.F;/)8:RU
     85M:HK&9P0P*I)_)QH%SGGN'$-X/9YHZ2I@KFP]_,(X;E;M.RAQN@DS])C^[4#J
     86MKW]5$%1](DVNIOY(L\E*#TZZJW0R;:P;%84WZI4Y8J9URW&F)JCG%7E2#5-;
     87M&>N''5_G#;'>"":-F^9\'BA[HNQ38GR<#9/5H&^J9?XZ0F+C.D1%^/HG$QR>
     88MN[XB3TO&@:Q(09?7O460GV]L]/R=J:,&BBI&=8>9)O$E0YIGFJE=`YLNMC%%
     89M(WY+I36DU0A3^$10LD]'"!PXBU1R4\8:#"&(GK/YL3%6BLV_398ED>D@5`$7
     90MSZ`?8,S$,`F'JI\C4L%N8G;]0$V_MKJDEO!0?BPW98?"9(\P-VE/1MF2,>#.
     91M`X>$&U`<7-R`LH_O_,YOUX:,,9#]""\?V+L42K.X<X7%72LL[EEA<;\*P[TJ
     92M#/>I,-RCPG!_"L.C"0R/)3`\D<#P.`+#LP@,SR$P/(3`\``"P[,'X1/Q`/$`
     93M\0#Q`/$`\0#Q!.()Q!.IHX@G$$\@GD`\@7@"\03B2<23B"<13R;)(9Y$/(EX
     94M$O$DXDG$4XBG$$\AGD(\E52!>`KQ%.(IQ%.(IQ%/(YY&/(UX&O%TTBWB:<33
     95MB*<1SR">03R#>`;Q#.(9Q#.)+(AG$,\@GD4\BW@6\2SB6<2SB&<1SR;V(9Y%
     96MO`'Q!L0;$&]`O`'Q!L0;$&]`O"'1.?,Y$9HE1K-$:98XS1*I66(U2[1FB=<L
     97M$9LEY&(J"3D;2[:6;"[97K+!9(O))I-LAB>CX9"M,"$GN^')<'BR')Y,AR?;
     98MX<EX>+(>GLR')_OA(AMX0DXFQ),-\61$/%D13V;$DQWQ9$A<TNU*=FZ[F"7;
     99MQ>SD$"B4PN40*+?'#X%^ZW:_=[M/?F?9EP6<=>XOK_:7656?&SK??7)#>DG6
     100MU:Y#-QI^\_L3/_EUJY*I'!'UN7SU]YO5NRWZW90K;_QRSOZ%^U_GC2-`%[>#
     101M-:08<>,ONU34I5]>-N?G!6N]:6[O_([?VZOE_57S=KE9;^9WH`UE&UDJW;TH
     102MB"^>A#6WY6P@6\Z&R98SF;<Q#F3+V?"8H\[<[S?S:B0*'*H#SQ!W?)IJO^=@
     103MJ!)UV-3N,AY:W?G?GWJ_A.>F7IV-*779DR=W^3!,]@@"RR=C@+'3.XR!\5.[
     104M`8'!9#>@UGAR0P_:X1_P]`:D`XKQG([?)YQ!Q.E-]"ZH"U=S+.J-],WD7#PP
     105M56>,.^CG,CJE;-:'E:_FV3/\6N^-!V:FU`%63DD`F]XO85,:+]N3@=?;DRON
     106M>,J$0'07=P&JL\@D23D$/.]6?N4`=C$B#3&;+]'E;([+^#;,FFB2C$FAG"3O
     107ME7^/OZOS`(?'*-RWGI<6.(&]PCCP%6F8D]'OH6^_W[O45R4ATW(96NS`H"3F
     108M8\H?/=^[F!Q$T$(7=^WX'9QN1I++0&;J\J4GR>]?[[;KU>UVL3S_V'T\^\%I
     109MHOFWG-FQUF7[X3OW)QP%"Q7D5(@L<8F)&*,,,X>[`<KA;H!P2&>SNGZ__'JS
     110MW>37X;J7NT_A;,_MZNNJ.OJ0<Y5+7P#L4:\2F0&1'C,[CP'JP][^1X.P?!$^
     111M0T2?L^:3('&4\&L1<.9WL,><X!=2PV>>+!&4\O@&0J8">_+X`H@'CB^`$">=
     112MBY`/^`4QW0@?I9`SZ(E[BGV/'JKJ<SK10#N>]L^7WN-;[[Z*0-+[5*MYI+OR
     113M)U0>Y:[FKO$`<HT'^&L\`O-N[[[E=U!X)L6#/(L4J\8NR$=%,/C@%<?>".0.
     114M1#&D]4:?4B`4I1Z7G;_?(]&NQ?RQ."FD3Q*+W`8R3RQY<@\[R)E!,74!C]?'
     115MGN)U.+F%6<6*3<\D2#R`47HT+BYR<?Y(ABAX)$/4G,M2Q&4I-66(*@>L0)D_
     116MQ)!R<4B\S@4WTWH*=)+H%A=-ISZD7"T2^*&)3^+0"V2<%.5]+JI/WDH!^H%;
     117M*4##299H,<,2/`-%>X8G+3CM7G0<Y$6ACI93ZB36S5$'K2P75X^DCC\=\BCJ
     118MZ+DX1Y,X1Y?3H&#"U4WKVW#L]';UK3[<]^WN_M.FV7R^N]M^Z!K,Y;ZO[L.Q
     119M57]>==.\O[M?_7-UGQ$Y08<_1$)3W_T45.%R")2\/X*7/8Z@JFNSO^IL358U
     120M]F.FOBH*T!,FK8^&2#_]*H#%81:XDT=[P.@'N&M.GID"8Z='Q#@9^2AS)[05
     121M`EL;!SI\DAE[>@((DK<$XNY2?C^-?A1C+7\D8_UM%Q/&VG)'%5@Y=7:VG"P%
     122MJ_\0SZP9'1KL.!W,*@J50I82!VJ6B!9F')L=3I)C8"=U/_"I[G%:K(Z/3=D_
     123M#=,IG2B:341)F<4C=3O(1^IVF+FA!89R0PL,9JK;H1P:A6$XI=NHUFJ)1;#1
     124M@5]HDY9*%EY9O\Y6C_8O_2G/DAM.Z4^PDV&O8'+F>&=.5-/10Y5HEM=6+7,Q
     125M_3@]"68>IR?!9B[Y$ZQ<\B?XY)(_:7):\?F")Y__,RXW^9LO=^3<GN#EE/,N
     126MK#\Y]?A+(W<Y@R35IG6:UQ7<S:;`Z8?@TH#X<_>ZE+*DCNFYY'2]C"`72XK1
     127MQ9*D<Z4UHYL.3.=F<F'X\;=Z]+KU5Q+Z@Z2EP&GV@'S"B5@!,]8FH%B;`#/I
     128MZI#3+.GJDV]$$F52&A8UNOT!VF)#?FX95Q9>_3Q9=Q!^:OGE[F8?5A<.Y36Z
     129MHV4YFAJZ?<@9ZG.WW:';E<*J7F$H2PS-\OQEU[QL2/VZ7F!0X4M5TTQ4)40R
     130MFE<_EW?$9N3$9E16%;FI44AXR,>-EI&%K$*D%**W.!E+1V=<&1G?N&E:*5L)
     131MC=M46":/$W^%#1/#+D\!W4P@1CUM68D693;XXK<@X_FU:"'3^IS+YMZ*_'Y.
     132MJI*8YO3*`$@+>H)<&2#*E0'$,!?+[JJZ9??XO;JB7"#@[]4-U^>N.W]?[D?W
     133MMX5P.RY^69="Q78CI?WUMR6UF*Y[W_U/==?Z([=MQ+_GKU"2`CYGI5A\#$G%
     134M<8L$*8P[(!\"HRCZ)?;9WCNKN8>QM]?L7M'_O1R^AI2XNK7;#VV09$_BB!)'
     135MU'!>_,WE47`.`M$`GCU[E@X?Q1K,QE5,D1Q($MUR^X=.M6JW[_`OLR>ZW./<
     136MO)@L;C`<L\M<U+;B"[38LJ$\OAO_T%#R3?E>4]NM&.Q;N>\T$<FE<2@X;ARJ
     137M-@Y=CL-\]CB&8AS#KF-R;Y7.!W*FB@*;<38,W')_Q#!T1:,6:%9EP]!+4*;9
     138M((H1:"A&8'8KW7;*CD/0A-)J<03ZN!'4]!$]3`&BA2&OF3#.:]8D?.ZW]Y?-
     139MUTJ:U$X>-&%$#9Y[Y^$&<DAN^Y^P/P.-P$@2%6<).DZ@04(@W`)MDF;[3?+?
     140M6R5TFSE#$ID.9&3$6L)?,VO3)[8D>COYFJFO,MW@5YY[\@JGL3"Y9R:>1,2\
     141M>G?=-C=M7'9T<2:[,5.5)W9D\FE7/)$SQ86B4[$+D3T\SZ]/`Q]8A5'9\U39
     142M%G89^.5M>@?JFI>OJA.!M&2%M_UC%W2UP/?>;1.CAUSNG[44Z5P*=&[]_.\@
     143M/64<56X%=,60N]F05DK&MQ2@U3KW<N1L6F24`>]@8!#Z@HZS['V$=M4G!H=3
     144MN#66R""-'V9?:6;PB6&N@J8O-#/\Q,3PJVG;<F+J&8]'YE1MICRDCU6V!=$O
     145M1CAD7\&U5?[%F`#/*G<ABL`=*AT&#B!=+C(D_$L"PO^D/N0QXE'V%45?]L1E
     146MV<^Y+%(;<5GV=2Z?[#!W(?6,<'MW'VXW6TO2-W2Z-*/1+689;MGN]O[CA@8B
     147MM:P-_QRV=B2:AB55-5(DF3P.5DVR&I]8QB>F#\RR?/2$/'9SZ]'%,AX,9:-#
     148M<*9FGLW0)LQ1*XRT8X_]?]LX3CE_(VD!DK-B#9W-5/Y(+$YR,0.JP[7Q^S_V
     149MS9=?UGG%*XX*U0<JOHNU!!(Y5#!CE^@KJI7D!!4F)\'3ZJO`(&EE(HI"#C@6
     150M=^C#Z1VS[80D2C:=835!(&:SM<YE(8Y#(I5HJ/JLA-,L0>$4)PI+-!4<L"'*
     151MCEVB4A6V5\@JEI449%E),;>LDA"29%E)^1]:5E)^AF4EY9)E)66:J9$#YW\/
     152M(9<QK)3R<@S51D8O8L]'GVWJJH[H4(7$V(GZ/LU0"9]AL$F"P*/GRV:U_%QK
     153M0<HB(>"0_2:A")M-)C)$YW%"=TV31NT#N)AR"'\XC=P"Q6-RC_!-L2=^U,)4
     154M"US*+'`I?>"R:?YVOWYRU_QX?YD:*'HI*7J)W_D!S7PZT8K893IIIWE4D?)@
     155M4<(6R95,J>S$3_Z0J99K<KTTW16-W#GJLG3E!W`$=_EG<]0X2@BZB_7VW8>3
     156M39OW73AP3EM.RJ<DC+DS/D-SE@EB[HS'%[C-]4<W-`HI%>?R\$)07U*W>2$9
     157MZGHY]SM>:S*ER5[[7WVNF;TH-=F+4GM[L3F]N<"*46L_!ES*F[OK<WO9>G=^
     158M_?%JG>C)?I1:U,2B?;_.=@ZY@W?$>8HW(MBS6NU7.][*%2U,601Q#"]NS"Y/
     159M4G],0;J)Q,\,Z[$ELND'2H8U=4XN2VGZR)/@R&M^MTN$"_RNK\;K\>;<\2>%
     160M?AN,_7[;_#427=^^O[]:HZ$S7E^OWX_GV\0^0QY/:?A!M9,B!=*(:4H48C50
     161M<_$=#*WSLJ^R=BK`DOR2K_8/Q%7*MEUT7TH,%'HI^CIYX#ON`5'1:+."4R7:
     162MBN-"FHS#0^!POO2JI`0,&9,&_KA"1"CRS2^_H.-=.@.(VF7A=[<TU%2D(DOF
     163MP4@8M5ONA-=YMW]P,F[_T.1"#A-=/]K.MR=(@(Y=M6O[ME%V;G]A.VSTKMU9
     164M'2K19[QIR6<N!V(/]#7V]*F5V`/](?;0#()^QA[2!:$_R!OH"]Z0QQOZ28(V
     165M->@%&'T@'/;%F08]K?DOG7!?79ZE1K3"LNM>G[5(A3JD3X4+M1K<+TK%D.XF
     166M=E[DZEWJB%7?`V20Z.`AT<OW`$-JI51J8'#@6T912%,5V*14E*N8P5CK$7E7
     167M0'BJP(H,:OSJ[;??#O-\:6!',I8-\T_8<EN%.@-8_D1H'HXL\XP,?TNG%^U#
     168M\H0[+;PFR=@P6*U%&,74`,;CZ%K-4EBYU>O>:&8M1^5/(QBO,#T,`]=:]T*(
     169M0#]803X8&8YP&P<''@Y0R@@MF`;5,\[LO]P06J_@1N!QV!!EM5?9<RWL.M#W
     170ML1B<?7AM!CWT,I[Q8_`POPJE&.@>!-CEAZ?S&OU0`NP9SF4?08'M$#JL+6,?
     171M)IX:L`-NF>@.<:>(,6!M4\;$@/>4J2((<-H$@!/7:TO_NYO$XE.SV5.?_1\\
     172M=<7[#YSR:8#+RK=M4BMEU@!7GQB9!+3HYQ8Z<#,7Q"<LNVPX*(M+XSZ3Q8(=
     173MD,6"+Q1$`;%4OQ$HI+PL4%QXN13&3EH_/22-?4:5$\@QO0IB>FGJM.(C`4'6
     174M)`A3>7,JM5)F'\A^.;PSS88"R4I?:N?$<P"Y;T,:33>!20>YF!L#<IYT&?)J
     175M233(HUR>("NN/)#DRK,R[%-S%D":*6Q\+`/I2E&@NWW%6P<#OD=@.:O2,(B%
     176M>1"!%0NO,>IN,=$+H/\$&'6`8%B&F@0>A;P-6K"][Q#/MTTL##?@`ZTRR'%`
     177MJ[W^+.*3GD56>`]4&1?`;94HIR5+C;1#`L`<F:IG#Z:970"3+1)JQ7TLJ>-#
     178M3/SDRL'U8):F*$6,*G9-2+GB9IZL!VHQ1`#+2<902S(^E&T'E=1A*5-C2`S.
     179M.O*PA)CT.H3\#`D4["GO86T2R4$6,3QK&_4Z)H-V3GN!/##4*004*L-UBO4Z
     180M]")72B@64VFA'(HZZAM6>A%1'E3%>`*560?ZT>HU/[E)\]-4NF'@O%H?!'29
     181ML86!PH=NAQO^'U9[IWEFM;9`+Z9K@9:'LBT?$@E,8Q?-`6[IVFJ@L]5`'[_=
     182M:.,8LIE^4;KXHA*@;D32W'ED37#K0$3;RCXILYBR#Z:2N@H9KD`DX\=YT<%4
     183MG(M@R+D()C@7BQ+=WS5?:Y8L%T-N1C#Z@!,'G73PM%J9.QN="4EK'^S5PD53
     184M>0@8<T;!?G`@6$54MRN.'7A,=BRS6Z37\S*Y-`$="$X,*.^8U.XF*QF>H$UT
     185M+-"9`"CMZ:94UHKVS[J*8UC%AR$BX8D<SHBC`K?99YL'WR-N=?A39I=;?3-S
     186M4@)Y'E[:&1-TL)<T["%ZN["9]O3%;/=@HFV_(9W*/URZGL3,AS;TD2;1D$HR
     187MG;QL\QL<XZZ$8>925#VY%%7O78H_KZ]O-WL<PV^IA9R'JI\GGVRSL+;JBWU:
     188MO,VR"U3O]<YFI#.66V_'2SQY_>+:W?FD?TK-EAD7MYN3\05[WHS?L[ZW/ZO5
     189MT]1NA<@_TX'5(&/,ZW2N.RO,]&U\2Q+WIWD[)D-X!IV>TEG[6?XK':!;J:/G
     190M=!]LJ(#V=MWTZ4TI1J).,5/F]L0/.R4AJZS(F>*/*+_3Y4&Y>.O-]A_K=W:5
     191M0`>M9KTQ2K9,::.M"DZ41:4AU7GUN.F<BR(O"J.6:Y6I2KAUXM)5*<0Z22B8
     192MT1VU^BI>B0DJ3C%!Q8>I=6%9S*/H5(+"@DH\5J.)'#\*S;'JVJO0%#M0_%B)
     193MR69%K-W44RM,@1)PW<YA$I10"U:@$DO^.B5,!K'0S$`6&B+,5/X28*'!0EQG
     194M(>Y^<7YU]^[#E_$JW.OYPZM7?_GYSR=]6U3OLIVTKJNG]K;9?22K%0>*C?,]
     195M'DQ,YDBRQ$[)A0W\(7JP>2PQU`F^HXYICI+7+%[$<D+[.LZWV\WX%NN/?37>
     196MO?KQJS830FBGQ?:S6GMZ&S=3/N9L_'USFS9>*UE1%I4D95%!<"6?G=_\=HO!
     197MQO5X]W%<7Z5V<B8KX*0*)$W@H4T^3)_!92?I&F-%CNYD@3Y)5[2SG))P@9GM
     198M>@?-JGG@N_V`OWO&[,].[(?T_%#$B=Z/%Q<G%RU&1?Q?^_07AC'L%/D34M]L
     199MQXMQO6G>C&]PE][]W=HWK3>;VTUS^^[=_<8^.3;9P[=KW+'7^/M=C3=KO.EW
     200M]MHC[_K&]^U>1;/=?UPW[]?OK$AV@:%O_9DG']97'_TXGC])0RM\ZF6`2X&B
     201H0'7<Y)0$%^C9H@N9V,(8[_9N^QK+#]ZCAOO\#\^_^#?;><1=-88`````
    205202`
    206203end
  • Tst/New/stdZtests.stat

    ra718906 raa7c1c2  
    1 1 >> tst_memory_0 :: 1480339567:4100, 64 bit:4.1.0:x86_64-Linux:nepomuck:1049024
    2 1 >> tst_memory_1 :: 1480339567:4100, 64 bit:4.1.0:x86_64-Linux:nepomuck:7970816
    3 1 >> tst_memory_2 :: 1480339567:4100, 64 bit:4.1.0:x86_64-Linux:nepomuck:9007104
    4 1 >> tst_timer_1 :: 1480339567:4100, 64 bit:4.1.0:x86_64-Linux:nepomuck:633
     11 >> tst_memory_0 :: 1528273140:4112, 64 bit:4.1.1:x86_64-Linux:nepomuck:986872
     21 >> tst_memory_1 :: 1528273140:4112, 64 bit:4.1.1:x86_64-Linux:nepomuck:8536064
     31 >> tst_memory_2 :: 1528273140:4112, 64 bit:4.1.1:x86_64-Linux:nepomuck:8859648
     41 >> tst_timer_1 :: 1528273140:4112, 64 bit:4.1.1:x86_64-Linux:nepomuck:653
  • Tst/Short/ok_s.lst

    ra718906 raa7c1c2  
    22abusalem
    33branchTo
     4bug_bucket
    45bug_curvepar
    56bug_ecart
     
    105106gcd_univar_p_s
    106107gcd_univar_p_alpha_s
     108homalg
    107109modular_s
    108110modstd_s
  • factory/cf_factory.cc

    ra718906 raa7c1c2  
    3030CFFactory::basic ( long value )
    3131{
    32     if ( currenttype == IntegerDomain )
     32  switch(currenttype)
     33  {
     34    case IntegerDomain:
    3335        if (LIKELY( value >= MINIMMEDIATE && value <= MAXIMMEDIATE ))
    3436            return int2imm( value );
     
    4042//         else
    4143//             return new InternalRational( value );
    42     else  if ( currenttype == FiniteFieldDomain )
     44    case FiniteFieldDomain:
    4345        return int2imm_p( ff_norm( value ) );
    44     else  if ( currenttype == GaloisFieldDomain )
     46    case GaloisFieldDomain:
    4547        return int2imm_gf( gf_int2gf( value ) );
    46     else {
    47         ASSERT( 0, "illegal basic domain!" );
    48         return 0;
    49     }
     48    default: {
     49        ASSERT( 0, "illegal basic domain!" );
     50        return 0;
     51    }
     52  }
    5053}
    5154
  • factory/int_poly.cc

    ra718906 raa7c1c2  
    3030#include "variable.h"
    3131#include "imm.h"
     32
     33#ifdef __GNUC__
     34#define LIKELY(X)   (__builtin_expect(!!(X), 1))
     35#define UNLIKELY(X) (__builtin_expect(!!(X), 0))
     36#else
     37#define LIKELY(X)   (X)
     38#define UNLIKELY(X) (X)
     39#endif
    3240
    3341#ifdef HAVE_OMALLOC
     
    21552163        {
    21562164            theCursor->coeff += aCursor->coeff * coeff;
    2157             if ( theCursor->coeff.isZero() )
     2165            if(UNLIKELY(( theCursor->coeff.isZero() )))
    21582166            {
    21592167                if ( predCursor )
  • kernel/GBEngine/kInline.h

    rdb48f3e raa7c1c2  
    2626#include "kernel/polys.h"
    2727
     28#include "kernel/GBEngine/shiftgb.h"
    2829
    2930#define HAVE_TAIL_BIN
  • kernel/GBEngine/kspoly.cc

    rdb48f3e raa7c1c2  
    2020#include "kernel/polys.h"
    2121#endif
     22#include "kernel/GBEngine/shiftgb.h"
    2223
    2324#ifdef KDEBUG
     
    123124  }
    124125
     126  poly lmRight;
     127  if (tailRing->isLPring) {
     128    k_SplitFrame(p2, lm, lmRight, tailRing);
     129  }
     130
    125131  // take care of coef buisness
    126132  if (! n_IsOne(pGetCoeff(p2), tailRing->cf))
     
    142148
    143149  // and finally,
    144   PR->Tail_Minus_mm_Mult_qq(lm, t2, pLength(t2) /*PW->GetpLength() - 1*/, spNoether);
     150  if (tailRing->isLPring) {
     151    PR->Tail_Minus_mm_Mult_qq(lm, tailRing->p_Procs->pp_Mult_mm(t2, lmRight, tailRing), pLength(t2), spNoether);
     152  } else {
     153    PR->Tail_Minus_mm_Mult_qq(lm, t2, pLength(t2) /*PW->GetpLength() - 1*/, spNoether);
     154  }
    145155  assume(PW->GetpLength() == pLength(PW->p != NULL ? PW->p : PW->t_p));
    146156  PR->LmDeleteAndIter();
     
    255265  }
    256266
     267  poly lmRight;
     268  if (tailRing->isLPring) {
     269    k_SplitFrame(p2, lm, lmRight, tailRing);
     270  }
     271
    257272  // take care of coef buisness
    258273  if (! n_IsOne(pGetCoeff(p2), tailRing))
     
    274289
    275290  // and finally,
    276   PR->Tail_Minus_mm_Mult_qq(lm, t2, pLength(t2) /*PW->GetpLength() - 1*/, spNoether);
     291  if (tailRing->isLPring) {
     292    PR->Tail_Minus_mm_Mult_qq(lm, tailRing->p_Procs->pp_Mult_mm(t2, lmRight, tailRing), pLength(t2), spNoether);
     293  } else {
     294    PR->Tail_Minus_mm_Mult_qq(lm, t2, pLength(t2) /*PW->GetpLength() - 1*/, spNoether);
     295  }
    277296  assume(PW->GetpLength() == pLength(PW->p != NULL ? PW->p : PW->t_p));
    278297  PR->LmDeleteAndIter();
     
    461480  }
    462481
     482  poly lmRight;
     483  if (tailRing->isLPring) {
     484    k_SplitFrame(p2, lm, lmRight, tailRing);
     485  }
     486
    463487  // take care of coef buisness
    464488  if (! n_IsOne(pGetCoeff(p2), tailRing->cf))
     
    480504
    481505  // and finally,
    482   PR->Tail_Minus_mm_Mult_qq(lm, t2, PW->GetpLength() - 1, spNoether);
     506  if (tailRing->isLPring) {
     507    PR->Tail_Minus_mm_Mult_qq(lm, tailRing->p_Procs->pp_Mult_mm(t2, lmRight, tailRing), pLength(t2), spNoether);
     508  } else {
     509    PR->Tail_Minus_mm_Mult_qq(lm, t2, PW->GetpLength() - 1, spNoether);
     510  }
    483511  assume(PW->GetpLength() == pLength(PW->p != NULL ? PW->p : PW->t_p));
    484512  PR->LmDeleteAndIter();
     
    699727    }
    700728  }
     729
     730  poly lmRight;
     731  if (tailRing->isLPring) {
     732    k_SplitFrame(p2, lm, lmRight, tailRing);
     733  }
     734
    701735  // take care of coef buisness
    702736  if(rField_is_Ring(currRing))
     
    725759
    726760  // and finally,
    727   PR->Tail_Minus_mm_Mult_qq(lm, t2, PW->GetpLength() - 1, spNoether);
     761  if (tailRing->isLPring) {
     762    PR->Tail_Minus_mm_Mult_qq(lm, tailRing->p_Procs->pp_Mult_mm(t2, lmRight, tailRing), pLength(t2), spNoether);
     763  } else {
     764    PR->Tail_Minus_mm_Mult_qq(lm, t2, PW->GetpLength() - 1, spNoether);
     765  }
    728766  assume(PW->GetpLength() == pLength(PW->p != NULL ? PW->p : PW->t_p));
    729767  PR->LmDeleteAndIter();
     
    802840    k_GetLeadTerms(p1, p2, currRing, m1, m2, tailRing);
    803841
     842  poly m12, m22;
     843  if (tailRing->isLPring)
     844  {
     845    k_SplitFrame(p1, m1, m12, tailRing);
     846    k_SplitFrame(p1, m2, m22, tailRing);
     847    // manually free the coeffs, because pSetCoeff0 is used in the next step
     848    n_Delete(&(m1->coef), tailRing->cf);
     849    n_Delete(&(m2->coef), tailRing->cf);
     850  }
     851
    804852  pSetCoeff0(m1, lc2);
    805853  pSetCoeff0(m2, lc1);  // and now, m1 * LT(p1) == m2 * LT(p2)
     
    833881  }
    834882  else
    835     a2 = tailRing->p_Procs->pp_Mult_mm(a2, m2, tailRing);
     883    if (tailRing->isLPring) {
     884      // m2*a2*m22
     885      a2 = tailRing->p_Procs->pp_Mult_mm(tailRing->p_Procs->pp_mm_Mult(a2, m2, tailRing), m22, tailRing);
     886    } else {
     887      a2 = tailRing->p_Procs->pp_Mult_mm(a2, m2, tailRing);
     888    }
    836889#ifdef HAVE_RINGS
    837890  if (!(rField_is_Domain(currRing))) l2 = pLength(a2);
     
    840893  Pair->SetLmTail(m2, a2, l2, use_buckets, tailRing);
    841894
    842   // get m2*a2 - m1*a1
    843   Pair->Tail_Minus_mm_Mult_qq(m1, a1, l1, spNoether);
     895  if (tailRing->isLPring) {
     896    // get m2*a2*m22 - m1*a1*m12
     897    Pair->Tail_Minus_mm_Mult_qq(m1, tailRing->p_Procs->pp_Mult_mm(a1, m12, tailRing), l1, spNoether);
     898  } else {
     899    // get m2*a2 - m1*a1
     900    Pair->Tail_Minus_mm_Mult_qq(m1, a1, l1, spNoether);
     901  }
    844902
    845903  // Clean-up time
    846904  Pair->LmDeleteAndIter();
    847905  p_LmDelete(m1, tailRing);
     906  if (tailRing->isLPring) {
     907    p_LmDelete(m12, tailRing);
     908    p_LmDelete(m22, tailRing);
     909    // m2 is already deleted
     910  }
    848911
    849912  if (co != 0)
  • kernel/GBEngine/kstd2.cc

    ra718906 raa7c1c2  
    22272227  }
    22282228  else if (TEST_OPT_PROT) PrintLn();
    2229   if (!errorreported)
    2230   {
    2231     if(rField_is_Ring_Z(currRing))
    2232     {
    2233       for(int i = 0;i<=strat->sl;i++)
    2234       {
    2235         if(!nGreaterZero(pGetCoeff(strat->S[i])))
    2236         {
    2237           strat->S[i] = pNeg(strat->S[i]);
    2238         }
    2239       }
    2240       finalReduceByMon(strat);
    2241       for(int i = 0;i<=strat->sl;i++)
    2242       {
    2243         if(!nGreaterZero(pGetCoeff(strat->S[i])))
    2244         {
    2245           strat->S[i] = pNeg(strat->S[i]);
    2246         }
    2247       }
    2248     }
    2249     else if (rField_is_Ring(currRing))
    2250       finalReduceByMon(strat);
    2251   }
    22522229  /* release temp data-------------------------------- */
    22532230  exitBuchMora(strat);
     2231  /* postprocessing for GB over ZZ --------------------*/
     2232  if (!errorreported)
     2233  {
     2234    if(rField_is_Ring_Z(currRing))
     2235    {
     2236      for(int i = 0;i<=strat->sl;i++)
     2237      {
     2238        if(!nGreaterZero(pGetCoeff(strat->S[i])))
     2239        {
     2240          strat->S[i] = pNeg(strat->S[i]);
     2241        }
     2242      }
     2243      finalReduceByMon(strat);
     2244      for(int i = 0;i<IDELEMS(strat->Shdl);i++)
     2245      {
     2246        if(!nGreaterZero(pGetCoeff(strat->Shdl->m[i])))
     2247        {
     2248          strat->S[i] = pNeg(strat->Shdl->m[i]);
     2249        }
     2250      }
     2251    }
     2252    //else if (rField_is_Ring(currRing))
     2253    //  finalReduceByMon(strat);
     2254  }
    22542255//  if (TEST_OPT_WEIGHTM)
    22552256//  {
     
    22632264  if ((TEST_OPT_PROT) || (TEST_OPT_DEBUG)) messageStat(hilbcount,strat);
    22642265  SI_RESTORE_OPT1(save);
     2266  /* postprocessing for GB over Q-rings ------------------*/
    22652267  if ((Q!=NULL)&&(!errorreported)) updateResult(strat->Shdl,Q,strat);
    22662268
  • kernel/GBEngine/kutil.cc

    ra718906 raa7c1c2  
    1097110971void finalReduceByMon(kStrategy strat)
    1097210972{
     10973  assume(strat->tl<0); /* can only be called with no elements in T:
     10974                          i.e. after exitBuchMora */
     10975  /* do not use strat->S, strat->sl as they may be out of sync*/
    1097310976  if(!nCoeff_is_Ring_Z(currRing->cf))
    1097410977      return;
    1097510978  poly p,pp;
    10976   for(int j = 0; j<=strat->sl; j++)
    10977   {
    10978     if((strat->S[j]!=NULL)&&(pNext(strat->S[j]) == NULL))
    10979     {
    10980       for(int i = 0; i<=strat->sl; i++)
    10981       {
    10982         if((i != j) && (strat->S[i] != NULL))
    10983         {
    10984           p = strat->S[i];
    10985           if(pLmDivisibleBy(strat->S[j], p))
     10979  for(int j = 0; j<IDELEMS(strat->Shdl); j++)
     10980  {
     10981    if((strat->Shdl->m[j]!=NULL)&&(pNext(strat->Shdl->m[j]) == NULL))
     10982    {
     10983      for(int i = 0; i<IDELEMS(strat->Shdl); i++)
     10984      {
     10985        if((i != j) && (strat->Shdl->m[i] != NULL))
     10986        {
     10987          p = strat->Shdl->m[i];
     10988          while((p!=NULL) && pLmDivisibleBy(strat->Shdl->m[j], p))
    1098610989          {
    10987             number dummy = n_IntMod(p->coef, strat->S[j]->coef, currRing->cf);
    10988             p_SetCoeff(p,dummy,currRing);
     10990            number dummy = n_IntMod(p->coef, strat->Shdl->m[j]->coef, currRing->cf);
     10991            if (!nEqual(dummy,p->coef))
     10992            {
     10993              if (nIsZero(dummy))
     10994              {
     10995                nDelete(&dummy);
     10996                pLmDelete(&strat->Shdl->m[i]);
     10997                p=strat->Shdl->m[i];
     10998              }
     10999              else
     11000              {
     11001                p_SetCoeff(p,dummy,currRing);
     11002                break;
     11003              }
     11004            }
     11005            else
     11006            {
     11007              nDelete(&dummy);
     11008              break;
     11009            }
    1098911010          }
    10990           pp = pNext(p);
    10991           if((pp == NULL) && (nIsZero(p->coef)))
     11011          if (p!=NULL)
    1099211012          {
    10993             deleteInS(i, strat);
    10994           }
    10995           else
    10996           {
     11013            pp = pNext(p);
    1099711014            while(pp != NULL)
    1099811015            {
    10999               if(pLmDivisibleBy(strat->S[j], pp))
     11016              if(pLmDivisibleBy(strat->Shdl->m[j], pp))
    1100011017              {
    11001                 number dummy = n_IntMod(pp->coef, strat->S[j]->coef, currRing->cf);
    11002                 p_SetCoeff(pp,dummy,currRing);
    11003                 if(nIsZero(pp->coef))
     11018                number dummy = n_IntMod(pp->coef, strat->Shdl->m[j]->coef, currRing->cf);
     11019                if (!nEqual(dummy,pp->coef))
    1100411020                {
    11005                   pLmDelete(&pNext(p));
    11006                   pp = pNext(p);
     11021                  p_SetCoeff(pp,dummy,currRing);
     11022                  if(nIsZero(pp->coef))
     11023                  {
     11024                    pLmDelete(&pNext(p));
     11025                    pp = pNext(p);
     11026                  }
     11027                  else
     11028                  {
     11029                    p = pp;
     11030                    pp = pNext(p);
     11031                  }
    1100711032                }
    1100811033                else
    1100911034                {
     11035                  nDelete(&dummy);
    1101011036                  p = pp;
    1101111037                  pp = pNext(p);
     
    1101911045            }
    1102011046          }
    11021           if(strat->S[i]!= NULL && nIsZero(pGetCoeff(strat->S[i])))
    11022           {
    11023             if(pNext(strat->S[i]) == NULL)
    11024               strat->S[i]=NULL;
    11025             else
    11026               strat->S[i]=pNext(strat->S[i]);
    11027           }
    1102811047        }
    1102911048      }
     
    1103111050    }
    1103211051  }
    11033   //idSkipZeroes(strat->Shdl);
     11052  idSkipZeroes(strat->Shdl);
    1103411053}
    1103511054#endif
  • kernel/GBEngine/shiftgb.cc

    rdb48f3e raa7c1c2  
    7878
    7979  /* assume sh and uptodeg agree TODO check */
    80   assume(sh>=0);
    8180
    8281  if (sh == 0) return(p); /* the zero shift */
     
    9998  /* p is a monomial from the ring r */
    10099
    101   if (sh == 0) return(p); /* the zero shift */
    102 
    103   assume(sh>=0);
     100  if (sh == 0 || p == NULL || p_LmIsConstant(p,r)) return(p);
     101
    104102  int L = p_mLastVblock(p,lV,r);
     103  assume(L+sh>=1);
    105104  assume(L+sh<=uptodeg);
    106105
     
    118117    {
    119118      assume(j + (sh*lV)<=r->N);
     119      assume(j + (sh*lV)>=1);
    120120      s[j + (sh*lV)] = e[j]; /* actually 1 */
    121121    }
     
    175175  /* for a monomial p, returns the number of the last block */
    176176  /* where a nonzero exponent is sitting */
    177   if (p_LmIsConstant(p,r))
     177  if (p == NULL || p_LmIsConstant(p,r))
    178178  {
    179179    return(0);
     
    190190}
    191191
    192 int pFirstVblock(poly p, int lV)
     192int p_FirstVblock(poly p, int lV, const ring r)
    193193{
    194194  /* returns the number of maximal block */
    195195  /* appearing among the monomials of p */
    196196  /* the 0th block is the 1st one */
    197   poly q = p; //p_Copy(p,currRing); /* need it ? */
    198   int ans = 0;
     197  if (p == NULL) {
     198    return 0;
     199  }
     200  poly q = p;
     201  int ans = p_mFirstVblock(q,lV,r);
    199202  int ansnew = 0;
    200203  while (q!=NULL)
    201204  {
    202     ansnew = pmFirstVblock(q,lV);
    203     ans    = si_min(ans,ansnew);
     205    ansnew = p_mFirstVblock(q,lV,r);
     206    if (ansnew > 0) { // don't count constants
     207      ans = si_min(ans,ansnew);
     208    }
    204209    pIter(q);
    205210  }
     
    208213}
    209214
    210 int pmFirstVblock(poly p, int lV)
    211 {
    212   if (pIsConstantPoly(p))
    213   {
    214     return(int(0));
     215int p_mFirstVblock(poly p, int lV, const ring r)
     216{
     217  if (p == NULL || p_LmIsConstant(p,r))
     218  {
     219    return(0);
    215220  }
    216221  /* for a monomial p, returns the number of the first block */
    217222  /* where a nonzero exponent is sitting */
    218   int *e=(int *)omAlloc0((currRing->N+1)*sizeof(int));
    219   p_GetExpV(p,e,currRing);
     223  int *e=(int *)omAlloc0((r->N+1)*sizeof(int));
     224  p_GetExpV(p,e,r);
    220225  int j,b;
    221226  j = 1;
    222   while ( (!e[j]) && (j<=currRing->N-1) ) j++;
    223   if (j==currRing->N + 1)
    224   {
    225 #ifdef PDEBUG
    226     PrintS("pmFirstVblock: unexpected zero exponent vector\n");
    227 #endif
    228     return(j);
    229   }
    230   b = (int)(j/lV)+1; /* the number of the block, 1<= N <= currRing->N  */
     227  while ( (!e[j]) && (j<=r->N-1) ) j++;
     228  freeT(e, r->N);
     229  assume(j <= r->N);
     230  b = (int)(j+lV-1)/lV; /* the number of the block, 1<= b <= r->N  */
    231231  return (b);
    232232}
     
    396396  /* r->N is a multiple of lV */
    397397
     398  if (p==NULL) return p;
    398399  int *e = (int *)omAlloc0((r->N+1)*sizeof(int));
    399400  int  b = (int)((r->N +lV-1)/lV); /* the number of blocks */
     
    464465
    465466#endif
     467
     468// splits a frame (e.g. x(1)*y(5)) m1 into m1 and m2 (e.g. m1=x(1) and m2=y(1)) according to p
     469void k_SplitFrame(const poly p, poly &m1, poly &m2, const ring r) {
     470  int lV = r->isLPring;
     471  int uptodeg = r->N/lV;
     472
     473  number m1Coeff = pGetCoeff(m1);
     474
     475  int hole = lV * p_mFirstVblock(p, lV, r);
     476  m2 = p_GetExp_k_n(m1, 1, hole, r);
     477  m1 = p_GetExp_k_n(m1, hole, r->N, r);
     478
     479  p_LPshift(m2, 1 - p_mFirstVblock(m2, lV, r), uptodeg, lV, r);
     480  p_SetCoeff(m1, m1Coeff, r);
     481}
  • kernel/GBEngine/shiftgb.h

    rdb48f3e raa7c1c2  
    3232#define pmLastVblock(p,lV) p_mLastVblock(p,lV,currRing)
    3333
    34 int pFirstVblock(poly p, int lV);
    35 int pmFirstVblock(poly p, int lV);
     34int p_FirstVblock(poly p, int lV, const ring r);
     35int p_mFirstVblock(poly p, int lV, const ring r);
     36
     37//int pLastVblock(poly p, int lV);
     38#define pFirstVblock(p,lV) p_FirstVblock(p,lV,currRing)
     39//int pmLastVblock(poly p, int lV);
     40#define pmFirstVblock(p,lV) p_mFirstVblock(p,lV,currRing)
    3641
    3742int isInV(poly p, int lV);
     
    4146int itoInsert(poly p, int uptodeg, int lV, const ring r);
    4247
     48void k_SplitFrame(const poly p, poly &m1, poly &m2, const ring r);
    4349#endif
    4450#endif
  • libpolys/coeffs/modulop.cc

    ra718906 raa7c1c2  
    344344{
    345345  if (setChar) setCharacteristic( r->ch );
    346   CanonicalForm term(npInt( n,r ));
    347   return term;
     346  return CanonicalForm(npInt( n,r ));
    348347}
    349348
  • libpolys/polys/Makefile.am

    rdb48f3e raa7c1c2  
    3333        kbuckets.cc sbuckets.cc weight.cc weight0.c simpleideals.cc matpol.cc \
    3434        sparsmat.cc \
     35        shiftop.cc \
    3536        ${USE_P_PROCS_STATIC_CC} ${USE_P_PROCS_DYNAMIC_CC} mod_raw.cc \
    3637        ext_fields/algext.cc ext_fields/transext.cc \
     
    4546        kbuckets.h sbuckets.h simpleideals.h weight.h matpol.h \
    4647        sparsmat.h clapsing.h clapconv.h coeffrings.h flintconv.h\
     48        shiftop.h \
    4749        ext_fields/algext.h ext_fields/transext.h mod_raw.h
    4850
  • libpolys/polys/clapconv.cc

    ra718906 raa7c1c2  
    9494  while ( p!=NULL )
    9595  {
    96     CanonicalForm term;
    97     term=r->cf->convSingNFactoryN(pGetCoeff( p ),setChar, r->cf);
     96    CanonicalForm term=r->cf->convSingNFactoryN(pGetCoeff( p ),setChar, r->cf);
    9897    if (errorreported) break;
    9998    setChar=FALSE;
     
    101100    {
    102101      if ( (e = p_GetExp( p, i, r)) != 0 )
    103         term *= power( Variable( i ), e );
     102        term *= CanonicalForm( Variable( i ), e );
    104103    }
    105104    result += term;
  • libpolys/polys/ext_fields/transext.cc

    ra718906 raa7c1c2  
    14841484    if (nCoeff_is_Zp(ntCoeffs))
    14851485    {
    1486       NUM (f) = p_Div_nn (NUM (f), p_GetCoeff (DEN(f),ntRing), ntRing);
     1486      number d=p_GetCoeff (DEN(f),ntRing);
     1487      BOOLEAN d_not_1=FALSE;
     1488      if (!n_IsOne(d,ntCoeffs))
     1489      {
     1490        NUM (f) = p_Div_nn (NUM (f), d, ntRing);
     1491        d_not_1=TRUE;
     1492      }
    14871493      if (p_IsConstant (DEN (f), ntRing))
    14881494      {
     
    14901496        DEN (f) = NULL;
    14911497      }
    1492       else
    1493       {
    1494         p_Norm (DEN (f),ntRing);
     1498      else if (d_not_1)
     1499      {
     1500        DEN (f) = p_Div_nn (DEN (f), d, ntRing);
    14951501      }
    14961502    } else if (nCoeff_is_Q(ntCoeffs)) handleNestedFractionsOverQ(f, cf);
     
    25472553  cf->cfChineseRemainder = ntChineseRemainder;
    25482554  cf->cfInt          = ntInt;
    2549   cf->cfInpNeg          = ntNeg;
    25502555  cf->cfAdd          = ntAdd;
     2556  cf->cfInpNeg       = ntNeg;
    25512557  cf->cfSub          = ntSub;
    25522558  cf->cfMult         = ntMult;
  • libpolys/polys/kbuckets.cc

    rdb48f3e raa7c1c2  
    724724  {
    725725    pSetCoeff0(m, n_InpNeg(pGetCoeff(m),r->cf));
    726     p1=pp_Mult_mm(p,m,r);
     726    p1=r->p_Procs->pp_mm_Mult(p,m,r);
    727727    pSetCoeff0(m, n_InpNeg(pGetCoeff(m),r->cf));
    728728    l1=pLength(p1);
     
    766766      else
    767767      {
    768         p1 = r->p_Procs->pp_Mult_mm(p1, m, r);
     768        p1 = r->p_Procs->pp_mm_Mult(p1, m, r);
    769769      }
    770770      pSetCoeff0(m, n_InpNeg(pGetCoeff(m),r->cf));
  • libpolys/polys/matpol.cc

    ra718906 raa7c1c2  
    17751775  return res;
    17761776}
    1777 
     1777// --------------------------------------------------------------------------
     1778/****************************************
     1779*  Computer Algebra System SINGULAR     *
     1780****************************************/
     1781
     1782/*
     1783* ABSTRACT: basic operation for sparse matrices:
     1784* type: ideal (of column vectors)
     1785* nrows: I->rank, ncols: IDELEMS(I)
     1786*/
     1787
     1788ideal sm_Add(ideal a, ideal b, const ring R)
     1789{
     1790  assume(IDELEMS(a)==IDELEMS(b));
     1791  assume(a->rank==b->rank);
     1792  ideal c=idInit(IDELEMS(a),a->rank);
     1793  for (int k=IDELEMS(a)-1; k>=0; k--)
     1794    c->m[k] = p_Add_q(p_Copy(a->m[k], R), p_Copy(b->m[k], R), R);
     1795  return c;
     1796}
     1797
     1798ideal sm_Sub(ideal a, ideal b, const ring R)
     1799{
     1800  assume(IDELEMS(a)==IDELEMS(b));
     1801  assume(a->rank==b->rank);
     1802  ideal c=idInit(IDELEMS(a),a->rank);
     1803  for (int k=IDELEMS(a)-1; k>=0; k--)
     1804    c->m[k] = p_Sub(p_Copy(a->m[k], R), p_Copy(b->m[k], R), R);
     1805  return c;
     1806}
     1807
     1808#define SMATELEM(A,i,j,R) p_Vec2Poly(A->m[j],i+1,R)
     1809ideal sm_Mult(ideal a, ideal b, const ring R)
     1810{
     1811  int i, j, k;
     1812  int m = a->rank;
     1813  int p = IDELEMS(a);
     1814  int q = IDELEMS(b);
     1815
     1816  assume (IDELEMS(a)==b->rank);
     1817  ideal c = idInit(m,q);
     1818
     1819  for (i=0; i<m; i++)
     1820  {
     1821    for (k=0; k<p; k++)
     1822    {
     1823      poly aik;
     1824      if ((aik=SMATELEM(a,i,k,R))!=NULL)
     1825      {
     1826        for (j=0; j<q; j++)
     1827        {
     1828          poly bkj;
     1829          if ((bkj=SMATELEM(b,k,j,R))!=NULL)
     1830          {
     1831            poly s = p_Mult_q(p_Copy(aik,R) /*SMATELEM(a,i,k)*/, bkj/*SMATELEM(b,k,j)*/, R);
     1832            if (s!=NULL) p_SetComp(s,i+1,R);
     1833            c->m[j]=p_Add_q(c->m[j],s, R);
     1834          }
     1835        }
     1836        p_Delete(&aik,R);
     1837      }
     1838    }
     1839  }
     1840  for(i=m-1;i>=0;i--) p_Normalize(c->m[i], R);
     1841  return c;
     1842}
     1843
     1844ideal sm_Transp(ideal a, const ring R)
     1845{
     1846  int    i, j, r = a->rank, c = IDELEMS(a);
     1847  poly *p;
     1848  ideal b =  idInit(c,r);
     1849  poly *m=(poly*)omAlloc0(r*sizeof(poly));
     1850  for(i=0;i<c;i++)
     1851  {
     1852    p_Vec2Polys(a->m[i],&m,&r,R);// m has A[1..r,i+1]
     1853    if (r>a->rank) Print("wrong rang (%d,%ld) in sm_Transp\n",r,a->rank);
     1854    for(j=0;j<r;j++)
     1855    {
     1856      // m[j] is A[j+1,i]
     1857      p_SetCompP(m[j],i+1,R);
     1858      b->m[j]=p_Add_q(b->m[j],m[j],R);
     1859    }
     1860  }
     1861  omFreeSize(m,a->rank*sizeof(poly));
     1862  return b;
     1863}
     1864
     1865/*2
     1866*returns the trace of matrix a
     1867*/
     1868poly sm_Trace ( ideal a, const ring R)
     1869{
     1870  int i;
     1871  int n = (IDELEMS(a)<a->rank) ? IDELEMS(a) : a->rank;
     1872  poly  t = NULL;
     1873
     1874  for (i=0; i<=n; i++)
     1875    t = p_Add_q(t, p_Copy(SMATELEM(a,i,i,R), R), R);
     1876  return t;
     1877}
     1878
     1879int sm_Compare(ideal a, ideal b, const ring R)
     1880{
     1881  if (IDELEMS(a)<IDELEMS(b)) return -1;
     1882  else if (IDELEMS(a)>IDELEMS(b)) return 1;
     1883  if ((a->rank)<(b->rank)) return -1;
     1884  else if ((a->rank)<(b->rank)) return 1;
     1885
     1886  unsigned ii=IDELEMS(a)-1;
     1887  unsigned j=0;
     1888  int r=0;
     1889  while (j<=ii)
     1890  {
     1891    r=p_Compare(a->m[j],b->m[j],R);
     1892    if (r!=0) return r;
     1893    j++;
     1894  }
     1895  return r;
     1896}
     1897
  • libpolys/polys/matpol.h

    ra718906 raa7c1c2  
    9595
    9696ideal mp_Tensor(ideal A, ideal B, const ring r);
     97// -------------------------------------------------------
     98ideal sm_Add(ideal a, ideal b, const ring R);
     99ideal sm_Sub(ideal a, ideal b, const ring R);
     100ideal sm_Mult(ideal a, ideal b, const ring R);
     101ideal sm_Transp(ideal a, const ring R);
     102poly sm_Trace ( ideal a, const ring R);
     103int sm_Compare(ideal a, ideal b, const ring R);
    97104#endif/* MATPOL_H */
  • libpolys/polys/monomials/p_polys.cc

    ra718906 raa7c1c2  
    35473547}
    35483548
     3549poly p_Vec2Poly(poly v, int k, const ring r)
     3550{
     3551  poly h;
     3552  poly res=NULL;
     3553
     3554  while (v!=NULL)
     3555  {
     3556    if (__p_GetComp(v,r)==k)
     3557    {
     3558      h=p_Head(v,r);
     3559      p_SetComp(h,0,r);
     3560      pNext(h)=res;res=h;
     3561    }
     3562    pIter(v);
     3563  }
     3564  if (res!=NULL) res=pReverse(res);
     3565  return res;
     3566}
     3567
    35493568/// julia: vector to already allocated array (len=p_MaxComp(v,r))
    35503569void  p_Vec2Array(poly v, poly *p, int len, const ring r)
  • libpolys/polys/monomials/p_polys.h

    ra718906 raa7c1c2  
    9797
    9898void  p_Vec2Polys(poly v, poly**p, int *len, const ring r);
     99poly  p_Vec2Poly(poly v, int k, const ring r);
    99100
    100101/// julia: vector to already allocated array (len=p_MaxComp(v,r))
     
    881882
    882883// copys monomials of p, allocates new monomials from bin,
    883 // deletes monomoals of p
     884// deletes monomials of p
    884885static inline poly p_ShallowCopyDelete(poly p, const ring r, omBin bin)
    885886{
     
    16531654{
    16541655  if (p2==NULL)
     1656  {
     1657    if (p1==NULL) return 0;
    16551658    return 1;
     1659  }
    16561660  if (p1==NULL)
    16571661    return -1;
    16581662  return p_LmCmp(p1,p2,r);
     1663}
     1664
     1665static inline int p_CmpPolys(poly p1, poly p2, ring r)
     1666{
     1667  if (p2==NULL)
     1668  {
     1669    if (p1==NULL) return 0;
     1670    return 1;
     1671  }
     1672  if (p1==NULL)
     1673    return -1;
     1674  return p_ComparePolys(p1,p2,r);
    16591675}
    16601676
  • libpolys/polys/monomials/ring.cc

    ra718906 raa7c1c2  
    18871887           (rHasSimpleOrderAA(r) &&
    18881888            (rOrder_is_DegOrdering((rRingOrder_t)r->order[1]) ||
    1889             ((r->order[1]!=0) &&
     1889            ((r->order[1]!=0) &&
    18901890             rOrder_is_DegOrdering((rRingOrder_t)r->order[2]))))));
    18911891}
     
    29782978{
    29792979  r->VectorOut = (r->order[0] == ringorder_c);
    2980   r->CanShortOut = TRUE;
    2981   {
     2980  if (rIsNCRing(r))
     2981    r->CanShortOut=FALSE;
     2982  else
     2983  {
     2984    r->CanShortOut = TRUE;
    29822985    int i;
    29832986    if (rParameter(r)!=NULL)
  • libpolys/polys/templates/p_Procs_Set.h

    rdb48f3e raa7c1c2  
    1616#include "reporter/reporter.h"
    1717#include "misc/auxiliary.h"
     18#include "shiftop.h"
    1819
    1920// extract p_Procs properties from a ring
     
    165166  }
    166167  #endif
    167   _p_procs->p_mm_Mult=_p_procs->p_Mult_mm;
    168   _p_procs->pp_mm_Mult=_p_procs->pp_Mult_mm;
     168  if (r->isLPring) {
     169    _p_procs->pp_Mult_mm = shift_pp_Mult_mm;
     170    _p_procs->p_Mult_mm = shift_p_Mult_mm;
     171    _p_procs->p_mm_Mult = shift_p_mm_Mult;
     172    _p_procs->pp_mm_Mult = shift_pp_mm_Mult;
     173    _p_procs->p_Minus_mm_Mult_qq = shift_p_Minus_mm_Mult_qq;
     174    // Unsupported
     175    _p_procs->pp_Mult_mm_Noether = shift_pp_Mult_mm_Noether_STUB;
     176    _p_procs->pp_Mult_Coeff_mm_DivSelect = shift_pp_Mult_Coeff_mm_DivSelect_STUB;
     177    _p_procs->pp_Mult_Coeff_mm_DivSelectMult = shift_pp_Mult_Coeff_mm_DivSelectMult_STUB;
     178  } else {
     179    _p_procs->p_mm_Mult=_p_procs->p_Mult_mm;
     180    _p_procs->pp_mm_Mult=_p_procs->pp_Mult_mm;
     181  }
    169182  CheckProc(p_Copy);
    170183  CheckProc(p_Delete);
Note: See TracChangeset for help on using the changeset viewer.