Changeset 36ebfa in git


Ignore:
Timestamp:
Sep 12, 2012, 1:14:59 PM (10 years ago)
Author:
Oleksandr Motsak <motsak@…>
Branches:
(u'jengelh-datetime', 'ceac47cbc86fe4a15902392bdbb9bd2ae0ea02c6')(u'spielwiese', 'ad2543eab51733612ba7d118afc77edca719600e')
Children:
2ed48b369bc0d2a3c22dd1fc1ff4b91704e73ec6d2f30f8ec6d1db506b36602c98b98bf5f86b1c47
Parents:
a497a11b6125be1576a34c48429ba326cafa35e2d1fbbf7c96369bd83b0fd1a804e99dfb09dd9e5d
Message:
Merge pull request #182 from alexanderdreyer/spielwiese-countedref

Spielwiese countedref (prepare autoloading new types)
Files:
1 added
44 edited

Legend:

Unmodified
Added
Removed
  • CMakeLists.txt

    rd1fbbf r36ebfa  
    119119  #endif (${CMAKE_BUILD_TYPE} MATCHES "Release")
    120120
    121   #set(CMAKE_CXX_FLAGS "-W -Wall -Wextra -Wno-non-virtual-dtor")
     121  #set(CMAKE_CXX_FLAGS "-W -Wall -Wextra -Winline -Wno-non-virtual-dtor")
    122122  set(CMAKE_C_FLAGS "-w -pipe ")
    123123  set(CMAKE_CXX_FLAGS "-w  -pipe ") #--no-rtti
  • Singular/Makefile.am

    rd1fbbf r36ebfa  
    2929libSingulardir = $(libdir)/singular
    3030
    31 libSingular_la_CFLAGS   = -O3 -fomit-frame-pointer -Wextra -Wall -Wno-long-long ${PIPE}  $(WARNCFLAGS)
    32 libSingular_g_la_CFLAGS = -g -Wextra -Wall -Wno-long-long -pedantic ${PIPE}  $(WARNCFLAGS)
    33 
    34 libSingular_la_CXXFLAGS   = -O3 -fomit-frame-pointer -Wextra -Wall -Wno-long-long ${PIPE} $(CXXTEMPLFLAGS)  $(WARNCFLAGS)
    35 libSingular_g_la_CXXFLAGS = -g -Wextra -Wall -Wno-long-long -pedantic ${PIPE} $(CXXTEMPLFLAGS)   $(WARNCFLAGS)
     31libSingular_la_CFLAGS   = -O3 -fomit-frame-pointer -Wextra -Winline -Wall -Wno-long-long ${PIPE}  $(WARNCFLAGS)
     32libSingular_g_la_CFLAGS = -g -Wextra -Winline -Wall -Wno-long-long -pedantic ${PIPE}  $(WARNCFLAGS)
     33
     34libSingular_la_CXXFLAGS   = -O3 -fomit-frame-pointer -Wextra -Winline -Wall -Wno-long-long ${PIPE} $(CXXTEMPLFLAGS)  $(WARNCFLAGS)
     35libSingular_g_la_CXXFLAGS = -g -Wextra -Winline -Wall -Wno-long-long -pedantic ${PIPE} $(CXXTEMPLFLAGS)   $(WARNCFLAGS)
    3636# -fdiagnostics-show-option
    3737
     
    174174gentable1_SOURCES = gentable.cc grammar.h tok.h table.h
    175175gentable1_CFLAGS = -O3 -fomit-frame-pointer ${PIPE}
    176 gentable1_CXXFLAGS = -O3 -fomit-frame-pointer -Wextra -Wall -Wno-long-long ${PIPE} $(CXXTEMPLFLAGS)
     176gentable1_CXXFLAGS = -O3 -fomit-frame-pointer -Wextra -Winline -Wall -Wno-long-long ${PIPE} $(CXXTEMPLFLAGS)
    177177gentable1_CPPFLAGS = ${AM_CPPFLAGS} -DHAVE_CONFIG_H -DNDEBUG -DOM_NDEBUG
    178178
    179179feOptGen_SOURCES = feOptGen.cc feOptGen.h
    180 feOptGen_CXXFLAGS = -O3 -fomit-frame-pointer -Wextra -Wall -Wno-long-long ${PIPE} $(CXXTEMPLFLAGS)
     180feOptGen_CXXFLAGS = -O3 -fomit-frame-pointer -Wextra -Winline -Wall -Wno-long-long ${PIPE} $(CXXTEMPLFLAGS)
    181181feOptGen_CPPFLAGS = ${AM_CPPFLAGS} -DHAVE_CONFIG_H -DNDEBUG -DOM_NDEBUG
    182182
    183183feOptES_SOURCES = feOptGen.cc feOptGen.h
    184 feOptES_CXXFLAGS = -O3 -fomit-frame-pointer -Wextra -Wall -Wno-long-long ${PIPE} $(CXXTEMPLFLAGS)
     184feOptES_CXXFLAGS = -O3 -fomit-frame-pointer -Wextra -Winline -Wall -Wno-long-long ${PIPE} $(CXXTEMPLFLAGS)
    185185feOptES_CPPFLAGS = ${AM_CPPFLAGS} -DHAVE_CONFIG_H -DNDEBUG -DOM_NDEBUG -DESINGULAR
    186186
    187187feOptTS_SOURCES = feOptGen.cc feOptGen.h
    188 feOptTS_CXXFLAGS = -O3 -fomit-frame-pointer -Wextra -Wall -Wno-long-long ${PIPE} $(CXXTEMPLFLAGS)
     188feOptTS_CXXFLAGS = -O3 -fomit-frame-pointer -Wextra -Winline -Wall -Wno-long-long ${PIPE} $(CXXTEMPLFLAGS)
    189189feOptTS_CPPFLAGS = ${AM_CPPFLAGS} -DHAVE_CONFIG_H -DNDEBUG -DOM_NDEBUG -DTSINGULAR
    190190
     
    212212Singularg_CFLAGS = -g ${PIPE}
    213213
    214 Singular_CXXFLAGS = -O3 -fomit-frame-pointer -Wextra -Wall -Wno-long-long ${PIPE} $(CXXTEMPLFLAGS)
    215 Singularg_CXXFLAGS = -g -Wextra -Wall -Wno-long-long -pedantic ${PIPE} $(CXXTEMPLFLAGS)
     214Singular_CXXFLAGS = -O3 -fomit-frame-pointer -Wextra -Winline -Wall -Wno-long-long ${PIPE} $(CXXTEMPLFLAGS)
     215Singularg_CXXFLAGS = -g -Wextra -Winline -Wall -Wno-long-long -pedantic ${PIPE} $(CXXTEMPLFLAGS)
    216216
    217217nodist_Singular_SOURCES = libSingular.la
     
    234234Singulardg_CFLAGS = -g ${PIPE}
    235235
    236 Singulard_CXXFLAGS = -O3 -fomit-frame-pointer -Wextra -Wall -Wno-long-long ${PIPE} $(CXXTEMPLFLAGS)
    237 Singulardg_CXXFLAGS = -g -Wextra -Wall -Wno-long-long -pedantic ${PIPE} $(CXXTEMPLFLAGS)
     236Singulard_CXXFLAGS = -O3 -fomit-frame-pointer -Wextra -Winline -Wall -Wno-long-long ${PIPE} $(CXXTEMPLFLAGS)
     237Singulardg_CXXFLAGS = -g -Wextra -Winline -Wall -Wno-long-long -pedantic ${PIPE} $(CXXTEMPLFLAGS)
    238238
    239239Singulard_SOURCES = tesths.cc fegetopt.c fegetopt.h utils.cc  utils.h
     
    256256
    257257ESingular_CFLAGS = -O3 -fomit-frame-pointer ${PIPE}
    258 ESingular_CXXFLAGS = -O3 -fomit-frame-pointer -Wextra -Wall -Wno-long-long ${PIPE} $(CXXTEMPLFLAGS)
     258ESingular_CXXFLAGS = -O3 -fomit-frame-pointer -Wextra -Winline -Wall -Wno-long-long ${PIPE} $(CXXTEMPLFLAGS)
    259259ESingular_CPPFLAGS = ${AM_CPPFLAGS} -DHAVE_CONFIG_H -DNDEBUG -DOM_NDEBUG -DESINGULAR -DPROTO
    260260ESingular_LDFLAGS = -static ${AMLDFLAGS}
     
    266266
    267267TSingular_CFLAGS = -O3 -fomit-frame-pointer ${PIPE}
    268 TSingular_CXXFLAGS = -O3 -fomit-frame-pointer -Wextra -Wall -Wno-long-long ${PIPE} $(CXXTEMPLFLAGS)
     268TSingular_CXXFLAGS = -O3 -fomit-frame-pointer -Wextra -Winline -Wall -Wno-long-long ${PIPE} $(CXXTEMPLFLAGS)
    269269TSingular_CPPFLAGS = ${AM_CPPFLAGS} -DHAVE_CONFIG_H -DNDEBUG -DOM_NDEBUG -DTSINGULAR -DPROTO
    270270TSingular_LDFLAGS = -static ${AMLDFLAGS}
     
    278278libparse_CPPFLAGS = ${AM_CPPFLAGS} -DHAVE_CONFIG_H -DNDEBUG -DOM_NDEBUG -DSTANDALONE_PARSER
    279279libparse_CFLAGS = -O3 -fomit-frame-pointer ${PIPE}
    280 libparse_CXXFLAGS = -O3 -fomit-frame-pointer -Wextra -Wall -Wno-long-long ${PIPE} $(CXXTEMPLFLAGS)
     280libparse_CXXFLAGS = -O3 -fomit-frame-pointer -Wextra -Winline -Wall -Wno-long-long ${PIPE} $(CXXTEMPLFLAGS)
    281281 
    282282libparse_SOURCES = libparse.cc fegetopt.c fegetopt.h utils.cc  utils.h
     
    325325test_s_g_CFLAGS = ${PIPE}
    326326
    327 test_s_r_CXXFLAGS = -O3 -fomit-frame-pointer -Wextra -Wall -Wno-long-long ${PIPE} $(CXXTEMPLFLAGS)
    328 test_s_g_CXXFLAGS = -g -Wextra -Wall -Wno-long-long -pedantic ${PIPE} $(CXXTEMPLFLAGS)
     327test_s_r_CXXFLAGS = -O3 -fomit-frame-pointer -Wextra -Winline -Wall -Wno-long-long ${PIPE} $(CXXTEMPLFLAGS)
     328test_s_g_CXXFLAGS = -g -Wextra -Winline -Wall -Wno-long-long -pedantic ${PIPE} $(CXXTEMPLFLAGS)
    329329
    330330test_s_r_SOURCES = test.cc
     
    346346test_d_g_CFLAGS = ${PIPE}
    347347
    348 test_d_r_CXXFLAGS = -O3 -fomit-frame-pointer -Wextra -Wall -Wno-long-long ${PIPE} $(CXXTEMPLFLAGS)
    349 test_d_g_CXXFLAGS = -g -Wextra -Wall -Wno-long-long -pedantic ${PIPE} $(CXXTEMPLFLAGS)
     348test_d_r_CXXFLAGS = -O3 -fomit-frame-pointer -Wextra -Winline -Wall -Wno-long-long ${PIPE} $(CXXTEMPLFLAGS)
     349test_d_g_CXXFLAGS = -g -Wextra -Winline -Wall -Wno-long-long -pedantic ${PIPE} $(CXXTEMPLFLAGS)
    350350
    351351test_d_r_SOURCES = test.cc
  • Singular/blackbox.cc

    ra497a1 r36ebfa  
    6161{
    6262  assume( bb->Typ() > MAX_TOK ); // it IS a blackbox type, right?!
    63  
     63
    6464  if( op > 127 )
    6565    Werror("'%s' of type %s(%d) for op %s(%d) not implemented",
     
    108108}
    109109
    110 BOOLEAN blackbox_default_Check(blackbox *b, void *d)
     110BOOLEAN blackbox_default_Check(blackbox *,leftv,leftv)
    111111{
    112112  return FALSE;
     
    149149    if (bb->blackbox_Op3==NULL)     bb->blackbox_Op3=blackbox_default_Op3;
    150150    if (bb->blackbox_OpM==NULL)     bb->blackbox_OpM=blackbox_default_OpM;
    151     if (bb->blackbox_Check==NULL)   bb->blackbox_Check=blackbox_default_Check;
     151    if (bb->blackbox_CheckAssign==NULL) bb->blackbox_CheckAssign=blackbox_default_Check;
    152152    if (bb->blackbox_serialize==NULL) bb->blackbox_serialize=blackbox_default_serialize;
    153153    if (bb->blackbox_deserialize==NULL) bb->blackbox_deserialize=blackbox_default_deserialize;
  • Singular/blackbox.h

    ra497a1 r36ebfa  
    3939  /// interpreter: operations with undefined number of operands
    4040  BOOLEAN (*blackbox_OpM)(int op,leftv l, leftv r);
    41   /// check internal structure
    42   BOOLEAN (*blackbox_Check)(blackbox *b,void *d);
     41  /// is an assign of r to l (part of b) impossible?
     42  BOOLEAN (*blackbox_CheckAssign)(blackbox *b,leftv l, leftv r);
    4343  /// serialize
    4444  BOOLEAN (*blackbox_serialize)(blackbox *b,void *d, si_link f);
  • Singular/countedref.cc

    ra497a1 r36ebfa  
    2626#include "ipshell.h"
    2727
    28 class CountedRefEnv {
    29   typedef CountedRefEnv self;
    30 
    31 public:
    32 
    33   static int& ref_id() {
    34     static int g_ref_id = 0;
    35     return g_ref_id;
    36   }
    37 
    38   static int& sh_id() {
    39     static int g_sh_id = 0;
    40     return g_sh_id;
    41   }
    42 };
    4328
    4429/// Overloading ring destruction
     
    198183}
    199184
     185/// We use the function pointer as a marker of reference types
     186/// for CountedRef::is_ref(leftv), see the latter for details
     187BOOLEAN countedref_CheckAssign(blackbox *b, leftv L, leftv R)
     188{
     189  return FALSE;
     190}
     191
    200192
    201193class CountedRef {
     
    213205
    214206  /// Check whether argument is already a reference type
     207  /// @note We check for the function pointer @c countedref_CheckAssign here,
     208  /// that we (ab-)use as a unique marker. This avoids to check a bunch of
     209  /// of runtime-varying @c typ IDs for identifying reference-like types.
    215210  static BOOLEAN is_ref(leftv arg) {
    216211    int typ = arg->Typ();
    217     return ((typ==CountedRefEnv::ref_id())  ||(typ==CountedRefEnv::sh_id()) );
    218     //    return ((typ > MAX_TOK) &&
    219     //            (getBlackboxStuff(typ)->blackbox_Init == countedref_Init));
     212    return ((typ > MAX_TOK) &&
     213            (getBlackboxStuff(typ)->blackbox_CheckAssign == countedref_CheckAssign));
    220214  }
    221215
     
    681675}
    682676
    683 void countedref_init()
     677void countedref_reference_load()
    684678{
    685679  blackbox *bbx = (blackbox*)omAlloc0(sizeof(blackbox));
     680  bbx->blackbox_CheckAssign = countedref_CheckAssign;
    686681  bbx->blackbox_destroy = countedref_destroy;
    687682  bbx->blackbox_String  = countedref_String;
     
    697692  bbx->blackbox_deserialize = countedref_deserialize;
    698693  bbx->data             = omAlloc0(newstruct_desc_size());
    699   CountedRefEnv::ref_id()=setBlackboxStuff(bbx, "reference");
    700 
    701   /// The @c shared type is "inherited" from @c reference.
    702   /// It just uses another constructor (to make its own copy of the).
    703   blackbox *bbxshared =
    704     (blackbox*)memcpy(omAlloc(sizeof(blackbox)), bbx, sizeof(blackbox));
     694  setBlackboxStuff(bbx, "reference");
     695}
     696
     697void countedref_shared_load()
     698{
     699  blackbox *bbxshared = (blackbox*)omAlloc0(sizeof(blackbox));
     700  bbxshared->blackbox_String  = countedref_String;
     701  bbxshared->blackbox_Print  = countedref_Print;
     702  bbxshared->blackbox_Copy    = countedref_Copy;
     703  bbxshared->blackbox_Op3     = countedref_Op3;
     704  bbxshared->blackbox_OpM     = countedref_OpM;
     705  bbxshared->blackbox_serialize   = countedref_serialize;
     706  bbxshared->blackbox_deserialize = countedref_deserialize;
     707
     708  bbxshared->blackbox_CheckAssign = countedref_CheckAssign;
    705709  bbxshared->blackbox_Assign  = countedref_AssignShared;
    706710  bbxshared->blackbox_destroy = countedref_destroyShared;
     
    709713  bbxshared->blackbox_Init    = countedref_InitShared;
    710714  bbxshared->data             = omAlloc0(newstruct_desc_size());
    711   CountedRefEnv::sh_id()=setBlackboxStuff(bbxshared, "shared");
    712 }
    713 
    714 #ifdef HAVE_DYNAMIC_COUNTEDREF
    715 extern "C" { void mod_init() { countedref_init(); } }
    716 #endif
    717 
     715  setBlackboxStuff(bbxshared, "shared");
     716}
     717
     718
  • Singular/countedref.h

    ra497a1 r36ebfa  
    444444};
    445445
    446 /// Initialize @c blackbox types 'reference' and 'shared'
    447 void countedref_init();
     446/// Initialize @c blackbox types 'reference' and 'shared', or both
     447void countedref_reference_load();
     448void countedref_shared_load();
     449
     450inline void
     451countedref_init()
     452{
     453  countedref_reference_load();
     454  countedref_shared_load();
     455}
    448456
    449457
  • Singular/extra.cc

    ra497a1 r36ebfa  
    29272927       else
    29282928  #endif
     2929
     2930  /*==== countedref: reference and shared ====*/
     2931       if (strcmp(sys_cmd, "shared") == 0)
     2932       {
     2933       #ifndef SI_COUNTEDREF_AUTOLOAD
     2934         void countedref_shared_load();
     2935         countedref_shared_load();
     2936       #endif
     2937         res->rtyp = NONE;
     2938         return FALSE;
     2939       }
     2940       else if (strcmp(sys_cmd, "reference") == 0)
     2941       {
     2942       #ifndef SI_COUNTEDREF_AUTOLOAD
     2943         void countedref_reference_load();
     2944         countedref_reference_load();
     2945       #endif
     2946         res->rtyp = NONE;
     2947         return FALSE;
     2948       }
     2949       else
     2950
     2951
    29292952  /*==================== DLL =================*/
    29302953  #ifdef ix86_Win
  • Singular/ipassign.cc

    ra497a1 r36ebfa  
    15101510      {
    15111511        bb=getBlackboxStuff(bt);
    1512         like_lists=BB_LIKE_LIST(bb);
     1512        like_lists=BB_LIKE_LIST(bb); // bb like a list
    15131513      }
    15141514      else if (((l->rtyp==IDHDL) && (IDTYP((idhdl)l->data)==LIST_CMD))
    15151515        || (l->rtyp==LIST_CMD))
    15161516      {
    1517         like_lists=2;
     1517        like_lists=2; // bb in a list
    15181518      }
    15191519      if(like_lists)
    15201520      {
    15211521        if (TEST_V_ALLWARN) PrintS("assign list[..]=...or similiar\n");
     1522        if (like_lists==1)
     1523        {
     1524          // check blackbox/newtype type:
     1525          if(bb->blackbox_CheckAssign(bb,l,r)) return TRUE;
     1526        }
    15221527        b=jiAssign_list(l,r);
    15231528        if((!b) && (like_lists==2))
     
    15381543          omFreeBin((ADDRESS)l->e, sSubexpr_bin);
    15391544          l->e=h;
    1540         }
    1541         if ((!b) && (like_lists==1))
    1542         {
    1543           // check blackbox/newtype type:
    1544           if(bb->blackbox_Check(bb,l->Data())) return TRUE;
    15451545        }
    15461546        return b;
  • Singular/newstruct.cc

    ra497a1 r36ebfa  
    3939};
    4040
    41 int newstruct_desc_size() 
     41int newstruct_desc_size()
    4242{
    4343  return sizeof(newstruct_desc_s);
     
    441441  }
    442442  newstruct_proc p=nt->procs;
    443  
     443
    444444  while((p!=NULL) &&( (p->t!=op) || (p->args!=4) )) p=p->next;
    445445
     
    510510}
    511511
    512 BOOLEAN newstruct_Check(blackbox *b, void *d)
     512BOOLEAN newstruct_CheckAssign(blackbox *b, leftv L, leftv R)
     513{
     514  int lt=L->Typ();
     515  int rt=R->Typ();
     516  if ((lt!=DEF_CMD)&&(lt!=rt))
     517  {
     518    Werror("can not assign %s(%d) to member of type %s(%d)",
     519            Tok2Cmdname(rt),rt,
     520            Tok2Cmdname(lt),lt);
     521    return TRUE;
     522  }
     523  return FALSE;
     524}
     525
     526/* check internal structure:
     527* BOOLEAN newstruct_Check(blackbox *b, void *d)
    513528{
    514529  newstruct_desc n=(newstruct_desc)b->data;
     
    529544  return FALSE;
    530545}
     546*/
    531547
    532548BOOLEAN newstruct_serialize(blackbox *b, void *d, si_link f)
     
    598614  //b->blackbox_Op3=blackbox_default_Op3;
    599615  b->blackbox_OpM=newstruct_OpM;
    600   b->blackbox_Check=newstruct_Check;
     616  b->blackbox_CheckAssign=newstruct_CheckAssign;
    601617  b->blackbox_serialize=newstruct_serialize;
    602618  b->blackbox_deserialize=newstruct_deserialize;
  • Singular/tesths.cc

    ra497a1 r36ebfa  
    170170   pyobject_setup();
    171171#endif
     172#ifdef SI_COUNTEDREF_AUTOLOAD
    172173  countedref_init();
     174#endif
    173175#ifdef HAVE_FANS
    174176  bbcone_setup();
  • Tst/Short/countedref_s.res.gz.uu

    ra497a1 r36ebfa  
    11begin 644 countedref_s.res.gz
    2 M'XL("*.82%```V-O=6YT961R969?<RYR97,`S7W_<^,X<N_O_BL85ZK.7NN\
     2M'XL("$5E2E```V-O=6YT961R969?<RYR97,`S7W_<^,X<N_O_BL85ZK.7NN\
    33M!$B`Q/BD5Y>D4I6J5TDJR6];E[%LTV/MR))&DF?LN<K__KH!$OT!2<GVOIM]
    44M;VK7(H%&H]%H-+H;7_B?__5/__*O69:I6?;SS]D_+Y;-A^QV_;3:-W?;YO[C
    55M[G*_VY_\9PND+QGHOYK=?I?=K[<9033;9G7;9//57;9[F&^;N^QNOI]G^Y=-
    66MLXOEBLOL?__+/V2GA.MRN;@YO8HYY2RCQ(^+U6)_=GYUPK_9;)92L&J^7>[V
    7 M<R'#S++X;"_EN8+G&IZ=/*L<GA4\AZ9)@QZ>'IZFJHJ4*FK#8K7//J\_KY/T
    8 M4HA1YK*/@<$%UGHF[_;;Q>K3&>>?2U[%!(QGU;[J+E55,</-#I71T$X-[=34
    9 M3H;T:&)B(6W0Y66/0*E/$^.A?8N'139ML740%C!1BQ@FK:H&`#<"4.2S6#_E
    10 M)?472@H7U!"&RK;3?/(\N=M$&@IH34&M63T]WC3;$6S4&L_6008THF@;<1&:
    11 M690Q@QHRGN%"QD^A:;IV74Z9"]Y2!;P_*4TP>2Q=ZIGGZ(7**3V25!9M;;UD
    12 M$+[22"^7,"K**@CN^N;7;*I<9%-98V=N?#8#"8"7KOF>.N/FC/,GV2F3=CHY
    13 M_?*M^?+M5*3-@+09Q8+\LG]8KSYNGU9GIW?-??;XLMDRKW^:;S_MSC]D_BWC
    14 M%\3BQV!;85L"<HMA+E%T_[2Z_;B:/S:(J`1RB"V?%\MEYANPP08:Z&=3O8*=
    15 M7FY>_KQZ^;?]0[/]UUY]]=M)`UUD<RZV7.S"T)Z$/T$:.Q`8NI;8PYS_]H7_
    16 M(_Y?G<!;A`+IM^7(8+=F-AQUEEAQ>C<GE'?SF%8%49QRI:$^TJ7_*[NFUEV?
    17 ML6([)XFY#H/U.EOLLM5ZG^V>-IOUEG1W`&Z>-\TMO852#,^_1_(>YS%[NZ4I
    18 M9GU[^[3E:66QRNCUIJ%YI\D"B<O%JB$R/V37*9W7L0DDXZ</BV9+M/-/3'>S
    19 M(6.J?(0Q%:B<BCJ`Y[7U?:<:X_B)(,#]J@P#;]4\K;XW#RMJ(`R_*M&E]*2R
    20 M:0<I0+8'I`D)PPH$=1(/,$HLIFD.:-J*I.Z,<R>,@_\4K/'<2=;^WP'6.8]Y
    21 MAIPJ&U'5((6U?BLJ8@7+=K;D?T2W%W15350A\EV70RZ$`E<G-%/^]!.E4?/(
    22 M+&!-S]D__13+!@X*2T`Z.TYZ">6*_]_)9VU(/I'.*)UUZ-VNW_X_)=\&\ELJ
    23 MA?AJUDX'-+3H)Z:#V-6@[%Q^&9K/K.`_Q=7)+^HO'Y@8&F^_Z/:Q.&%A.@%!
    24 M<C`$G9\B&`65G<IH<L5OQAXD\&/SO-_.;_<LVOJ\ZPS(B#W@Q3'R_VU,=.6'
    25 M!%E;2V2F,P,BU-^>"#,D0B$1,!TZ,*4=S6[=0([#>*)E$#N'@WA)CV$0=P`J
    26 M%\-'Y:1+&`3Z)W://HE09`:=,AAGG5YE)]US!"@`9:MHF^6>*PZ04CGQEG+(
    27 M;(HIU-`6:EH(7`48Z\-$%D*D-Y#^,;HJ'S[LFOUBWSR><=F)GHBB4^QWO(Y1
    28 M>2^LWP+V34YWGQ>;[-N6T)]>_1QAIO75B>3$`L4H&F+3R(A5RLS>0IKU4^G#
    29 MPD^E#XN87D4U/V6Q2!I-NF"Y]#1$YK//XM.FT8=2.N>TL?IIZ!8=)1VPJ`/%
    30 MWDQ\+N"Y1$=L,]]ZP5@B-]B7X8RKDSC9*_9>.`W\.Z6K0[2I,>)J(,Y%<X&1
    31 MCI@+JH"!4<@DJ\2YR<B[.7N>O$R^GT^6F[%)469$!9Z/8L]GLUZ^9!MJ^O/%
    32 MR\7WV*3"`)A-.!7&[D9`85`4-"@V7DX\NL@U=GBZYS)O"?]":`+E@>XN'SJO
    33 MU!T^K\7^HZ."--A=L]HO[LE@\\KN?KM^S+QRHT'.V$_>I?>H(E)\OJ;K6#=P
    34 MJA1O0;$318/8NY];$>22!6.DZ26Q)S!YPVP6J>DY5YN.L1M@!;"-_:>NVB]2
    35 MK5$1_51)JH:"1=)]L1H!+@%8/$1E;&!^=A%*_89.>%<?&-OV0:PP]H4!&3,U
    36 MD/6[T%4C73W"H(=L/BH85LWZ]'H)N:@B!/66]S^[_"Z=)##&+[H1?O?:"+=E
    37 M*Q'WTV=]\:(OONN+='!;&-S6MCK@>3-]%HA.:%\VTQ=)K=O4[YLI8$NF]OL@
    38 M7M((=IDD^YD>I\\B>^P[2>X+Y[Y`KL;<[YS['7*)/;NG&S(U[B?/$^JKSV>,
    39 MX)SYM"'^%]3PXGN$+B,TS[S$S<T!0#,*R)@'H&(.J:JZ_`V=574L;56P-,[U
    40 MO)YJ*BVO`T\K+TE1T]2J%9<OTTZMCM;_!>JO=8?I!RO86@?+LI*QP][?:-M;
    41 MC\^W^,<.[;HUNKDJH<O\7CPQ0YZ`1-4D4:OFVVZ_?2)+_/3Q)3QQF(E-V<7$
    42 M6[2_2N1(@6.EV+'JBG"T-`9@E0OATZ=+#LV"&0-.E`I.E(=*0H**O:A0&,*A
    43 MBCVD`"Z`,),XV[IDK3CO@I)(X2N`]\&R'>I"Y[JDRX4X=3K/^Y`Z5Y<]6G0N
    44 M-J#.D^EPUQI^79,ZH-">8/QU:>9RF&9'TJ@A+5H.W':IU#4MG(H^C&;W(%#Z
    45 MZS0_65"!+D>)V:=A$4(K:`JO-P2[FOZL[_GOKO.^.A>,;.TH'QH6(G2Z$+%<
    46 M=SZ9H))B%HI1ZP(P6;OC#EK?XM6JAO(.RB=FO_8F/F1!-[-!GU#6U=O]>A+X
    47 M7<=WY]^+^![)T:3SXLAXE&;"$H=F[^!Q1Z(F/<C>`"7]*OZ@9F<`.B`,UJX'
    48 M'G?">%T!:EEVTEJB'[K(TPY9T4/LD(`ZXH-5#LV.0(#V/4+TD2!%IA;%+$%!
    49 M,"3G-"?<K9O=Z@^D0+ZMMY]CJ??H+\+](82>CB/WP23V0#<\^^R;YU9S7B^N
    50 M(Y4@F$4BF/P4?/:T'F%%&_]<[KT^JR0#>,Y^2>"1B$YH<O3L-/LH*;/[D"T@
    51 MK-%H7J/I$ZNSJ?2'0.J.3MU3O+HLCM>LI&K@$RSFZ+*G8+>[YDO?U=9E!06\
    52 MAF4PR099A,4:S8LU'#Z^76]>@HYHFQ%+@K>AV=MH(3M9E%"Y9E>C]7=;H!&7
    53 M5QL#^&R,+*EJ&K5:*<UBWZ!=5MX]J`K"3PD4Z"!>8&'0X^JKC%1;GC`)GN.)
    54 MTFL6QB"ONZ08J^,80=78LB="O@T!6P<"#+'!&R=J2$/*Q*QM-3M(@G)C-`!'
    55 MK.>(YR'QV?DXKE1?^=B+<H0#=#(L>^CJ2/NA\AA2U;`(HBMQKG5%0MU)B+?H
    56 M&2O/8-RG$0CF(S:[I?==U_O5I)XXZ7U8Z-!5Z'TW1FL]0FH-PYU7.;@L\]Y$
    57 M[&Q$'\)HQC!"XVMH?&VBK&N99.K!`D]!"B:!J,(J!Z4TCYO]BT<BM4';(=JN
    58 M.=KNO<X$EU,1URO6[_SK?+&<WRP;GB`Z*_AVO6(%_SY#F"IMUS^*:`EK!TK%
    59 M%<*8$@<X:#<V07%WR=0#0SA/<P0=(/Y,(/PK^<3HD"`&FJNBPN(LJBY@B/GU
    60 MK*T.Q@L'NX\4*B#67;"U&BH5-5EP:-N3F*864$S$IF##%(>,K]-OE-E'$`M%
    61 M_3)V]AI#"Q_@INRW&7E%+I&0@B/9P&G==D9$S3'L/L6Z-\H+U3)!OT9`+%"T
    62 M!5JS,J:7DHZ^3,%1;2D@"SZ%LD>J!GT&=5?0>C'P"N423A3H$Q1L\/I4]`D*
    63 MMG4[V$)@M<!*M6"R%AI$0AMXMHD;N>>=6:TCV?J1/3>R`&NU8&M5BF3B%10Z
    64 MB5#L@T\'^1"X+CAPO6^=-QDH1:%G'F/K_%0Q'9I50+/8-&RYN=_M'I+:0,)Y
    65 M0P[GL^N:27<7-8!PX'VD9K;MN"CGN,1V*2`N77!<VO/NZWR)#6)+KB5PX?G!
    66 M`));)KDT+!;@N!:E@0JHTUH8V!%0E-`S;,*%\B"Y'#'VY9)40ZT*E$A+#33'
    67 MB%-9F*AKN6U>,1@+<VEAI!7+_^`V+K&-1I3L,M#/0)(-W<3[:5J8H(!(A"=D
    68 M0$)5T&-LM`54W9`D<-$'1@8%FVO+P(-70=FO].1WD,9&0!>A9"HJK-]BE.W6
    69 MCPU9Q3=/GSZQ4W.[?GR<K^YV$0J$UIH@*W<W5^VO:`";S.UW-\&^)L@(4`T`
    70 MM(=`P;'U`*CHH0'E7+%R)O>W>3SSH).PD_)<//&"3;L49#=_;"8!-6_EB(#Z
    71 M"*!.((LCD-SE>80L#T'J!`Q&2V7[35HN/C??%KM1FJL^_AYP2G?]"G210+LQ
    72 MZ!$BV*@\")@04`_Z`B"3RNM!9W20"=2@(SJHA+VU>)H%VZ5ID=,P>Y^F5@9;
    73 MJB-P?2C0877=Q\Q[X0C^[B:"]%BJ1V`<3#5.]5$VJZ?'9CO?-^?9=-K')9G`
    74 M(S?@Y&$<AU`,V`PH_BY%41S"`7T`X=2"PZFMCGUL'I-80N'$&Z8\UA7T([DU
    75 MYA9>\9+]1<^B=)WHBC(774$P0TU1YB*='B`,U8!/12!]`$@G4,4!*-0.95Z.
    76 M0:7"6^8&FF#3)LCP[5-9S0X#II361R"+!-(-(0<5J_P`4%*I4@>@D@J5'H/R
    77 M&B!R1Q7C,`D+(51<*I.R<'3TE\K.AE!]F`JPUBE6/ZIA=#$#XEB7!H)TZIYT
    78 MC@[2@&9L?)6ZQ])#Y0\5UP>+_QT6/S"\2S#>RW0W"A4*E@",W9+CSZ/C(TPM
    79 ML>>T/2*=Z314@J5?ZCI8-D\WS?-FV^QVB_5J%S,=A%EXCY<8I24;^JTSR89S
    80 ME\JF%25PB-['LV2S5^GM_M;_(Q""Z/O(I8];>WS1`XOV;`GAXA)\`JY#HX=5
    81 M@E=0LE?0UM;2`W`UP+G+?LW1.2LA]EN6/AC$S4(`#0!%0IH/V_CZ8[W!(_!9
    82 MJI144%^P3;\LJP%EI50,32A=I$P`#)!NDK`UXVQ7?WKT<617<L4=+<VP>XJ8
    83 MUS8JK1W:Q#'=0?>#EH#='J419[HT*(1&`G"EA:;Q=OA6&DUP7PCV7$"A?]B6
    84 M)R@.YC%"@2EG77HEB<8G@J=P`EO0.B`>>XS)Q(9;:(R%QG#(E</J]#^U)R6`
    85 M`ZY=`(FS!Z.##72?`\YG64'3*B]Z!N-'906CII)1X_O*!E8)GR#&6B8QUN6R
    86 MFOH2`EJ'_K8<'T=Z0%77>9#(*MES&W,50(HO6M;%<`5\]Q`7P"5D48*Y6K*Y
    87 MVH*&7W+P:H&$AM72,(9AA3N$I]:%A,4T%XJA;2Y'+&Z:)>4YH,H)2>2CA.AF
    88 MR=%-+GB5Q!M*L/Y*MOZ&C-#,"98AXHFP`O;HEKRHW@''MO'YH"X?E(9SV`R_
    89 M""$$&XY9"H)+8NTT@`F$FHW4I8"I4K')I?V&5^019/<@`1G#]IX@ZV<:P")&
    90 M,:]>Y`28$BQU!Y_:@R!)-2!SEX-:NPG6H+T68:B"UEB93ON9N63*W&N\02?\
    91 M9D9E";Y(&1MU/E%67PP;<3T*7<Q#GN6]/&"9DKG%J#@4TD;Q\0*EI%I@DI+%
    92 M!`-G"0V?)>SW9VPU&DWO9AYP#XPGX\\CME[-"\\H&#,S;#?Y"8'S(%1EV%!J
    93 MTUASM64ENX(::N!.5^(\'2$<#XU5#)6<*?)9K`*31?>90A^J)NH34Q1CU=2"
    94 MKX1J(!GZO;"@SPG/O_USB_!C&*U=S5*G=RH'D(4`U%)I(77*.@@TIS>7&3"I
    95 M3"D[74RIX;G@/9_K6QJWF^7\MN%I,5L^[";A8-/#[CS[*[_SXO3#[BK[GUBP
    96 M!.1^8T$H+_1,R(B*RM.4%N"]\NQS.IHTIH1&8[),#<;DXQVJXEQOC'H+DV")
    97 MW9ABC*YH<1B#$@#)(`%L@4EM&1SD,F!\&3:^QF@36\V84:FW7;;-1VF!M7/#
    98 M:^<A"N'ASCU@EP>CG&.JK_Z+P`8G,]D9;=A"8UJEA!*JX)R"-X<(\'QD`R7Y
    99 M/W$'I;'^`,-5GPY9-XJ`?G\)M7/IN3BMKQ**V>9+".M35ZG^*8.8HV4F^<I.
    100 M!HY=#KQ^_4HSQQB;JG*$^%B#DQH,(^G#07[+54Q*(M=?B80>76Q7><)BBNN(
    101 M`0K:O#H'CW$@A+5G#2MQU._U*%L&O4EYTINP-&]@:=[4!IYAVJPK>*Z['<"Z
    102 M=][<@+EHV%R$;:\BFK#_TK@X$V2;CVQL"2X')#H@D6W$4'W1KQY,0L,F(:/\
    103 MT;M;J2+>-L\U7<>ZP7KPYF:W6UY.BEE8'+>\.!YH)3Z=Q%0-$'*BQ\*:N,V[
    104 M(]T^!!)B0!R*D6HL1D+EZ"D0<BR2:O/7(ZD6EL2M>B62:OOQO;%(JNV']T8C
    105 MJ;8?X!N-I%KUADBJ5>;U`*;M1_Y&`YA6C<171Z@:B:T.J0+&@N5IM8)M3-OQ
    106 M?0U6@_AH'P'8OG&'@=7EK'^AQ+'=_58;J,KZJEA)P:"W8&5:7?>H8:D_2@_P
    107 MH8C'JHBVEU=W_ENP.ZW?0LH5_UB50/7PAE&JZ#K67``5Y=CY&0N6JRWL.SD$
    108 MFT!M(=$76V`HB7](&<?C+[;,N\%-7'R.R'@'0$M@]D6`-0#_8`;Z8VI=99&)
    109 M?M?!D'&RW2!MA1EM1=2'<.+'EA6@>!$4HL=MZ49[S>2_'U=,/L85,]I;1H^V
    110 MR(`<FG$Y9/NY/2E%?T%:3'^#'LL2PPA$L(62;N"]#2/DN0[R1_/,A2UWP#"_
    111 MS778;JN&Q',4=4B\/Z]&D"Q`[R;_7=3;HJ6>JA+ZR]^)=[8<\@Z4%._0'>/C
    112 MB!#842&POY<0V*$05&!^5>*-VTK#<Q%WCDZR[00HAQ"SA1`S+QB-3<7L-HS?
    113 MT&2KJC7I42^SS]";X[J<X#O\:(95SD]@PJXZ;\G\T1)?Y[YFKDDJ5[]+HVO5
    114 M;S2,_G@FQ?K+7,`_?3XZ,7/`?BCYM>D<N1^N0OSANZXN:9K]?5AJ^RRM1EE:
    115 MOXNE+LJB:!B7C_'9J=]);)T:BBVL?5A>^SCUUU/Q557\&W-`E;!KZV]N^O8E
    116 MW&A%#S'/`EP%*F?WL-[NH]H1I0-.J'7M6N^:S^4=N6RDRO-9!\BG("3L6^5B
    117 M1U>Y?@5=UVD2_ZU@5W?%'NS/9+7_^W:^7]S.EUGS/'_<+)O=A^QV?OO01#CB
    118 M1W/[L):X5L7^+*P0[;[X`KQ`U&V8Y:WZLDQ4P5TF55ZWX55?Z.[C[LL3E3EK
    119 MD834<-ITOOUT+L6(>W_M7MC!S;+%?79&,+Q_(N>8[+;9/VU7V5E^+D'9BL\P
    120 M9A">>VK(5?.57'HJ?R$,,5!4J;)#W/J%OL0D>UJ17W/.E70HJ-A_:ZHG$L@+
    121 M'%FD@2^7\Z!R(K+B32A"E[A3%>PM.5VL=OOY<NF9*7P]HS\)OR:9!)(KO[>D
    122 MY5_(EBP-U<@6`7^O9>NR`A[6D[Y\X`U!,*#D&T!FPT[3_72_>&RV`E/-LO;$
    123 M\*^3SY.59-!0\'>.Y;FD\0YBJF%ZEG]8"1V\>I'QA9YG&9]>RZ_HYT\K^GMQ
    124 M<2Y"P/N\Z=]G7L\.,K0`%`5G1F[S0L4;,)IC&*L48_TFC.X(QE(E&-FW>QUC
    125 M61S#:%*,]DT8JV,878+1O*EGS+&>,6G/F#?UC#G6,R;M&?.FGC''>L:F/6/?
    126 MU#/V6,_8M&?LFWK&'NL9F_8,V-(5V-(5V-)5U=X9RR.6U]3\R,W^*`.<3>K^
    127 M@*ZZ)<U;OE&)QNF%$B*JM!W*MV,Z:$@5&D(8?EGPAJBSQ7]K0)*VI,[?A+,6
    128 M(0MX([XZE;"Z?!L^<Q!?*E]U_39\[A`^ETJ7TV_"YXJ#^%+9<F_K$U?U\44Y
    129 M<4F'U/F;.J3.#W5(G1<IOC=U2)T?ZI`ZKU)\;^J0.C_4(;5*.J16;^J06AWJ
    130 MD%J9%)]8C;62-9P:SF[5L+^AABASS5'F;LCJD2%;PP1?PY5C-9S0JN&$5JW]
    131 MZ6VO`01'U:5I20/BX.:`FD._8/O=W-W%+5)WSY/6O'A8?'KHGI=KN)FWYD@P
    132 ME<GN%O-/DBB+9]^;[7J:2PX?LR/02\8XY4S)*MLLJJ"78]H<HL@KUY@!'5'X
    133 M-O.EX6>+:9YT<00A%JRF&LJ[66NZ/LP7J[.69#93.PB^;RP*",_O@[;R_`W$
    134 M46%^DB!]S7.X-)GR):>ZE!8G&>XR&IX,(.SFF3C*(:SKUP9$A6.0/:U?<P`2
    135 MF-/Q)HLMY57]V-(P`W/5/!@\<WIT.*##^DM=?7T@R'"U<&UE17*Q;[;3A(/6
    136 MWR;X[6&Q;+R9S1#,PW,8F[8,YTZ[/"EL)(/-6\YG1@N`'Q]"*XQ7VWDN_D+E
    137 MC]2U9T`DUNXUS:[UL!O>*4(6_$5[C7BD]X)'3M2Z=:7`4UGLU71(7%4D('D`
    138 M(7$0"!CJ?M9E7R;E4LQF*B/-83HE8J=,\$4&C21:SBGE-/N0Q9ORZS#),CS_
    139 MN4C`\W."/@=8UH>1I7XZ[<25RI[S)1Y8/#1)A*=&X7$QUN^YKE/9@&7M.EPK
    140 ME"(6JZ-V,`)X:3M5:CEJ-=[WXU6:WPF4Z#,^Y\W@7OA%4_CCW9S"+`=]QB=F
    141 M0KH?W9!1=QD\N"%=W$27R[S@_&IU5$7YF:<!-)'C\,!?XTMQ*51>Q51S7!6Y
    142 MO#J@BAS/I6.JR"EU0!4YGB[_)[Y(P,4I$P(1_]3,;_>+K_-]DYW>+N>['4<E
    143 M3K-O\Y=)MI]_;K+]>LT7JWS*SA[GJQ>^^6-!TA/1\-%CX9SC)>">5G.\X,M]
    144 MZ'=N##=GS&&OC6,'_9@&=!ITO=-^^#"&:=LCOC>E^3I8"SX5=XXXGIPC7[0=
    145 M48U.BQ)R>J"$<K]!+55!3K]'!76%@D<=L(VH'Q><ZI`_U#VN$-WCBJ.ZQQ6H
    146 M>UQY4/?DH\K'E8>43S[4/JY$[>/*=VH?5X+V<7"NP1F9L)Q)=<V@]V&Z=<;/
    147 M3<E(A)LP'4^L?L&#;R,A(XJW8_HPZ#4_^QN7?32*[UOF6"C#OBM.ZOS=E[TJ
    148 MKF/U53#0;G+1`W`TVO%,?D:9OC]AN%G1RXP5HI;.*LRJI[+!U+%GS<A8S'H7
    149 MT3B>YSF/>B,+>5`.](<%YO'LW>'#G:^.%\1:9+A5U<'%-*X])7'6(3A/SL,[
    150 M]K"[;)80)DJ,0P=7U#AVNH&,N%'-5060H7-)A_:$M2QF!!;T2^;,`2Q5S;JU
    151 M,2$#&E0E-^U,R9&);UHN&W-UWMN*2,`3AA'YK=5@2URR9]358ENZ&H2=][4Q
    152 MTY;=[N)"<)ITP:$X&<;"75@C4;#3U]75:[0`"^`2&B=G)X2<N#?6N=Z61S-&
    153 MCM,M.4:2BE?(@<4%!R=K'9RL72X+Z`]700&_38>7`0A&(.`FV)S-`B&@&!!`
    154 M$$>;UJT3P&WGL.N-7HK8A81\&H^.44Z)8'RA$-'H:RI/7JFLA,KL[#7Z\2KT
    155 M<%7,+^5?X`KB/$>&^+O-&<(?,H,;U=6;^,"TEP,J_0TQ@0LE<0&NLLQ5\1:T
    156 MK(PZO**8J#0R4<%%ECE;-$$5:Z@,><$1!,IM]<SUQVM`ZSIM%;+/>_DZ[^7+
    157 MYEC*A-LY<ZVQ$@<H1/*AEE[?:6R>-I=]A46)%B&J>*(.(.JX/A]&7\QPL\&(
    158 M+NB?0!2]J]PY5UI08#L+N+P]+PI\*4?(QEO+\P+'<N]X&^7*[L[E<O>RNITF
    159 MB.H9J,A0N(#KY`C"I8V`BR@+_RX748+$PED'>@D7ZYU)17XPARM7)A8J*_4[
    160 M*LN26R\!U`^#-E5CJ@4"DV\F)!.%5WA,6XV4F;\19370@,('EQ;22]`SZB^1
    161 MEH1+[^F28[0`/TQ8]R7Y^!OC12EG2[6U_<2N_!M8E8Q9S$JY9#CGW6[H6]\\
    162 M=R<)X4PE@9&>H+SL9OT,B3C&#)XDFJ9P?H#QF49HM=\TS==?#I;E*=-U!?[$
    163 MN3,I9G'46+_']W*17G](Z3@_6K^L.HJK#"0<N-E+X+"95NZ0X,-HIP_-<L.,
    164 M:M/^M&WN9Y/L\O+R_$/6/.\;ZK6[C#_MM5^L5_/E8O^2?@KQ9[RHSI>FZE-D
    165 M87]X%)T_MI^HR];W@F:7;=;DW?A;5=<'\,"E!`'/TVKQY:GIT#%9[8Z/%\8S
    166 MCB2*88?D]J&Y_;S+OCTT_*FS4"I[F-.\V#2KC.,$G\*G9U(\+>.D4=X[VV7[
    167 M!Y+UQ8J(>9PSR[+'9K>;?VJ&"+J;)SH$\]O]$SGXG"Q\(3)>QEJB9MTN=W[3
    168 MLW-"L(\?J@QLN(6MG.N;7YO;_4[$`.=Y.,M-+ZX=P7PI-US-I'+V4'S,*L/)
    169 MO!+W*]P3EBVN!!N?Y^'3!-F25P1/B9L?B,#/IU?9>M.LSI8*1@U[+_[#+F?L
    170 M('QY6O,3#ZZ%OW2&_YZ?(SS._>S6?)LO]O>+;7=E-"&?\&E?V+E/<#;$:.;;
    171 M3PM__^O\KD<%<88SK_#LD-RC)7!U-$\8?,0T)QB7PN@1F!HU`GQZC%Z\UX^7
    172 M"S(2Y`"[0K?+]:Y)FU`C8VJT^6J;=NX$S9VZ&NO?.KF1*W:QY+NW]S!'5_L]
    173 MS+/RH&OQ_O:<(ZUOZ5IVE4:[=A"*\Q#RY8"<?:C0Y]#!''N%SAOVG+/IU8]=
    174 M[\AI+H(AGH[T$&S<HA<:<0LXOJW\%Z3Z]"C8G44OLH1Q,[_]S$-_VGUQ3BZX
    175 M4\F'H_R7HSKHT0^&86T&"]I!;?[4;/<"A^%4\F4I_VDI*8(Q$Z70J_)?C!+`
    176 MJ15\[%8-J;9C1*ONZR,"'[.0$:I,J?*6R#]0PA]%TF^VZ\_-ZIV?02#,9*4`
    177 MZFNI$QGJ?:\?0X`]2`#V"[MVG2(`;\%_KZK5`?@]!?_-JN1@0*($DJ]4^<]4
    178 MA<L<H;-UV%"?7?BLC%?)_ORT7],D2<WYPUW3(:?A^0?YO"R5*[MRY=6)5I).
    179 M["Q;;$FZ14K`XE9:/NS6WB<^*2<&QDI["RA\)$T%_^X72OT+QXAB,C:WZ$S>
    180 M+90[]+F;"%#.#GVORG^PJAUMS_YR"E@TH5P;2IX]^P/&?&HH9E6'L^K#63@,
    181 MRQPX!D?8E?]^%77:/[*YQ"W;D9&1-??W:%:HLKMQ\_9AOOK4/#9"-Q_AD52X
    182 MW#D"X``I;;L.L6M:O8]W_$PZ/>_/RK>N.Z\3Q5"Z4B6*.WM;$5-'Q22#,Y+*
    183 M?Z%*"`3MV`%`=)Y>5,J.N\5]H&^??9UO%W.V!<G`#<Q8K[XV6[Z$2HI#-,!_
    184 MUDHNI>$2H\?]E/^\E<\G4[6%"P4`A&>MD#MT\XX>,*.R[3<@S@+2\_<CJ-IS
    185 MX0,$Q^Y;IG(U<M:%!;O(VOW#?!],C+NFV2R[I3G24_0>IV/_S:HP#B<\;E*]
    186 M9KL/"O&R?#[)NC&9X:!DOTL&)2F7%_H?!J8M^@,3\L#F4O[(OO_NTB;00M;.
    187 M"_5E]IV[L_,9J(WW\\5R%S1\@+_F^J\G[1$P>N"/F9Y[N,%'4-,2^'/^?PM)
    188 M:GF[>!983\4[9R++IQ+>S@69J/S-4UVYJ+3ZI:G<I_7Z[L1*N0K*>3$\4([]
    189 M/RQ7_\9R[K>5JU"/5'+'5S?JO?!V?V#T>U^J578O5Y%[[3T@=]EZQ5]*8Q5'
    190 MKO)^^R(%>Q'DES@8GR6`_"S#N"HQ[JE]W//[55H=>[KD5K+/+.J_,H<J^BX5
    191 M?8>*;(Q-AEJ>KT0J/C6K9DM.['RY;[8K<J:_RA<_J^J=+:IYX3O[XV_\)WC\
    192 97=O[C[O]?/^T.R.3_N]/_@]RP8`[4X(`````
     7M<R'#S++X;"^SW<MNWSR>G49J3L^E@FH6\P-]F%D#(G<9GU4.SPJ>0_NEU0]/
     8M#T]3546$BAJZ6.VSS^O/ZR2]E(J4N>QC8'"!M;XG=OOM8O7IC/.%8%4Q`>-9
     9MM:^Z2U55S'"S0V4TM%-#.S6UDR$]FIA82!MT>=DC4.K3U#O0OL7#(INVV#H(
     10M"YBH10R35@7]HMT(0)'/8OV4E]1?*"E<4$,8*MM.\\GSY&X3:2B@-06U9O7T
     11M>--L1[!1:SQ;!QG0B*)MQ$5H9E'&#&K(>(8+&3^%ING:=3EE+GA+%?#^I#3!
     12MY+%TJ6>>HQ<JI_1(4EFTM?620?A*([U<6GBN@N"N;W[-ILI%-I4U=N;&9S.0
     13M`'CIFN^I,V[..'^2G3)IIY/3+]^:+]]@M!F0-J-8D%_V#^O5Q^W3ZNSTKKG/
     14M'E\V6^;U3_/MI]WYA\R_9?R"6/P8;"ML2T!N,<PEBNZ?5K<?5_-'U`RF!'*(
     15M+9\7RV7F&[#!!AKH9U.]@IU>;E[^O'KYM_U#L_W77GWUVTD#761S+K9<[,+0
     16MGH0_01H[$!BZEMC#G/_VA?\C_E^=P%N$`NFWY<A@MV8V''666'%Z-R>4=_.8
     17M5@51G'*EH3[2I?\KNZ;679^Q8CLGB;D.@_4Z6^RRU7J?[9XVF_66%'P`;IXW
     18MS2V]A5(,S[]'\A[G,7N[I7EH?7O[M.6Y9['*Z/6FH<FIR0*)R\6J(3(_9-<I
     19MG=>Q"23CIP^+9DNT\T],=[,A8ZI\A#$5J)R*.H`GO_5]IQKC^(D@P/VJ#`-O
     20MU3RMOC</*VH@#+\JT:7TI+)I!RE`M@>D"0G#"@1U$@\P2BRF:0YHVHJD[HQS
     21M)XR#_Q2L\=Q)UO[?`=8YCWF&G"H;4=4@A;5^*RIB!<MVMN1_1+<7=%5-5"'R
     22M79=#+H0"5R<T4_[T$Z51\\AV8$W/V3_]%,L&#@I+0#H[3GH)Y8K_W\EG;4@^
     23MD<XHG77HW:[?_C\EWP;R6RJ%^&K63@<TM.@GIH/8U:#L7'X9FL^LX#_%U<DO
     24MZB\?F!@:;[_H]K$X86$Z`4%R,`2=GR(8!96=RFARQ6_&'B3P8_.\W\YO]RS:
     25M^KSK#,B(/>#%,?+_;4QTY8<$65M+9*8S`R+4WYX(,R1"(1$P';H*>HYFMVX@
     26MQV$\T3*(G<-!O*3',(@[`)6+X:-RTB4,`OT3NT>?1"@R@TX9C+-.K[*3[CD"
     27M%("R5;3-<L\5!TBIG'A+.60VQ11J:`LU+02N`HSU82(+(=(;2/\8_9D/'W;-
     28M?L'^")>=Z(DH.L5^Q^L8E7?5^BU@W^1T]WFQR;YM"?WIU<\19EI?G4A.+%",
     29MHB$VC8Q8I<SL+:19/Y4^+/Q4^K"(Z554\U,6BZ31I`N62T]#9#[[+#YM&GTH
     30MI7-.&ZN?AF[14=(!BSI0[,W$YP*>2W3$-O.M%XPE<H-]&<ZX.HF3O6+OA=/`
     31MOU.Z.D2;&B.N!N)<-!<8Z8BYH`H8&(5,LDJ<FXR\F[/GR<OD^_EDN1F;%&5&
     32M5.#Y*/9\-NOE2[:AIC]?O%Q\CTTJ#(#9A%-A[&X$%`9%08-BX^7$HXM<8X>G
     33M>R[SEO`OA"90'NCN\J'S2MWA\UKL/SHJ2(/=-:O]XIX,-J_L[K?KQ\PK-QKD
     34MC/WD77J/*B+%YVNZCG4#ITKQ%A0[432(O?NY%4$N63!&FEX2>P*3-\QFD9J>
     35M<[7I&+L!5@#;V'_JJOTBU1H5T4^5I&HH6"3=%ZL1X!*`Q4-4Q@;F9Q>AU&_H
     36MA'?U@;%M'\0*8U\8D#%3`UF_"UTUTM4C#'K(YJ."8=6L3Z^7D(LJ0E!O>?^S
     37MR^_220)C_*(;X7>OC7!;MA)Q/WW6%R_ZXKN^2`>WA<%M;:L#GC?39X'HA/9E
     38M,WV1U+I-_;Z9`K9D:K\/XB6-8)=)LI_I<?HLLL>^D^2^<.X+Y&K,_<ZYWR&7
     39MV+-[NB%3XW[R/*&^^GS&",Z93QOB?T$-+[Y'Z#)"\\Q+W-P<`#2C@(QY`"KF
     40MD*JJR]_0657'TE8%2^-<S^NIIM+R.O"T\I(4-4VM6G'Y,NW4ZFC]7Z#^6G>8
     41M?K""K76P+"L9.^S]C;:]]?A\BW_LT*Y;HYNK$KK,[\43,^0)2%1-$K5JONWV
     42MVR>RQ$\?7\(3AYG8E%U,O$7[JT2.%#A6BAVKK@A'2V,`5KD0/GVZY-`LF#'@
     43M1*G@1'FH)"2HV(L*A2$<JMA#"N`""#.)LZU+UHKS+BB)%+X">!\LVZ$N=*Y+
     44MNER(4Z?SO`^I<W79HT7G8@/J/)D.=ZWAUS6I`PKM"<9?EV8NAVEV)(T:TJ+E
     45MP&V72EW3PJGHPVAV#P*EOT[SDP45Z'*4F'T:%B&T@J;P>D.PJ^G/^I[_[CKO
     46MJW/!R-:.\J%A(4*G"Q'+=>>3"2HI9J$8M2X`D[4[[J#U+5ZM:BCOH'QB]FMO
     47MXD,6=#,;]`EE7;W=KR>!WW5\=_Z]B.^1'$TZ+XZ,1VDF+'%H]@X>=R1JTH/L
     48M#5#2K^(/:G8&H`/"8.UZX'$GC-<5H*ZE![5$/W21IQVRHH?8(0%UQ`>K')H=
     49M@0#M>X3H(T&*3"V*68*"8$C.:4ZX6S>[U1](@7Q;;S_'4N_17X3[0P@]'4?N
     50M@TGL@6YX]MDWSZWFO%Y<1RI!,(M$,/DI^.QI/<**-OZYW'M]5DD&\)S]DL`C
     51M$9W0Y.C9:?914F;W(5M`6*/1O$;3)U9G4^D/@=0=G;JG>'59'*]92=7`)UC,
     52MT65/P6YWS9>^JZW+"@IX#<M@D@VR"(LUFA=K.'Q\N]Z\!!W1-B.6!&]#L[?1
     53M0G:R**%RS:Y&Z^^V0",NKS8&\-D865+5-&JU4IK%OD&[]KQ[4!6$GQ(HT$&\
     54MP,*@Q]57&:FV/&$2/,<3I=<LC$%>=TDQ5L<Q@JJQ94^$?!L"M@X$&&*#-T[4
     55MD(:4B5G;:G:0!.7&:`".6,\1ST/BL_-Q7*F^\K$7Y0@'Z&18]M#5D?9#Y3&D
     56MJF$11%?B7.N*A+J3$&_1,U:>P;A/(Q#,1VQV2^^[KO>K23UQTONPT*&KT/MN
     57MC-9ZA-0:ACNO<G!9YKV)V-F(/H31C&&$QM?0^-I$6=<RR=2#!9Z"%$P"4855
     58M#DII'C?[%X]$:H.V0[1=<[3=>YT)+J<BKE>LW_G7^6(YOUDV/$%T5O#M>L4*
     59M_GV&,%7:KG\4T1+6#I2**X0Q)0YPT&YL@N(6E*D'AG">Y@@Z0/R90/A7\HG1
     60M(4$,-%=%A<595%W`$//K65L=C!<.=A\I5$"LNV!K-50J:K+@T+8G,4TMH)B(
     61M3<&&*0X97Z??3;./(!:*^F7L[#6&%C[`3=EO,_**7"(A!4>R@=.Z[8R(FF/8
     62M?8IU;Y07JF6"?HV`6*!H"[1F94PO)1U]F8*CVE)`%GP*98]4#?H,ZJZ@]6+@
     63M%<HEG"C0)RC8X/6IZ!,4;.MVL(7`:H&5:L%D+32(A#;P;!,W<L_;MUI'LO4C
     64M>VYD`=9JP=:J%,G$*RAT$J'8!Y\.\B%P77#@>M\Z;S)0BD+//,;6^:EB.C2K
     65M@&:Q:=AR<[_;/22U@83SAAS.9]<UD^XN:@#AP/M(S6S;<5'.<8GM4D!<NN"X
     66MM.?=U_D2&\267$O@PO.#`22W3')I6"S`<2U*`Q50I[4PL".@**%GV(0+Y4%R
     67M.6+LRR6IAEH5*)&6&FB.$:>R,%'7<MN\8C`6YM+"2"N6_\%M7&(;C2C99:"?
     68M@20;NHGWT[0P00&1"$_(@(2JH,?8:`NHNB%)X*(/C`P*-M>6@0>O@K)?Z<GO
     69M((V-@"Y"R5146+_%*-NM'QNRBF^>/GUBI^9V_?@X7]WM(A0(K35!5NYNKMI?
     70MT0`VF=OO;H)]39`1H!H`:`^!@F/K`5#10P/*N<KCGDD/.@G;+<_%$R_8M$M!
     71M=O/'9A)0\U:."*B/`.H$LC@"R5V>1\CR$*1.P&"T5+;?I.7B<_-ML1NEN>KC
     72M[P&G=->O0!<)M!N#'B&"C<J#@`D!]:`O`#*IO!YT1@>90`TZHH-*V%N+IUFP
     73M79H6.0VS]VEJ9;"E.@+7AP(=5M=]S+P7CN#O;B)(CZ5Z!,;!5.-4'V6S>GIL
     74MMO-]<YY-IWU<D@D\<@-.'L9Q",6`S8#B[U(4Q2$<T`<03BTXG-KJV,?F,8DE
     75M%$Z\8<IC74$_DEMC;N$5+]E?]"Q*UXFN*'/1%00SU!1E+M+I`<)0#?A4!-('
     76M@'0"51R`0NU0YN485"J\96Z@"39M@@S?/I75[#!@2FE]!+)((-T0<E"QR@\`
     77M)94J=0`JJ5#I,2BO`2)W5#$.D[`00L6E,BD+1T=_J>QL"-6'J0!KG6+UHQI&
     78M%S,@CG5I($BG[DGGZ"`-:,;&5ZE[+#U4_E!Q?;#XWV'Q`\.[!..]3'>C4*%@
     79M"<#8+3G^/#H^PM02>T[;(]*93D,E6/JEKH-E\W33/&^VS6ZW6*]V,=-!F(7W
     80M>(E16K*AWSJ3;#AWJ6Q:40*'Z'T\2S9[E=[N;_T_`B&(OH]<^KBUQQ<]L&C/
     81MEA`N+L$GX#HT>E@E>`4E>P5M;2T]`%<#G+OLUQR=LQ)BOV7I@T'<+`30`%`D
     82MI/FPC:\_UAL\`I^E2DD%]07;],NR&E!62L70A-)%R@3``.DF"5LSSG;UIT<?
     83M1W8E5]S1T@R[IXAY;:/2VJ%-'-,==#]H"=CM41IQIDN#0F@D`%=::!IOAV^E
     84MT03WA6#/!13ZAVUY@N)@'B,4F'+6I5>2:'PB>`HGL`6M`^*QQYA,;+B%QEAH
     85M#(=<.:Q._U-[4@(XX-H%D#A[,#K80/<YX'R6%32M\J)G,'Y45C!J*ADUOJ]L
     86M8)7P"6*L91)C72ZKJ2\AH'7H;\OQ<:0'5'6=!XFLDCVW,5<!I/BB95T,5\!W
     87M#W$!7$(6)9BK)9NK+6CX)0>O%DAH6"T-8QA6N$-X:EU(6$QSH1C:YG+$XJ99
     88M4IX#JIR01#Y*B&Z6'-WD@E=)O*$$ZZ]DZV_(",V<8!DBG@@K8(]NR8OJ'7!L
     89M&Y\/ZO)!:3B'S?"+$$*PX9BE(+@DUDX#F$"HV4A="I@J%9M<VF]X11Y!=@\2
     90MD#%L[PFR?J8!+&(4\^I%3H`IP5)W\*D]"))4`S)W.:BUFV`-VFL1ABIHC97I
     91MM)^92Z;,O<8;=,)O9E26X(N4L5'G$V7UQ;`1UZ/0Q3SD6=[+`Y8IF5N,BD,A
     92M;10?+U!*J@4F*5E,,'"6T/!9PGY_QE:CT?1NY@'WP'@R_CQBZ]6\\(R",3/#
     93M=I.?$#@/0E6&#:4VC3576U:R*ZBA!NYT)<[3$<+QT%C%4,F9(I_%*C!9=)\I
     94M]*%JHCXQ13%632WX2J@&DJ'?"POZG/#\VS^W"#^&T=K5+'5ZIW(`60A`+946
     95M4J>L@T!S>G.9`9/*E++3Q90:G@O>\[F^I7&[6<YO&YX6L^7#;A(.-CWLSK._
     96M\CLO3C_LKK+_B05+0.XW%H3R0L^$C*BH/$UI`=XKSSZGHTEC2F@T)LO48$P^
     97MWJ$JSO7&J+<P"9;8C2G&Z(H6AS$H`9`,$L`6F-26P4$N`\:78>-KC#:QU8P9
     98ME7K;9=M\E!98.S>\=AZB$![NW`-V>3#*.:;ZZK\(;'`RDYW1ABTTIE5***$*
     99MSBEX<X@`ST<V4)+_$W=0&NL/,%SUZ9!UHPCH]Y=0.Y>>B]/Z*J&8;;Z$L#YU
     100ME>J?,H@Y6F:2K^QDX-CEP.O7KS1SC+&I*D>(CS4XJ<$PDCX<Y+=<Q:0D<OV5
     101M2.C1Q7:5)RRFN(X8H*#-JW/P&`="6'O6L!)'_5Z/LF70FY0GO0E+\P:6YDUM
     102MX!FFS;J"Y[K;`:Q[Y\T-F(N&S478]BJB"?LOC8LS0;;YR,:6X')`H@,2V48,
     103MU1?]ZL$D-&P2,LH?O;N5*N)M\US3=:P;K`=O;G:[Y>6DF(7%<<N+XX%6XM-)
     104M3-4`(2=Z+*R)V[P[TNU#("$&Q*$8J<9B)%2.G@(AQR*I-G\]DFIA2=RJ5R*I
     105MMA_?&XNDVGYX;S22:OL!OM%(JE5OB*1:95X/8-I^Y&\T@&G52'QUA*J1V.J0
     106M*F`L6)Y6*]C&M!W?UV`UB(_V$8#M&W<86%W.^A=*'-O=;[6!JJROBI44#'H+
     107M5J;5=8\:EOJC]``?BGBLBFA[>77GOP6[T_HMI%SQCU4)5`]O&*6*KF/-!5!1
     108MCIV?L6"YVL*^DT.P"=06$GVQ!8:2^(>4<3S^8LN\&]S$Q>>(C'<`M`1F7P18
     109M`_`/9J`_IM95%IGH=QT,&2?;#=)6F-%61'T()WYL60&*%T$A>MR6;K373/[[
     110M<<7D8UPQH[UE]&B+#,BA&9=#MI_;DU+T%Z3%]#?HL2PQC$`$6RCI!M[;,$*>
     111MZR!_-,]<V'('#//;7(?MMFI(/$=1A\3[\VH$R0+T;O+?1;TM6NJI*J&__)UX
     112M9\LA[T!)\0[=,3Z."($=%0+[>PF!'0I!!>97)=ZXK30\%W'GZ"3;3H!R"#%;
     113M"#'S@M'85,QNP_@-3;:J6I,>]3+[#+TYKLL)OL./9ECE_`0F[*KSELP?+?%U
     114M[FOFFJ1R];LTNE;]1L/HCV=2K+_,!?S3YZ,3,P?LAY)?F\Z1^^$JQ!^^Z^J2
     115MIMG?AZ6VS])JE*7UNUCJHBR*AG'Y&)^=^IW$UJFAV,+:A^6UCU-_/15?5<6_
     116M,0=4";NV_N:F;U_"C5;T$/,LP%6@<G8/Z^T^JAU1.N"$6M>N]:[Y7-Z1RT:J
     117M/)]U@'P*0L*^52YV=)7K5]!UG2;QWPIV=5?LP?Y,5ON_;^?[Q>U\F37/\\?-
     118MLME]R&[GMP]-A"-^-+</:XEK5>S/P@K1[HLOP`M$W899WJHORT05W&52Y74;
     119M7O6%[C[NOCQ1F;,624@-ITWGVT_G4HRX]]?NA1W<+%O<9V<$P_LG<H[);IO]
     120MTW:5G>7G$I2M^`QC!N&YIX9<-5_)I:?R%\(0`T65*CO$K5_H2TRRIQ7Y->=<
     121M28>"BOVWIGHB@;S`D44:^'(Y#RHG(BO>A")TB3M5P=Z2T\5JMY\OEYZ9PM<S
     122M^I/P:Y))(+GR>TM:_H5LR=)0C6P1\)=?MBXKX&$]Z<L'WA`$`TJ^`60V[#3=
     123M3_>+QV8K,-4L:T\,_SKY/%E)!@T%?^=8GDL:[R"F&J9G^8>5T,&K%QG?^GF6
     124M\>FU_(I^_K2BOQ<7YR($O,^;_GWF]>P@0PM`47!FY#8O5+P!HSF&L4HQUF_"
     125MZ(Y@+%6"D7V[US&6Q3&,)L5HWX2Q.H;1)1C-FWK&'.L9D_:,>5//F&,]8]*>
     126M,6_J&7.L9VS:,_9-/6./]8Q->\:^J6?LL9ZQ:<^`+5V!+5V!+5U5[9VQ/&)Y
     127M3<V/W.R/,L#9I.X/Z*I;TKSE&Y5HG%XH(:)*VZ%\.Z:#AE2A(83AEP5OB#I;
     128M_+<&)&E+ZOQ-.&L1LH`WXJM3":O+M^$S!_&E\E77;\/G#N%SJ70Y_29\KCB(
     129M+Y4M][8^<54?7Y03EW1(G;^I0^K\4(?4>9'B>U.'U/FA#JGS*L7WI@ZI\T,=
     130M4JND0VKUI@ZIU:$.J95)\8G56"M9PZGA[%8-^QMJB#+7'&7NAJP>&;(U3/`U
     131M7#E6PPFM&DYHU=J?WO8:0'!479J6-"`.;@ZH.?0+MM_-W5W<(G7W/&G-BX?%
     132MIX?N>;F&FWEKC@13F>QN,?\DB;)X]KW9KJ>YY/`Q.P*]9(Q3SI2LLLVB"GHY
     133MILTABKQRC1G0$85O,]\L?K:8YDD71Q!BP6JJH;R;M:;KPWRQ.FM)9C.U@^#[
     134MQJ*`\/P^:"O/WT`<%>8G"=+7/(=+DRE?<JI+:7&2X2ZCX<D`PFZ>B:,<PKI^
     135M;4!4.`;9T_HU!R"!.1UOLMA27M6/+0TS,%?-@\$SIT>'`SJLO]35UP>"#%<+
     136MUU96)!?[9CM-.&C];8+?'A;+QIO9#,$\/(>Q:<MP[K3+D\)&,MB\Y7QFM`#X
     137M\2&TPGBUG>?B+U3^2%U[!D1B[5[3[%H/N^&=(F3!7[37B$=Z+WCD1*U;5PH\
     138ME<5>38?$544"D@<0$@>!@*'N9UWV95(NQ6RF,M(<IE,B=LH$7V302*+EG%).
     139MLP]9O$Z_#I,LP_.?BP0\/R?H<X!E?1A9ZJ?33ERI[#E?XH'%0Y-$>&H4'A=C
     140M_9[K.I4-6-:NP[5"*6*Q.FH'(X"7ME.EEJ-6XWT_7J7YG4")/N-SW@SNA5\T
     141MA3_>S2G,<M!G?&(FI/O1#1EUE\&#&]+%372YS`O.KU9'592?>1I`$SD.#_PU
     142MOA270N553#7'59'+JP.JR/%<.J:*G%('5)'CZ?)_XHL$7)PR(1#Q3\W\=K_X
     143M.M\WV>GM<K[;<53B-/LV?YED^_GG)MNOUWRQRJ?L['&^>N&;/Q8D/1$-'ST6
     144MSCE>`NYI-<<+OMR'?N?&<'/&'/;:.';0CVE`IT'7.^V'#V.8MCWB>U.:KX.U
     145MX%-QYXCCR3GR1=L1U>BT*"&G!THH]QO44A7D]'M44%<H>-0!VXCZ<<&I#OE#
     146MW>,*T3VN.*I[7(&ZQY4'=4\^JGQ<>4CYY$/MXTK4/JY\I_9Q)6@?!^<:G)$)
     147MRYE4UPQZ'Z9;9_S<E(Q$N`G3\<3J%SSX-A(RHG@[I@^#7O.SOW'91Z/XOF6.
     148MA3+LN^*DSM]]V:OB.E9?!0/M)A<]`$>C'<_D9Y3I^Q.&FQ6]S%@A:NFLPJQZ
     149M*AM,'7O6C(S%K'<1C>-YGO.H-[*0!^5`?UA@'L_>'3[<^>IX0:Q%AEM5'5Q,
     150MX]I3$F<=@O/D/+QC#[O+9@EAHL0X='!%C6.G&\B(&]5<50`9.I=T:$]8RV)&
     151M8$&_9,X<P%+5K%L;$S*@055RT\Z4')GXIN6R,5?GO:V(!#QA&)'?6@VVQ"5[
     152M1ETMMJ6K0=AY7QLS;=GM+BX$ITD7'(J382S<A342!3M]75V]1@NP`"ZA<7)V
     153M0LB)>V.=ZVUY-&/D.-V28R2I>(4<6%QP<++6P<G:Y;*`_G`5%/#;='@9@&`$
     154M`FZ"S=DL$`**`0$$<;1IW3H!W'8.N][HI8A=2,BG\>@8Y90(QA<*$8V^IO+D
     155ME<I*J,S.7J,?KT(/5\7\4OX%KB#.<V2(O]N<(?PA,[A17;V)#TQ[.:#2WQ`3
     156MN%`2%^`JRUP5;T'+RJC#*XJ)2B,3%5QDF;-%$U2QALJ0%QQ!H-Q6SUQ_O`:T
     157MKM-6(?N\EZ_S7KYLCJ5,N)TSUQHK<8!")!]JZ?6=QN9I<]E76)1H$:**)^H`
     158MHH[K\V'TQ0PW&XSH@OX)1-&[RIUSI04%MK.`R]OSHL"7<H1LO+4\+W`L]XZW
     159M4:[L[EPN=R^KVVF"J)Z!B@R%"[A.CB!<V@BXB++P[W(1)4@LG'6@EW"QWIE4
     160MY`=SN')E8J&R4K^CLBRY]1)`_3!H4S6F6B`P^69",E%XA<>TU4B9^1M15@,-
     161M*'QP:2&]!#VC_A)I2;CTGBXY1@OPPX1U7Y*/OS%>E'*V5%O;3^S*OX%5R9C%
     162MK)1+AG/>[8:^]<US=Y(0SE02&.D)RLMNUL^0B&/,X$FB:0KG!QB?:816^TW3
     163M?/WE8%F>,EU7X$^<.Y-B%D>-]7M\+Q?I]8>4CO.C]<NJH[C*0,*!F[T$#IMI
     164MY0X)/HQV^M`L-\RH-NU/V^9^-LDN+R_//V3-\[ZA7KO+^-->^\5Z-5\N]B_I
     165M]Q)_QHOJ?&FJ/D46]H='T?EC^XFZ;'TO:';99DW>C;]5=7T`#UQ*$/`\K19?
     166MGIH.'9/5[OAX83SC2*(8=DAN'YK;S[OLVT/#GSH+I;*'.<V+3;/*.$[P*7QZ
     167M)L73,DX:Y;VS7;9_(%E?K(B8QSFS+'ML=KOYIV:(H+MYHD,PO]T_D8//R<(7
     168M(N-EK"5JUNURYS<].R<$^_@UR\"&6]C*N;[YM;G=[T0,<)Z'L]STXMH1S)=R
     169MP]5,*F</Q<>L,IS,*W&_PCUAV>)*L/%Y'CY-D"UY1?"4N/F!"/Q\>I6M-\WJ
     170M;*E@U+#WXC_L<L8.PI>G-3_QX%KX2V?X[_DYPN/<SV[-M_EB?[_8=E=&$_()
     171MG_:%G?L$9T.,9K[]M/#WO\[O>E009SCS"L\.R3U:`E='\X3!1TQS@G$IC!Z!
     172MJ5$CP*?'Z,5[_7BY("-!#K`K=+M<[YJT"34RID:;K[9IYT[0W*FKL?ZMDQNY
     173M8A=+OGM[#W-TM=_#/"L/NA;O;\\YTOJ6KF57:;1K!Z$X#R%?#LC9API]#AW,
     174ML5?HO&'/.9M>_=CUCISF(ACBZ4@/P<8M>J$1MX#CV\I_0:I/CX+=6?0B2Q@W
     175M\]O///2GW1?GY(([E7PXRG\YJH,>_6`8UF:PH!W4YD_-=B]P&$XE7Y;RGY:2
     176M(A@S40J]*O_%*`&<6L'';M60:CM&M.J^/B+P,0L9H<J4*F^)_`,E_%$D_6:[
     177M_MRLWOD9!,),5@J@OI8ZD:'>]_HQ!-B#!&"_L&O7*0+P%OSWJEH=@-]3\-^L
     178M2@X&)$H@^4J5_TQ5N,P1.EN'#?79A<_*>)7LST_[-4V2U)P_W#4=<AJ>?Y#/
     179MRU*YLBM77IUH)>G$SK+%EJ1;I`0L;J7EPV[M?>*3<F)@K+2W@,)'TE3P[WZA
     180MU+]PC"@F8W.+SN3=0KE#G[N)`.7LT/>J_`>KVM'V["^G@$43RK6AY-FS/V#,
     181MIX9B5G4XJSZ<A<.PS(%C<(1=^>]74:?](YM+W+(=&1E9<W^/9H4JNQLW;Q_F
     182MJT_-8R-T\Q$>287+G2,`#I#2MNL0NZ;5^WC'SZ33\_ZL?.NZ\SI1#*4K5:*X
     183ML[<5,7543#(X(ZG\%ZJ$0-".'0!$Y^E%I>RX6]P'^O;9U_EV,6=;D`S<P(SU
     184MZFNSY4NHI#A$`_QGK>12&BXQ>MQ/^<];^7PR55NX4`!`>-8*N4,W[^@!,RK;
     185M?@/B+"`]?S^"JCT7/D!P[+YE*E<C9UU8L(NLW3_,]\'$N&N:S;);FB,]1>]Q
     186M.O;?K`KC<,+C)M5KMON@$"_+YY.L&Y,9#DKVNV10DG)YH?]A8-JB/S`A#VPN
     187MY8_L^^\N;0(M9.V\4%]FW[D[.Y^!VG@_7RQW0<,'^&NN_WK2'@&C!_Z8Z;F'
     188M&WP$-2V!/^?_MY"DEK>+9X'U5+QS)K)\*N'M7)")RM\\U96+2JM?FLI]6J_O
     189M3JR4JZ"<%\,#Y=C_PW+U;RSG?ENY"O5()7=\=:/>"V_W!T:_]Z5:9?=R%;G7
     190MW@-REZU7_*4T5G'D*N^W+U*P%T%^B8/Q60+(SS*,JQ+CGMK'/;]?I=6QITMN
     191M)?O,HOXK<ZBB[U+1=ZC(QMADJ.7Y2J3B4[-JMN3$SI?[9KLB9_JK?/&SJM[9
     192EHIH7OK,__L9_@L??M;W_N-O/]T^[,S+I__[D_P"@,6XR>((`````
    193193`
    194194end
  • Tst/Short/countedref_s.stat

    ra497a1 r36ebfa  
    1 1 >> tst_memory_0 :: 1346934951:3150:3-1-5:x86_64-Linux:lts035:1918736
    2 1 >> tst_memory_1 :: 1346934951:3150:3-1-5:x86_64-Linux:lts035:4194616
    3 1 >> tst_memory_2 :: 1346934951:3150:3-1-5:x86_64-Linux:lts035:4198720
    4 1 >> tst_timer_1 :: 1346934951:3150:3-1-5:x86_64-Linux:lts035:78
     11 >> tst_memory_0 :: 1347052869:3150:3-1-5:x86_64-Linux:lts035:709280
     21 >> tst_memory_1 :: 1347052869:3150:3-1-5:x86_64-Linux:lts035:2245824
     31 >> tst_memory_2 :: 1347052869:3150:3-1-5:x86_64-Linux:lts035:2278624
     41 >> tst_timer_1 :: 1347052869:3150:3-1-5:x86_64-Linux:lts035:13
  • Tst/Short/countedref_s.tst

    ra497a1 r36ebfa  
    44tst_init();
    55
    6 
    7 
     6system("reference");
     7system("shared");
    88
    99
  • configure.ac

    ra497a1 r36ebfa  
    132132AM_CONDITIONAL(WANT_DEBUG, test x"${ENABLE_DEBUG}" == xyes)
    133133
     134AC_ARG_ENABLE(countedref, AS_HELP_STRING([--enable-countedref], [Enable autoloading of reference counted types]),
     135[if test "x$enableval" = "xyes"; then
     136ENABLE_COUNTEDREF_AUTOLOAD=yes
     137fi], ENABLE_COUNTEDREF_AUTOLOAD=no)
     138
     139if test x"${ENABLE_COUNTEDREF_AUTOLOAD}" == xyes; then
     140  AC_DEFINE([SI_COUNTEDREF_AUTOLOAD],1,[Enable autoloading of reference counted types])
     141  AC_SUBST(SI_COUNTEDREF_AUTOLOAD)
     142fi
     143
    134144AC_CONFIG_SUBDIRS([findexec])
    135145AC_CONFIG_SUBDIRS([omalloc])
  • dyn_modules/bigintm/Makefile.am

    rd1fbbf r36ebfa  
    1515## --no-exceptions
    1616
    17 DEBUGCXXFLAGS = -g -Wextra -Wall -pedantic -Wno-long-long ${CXXTEMPLFLAGS}
     17DEBUGCXXFLAGS = -g -Wextra -Winline -Wall -pedantic -Wno-long-long ${CXXTEMPLFLAGS}
    1818
    1919NODEBUGCFLAGS   = -O3 -w -fomit-frame-pointer ${PIPE}
  • dyn_modules/bigintm/SConstruct

    rd1fbbf r36ebfa  
    3737        SHLIBSUFFIX = ".sog",
    3838        CPPPATH = SING_INCLUDES,
    39         CXXFLAGS = "-g -Wextra -Wall -pedantic -Wno-long-long " + CXXTEMPLFLAGS,
     39        CXXFLAGS = "-g -Wextra -Winline -Wall -pedantic -Wno-long-long " + CXXTEMPLFLAGS,
    4040        LDMODULEFLAGS = BUNDLETEMPFLAGS,
    4141        LIBS=[])
  • dyn_modules/syzextra/Makefile.am

    rd1fbbf r36ebfa  
    1515## --no-exceptions
    1616
    17 DEBUGCXXFLAGS = -g -Wextra -Wall -pedantic -Wno-long-long ${CXXTEMPLFLAGS}
     17DEBUGCXXFLAGS = -g -Wextra -Winline -Wall -pedantic -Wno-long-long ${CXXTEMPLFLAGS}
    1818
    1919NODEBUGCFLAGS   = -O3 -w -fomit-frame-pointer ${PIPE}
  • dyn_modules/syzextra/SConstruct

    rd1fbbf r36ebfa  
    3737        SHLIBSUFFIX = ".sog",
    3838        CPPPATH = SING_INCLUDES,
    39         CXXFLAGS = "-g -Wextra -Wall -pedantic -Wno-long-long " + CXXTEMPLFLAGS,
     39        CXXFLAGS = "-g -Wextra -Winline -Wall -pedantic -Wno-long-long " + CXXTEMPLFLAGS,
    4040        LDMODULEFLAGS = BUNDLETEMPFLAGS,
    4141        LIBS=[])
  • factory/CMakeLists.txt

    rd1fbbf r36ebfa  
    7474  if (${CMAKE_CXX_COMPILER_ID} MATCHES "GNU")
    7575
    76     #set(CMAKE_CXX_FLAGS "-W -Wall -Wextra -Wno-non-virtual-dtor")
     76    #set(CMAKE_CXX_FLAGS "-W -Wall -Wextra -Winline -Wno-non-virtual-dtor")
    7777    set(CMAKE_CXX_FLAGS "-w --no-rtti -pipe ")
    7878    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-implicit-templates")
  • factory/Makefile.am

    rd1fbbf r36ebfa  
    2020libfactory_la_LIBADD     = ${abs_builddir}/libfac/libfac.la $(FLINT_LIBS) ${GMP_LIBS} ${NTL_LIBS}
    2121libfactory_la_LDFLAGS    = -release ${PACKAGE_VERSION}
    22 libfactory_g_la_CXXFLAGS = -g -Wextra -Wall -pedantic -Wno-long-long ${CXXTEMPLFLAGS}
     22libfactory_g_la_CXXFLAGS = -g -Wextra -Winline -Wall -pedantic -Wno-long-long ${CXXTEMPLFLAGS}
    2323libfactory_g_la_LIBADD   = ${abs_builddir}/libfac/libfac_g.la $(FLINT_LIBS) ${GMP_LIBS} ${NTL_LIBS}
    2424libfactory_g_la_LDFLAGS  = -release ${PACKAGE_VERSION}
     
    312312
    313313test_s_g_SOURCES = $(TESTSSOURCES)
    314 test_s_g_CFLAGS = -g -Wextra -Wall -pedantic -Wno-long-long -fomit-frame-pointer
     314test_s_g_CFLAGS = -g -Wextra -Winline -Wall -pedantic -Wno-long-long -fomit-frame-pointer
    315315#ftmpl_inst.o
    316316test_s_g_LDADD = -lfactory_g $(FLINT_LIBS) $(GMP_LIBS) $(NTL_LIBS) $(TESTADDLIBDEBUG)
     
    325325
    326326test_d_g_SOURCES = $(TESTSSOURCES)
    327 test_d_g_CFLAGS = -g -Wextra -Wall -pedantic -Wno-long-long -fomit-frame-pointer
     327test_d_g_CFLAGS = -g -Wextra -Winline -Wall -pedantic -Wno-long-long -fomit-frame-pointer
    328328#ftmpl_inst.o
    329329test_d_g_LDADD = -lfactory_g $(FLINT_LIBS) $(GMP_LIBS) $(NTL_LIBS) $(TESTADDLIBDEBUG)
  • factory/libfac/CMakeLists.txt

    rd1fbbf r36ebfa  
    3535  if (${CMAKE_CXX_COMPILER_ID} MATCHES "GNU")
    3636
    37     #set(CMAKE_CXX_FLAGS "-W -Wall -Wextra -Wno-non-virtual-dtor")
     37    #set(CMAKE_CXX_FLAGS "-W -Wall -Wextra -Winline -Wno-non-virtual-dtor")
    3838    set(CMAKE_CXX_FLAGS "-w --no-rtti -pipe ")
    3939    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-implicit-templates")
  • factory/libfac/Makefile.am

    rd1fbbf r36ebfa  
    1313
    1414libfac_la_CXXFLAGS   = -O3 -fomit-frame-pointer ${PIPE} ${CXXTEMPLFLAGS}
    15 libfac_g_la_CXXFLAGS = -g -Wextra -Wall -pedantic -Wno-long-long ${PIPE} ${CXXTEMPLFLAGS}
     15libfac_g_la_CXXFLAGS = -g -Wextra -Winline -Wall -pedantic -Wno-long-long ${PIPE} ${CXXTEMPLFLAGS}
    1616# -fdiagnostics-show-option
    1717
  • findexec/Makefile.am

    rd1fbbf r36ebfa  
    1818libfindexec_la_CXXFLAGS   = -O3 -fomit-frame-pointer ${PIPE} ${CXXTEMPLFLAGS}
    1919## --no-rtti
    20 libfindexec_g_la_CXXFLAGS = -g -Wextra -Wall -pedantic -Wno-long-long ${PIPE} ${CXXTEMPLFLAGS}
     20libfindexec_g_la_CXXFLAGS = -g -Wextra -Winline -Wall -pedantic -Wno-long-long ${PIPE} ${CXXTEMPLFLAGS}
    2121# -fdiagnostics-show-option
    2222
  • kernel/Makefile.am

    rd1fbbf r36ebfa  
    2121libkerneldir = $(libdir)/singular
    2222
    23 libkernel_la_CFLAGS   = -O3 -fomit-frame-pointer -Wextra -Wall -Wno-long-long ${PIPE}
    24 libkernel_g_la_CFLAGS = -g -Wextra -Wall -Wno-long-long -pedantic ${PIPE}
     23libkernel_la_CFLAGS   = -O3 -fomit-frame-pointer -Wextra -Winline -Wall -Wno-long-long ${PIPE}
     24libkernel_g_la_CFLAGS = -g -Wextra -Winline -Wall -Wno-long-long -pedantic ${PIPE}
    2525## -pedantic
    2626
    27 libkernel_la_CXXFLAGS   = -O3 -fomit-frame-pointer -Wextra -Wall -Wno-long-long ${PIPE} $(CXXTEMPLFLAGS)
    28 libkernel_g_la_CXXFLAGS = -g -Wextra -Wall -Wno-long-long -pedantic ${PIPE} $(CXXTEMPLFLAGS)
     27libkernel_la_CXXFLAGS   = -O3 -fomit-frame-pointer -Wextra -Winline -Wall -Wno-long-long ${PIPE} $(CXXTEMPLFLAGS)
     28libkernel_g_la_CXXFLAGS = -g -Wextra -Winline -Wall -Wno-long-long -pedantic ${PIPE} $(CXXTEMPLFLAGS)
    2929# -fdiagnostics-show-option
    3030
     
    103103test_s_g_CFLAGS = ${PIPE}
    104104
    105 test_s_r_CXXFLAGS = -O3 -fomit-frame-pointer -Wextra -Wall -Wno-long-long ${PIPE} $(CXXTEMPLFLAGS)
    106 test_s_g_CXXFLAGS = -g -Wextra -Wall -Wno-long-long -pedantic ${PIPE} $(CXXTEMPLFLAGS)
     105test_s_r_CXXFLAGS = -O3 -fomit-frame-pointer -Wextra -Winline -Wall -Wno-long-long ${PIPE} $(CXXTEMPLFLAGS)
     106test_s_g_CXXFLAGS = -g -Wextra -Winline -Wall -Wno-long-long -pedantic ${PIPE} $(CXXTEMPLFLAGS)
    107107
    108108testsources = test.cc
     
    123123test_d_g_CFLAGS = ${PIPE}
    124124
    125 test_d_r_CXXFLAGS = -O3 -fomit-frame-pointer -Wextra -Wall -Wno-long-long ${PIPE} $(CXXTEMPLFLAGS)
    126 test_d_g_CXXFLAGS = -g -Wextra -Wall -Wno-long-long -pedantic ${PIPE} $(CXXTEMPLFLAGS)
     125test_d_r_CXXFLAGS = -O3 -fomit-frame-pointer -Wextra -Winline -Wall -Wno-long-long ${PIPE} $(CXXTEMPLFLAGS)
     126test_d_g_CXXFLAGS = -g -Wextra -Winline -Wall -Wno-long-long -pedantic ${PIPE} $(CXXTEMPLFLAGS)
    127127
    128128test_d_r_SOURCES = $(testsources)
  • kernel/kInline.h

    rd1fbbf r36ebfa  
    2222
    2323#include <polys/monomials/p_polys.h>
    24 #include <polys/templates/p_Procs.h>
    2524#include <polys/kbuckets.h>
    2625
     
    311310{
    312311  if (t_p != NULL)
    313   {    t_p = tailRing->p_Procs->p_Mult_nn(t_p, n, tailRing);
     312  {    t_p = p_Mult_nn(t_p, n, tailRing);
    314313    if (p != NULL) pSetCoeff0(p, pGetCoeff(t_p));
    315314  }
     
    583582    poly _p = (t_p != NULL ? t_p : p);
    584583    assume(_p != NULL);
    585     pNext(_p) = tailRing->p_Procs->p_Mult_nn(pNext(_p), n, tailRing);
     584    pNext(_p) = p_Mult_nn(pNext(_p), n, tailRing);
    586585  }
    587586}
     
    598597    poly _p = (t_p != NULL ? t_p : p);
    599598    assume(_p != NULL);
    600     int shorter;
    601     pNext(_p) = tailRing->p_Procs->p_Minus_mm_Mult_qq(pNext(_p), m, q,
    602                                                       shorter,spNoether,
    603                                                       tailRing, last);
    604     pLength += lq - shorter;
     599
     600    pNext(_p) = p_Minus_mm_Mult_qq( pNext(_p), m, q, pLength, lq,
     601                                    spNoether, last, tailRing );
     602//    tailRing->p_Procs->p_Minus_mm_Mult_qq(pNext(_p), m, q, shorter,spNoether, tailRing, last);
     603//    pLength += lq - shorter;
    605604  }
    606605}
  • libpolys/coeffs/Enumerator.h

    rd1fbbf r36ebfa  
    2222/** @class IBaseEnumerator
    2323 *
    24  * Base enumerator interface for simple iteration over a generic non-empty collection.
    25  *
    26  * Abstract API of enumerators for non-empty enumerable collections of standalone
    27  * objects. Inspired by IEnumerator from C#. Usage parrten can be as
    28  * follows:
     24 * Base enumerator interface for simple iteration over a generic collection.
     25 *
     26 * Abstract API of enumerators for enumerable collections of standalone objects.
     27 * Just like IEnumerator from C#. Usage pattern can be as follows:
    2928 *
    3029 * @code
    31  *   IBaseEnumerator itr = ...;
    32  *   itr.Reset(); // goes to the first element (must exist)
    33  *   do
     30 *   IBaseEnumerator& itr = ...;
     31 *   itr.Reset(); // goes to the "-1" element
     32 *   // NOTE: itr is not useable here!
     33 *   while( itr.MoveNext() )
    3434 *   {
    3535 *      do something custom with itr...
    3636 *   }
    37  *   while( itr.MoveNext() )
    3837 * @endcode
    3938 *
    40  * Note that the first element must exist and available directly after Reset() call.
     39 * Note that the Reset()
    4140 *
    4241 * @sa IEnumerator
     
    5150    virtual bool MoveNext() = 0;   
    5251
    53     /// Sets the enumerator to its initial position, which is at the first element in the collection.
     52    /// Sets the enumerator to its initial position: -1,
     53    /// which is before the first element in the collection.
    5454    virtual void Reset() = 0;
    55 //    virtual ~IEnumerator() {} // TODO: needed?
     55
     56    virtual ~IBaseEnumerator() {} // TODO: needed?
     57
     58  private:
     59    IBaseEnumerator(const IBaseEnumerator&);
     60    void operator=(const IBaseEnumerator&);
     61
     62  protected:
     63    IBaseEnumerator(){}
     64
     65    /// Current position is inside the collection (not -1 or past the end)
     66    virtual bool IsValid() const = 0;
    5667};
    5768
     
    7889    /// Gets the current element in the collection (read only).
    7990    virtual const_reference Current() const = 0;
     91
     92    virtual ~IAccessor() {} // TODO: needed?
     93 
    8094};
    8195
    8296/** @class IEnumerator
    8397 *
    84  * Templated enumerator interface for simple iteration over a generic non-empty collection of T's.
    85  *
    86  * Abstract API of enumerators for non-empty enumerable collections of standalone
    87  * objects. Inspired by IEnumerator from C#. Usage parrten can be as
     98 * Templated enumerator interface for simple iteration over a generic collection of T's.
     99 *
     100 * Abstract API of enumerators for generic enumerable collections of standalone
     101 * objects of type T. Inspired by IEnumerator from C#. Usage parrten can be as
    88102 * follows:
    89103 *
    90104 * @code
    91  *   IEnumerator<T> itr = ...;
    92  *   itr.Reset(); // goes to the first element (must exist)
    93  *   do
     105 *   IEnumerator<T>& itr = ...;
     106 *   
     107 *   itr.Reset(); // goes before the first element, thus no itr.Current() is available here!
     108 *   
     109 *   while( itr.MoveNext() )
    94110 *   {
    95111 *      use/change itr.Current()...
    96112 *   }
    97  *   while( itr.MoveNext() )
    98113 * @endcode
    99114 *
  • libpolys/coeffs/Makefile.am

    rd1fbbf r36ebfa  
    1717
    1818libcoeffs_la_CXXFLAGS   = -O3 -fomit-frame-pointer ${PIPE} ${CXXTEMPLFLAGS}
    19 libcoeffs_g_la_CXXFLAGS = -g -Wextra -Wall -pedantic -Wno-long-long ${PIPE} ${CXXTEMPLFLAGS}
     19libcoeffs_g_la_CXXFLAGS = -g -Wextra -Winline -Wall -pedantic -Wno-long-long ${PIPE} ${CXXTEMPLFLAGS}
    2020# -fdiagnostics-show-option
    2121
     
    8787test_s_r_CXXFLAGS = -O3 -fomit-frame-pointer ${PIPE} ${CXXTEMPLFLAGS}
    8888# -fimplicit-templates
    89 test_s_g_CXXFLAGS = -g -Wextra -Wall -pedantic -Wno-long-long ${PIPE} ${CXXTEMPLFLAGS}
     89test_s_g_CXXFLAGS = -g -Wextra -Winline -Wall -pedantic -Wno-long-long ${PIPE} ${CXXTEMPLFLAGS}
    9090# -fimplicit-templates
    9191# -fdiagnostics-show-option
    9292test_d_r_CXXFLAGS = -O3 -fomit-frame-pointer ${PIPE} ${CXXTEMPLFLAGS}
    93 test_d_g_CXXFLAGS = -g -Wextra -Wall -pedantic -Wno-long-long ${PIPE} ${CXXTEMPLFLAGS}
     93test_d_g_CXXFLAGS = -g -Wextra -Winline -Wall -pedantic -Wno-long-long ${PIPE} ${CXXTEMPLFLAGS}
    9494
    9595
  • libpolys/coeffs/longrat.cc

    rd1fbbf r36ebfa  
    26452645  assume(cf != NULL);
    26462646  assume(getCoeffType(cf) == ID);
     2647
     2648  numberCollectionEnumerator.Reset();
     2649
     2650  if( !numberCollectionEnumerator.MoveNext() ) // empty zero polynomial?
     2651  {
     2652    c = n_Init(1, cf);
     2653    return;
     2654  }
     2655 
    26472656  // all coeffs are given by integers!!!
    26482657
     
    26512660  int s1,s;
    26522661  s=2147483647; // max. int
    2653   numberCollectionEnumerator.Reset();
     2662
     2663 
    26542664  int lc_is_pos=nlGreaterZero(numberCollectionEnumerator.Current(),cf);
     2665
     2666  int normalcount = 0;
    26552667  do
    26562668  {
    2657     cand1= numberCollectionEnumerator.Current();
    2658     if (SR_HDL(cand1)&SR_INT) { cand=cand1;break;}
    2659     assume(cand1->s==3); // all coeffs should be integers
     2669    number& n = numberCollectionEnumerator.Current();
     2670    nlNormalize(n, cf); ++normalcount;
     2671    cand1 = n;
     2672   
     2673    if (SR_HDL(cand1)&SR_INT) { cand=cand1; break; }
     2674    assume(cand1->s==3); // all coeffs should be integers // ==0?!! after printing
    26602675    s1=mpz_size1(cand1->z);
    26612676    if (s>s1)
     
    26662681  } while (numberCollectionEnumerator.MoveNext() );
    26672682
     2683//  assume( nlGreaterZero(cand,cf) ); // cand may be a negative integer!
     2684
    26682685  cand=nlCopy(cand,cf);
    26692686  // part 2: compute gcd(cand,all coeffs)
     2687
    26702688  numberCollectionEnumerator.Reset();
    2671   do
    2672   {
    2673     nlNormalize(numberCollectionEnumerator.Current(),cf);
    2674     nlInpGcd(cand,numberCollectionEnumerator.Current(),cf);
     2689 
     2690  while (numberCollectionEnumerator.MoveNext() )
     2691  {
     2692    number& n = numberCollectionEnumerator.Current();
     2693
     2694    if( (--normalcount) <= 0)
     2695      nlNormalize(n, cf);
     2696
     2697    nlInpGcd(cand, n, cf);
     2698
     2699    assume( nlGreaterZero(cand,cf) );
     2700   
    26752701    if(nlIsOne(cand,cf))
    26762702    {
    2677       c=cand;
     2703      c = cand;
     2704
    26782705      if(!lc_is_pos)
    26792706      {
    26802707        // make the leading coeff positive
    2681         c=nlNeg(c,cf);
     2708        c = nlNeg(c, cf);
    26822709        numberCollectionEnumerator.Reset();
    2683         do
     2710       
     2711        while (numberCollectionEnumerator.MoveNext() )
    26842712        {
    2685           numberCollectionEnumerator.Current()=nlNeg(numberCollectionEnumerator.Current(),cf);
    2686         } while (numberCollectionEnumerator.MoveNext() );
     2713          number& nn = numberCollectionEnumerator.Current();
     2714          nn = nlNeg(nn, cf);
     2715        }
    26872716      }
    26882717      return;
    26892718    }
    2690   } while (numberCollectionEnumerator.MoveNext() );
     2719  }
    26912720
    26922721  // part3: all coeffs = all coeffs / cand
    2693   if (!lc_is_pos) cand=nlNeg(cand,cf);
    2694   c=cand;
     2722  if (!lc_is_pos)
     2723    cand = nlNeg(cand,cf);
     2724 
     2725  c = cand;
    26952726  numberCollectionEnumerator.Reset();
    2696   do
    2697   {
    2698     number t=nlIntDiv(numberCollectionEnumerator.Current(),cand,cf);
    2699     nlDelete(&numberCollectionEnumerator.Current(),cf);
    2700     numberCollectionEnumerator.Current()=t;
    2701   } while (numberCollectionEnumerator.MoveNext() );
    2702 
     2727
     2728  while (numberCollectionEnumerator.MoveNext() )
     2729  {
     2730    number& n = numberCollectionEnumerator.Current();
     2731    number t=nlIntDiv(n, cand, cf); // simple integer exact division, no ratios to remain
     2732    nlDelete(&n, cf);
     2733    n = t;
     2734  }
    27032735}
    27042736
     
    27072739  assume(cf != NULL);
    27082740  assume(getCoeffType(cf) == ID);
     2741
     2742  numberCollectionEnumerator.Reset();
     2743 
     2744  if( !numberCollectionEnumerator.MoveNext() ) // empty zero polynomial?
     2745  {
     2746    c = n_Init(1, cf);
     2747    return;
     2748  }
     2749
    27092750  // all coeffs are given by integers after returning from this routine
    27102751
     
    27122753  number cand;
    27132754  cand=ALLOC_RNUMBER();
    2714   #if defined(LDEBUG)
     2755#if defined(LDEBUG)
    27152756  cand->debug=123456;
    2716   #endif
     2757#endif
    27172758  cand->s=3;
    27182759
    27192760  int s=0;
    2720   mpz_t tmp;
    2721   mpz_init(tmp);
    2722   numberCollectionEnumerator.Reset();
     2761//  mpz_t tmp; mpz_init(tmp); // tmp = GMP int
     2762 
    27232763  int lc_is_pos=nlGreaterZero(numberCollectionEnumerator.Current(),cf);
     2764
    27242765  do
    27252766  {
     
    27302771      nlNormalize(cand1, cf);
    27312772      if ((!(SR_HDL(cand1)&SR_INT)) // not a short int
    2732       && (cand1->s==1))             // and is rational
     2773      && (cand1->s==1))             // and is a normalised rational
    27332774      {
    27342775        if (s==0) // first denom, we meet
    27352776        {
    2736           mpz_init_set(cand->z,cand1->n);
     2777          mpz_init_set(cand->z, cand1->n); // cand->z = cand1->n
    27372778          s=1;
    27382779        }
    27392780        else // we have already something
    27402781        {
    2741           mpz_gcd(tmp,cand->z,cand1->n);
    2742           if (mpz_cmp_si(tmp,1)!=0)
    2743           {
    2744             mpz_divexact(cand->z,cand->z,tmp);
    2745           }
    2746           mpz_mul(cand->z,cand->z,cand1->n);
     2782          mpz_lcm(cand->z, cand->z, cand1->n);
     2783/*                 
     2784          mpz_gcd(tmp,cand->z,cand1->n); // tmp = GCD( cand->z, cand1->n )
     2785         
     2786          if (mpz_cmp_si(tmp,1)!=0)
     2787            mpz_divexact(cand->z,cand->z,tmp); // cand->z /= tmp
     2788         
     2789          mpz_mul(cand->z,cand->z,cand1->n); // cand->z *= cand1->n
     2790*/
    27472791        }
    27482792      }
    27492793    }
    2750   } while (numberCollectionEnumerator.MoveNext() );
     2794  }
     2795  while (numberCollectionEnumerator.MoveNext() );
     2796 
    27512797
    27522798  if (s==0) // nothing to do, all coeffs are already integers
    27532799  {
    2754     mpz_clear(tmp);
     2800//    mpz_clear(tmp);
    27552801    FREE_RNUMBER(cand);
    27562802    if (lc_is_pos)
     
    27602806      // make the leading coeff positive
    27612807      c=nlInit(-1,cf);
     2808
     2809      // TODO: incorporate the following into the loop below?
    27622810      numberCollectionEnumerator.Reset();
    2763       do
    2764       {
    2765         numberCollectionEnumerator.Current()=nlNeg(numberCollectionEnumerator.Current(),cf);
    2766       } while (numberCollectionEnumerator.MoveNext() );
     2811      while (numberCollectionEnumerator.MoveNext() )
     2812      {
     2813        number& n = numberCollectionEnumerator.Current();
     2814        n = nlNeg(n, cf);
     2815      }
    27672816    }
    27682817    return;
    27692818  }
    2770   cand=nlShort3(cand);
     2819
     2820  cand = nlShort3(cand);
    27712821
    27722822  // part2: all coeffs = all coeffs * cand
    27732823  // make the lead coeff positive
    27742824  numberCollectionEnumerator.Reset();
    2775   if (!nlGreaterZero(numberCollectionEnumerator.Current(),cf))
    2776   {
    2777     cand=nlNeg(cand,cf);
    2778   }
     2825 
     2826  if (!lc_is_pos)
     2827    cand = nlNeg(cand, cf);
     2828 
    27792829  c = cand;
    2780   do
     2830 
     2831  while (numberCollectionEnumerator.MoveNext() )
    27812832  {
    27822833    number &n = numberCollectionEnumerator.Current();
    27832834    n_InpMult(n, cand, cf);
    2784   } while (numberCollectionEnumerator.MoveNext() );
     2835  }
    27852836
    27862837}
  • libpolys/coeffs/numbers.cc

    rd1fbbf r36ebfa  
    131131  assume(!(  nCoeff_is_Q(r) || nCoeff_is_Q_a(r) ));
    132132  // all coeffs are given by integers!!!
    133   assume( nCoeff_is_Ring(r) || nCoeff_is_Zp(r) || nCoeff_is_numeric(r) || nCoeff_is_GF(r) || nCoeff_is_Zp_a(r) );
    134133
    135134  numberCollectionEnumerator.Reset();
     135
     136  if( !numberCollectionEnumerator.MoveNext() ) // empty zero polynomial?
     137  {
     138    c = n_Init(1, r);
     139    return;
     140  } 
     141
     142  number &curr = numberCollectionEnumerator.Current();
    136143 
    137144#ifdef HAVE_RINGS
     
    141148    if (nCoeff_has_Units(r))
    142149    {
    143       c = n_GetUnit(numberCollectionEnumerator.Current(), r);
     150      c = n_GetUnit(curr, r);
    144151     
    145152      if (!n_IsOne(c, r))
     
    147154        number inv = n_Invers(c, r);
    148155
    149         do
     156        n_InpMult(curr, inv, r);
     157       
     158        while( numberCollectionEnumerator.MoveNext() )
    150159        {
    151           n_InpMult(numberCollectionEnumerator.Current(), inv, r);
     160          number &n = numberCollectionEnumerator.Current();
     161          n_Normalize(n, r); // ?
     162          n_InpMult(n, inv, r); // TODO: either this or directly divide!!!?
    152163        }
    153         while( numberCollectionEnumerator.MoveNext() );
    154164
    155165        n_Delete(&inv, r);       
     
    162172
    163173  assume(!nCoeff_is_Ring(r));
    164 
    165   c = numberCollectionEnumerator.Current();
     174  assume(nCoeff_is_Zp(r) || nCoeff_is_numeric(r) || nCoeff_is_GF(r) || nCoeff_is_Zp_a(r));
     175
     176  c = curr;
    166177 
    167178  n_Normalize(c, r);
     
    169180  if (!n_IsOne(c, r))
    170181  {   
    171     numberCollectionEnumerator.Current() = n_Init(1, r); // ???
     182    curr = n_Init(1, r); // ???
    172183   
    173184    number inv = n_Invers(c, r);
     
    177188      number &n = numberCollectionEnumerator.Current();
    178189      n_Normalize(n, r); // ?
    179       n_InpMult(n, inv, r);
     190      n_InpMult(n, inv, r); // TODO: either this or directly divide!!!?
    180191    }
    181192   
  • libpolys/misc/Makefile.am

    rd1fbbf r36ebfa  
    1717
    1818libmisc_la_CXXFLAGS   = -O3 -fomit-frame-pointer ${PIPE} ${CXXTEMPLFLAGS}
    19 libmisc_g_la_CXXFLAGS = -g -Wextra -Wall -pedantic -Wno-long-long ${PIPE} ${CXXTEMPLFLAGS}
     19libmisc_g_la_CXXFLAGS = -g -Wextra -Winline -Wall -pedantic -Wno-long-long ${PIPE} ${CXXTEMPLFLAGS}
    2020# -fdiagnostics-show-option
    2121
  • libpolys/polys/Makefile.am

    rd1fbbf r36ebfa  
    11CXXTEMPLFLAGS   =  ## -fno-implicit-templates
    22
    3 DEBUGCXXFLAGS = -g -Wextra -Wall -pedantic -Wno-long-long
     3DEBUGCXXFLAGS = -g -Wextra -Winline -Wall -pedantic -Wno-long-long
    44
    55NODEBUGCFLAGS   = -O3 -w -fomit-frame-pointer
     
    4848        ext_fields/algext.cc ext_fields/transext.cc \
    4949        clapsing.cc clapconv.cc \
    50         nc/old.gring.cc
     50        nc/old.gring.cc PolyEnumerator.cc
    5151
    5252LIBPOLYSHEADERS = monomials/ring.h monomials/monomials.h \
  • libpolys/polys/PolyEnumerator.h

    rd1fbbf r36ebfa  
    1919#include <coeffs/Enumerator.h>
    2020#include <polys/monomials/monomials.h>
     21#include <reporter/reporter.h> // for assume etc.
    2122
    2223/** @class CBasePolyEnumerator
    2324 *
    24  * Base polynomial enumerator for simple iteration over terms of
    25  * (non-zero) polynomials.
     25 * Base polynomial enumerator for simple iteration over terms of polynomials.
    2626 *
    27  * Note that the first element must exist directly after Reset() call.
    28  * Moreover, it doesn't inherit from IAccessor and thus doesn't
    29  * override Current().
     27 * Note that the first element desn't exist directly after Reset() call.
     28 *
     29 * The class doesn't inherit from IAccessor and thus doesn't override Current().
    3030 *
    3131 * @sa IBaseEnumerator, @sa CPolyCoeffsEnumerator
     
    3434{
    3535  private:
    36     const poly m_poly;
     36    const poly m_poly; ///< essentially immutable original iterable object
     37   
     38    static const spolyrec m_prevposition_struct; ///< tag for "-1" position
    3739
    3840  protected:
    39     poly m_position;
     41    poly m_position; ///< current position in the iterable object
     42
     43    virtual bool IsValid() const
     44    {
     45      // not -1 or past the end position?
     46      return (m_position != NULL) && (m_position != &m_prevposition_struct);
     47    }
    4048   
    41     inline void Iterate()
     49  public:
     50    CBasePolyEnumerator(poly p):
     51        IBaseEnumerator(), m_poly(p), m_position(const_cast<poly>(&m_prevposition_struct))
    4252    {
    43       if( m_position != NULL )
    44         pIter( m_position );
    45     }   
    46   public:
    47     CBasePolyEnumerator(poly p): m_poly(p), m_position(p) { assume(p != NULL); }
     53      assume( !IsValid() );
     54    }
    4855   
    4956    /// Sets the position marker to the leading term.
    50     virtual void Reset() { assume(m_poly!= NULL); m_position = m_poly; }
     57    virtual void Reset()
     58    {
     59      m_position = const_cast<poly>(&m_prevposition_struct);
     60      assume( !IsValid() );
     61    }
    5162
    5263    /// Advances the position to the next term of the polynomial.
    5364    /// returns true if the position marker was successfully advanced to the
    54     /// next term;
     65    /// next term which can be used;
    5566    /// false if the position marker has passed the end of the
    5667    /// polynomial.
     
    5869    {
    5970      assume( m_position != NULL );
    60       Iterate();
    61       return (m_position != NULL);
     71
     72      {
     73        const poly p_next = pNext(m_position);
     74
     75        if (p_next != NULL) // not the last term?
     76        {
     77          m_position = p_next;
     78          assume( IsValid() );
     79          return true;
     80        }
     81      }
     82     
     83      if (m_position == &m_prevposition_struct) // -1 position?
     84      {
     85        assume( !IsValid() );
     86        m_position = m_poly;
     87        return (m_position != NULL);
     88      }
     89
     90      // else: past the end (or an empty polynomial)
     91      m_position = NULL;
     92      assume( !IsValid() );
     93      return false;
    6294    }
    6395};
     
    71103 *
    72104 * This is a polynomial enumerator for simple iteration over
    73  * coefficients of (non-zero) polynomials.
     105 * coefficients of polynomials.
    74106 *
    75107 * It is required to inherit this class from IEnumerator<number> for
     
    90122    virtual IPolyCoeffsEnumerator::reference Current()
    91123    {
    92       assume( m_position != NULL );
     124      assume( IsValid() );
    93125      return pGetCoeff(m_position);     
    94126    }
     
    97129    virtual IPolyCoeffsEnumerator::const_reference Current() const
    98130    {
    99       assume( m_position != NULL );
     131      assume( IsValid() );
    100132      return pGetCoeff(m_position);
    101133    }
  • libpolys/polys/monomials/monomials.h

    rd1fbbf r36ebfa  
    99
    1010#include <omalloc/omalloc.h>
     11#include <reporter/reporter.h> // for assume etc.
    1112
    1213struct snumber;
  • libpolys/polys/monomials/p_polys.cc

    rd1fbbf r36ebfa  
    20232023static number p_InitContent(poly ph, const ring r);
    20242024
     2025#define CLEARENUMERATORS 0
     2026
    20252027void p_Content(poly ph, const ring r)
    20262028{
    2027 #if 0
    2028   if( ph != NULL )
     2029#if CLEARENUMERATORS
     2030  if( (ph != NULL) && nCoeff_is_Q(r->cf) )
    20292031  {
    20302032    CPolyCoeffsEnumerator itr(ph);
    20312033    n_ClearContent(itr, r->cf);
    2032 //    return;
    2033   }
    2034 #endif
    2035 
    2036  
     2034
     2035    assume( n_GreaterZero(pGetCoeff(ph),r->cf) );
     2036   
     2037    return;
     2038  }
     2039#endif
     2040
    20372041#ifdef HAVE_RINGS
    20382042  if (rField_is_Ring(r))
     
    20532057          pIter(h);
    20542058        }
     2059        assume( n_GreaterZero(pGetCoeff(ph),r->cf) );
    20552060      }
    20562061      n_Delete(&k,r->cf);
     
    20692074  else
    20702075  {
     2076#if CLEARENUMERATORS
     2077    if( (ph != NULL) && nCoeff_is_Q(r->cf) )
     2078    {
     2079      CPolyCoeffsEnumerator itr(ph);
     2080      n_ClearContent(itr, r->cf);
     2081      assume( n_GreaterZero(pGetCoeff(ph),r->cf) );
     2082      return;
     2083    }
     2084#endif
     2085   
    20712086    n_Normalize(pGetCoeff(ph),r->cf);
    20722087    if(!n_GreaterZero(pGetCoeff(ph),r->cf)) ph = p_Neg(ph,r);
     
    24412456poly p_Cleardenom(poly ph, const ring r)
    24422457{
     2458  const coeffs C = r->cf;
     2459
    24432460  poly start=ph;
    24442461
    2445 #if 0
    2446   if( ph != NULL )
     2462#if CLEARENUMERATORS
     2463  if( (ph != NULL) && nCoeff_is_Q(C) )
    24472464  {
    24482465    CPolyCoeffsEnumerator itr(ph);
    2449     n_ClearDenominators(itr, r->cf);
    2450     //  return start;
    2451   }
    2452 #endif
    2453 
     2466    n_ClearDenominators(itr, C);
     2467    n_ClearContent(itr, C); // divide out the content
     2468
     2469    assume( n_GreaterZero(pGetCoeff(ph),C) );
     2470   
     2471    return start;
     2472  }
     2473#endif
     2474 
    24542475  number d, h;
    24552476  poly p;
     
    24592480  {
    24602481    p_Content(ph,r);
     2482    assume( n_GreaterZero(pGetCoeff(ph),C) );
    24612483    return start;
    24622484  }
    24632485#endif
    2464   if (rField_is_Zp(r) && TEST_OPT_INTSTRATEGY) return start;
     2486
     2487  if (rField_is_Zp(r) && TEST_OPT_INTSTRATEGY)
     2488  {
     2489    assume( n_GreaterZero(pGetCoeff(ph),C) );
     2490    return start;
     2491  }
    24652492  p = ph;
     2493
     2494  assume(p != NULL);
     2495 
    24662496  if(pNext(p)==NULL)
    24672497  {
     
    24792509    else
    24802510      p_SetCoeff(p,n_Init(1,r->cf),r);
    2481   }
    2482   else
     2511
     2512    assume( n_GreaterZero(pGetCoeff(ph),C) );
     2513   
     2514    return start;
     2515  }
     2516
     2517#if CLEARENUMERATORS
     2518  if( (ph != NULL) && nCoeff_is_Q(C) )
     2519  {
     2520    CPolyCoeffsEnumerator itr(ph);
     2521    n_ClearDenominators(itr, C);
     2522    n_ClearContent(itr, C); // divide out the content
     2523
     2524    assume( n_GreaterZero(pGetCoeff(ph),C) );
     2525   
     2526    return start;
     2527  }
     2528#endif
     2529
     2530  if(1)
    24832531  {
    24842532    h = n_Init(1,r->cf);
     
    25712619#endif
    25722620  }
     2621
     2622  assume( n_GreaterZero(pGetCoeff(ph),C) );
     2623 
    25732624  return start;
    25742625}
     
    25762627void p_Cleardenom_n(poly ph,const ring r,number &c)
    25772628{
    2578 #if 0
    2579   if( ph != NULL )
    2580   {
    2581     CPolyCoeffsEnumerator itr(ph);
    2582     n_ClearDenominators(itr, c, r->cf);
    2583 //    return;
    2584   }
    2585 #endif
    2586  
     2629  const coeffs C = r->cf;
    25872630  number d, h;
    25882631  poly p;
    25892632
    25902633  p = ph;
     2634
     2635  assume(ph != NULL);
     2636
     2637
     2638
     2639#if CLEARENUMERATORS
     2640  if( (ph != NULL) && nCoeff_is_Q(C) )
     2641  {
     2642    CPolyCoeffsEnumerator itr(ph);
     2643    n_ClearDenominators(itr, d, C); // multiply with common denom. d
     2644    n_ClearContent(itr, h, C); // divide by the content h
     2645
     2646    c = n_Div(d, h, C); // d/h
     2647
     2648    n_Delete(&d, C);
     2649    n_Delete(&h, C);
     2650
     2651    assume( n_GreaterZero(pGetCoeff(ph),C) );
     2652   
     2653    return;
     2654  }
     2655#endif
     2656 
    25912657  if(pNext(p)==NULL)
    25922658  {
    2593     c=n_Invers(pGetCoeff(p),r->cf);
    2594     p_SetCoeff(p,n_Init(1,r->cf),r);
    2595   }
    2596   else
     2659    c=n_Invers(pGetCoeff(p), C);
     2660    p_SetCoeff(p, n_Init(1, C), r);
     2661
     2662    assume( n_GreaterZero(pGetCoeff(ph),C) );
     2663   
     2664    return;
     2665  }
     2666
     2667#if CLEARENUMERATORS
     2668  if( (ph != NULL) && nCoeff_is_Q(C) )
     2669  {
     2670    CPolyCoeffsEnumerator itr(ph);
     2671    n_ClearDenominators(itr, d, C); // multiply with common denom. d
     2672    n_ClearContent(itr, h, C); // divide by the content h
     2673
     2674    c = n_Div(d, h, C); // d/h
     2675
     2676    n_Delete(&d, C);
     2677    n_Delete(&h, C);
     2678
     2679    assume( n_GreaterZero(pGetCoeff(ph),C) );
     2680   
     2681    return;
     2682  }
     2683#endif
     2684
     2685 
     2686 
     2687
     2688  if(1)
    25972689  {
    25982690    h = n_Init(1,r->cf);
     
    26762768    }
    26772769  }
     2770
     2771  assume( n_GreaterZero(pGetCoeff(ph),C) );
    26782772}
    26792773
     
    39784072* respect syzComp
    39794073*/
    3980 poly p_Last(poly a, int &l, const ring r)
    3981 {
    3982   if (a == NULL)
     4074poly p_Last(const poly p, int &l, const ring r)
     4075{
     4076  if (p == NULL)
    39834077  {
    39844078    l = 0;
     
    39864080  }
    39874081  l = 1;
     4082  poly a = p;
    39884083  if (! rIsSyzIndexRing(r))
    39894084  {
    3990     while (pNext(a)!=NULL)
    3991     {
    3992       pIter(a);
     4085    poly next = pNext(a);
     4086    while (next!=NULL)
     4087    {
     4088      a = next;
     4089      next = pNext(a);     
    39934090      l++;
    39944091    }
  • libpolys/polys/monomials/p_polys.h

    rd1fbbf r36ebfa  
    185185  return l;
    186186}
     187
     188// returns the length of a polynomial (numbers of monomials) and the last mon.
     189// respect syzComp
     190poly p_Last(const poly a, int &l, const ring r);
     191
     192/*----------------------------------------------------*/
    187193
    188194void      p_Norm(poly p1, const ring r);
     
    958964}
    959965
    960 // return p - m*Copy(q), destroys p; const: p,m
    961 static inline poly p_Minus_mm_Mult_qq(poly p, poly m, poly q, const ring r)
    962 {
     966// like p_Minus_mm_Mult_qq, except that if lp == pLength(lp) lq == pLength(lq)
     967// then result = p-m*q, lp == pLength(result), last == pLast(result)
     968static inline poly p_Minus_mm_Mult_qq(poly p, const poly m, const poly q, int &lp, int lq,
     969                                 const poly spNoether, poly& last, const ring r)
     970{
     971  int l;
    963972#ifdef HAVE_PLURAL
    964973  if (rIsPluralRing(r))
    965974  {
     975    p = nc_p_Minus_mm_Mult_qq(p, m, q, lp, lq, spNoether, r);
     976    last = p_Last(p, l, r);
     977    assume( lp == l );
     978    assume( lp == pLength(p) );
     979    return p;
     980  }
     981#endif
     982
     983  int shorter;
     984  const poly res = r->p_Procs->p_Minus_mm_Mult_qq(p, m, q, shorter, spNoether, r, last);
     985  lp = (lp + lq) - shorter;
     986  assume( last == p_Last(res, l, r) );
     987  assume( lp == l );
     988  assume( lp == pLength(res) );
     989  return res;
     990}
     991
     992
     993// like p_Minus_mm_Mult_qq (above) but without last
     994static inline poly p_Minus_mm_Mult_qq(poly p, const poly m, const poly q, int &lp, int lq,
     995                                      const poly spNoether, const ring r)
     996{
     997#ifdef HAVE_PLURAL
     998  if (rIsPluralRing(r))
     999  {
     1000    p = nc_p_Minus_mm_Mult_qq(p, m, q, lp, lq, spNoether, r);
     1001    assume( lp == pLength(p) );
     1002    return p;
     1003  }
     1004#endif
     1005
     1006  int shorter; poly last;
     1007  const poly res = r->p_Procs->p_Minus_mm_Mult_qq(p, m, q, shorter, spNoether, r, last);
     1008  lp += lq - shorter;
     1009  assume( lp == pLength(res) );
     1010  return res;
     1011}
     1012
     1013// return p - m*Copy(q), destroys p; const: p,m
     1014static inline poly p_Minus_mm_Mult_qq(poly p, const poly m, const poly q, const ring r)
     1015{
     1016#ifdef HAVE_PLURAL
     1017  if (rIsPluralRing(r))
     1018  {
    9661019    int lp, lq = 0;
    9671020    return nc_p_Minus_mm_Mult_qq(p, m, q, lp, lq, NULL, r);
     
    9751028}
    9761029
    977 // like p_Minus_mm_Mult_qq, except that if lp == pLength(lp) lq == pLength(lq)
    978 // then lp == pLength(p -m*q)
    979 static inline poly p_Minus_mm_Mult_qq(poly p, poly m, poly q, int &lp, int lq,
    980                                  poly spNoether, const ring r)
    981 {
    982 #ifdef HAVE_PLURAL
    983   if (rIsPluralRing(r))
    984      return nc_p_Minus_mm_Mult_qq(p, m, q, lp, lq, spNoether, r);
    985 #endif
    986 
    987   int shorter;
    988   poly last,res;
    989   res = r->p_Procs->p_Minus_mm_Mult_qq(p, m, q, shorter, spNoether, r, last);
    990   lp = (lp + lq) - shorter;
    991   return res;
    992 }
    9931030
    9941031// returns p*Coeff(m) for such monomials pm of p, for which m is divisble by pm
     
    19251962
    19261963/*----------------------------------------------------*/
    1927 // returns the length of a polynomial (numbers of monomials) and the last mon.
    1928 // respect syzComp
    1929 poly p_Last(poly a, int &l, const ring r);
    1930 
    19311964/// shifts components of the vector p by i
    19321965void p_Shift (poly * p,int i, const ring r);
  • libpolys/reporter/Makefile.am

    rd1fbbf r36ebfa  
    1717
    1818libreporter_la_CXXFLAGS   = -O3 -fomit-frame-pointer ${PIPE} ${CXXTEMPLFLAGS}
    19 libreporter_g_la_CXXFLAGS = -g -Wextra -Wall -pedantic -Wno-long-long ${PIPE} ${CXXTEMPLFLAGS}
     19libreporter_g_la_CXXFLAGS = -g -Wextra -Winline -Wall -pedantic -Wno-long-long ${PIPE} ${CXXTEMPLFLAGS}
    2020# -fdiagnostics-show-option
    2121
  • libpolys/tests/Makefile.am

    rd1fbbf r36ebfa  
    7070
    7171###  -pedantic
    72 DEBUGCFLAGS = $(AM_CFLAGS) -g -Wextra -Wall -Wno-long-long ${PIPE}
     72DEBUGCFLAGS = $(AM_CFLAGS) -g -Wextra -Winline -Wall -Wno-long-long ${PIPE}
    7373DEBUGCXXFLAGS = $(AM_CXXFLAGS) ${DEBUGCFLAGS} ${CXXTEMPLFLAGS}
    7474DEBUGCPPFLAGS = ${AM_CPPFLAGS} -DHAVE_CONFIG_H
  • ntl/CMakeLists.txt

    rd1fbbf r36ebfa  
    3939set(CMAKE_C_FLAGS "-O2 -fomit-frame-pointer")
    4040set(CMAKE_CXX_FLAGS "-O2 -fomit-frame-pointer -fno-rtti")
    41 set(CMAKE_CXX_FLAGS "-W -Wall -Wextra -Wno-non-virtual-dtor -Wno-unknown-pragma")
     41set(CMAKE_CXX_FLAGS "-W -Wall -Wextra -Winline -Wno-non-virtual-dtor -Wno-unknown-pragma")
    4242
    4343link_libraries(m)
  • numeric/Makefile.am

    rd1fbbf r36ebfa  
    1414
    1515libnumeric_la_CXXFLAGS   = -O3 -fomit-frame-pointer ${PIPE} ${CXXTEMPLFLAGS}
    16 libnumeric_g_la_CXXFLAGS = -g -Wextra -Wall -pedantic -Wno-long-long ${PIPE} ${CXXTEMPLFLAGS}
     16libnumeric_g_la_CXXFLAGS = -g -Wextra -Winline -Wall -pedantic -Wno-long-long ${PIPE} ${CXXTEMPLFLAGS}
    1717# -fdiagnostics-show-option
    1818
  • omalloc/CMakeLists.txt

    rd1fbbf r36ebfa  
    6666set(CMAKE_C_FLAGS_DEBUG "-O0 -g -Wreturn-type -fno-omit-frame-pointer")
    6767set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -fno-inline-functions")
    68 set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -W -Wall -Wextra")
     68set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -W -Wall -Wextra -Winline")
    6969set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g -Wreturn-type -fno-omit-frame-pointer")
    7070set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fno-inline-functions")
    71 set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -W -Wall -Wextra")
     71set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -W -Wall -Wextra -Winline")
    7272
    7373set(CMAKE_C_FLAGS_PROFILE "${CMAKE_C_FLAGS_DEBUG} -Werror -pedantic")
  • omalloc/Makefile.am

    rd1fbbf r36ebfa  
    9090omtTest_s_g_SOURCES = $(OMTTESTSSOURCES)
    9191omtTest_s_g_CPPFLAGS= ${AM_CPPFLAGS} -DHAVE_CONFIG_H
    92 omtTest_s_g_CFLAGS  = -g -Wextra -Wall -pedantic -Wno-long-long ${PIPE}
     92omtTest_s_g_CFLAGS  = -g -Wextra -Winline -Wall -pedantic -Wno-long-long ${PIPE}
    9393omtTest_s_g_LDADD   = libomalloc_g.la
    9494omtTest_s_g_LDFLAGS = -L${abs_top_builddir}/omalloc -L${abs_top_builddir}/../omalloc -static
     
    109109omtTest_d_g_SOURCES = $(OMTTESTSSOURCES)
    110110omtTest_d_g_CPPFLAGS= ${AM_CPPFLAGS} -DHAVE_CONFIG_H
    111 omtTest_d_g_CFLAGS  = -g -Wextra -Wall -pedantic -Wno-long-long ${PIPE}
     111omtTest_d_g_CFLAGS  = -g -Wextra -Winline -Wall -pedantic -Wno-long-long ${PIPE}
    112112omtTest_d_g_LDADD   = libomalloc_g.la
    113113omtTest_d_g_LDFLAGS = -L${abs_top_builddir}/omalloc -L${abs_top_builddir}/../omalloc
  • standalone.test/mk

    rd1fbbf r36ebfa  
    1414# /mnt/DATA/GITHUB/w/GAP/libsing/spielwiese/TARGET/bin"
    1515
    16 LIBPOLYSCFLAGS="`sh $P/libsingular-config --cflagsg` -g -Wextra -Wall -Wno-long-long  -O0 --no-exceptions"
     16LIBPOLYSCFLAGS="`sh $P/libsingular-config --cflagsg` -g -Wextra -Winline -Wall -Wno-long-long  -O0 --no-exceptions"
    1717LIBPOLYSLIBS=`sh $P/libsingular-config --libsg`
    1818LIBPOLYSPREFIX="`sh $P/libsingular-config --prefix`"
     
    2525echo "executing '$CMD':"
    2626$CMD
    27 
    28 CMD="g++ -g -Wextra -Wall -Wno-long-long -O0 --no-exceptions -rdynamic $NAME.o -o $NAME $LIBPOLYSLIBS"
     27# -rdynamic
     28CMD="g++ -static -g -Wextra -Winline -Wall -Wno-long-long -O0 --no-exceptions $NAME.o -o $NAME $LIBPOLYSLIBS"
    2929echo "executing '$CMD':"
    3030$CMD
  • xalloc/Makefile.am

    rd1fbbf r36ebfa  
    2222
    2323libomalloc_la_CFLAGS            = -O3 ${PIPE}
    24 libomalloc_g_la_CFLAGS  = -g -Wextra -Wall -pedantic -Wno-long-long ${PIPE}
     24libomalloc_g_la_CFLAGS  = -g -Wextra -Winline -Wall -pedantic -Wno-long-long ${PIPE}
    2525
    2626libomalloc_la_CXXFLAGS  = -O3 ${PIPE}
    27 libomalloc_g_la_CXXFLAGS= -g -Wextra -Wall -pedantic -Wno-long-long ${PIPE}
     27libomalloc_g_la_CXXFLAGS= -g -Wextra -Winline -Wall -pedantic -Wno-long-long ${PIPE}
    2828
    2929libomalloc_la_CPPFLAGS  = ${AM_CPPFLAGS} -DHAVE_CONFIG_H -DNDEBUG -DOM_NDEBUG
Note: See TracChangeset for help on using the changeset viewer.