Changeset 3e7db4 in git


Ignore:
Timestamp:
Dec 11, 2012, 7:33:39 PM (12 years ago)
Author:
Oleksandr Motsak <motsak@…>
Branches:
(u'fieker-DuVal', '117eb8c30fc9e991c4decca4832b1d19036c4c65')(u'spielwiese', '648d28f488f6ff08f5607ff229b9ad9e4a5b93c2')
Children:
14e634edb64741be0fbc04c9c89e8523cb0c1cc521dbb4186f3a2c56539d8f92abe1ee9e0fa0ae2c
Parents:
dcf88ff0bb046d73a7bde65e033fc58cbb5f4a97c9050082385152a64066f7540914cae34d990a43
Message:
Merge pull request #207 from kovzol/spielwiese

Adding new command line option --no-shell to prevent running escape shel...

NOTE: according to Hans we have to fix some more things in order to make this right
Files:
4 added
139 edited

Legend:

Unmodified
Added
Removed
  • .gdbinit

    rc90500 r3e7db4  
    11break dErrorBreak
    22break dReportError
    3 
     3break omReportError
    44
    55
    66### http://sourceware.org/gdb/onlinedocs/gdb/Define.html#Define
    77
    8 # print poly
     8# print poly ring
    99define pp
     10  if $argc > 0
     11    print $arg0
     12    if $arg0 != 0
     13      print *$arg0
    1014
    11 if $argc > 0
    12   print $arg0
    13   if $arg0 != 0
    14     print *$arg0
    15 
    16 if $argc == 2
    17   call p_Write($arg0, $arg1)
    18 end
     15      if $argc == 2
     16        call p_Write($arg0, $arg1)
     17      else
     18        call p_Write($arg0, currRing)
     19      end
     20    end
    1921  end
    2022end
    21 
    22 
    23 end
    2423     
     24run
     25backtrace
  • IntegerProgramming/binomial.cc

    rc90500 r3e7db4  
    18471847
    18481848  exponent_vector[i]*=-1;
    1849 
     1849  return *this;
    18501850}
    18511851
  • Makefile.am

    rc90500 r3e7db4  
    3737
    3838bin_SCRIPTS = libsingular-config
     39
  • Singular/Cache.h

    rc90500 r3e7db4  
    44#include <string>
    55#include <list>
    6 #include <assert.h>
    7 
    8 using namespace std;
     6
     7// #include <assert.h>
     8// using namespace std;
    99
    1010/*! \class Cache
     
    7575     * as long as the pair <c>key(_rank(i)) -->  value(_rank(i))</c>.
    7676     */
    77      list<int> _rank;
     77   std::list<int> _rank;
    7878 
    7979     /**
     
    8383     * in KeyClass.
    8484     */
    85      list<KeyClass> _key;
     85     std::list<KeyClass> _key;
    8686 
    8787     /**
     
    9191     * argument \c _key[i]).
    9292     */
    93      list<ValueClass> _value;
     93     std::list<ValueClass> _value;
    9494     
    9595     /**
    9696     * container for the weights of all cached values
    9797     */
    98      list<int> _weights;
     98     std::list<int> _weights;
    9999 
    100100     /**
     
    104104     * const, as the user would expect for these methods.
    105105     */
    106      mutable typename list<KeyClass>::const_iterator _itKey;
     106     mutable typename std::list<KeyClass>::const_iterator _itKey;
    107107     
    108108     /**
     
    112112     * const, as the user would expect for these methods.
    113113     */
    114      mutable typename list<ValueClass>::const_iterator _itValue;
     114     mutable typename std::list<ValueClass>::const_iterator _itValue;
    115115 
    116116     /**
     
    314314     *         string
    315315     */
    316      string toString () const;
     316   std::string toString () const;
    317317 
    318318     /**
     
    324324};
    325325
    326 #include <CacheImplementation.h>
     326#include "CacheImplementation.h"
    327327
    328328#endif
  • Singular/CacheImplementation.h

    rc90500 r3e7db4  
    11#ifndef CACHE_IMPLEMENTATION_H
    22#define CACHE_IMPLEMENTATION_H
     3
     4#include <reporter/reporter.h>
    35
    46#include <cstdio> // for sprintf
     
    5355{
    5456  _itKey = _key.end(); // referring to past-the-end element in the list
    55   typename list<KeyClass>::const_iterator itKey;
     57   typename std::list<KeyClass>::const_iterator itKey;
    5658  _itValue = _value.begin();
    5759  /* As _key is a sorted list, the following could actually be implemented
     
    8082       thus, getValue has been called although hasKey
    8183       produced no match */
    82     assert(false);
     84    assume(false);
    8385
    8486  return *_itValue;
     
    123125     erasing the last entry which is only implemented for forward
    124126     iterators by std::list. */
    125   list<int>::iterator itRank;
     127   std::list<int>::iterator itRank;
    126128  for (itRank = _rank.begin(); itRank != _rank.end(); itRank++) { }
    127129  itRank--; /* Now, this forward iterator points to the last list entry. */
     
    132134  /* now delete entries in _key and _value with index deleteIndex */
    133135  int k = 0;
    134   typename list<KeyClass>::iterator itKey;
    135   typename list<ValueClass>::iterator itValue = _value.begin();
    136   typename list<int>::iterator itWeights = _weights.begin();
     136  typename std::list<KeyClass>::iterator itKey;
     137  typename std::list<ValueClass>::iterator itValue = _value.begin();
     138  typename std::list<int>::iterator itWeights = _weights.begin();
    137139  for (itKey = _key.begin(); itKey != _key.end(); itKey++)
    138140  {
     
    176178                                       keyWasContained == false */
    177179  int k = 0;
    178   typename list<KeyClass>::iterator itKey;
     180  typename std::list<KeyClass>::iterator itKey;
    179181  // itOldValue will later only be used in the case keyWasContained == true: */
    180   typename list<ValueClass>::iterator itOldValue = _value.begin();
     182  typename std::list<ValueClass>::iterator itOldValue = _value.begin();
    181183  /* itOldWeights will later only be used in the case
    182184     keyWasContained == true */
    183   typename list<int>::iterator itOldWeights = _weights.begin();
     185  typename std::list<int>::iterator itOldWeights = _weights.begin();
    184186  for (itKey = _key.begin(); itKey != _key.end(); itKey++)
    185187  {
     
    203205  int newWeight = value.getWeight();
    204206  k = 0;
    205   typename list<ValueClass>::iterator itValue = _value.begin();
     207  typename std::list<ValueClass>::iterator itValue = _value.begin();
    206208  for (itValue = _value.begin(); itValue != _value.end(); itValue++)
    207209  {
     
    229231       _rank[oldIndexInRank] == oldIndexInKey, i.e.
    230232       _key[_rank[oldIndexInRank]] == key: */
    231     list<int>::iterator itRank;
     233    std::list<int>::iterator itRank;
    232234    k = 0;
    233235    for (itRank = _rank.begin(); itRank != _rank.end(); itRank++)
     
    306308       Let's make room for the assignment
    307309       _rank[newIndexInRank] := newIndexInKey: */
    308     list<int>::iterator itRank;
     310    std::list<int>::iterator itRank;
    309311    for (itRank = _rank.begin(); itRank != _rank.end(); itRank++)
    310312    {
     
    323325    /* let's insert new key and new value at index newIndexInKey: */
    324326    itValue = _value.begin();
    325     typename list<int>::iterator itWeights = _weights.begin();
     327    typename std::list<int>::iterator itWeights = _weights.begin();
    326328    k = 0;
    327329    for (itKey = _key.begin(); itKey != _key.end(); itKey++)
     
    344346                                 new (key, value)-pair */
    345347
    346   assert(_rank.size() == _key.size());
    347   assert(_rank.size() == _value.size());
     348  assume(_rank.size() == _key.size());
     349  assume(_rank.size() == _value.size());
    348350  return !result; /* true iff the new (key --> value) pair is
    349351                     actually in the cache now */
     
    351353
    352354template<class KeyClass, class ValueClass>
    353 string Cache<KeyClass, ValueClass>::toString() const
     355std::string Cache<KeyClass, ValueClass>::toString() const
    354356{
    355357  char h[10];
    356   string s = "Cache:";
     358  std::string s = "Cache:";
    357359  s += "\n   entries: ";
    358360  sprintf(h, "%d", getNumberOfEntries()); s += h;
     
    371373    int k = 1;
    372374    s += "\n   (key --> value) pairs in ascending order of keys:";
    373     typename list<KeyClass>::const_iterator itKey;
    374     typename list<ValueClass>::const_iterator itValue = _value.begin();
     375    typename std::list<KeyClass>::const_iterator itKey;
     376    typename std::list<ValueClass>::const_iterator itValue = _value.begin();
    375377    for (itKey = _key.begin(); itKey != _key.end(); itKey++)
    376378    {
     
    385387    }
    386388    s += "\n   (key --> value) pairs in descending order of ranks:";
    387     list<int>::const_iterator itRank;
     389    std::list<int>::const_iterator itRank;
    388390    int r = 1;
    389391    for (itRank = _rank.begin(); itRank != _rank.end(); itRank++)
     
    413415void Cache<KeyClass, ValueClass>::print() const
    414416{
    415   cout << this->toString();
     417  PrintS(this->toString().c_str());
    416418}
    417419
  • Singular/Makefile.am

    rc90500 r3e7db4  
    8888   links/ssiLink.cc\
    8989   subexpr.cc\
     90   pyobject_setup.cc\
    9091   walk.cc\
    9192   walk_ip.cc\
     
    207208endif
    208209
    209 AMLDFLAGS = -L${abs_top_builddir}/Singular -L${abs_top_builddir}/numeric -L${abs_top_builddir}/kernel -L${abs_top_builddir}/libpolys/polys  -L${top_builddir}/libpolys/coeffs -L${top_builddir}/libpolys/reporter -L${top_builddir}/libpolys/misc $(USE_FACTORY) -L${abs_top_builddir}/omalloc -L${abs_top_builddir}/findexec
     210AMLDFLAGS = -L${top_builddir}/Singular -L${top_builddir}/numeric -L${top_builddir}/kernel -L${top_builddir}/libpolys/polys  -L${top_builddir}/libpolys/coeffs -L${top_builddir}/libpolys/reporter -L${top_builddir}/libpolys/misc $(USE_FACTORY) -L${top_builddir}/omalloc -L${top_builddir}/findexec
    210211
    211212Singular_CFLAGS = -O3 -fomit-frame-pointer ${PIPE}
     
    221222Singularg_SOURCES = tesths.cc fegetopt.c fegetopt.h utils.cc  utils.h
    222223
    223 Singular_LDADD = libSingular.la ${abs_top_builddir}/numeric/libnumeric.la ${abs_top_builddir}/kernel/libkernel.la ${abs_top_builddir}/libpolys/polys/libpolys.la -lcoeffs -lreporter -lmisc $(FACTORY_LIBS) -lomalloc -lfindexec $(FLINT_LIBS) $(NTL_LIBS) $(GMP_LIBS) ${USEPPROCSDYNAMICLDFLAGS} ${USEPPROCSDYNAMICLD}
    224 Singularg_LDADD = libSingular_g.la ${abs_top_builddir}/numeric/libnumeric_g.la ${abs_top_builddir}/kernel/libkernel_g.la ${abs_top_builddir}/libpolys/polys/libpolys_g.la -lcoeffs_g -lreporter_g -lmisc_g $(FACTORY_LIBS) -lomalloc_g -lfindexec_g $(FLINT_LIBS) $(NTL_LIBS) $(GMP_LIBS) ${USEPPROCSDYNAMICLDFLAGS}  ${USEPPROCSDYNAMICLD}
     224Singular_LDADD = libSingular.la ${top_builddir}/numeric/libnumeric.la ${top_builddir}/kernel/libkernel.la ${top_builddir}/libpolys/polys/libpolys.la -lcoeffs -lreporter -lmisc $(FACTORY_LIBS) -lomalloc -lfindexec $(FLINT_LIBS) $(NTL_LIBS) $(GMP_LIBS) ${USEPPROCSDYNAMICLDFLAGS} ${USEPPROCSDYNAMICLD}
     225Singularg_LDADD = libSingular_g.la ${top_builddir}/numeric/libnumeric_g.la ${top_builddir}/kernel/libkernel_g.la ${top_builddir}/libpolys/polys/libpolys_g.la -lcoeffs_g -lreporter_g -lmisc_g $(FACTORY_LIBS) -lomalloc_g -lfindexec_g $(FLINT_LIBS) $(NTL_LIBS) $(GMP_LIBS) ${USEPPROCSDYNAMICLDFLAGS}  ${USEPPROCSDYNAMICLD}
    225226
    226227Singular_CPPFLAGS = ${AM_CPPFLAGS} -DHAVE_CONFIG_H -DNDEBUG -DOM_NDEBUG
     
    310311########################### TEST #########################
    311312
    312 TESTS_ENVIRONMENT = SINGULARPATH='${abs_top_builddir}/Singular/LIB:${abs_top_srcdir}/Singular/LIB:${abs_top_builddir}/libpolys/polys/.libs:${abs_top_builddir}/factory/gftables'
    313 TESTS_ENVIRONMENT += SINGULAR_ROOT_DIR='${abs_top_builddir}'
     313TESTS_ENVIRONMENT = SINGULARPATH='${top_builddir}/Singular/LIB:${top_srcdir}/Singular/LIB:${top_builddir}/libpolys/polys/.libs:${top_builddir}/factory/gftables'
     314TESTS_ENVIRONMENT += SINGULAR_ROOT_DIR='${top_builddir}'
    314315
    315316if WANT_DEBUG
     
    370371
    371372feOpt.inc: feOptGen
    372         ${abs_builddir}/feOptGen
     373        ${builddir}/feOptGen
    373374
    374375feOptES.inc: feOptES
    375         ${abs_builddir}/feOptES
     376        ${builddir}/feOptES
    376377
    377378feOptTS.inc: feOptTS
    378         ${abs_builddir}/feOptTS
     379        ${builddir}/feOptTS
    379380
    380381plural_cmd.inc iparith.inc: gentable1
    381         ${abs_builddir}/gentable1
     382        ${builddir}/gentable1
    382383
    383384# # fake rule to fix parallel make http://www.gnu.org/s/hello/manual/automake/Multiple-Outputs.html
     
    385386
    386387
    387 gftables: ${abs_top_srcdir}/factory/gftables
    388         ln -snf ${abs_top_srcdir}/factory/gftables ${abs_builddir}/gftables
    389 
    390 MOD: ${abs_top_builddir}/libpolys/polys/.libs
    391         ln -snf ${abs_top_builddir}/libpolys/polys/.libs/ ${abs_builddir}/MOD
     388gftables: ${top_srcdir}/factory/gftables
     389        ln -snf ${top_srcdir}/factory/gftables ${builddir}/gftables
     390
     391MOD: ${top_builddir}/libpolys/polys/.libs
     392        ln -snf ${top_builddir}/libpolys/polys/.libs/ ${builddir}/MOD
     393
     394if PYTHON_USE
     395   moduledir = $(bindir)/MOD
     396   module_LTLIBRARIES = pyobject.la
     397   pyobject_la_SOURCES = pyobject.cc
     398
     399   pyobject_la_CPPFLAGS   = ${AM_CPPFLAGS} ${NODEBUGDEFS}
     400   pyobject_g_la_CPPFLAGS = ${AM_CPPFLAGS}
     401
     402   pyobject_la_CXXFLAGS   = ${NODEBUGCXXFLAGS} @PYTHON_CSPEC@
     403   pyobject_g_la_CXXFLAGS = ${DEBUGCXXFLAGS} @PYTHON_CSPEC@
     404
     405   pyobject_la_LDFLAGS = -export-dynamic -shared -module -avoid-version \
     406     ${AMLDFLAGS} @PYTHON_LSPEC@
     407endif
  • Singular/Minor.cc

    rc90500 r3e7db4  
    1 #include <iostream>
    2 
    31#include "config.h"
    42#include <kernel/mod2.h>
     3
     4#include "Minor.h"
     5
    56#include <kernel/structs.h>
    67#include <kernel/polys.h>
    7 #include <Minor.h>
    88#include <kernel/febase.h>
    99
     10using namespace std;
    1011
    1112void MinorKey::reset()
     
    114115void MinorKey::print() const
    115116{
    116   cout << this->toString();
     117  PrintS(this->toString().c_str());
    117118}
    118119
     
    145146  }
    146147  /* We should never reach this line of code. */
    147   assert(false);
     148  assume(false);
     149  return -1;
    148150}
    149151
     
    176178  }
    177179  /* We should never reach this line of code. */
    178   assert(false);
     180  assume(false);
     181  return -1;
    179182}
    180183
     
    198201    }
    199202  }
    200   return;
    201203}
    202204
     
    220222    }
    221223  }
    222   return;
    223224}
    224225
     
    251252  }
    252253  /* We should never reach this line of code. */
    253   assert(false);
     254  assume(false);
     255  return -1;
    254256}
    255257
     
    282284  }
    283285  /* We should never reach this line of code. */
    284   assert(false);
     286  assume(false);
     287  return -1;
    285288}
    286289
     
    439442bool MinorKey::operator==(const MinorKey& mk) const
    440443{
    441   assert(false);
     444  assume(false);
    442445  return this->compare(mk) == 0;
    443446}
     
    447450bool MinorKey::operator<(const MinorKey& mk) const
    448451{
    449   assert(false);
     452  assume(false);
    450453  return this->compare(mk) == -1;
    451454}
     
    833836int MinorValue::getWeight () const
    834837{
    835   assert(false);  /* must be overridden in derived classes */
     838  assume(false);  /* must be overridden in derived classes */
    836839  return 0;
    837840}
     
    841844bool MinorValue::operator==(const MinorValue& mv) const
    842845{
    843   assert(false);
     846  assume(false);
    844847  return (this == &mv);  /* compare addresses of both objects */
    845848}
     
    847850string MinorValue::toString () const
    848851{
    849   assert(false);  /* must be overridden in derived classes */
     852  assume(false);  /* must be overridden in derived classes */
    850853  return "";
    851854}
     
    855858bool MinorValue::operator<(const MinorValue& mv) const
    856859{
    857   assert(false);
     860  assume(false);
    858861  return (this < &mv);  /* compare addresses of both objects */
    859862}
     
    896899void MinorValue::print() const
    897900{
    898   cout << this->toString();
     901  PrintS(this->toString().c_str());
    899902}
    900903
  • Singular/Minor.h

    rc90500 r3e7db4  
    22#define MINOR_H
    33
    4 #include <assert.h>
     4// #include <assert.h>
    55#include <string>
    66
    7 #include <kernel/polys.h>
    8 
    9 using namespace std;
     7struct spolyrec; typedef struct spolyrec polyrec; typedef polyrec* poly;
     8struct ip_sring; typedef struct ip_sring* ring; typedef struct ip_sring const* const_ring;
     9
     10struct sip_sideal; typedef struct sip_sideal *       ideal;
     11
     12// using namespace std;
    1013
    1114/*! \class MinorKey
     
    391394     * string
    392395     */
    393      string toString () const;
     396   std::string toString () const;
    394397
    395398     /**
     
    683686    *         string
    684687    */
    685     virtual string toString () const;
     688   virtual std::string toString () const;
    686689   
    687690    /**
     
    771774    * string
    772775    */
    773     string toString () const;
     776   std::string toString () const;
    774777};
    775778
     
    858861    * string
    859862    */
    860     string toString () const;
     863   std::string toString () const;
    861864};
    862865
  • Singular/MinorInterface.cc

    rc90500 r3e7db4  
     1#include "config.h"
     2#include <kernel/mod2.h>
     3
    14// include before anything to avoid clashes with stdio.h included elsewhere
    2 #include <cstdio>
    3 
    4 #include <MinorInterface.h>
    5 #include <MinorProcessor.h>
     5// #include <cstdio>
     6
     7#include "MinorInterface.h"
     8#include "MinorProcessor.h"
     9
     10#include <polys/simpleideals.h>
    611
    712#include <kernel/polys.h>
    813#include <kernel/structs.h>
    9 
    10 #include "config.h"
    11 #include <kernel/mod2.h>
     14#include <kernel/kstd1.h>
    1215#include <kernel/ideals.h>
    13 #include <kernel/kstd1.h>
     16
     17using namespace std;
    1418
    1519bool currRingIsOverIntegralDomain ()
     
    172176#if (defined COUNT_AND_PRINT_OPERATIONS) && (COUNT_AND_PRINT_OPERATIONS > 1)
    173177    qqq++;
    174     printf("after %d", qqq);
     178    Print("after %d", qqq);
    175179    printCounters ("-th minor", false);
    176180#endif
     
    401405#if (defined COUNT_AND_PRINT_OPERATIONS) && (COUNT_AND_PRINT_OPERATIONS > 1)
    402406    qqq++;
    403     printf("after %d", qqq);
     407    Print("after %d", qqq);
    404408    printCounters ("-th minor", false);
    405409#endif
  • Singular/MinorInterface.h

    rc90500 r3e7db4  
    33
    44
    5 #include <polys/simpleideals.h>
    6 #include <kernel/polys.h>
     5struct spolyrec; typedef struct spolyrec polyrec; typedef polyrec* poly;
     6struct ip_sring; typedef struct ip_sring* ring; typedef struct ip_sring const* const_ring;
     7
     8struct sip_sideal; typedef struct sip_sideal *       ideal;
     9
     10class ip_smatrix; typedef ip_smatrix *       matrix;
    711
    812/* all computations are module char, if char <> 0;
  • Singular/MinorProcessor.cc

    rc90500 r3e7db4  
    1 #include <MinorProcessor.h>
    2 
    31#include "config.h"
    42#include <kernel/mod2.h>
     3
     4#include "MinorProcessor.h"
     5
     6#include <polys/kbuckets.h>
     7
    58#include <kernel/structs.h>
    69#include <kernel/polys.h>
    710#include <kernel/febase.h>
    811#include <kernel/kstd1.h>
    9 #include <polys/kbuckets.h>
     12
     13#include <kernel/ideals.h>
     14
     15using namespace std;
    1016
    1117#ifdef COUNT_AND_PRINT_OPERATIONS
     
    213219{
    214220  /* This is a non-recursive implementation. */
    215   assert( (i >= 0) && (j >= 0) && (i >= j));
     221  assume( (i >= 0) && (j >= 0) && (i >= j));
    216222  if (j == 0 || i == j) return 1;
    217223  int result = 1;
     
    227233{
    228234  /* This is a non-recursive implementation. */
    229   assert(i >= 0);
     235  assume(i >= 0);
    230236  int result = 1;
    231237  for (int j = 1; j <= i; j++) result *= j;
     
    444450     const ideal& iSB)
    445451{
    446   assert(k > 0); /* k is the minor's dimension; the minor must be at least
     452  assume(k > 0); /* k is the minor's dimension; the minor must be at least
    447453                    1x1 */
    448454  /* The method works by recursion, and using Lapace's Theorem along the
     
    561567     const ideal& iSB)
    562568{
    563   assert(k > 0); /* k is the minor's dimension; the minor must be at least
     569  assume(k > 0); /* k is the minor's dimension; the minor must be at least
    564570                    1x1 */
    565571  int *theRows=new int[k]; mk.getAbsoluteRowIndices(theRows);
     
    652658     const int characteristic, const ideal& iSB)
    653659{
    654   assert(k > 0); /* k is the minor's dimension; the minor must be at least
     660  assume(k > 0); /* k is the minor's dimension; the minor must be at least
    655661                    1x1 */
    656662  /* The method works by recursion, and using Lapace's Theorem along
     
    944950                                                          const ideal& iSB)
    945951{
    946   assert(k > 0); /* k is the minor's dimension; the minor must be at least
     952  assume(k > 0); /* k is the minor's dimension; the minor must be at least
    947953                    1x1 */
    948954  /* The method works by recursion, and using Lapace's Theorem along the
     
    10811087     const ideal& iSB)
    10821088{
    1083   assert(k > 0); /* k is the minor's dimension; the minor must be at least
     1089  assume(k > 0); /* k is the minor's dimension; the minor must be at least
    10841090                    1x1 */
    10851091  /* The method works by recursion, and using Lapace's Theorem along
     
    13841390                                                          const ideal& iSB)
    13851391{
    1386   assert(k > 0); /* k is the minor's dimension; the minor must be at least
     1392  assume(k > 0); /* k is the minor's dimension; the minor must be at least
    13871393                    1x1 */
    13881394  int *theRows=new int[k]; mk.getAbsoluteRowIndices(theRows);
  • Singular/MinorProcessor.h

    rc90500 r3e7db4  
    22#define MINOR_PROCESSOR_H
    33
    4 #include <Cache.h>
    5 #include <Minor.h>
    6 #include <assert.h>
     4#include "Cache.h"
     5#include "Minor.h"
     6
     7struct spolyrec; typedef struct spolyrec polyrec; typedef polyrec* poly;
     8struct ip_sring; typedef struct ip_sring* ring; typedef struct ip_sring const* const_ring;
     9
     10struct sip_sideal; typedef struct sip_sideal *       ideal;
     11
     12// #include <assert.h>
    713#include <string>
    814
     
    279285    * string
    280286    */
    281     virtual string toString () const;
     287   virtual std::string toString () const;
    282288
    283289    /**
     
    546552    *         string
    547553    */
    548     string toString () const;
     554   std::string toString () const;
    549555};
    550556
     
    760766    *         string
    761767    */
    762     string toString () const;
     768   std::string toString () const;
    763769};
    764770
  • Singular/blackbox.h

    rc90500 r3e7db4  
    5858
    5959/// default procedure blackboxDefaultOp3, to be called as "default:" branch
    60 BOOLEAN blackboxDefaultOp3(int op,leftv l, leftv r1,leftv r2, leftv r3);
     60BOOLEAN blackbox_default_Op3(int op,leftv l, leftv r1,leftv r2, leftv r3);
    6161
    6262/// default procedure blackboxDefaultOpM, to be called as "default:" branch
     
    7070/// return the name to the type given by t (r/o)
    7171const char *    getBlackboxName(const int t);
    72 /// used by scanner: returns ROOTDECL for known types (and the type number in t)
     72/// used by scanner: returns ROOT_DECL for known types
     73/// (and the type number in @c tok)
    7374int blackboxIsCmd(const char *n, int & tok);
    7475/// define a new type
  • Singular/countedref.cc

    rc90500 r3e7db4  
    555555  CountedRefShared ref = CountedRefShared::cast(head);
    556556
    557   if ((op == LINK_CMD) )
     557  if (op == LINK_CMD)
    558558  {
    559559    if (ref.dereference(head)) return TRUE;
     
    696696void countedref_reference_load()
    697697{
     698  int tok;
     699  if (blackboxIsCmd("reference", tok) == ROOT_DECL)
     700    return;
     701
    698702  blackbox *bbx = (blackbox*)omAlloc0(sizeof(blackbox));
    699703  bbx->blackbox_CheckAssign = countedref_CheckAssign;
     
    716720void countedref_shared_load()
    717721{
     722  int tok;
     723  if (blackboxIsCmd("shared", tok) == ROOT_DECL)
     724    return;
     725
    718726  blackbox *bbxshared = (blackbox*)omAlloc0(sizeof(blackbox));
    719727  bbxshared->blackbox_String  = countedref_String;
  • Singular/countedref.h

    rc90500 r3e7db4  
    312312  /// @name Pointer-style access
    313313  //@{
    314   const leftv operator->() const { return m_data;  }
     314  /*const*/ leftv operator->() const { return m_data;  }
     315  /*^ warning: 'const' type qualifier on return type has no effect!!! */
    315316  leftv operator->() { return m_data;  }
    316317  //@]
  • Singular/extra.cc

    rdcf88ff r3e7db4  
    336336    if(strcmp(sys_cmd,"sh")==0)
    337337    {
     338      if (feOptValue(FE_OPT_NO_SHELL)) {
     339       WerrorS("shell execution is disallowed in restricted mode");
     340       return TRUE;
     341       }
    338342      res->rtyp=INT_CMD;
    339343      if (h==NULL) res->data = (void *)(long) system("sh");
  • Singular/feOptGen.cc

    rdcf88ff r3e7db4  
    33****************************************/
    44/*
    5 * ABSTRACT: Implementation of option buisness
     5* ABSTRACT: Implementation of option business
    66*/
    77
  • Singular/feOptTab.h

    rdcf88ff r3e7db4  
    130130   0,          "Suppress all output",                                  feOptBool,    0,      0},
    131131
     132  {"no-shell",          no_argument,        LONG_OPTION_RETURN,
     133   0,          "Restricted mode: prohibit shell escape commands and links", feOptBool,  0,      0},
     134
    132135  {"min-time",          required_argument,  LONG_OPTION_RETURN,
    133136  "SECS",     "Do not display times smaller than SECS (in seconds)",   feOptString, (void*) "0.5",  0},
  • Singular/iparith.cc

    rc90500 r3e7db4  
    206206
    207207/*============= proc =======================*/
    208 static BOOLEAN jjLOAD(leftv res, leftv v, BOOLEAN autoexport = FALSE);
    209208static int iiTabIndex(const jjValCmdTab dArithTab, const int len, const int op);
    210209static Subexpr jjMakeSub(leftv e);
     
    15571556  int typ;
    15581557  BOOLEAN t=FALSE;
     1558  idhdl tmp_proc=NULL;
    15591559  if ((u->rtyp!=IDHDL)||(u->e!=NULL))
    15601560  {
    1561     idrec tmp_proc;
    1562     tmp_proc.id="_auto";
    1563     tmp_proc.typ=PROC_CMD;
    1564     tmp_proc.data.pinf=(procinfo *)u->Data();
    1565     tmp_proc.ref=1;
    1566     d=u->data; u->data=(void *)&tmp_proc;
     1561    tmp_proc=(idhdl)omAlloc0(sizeof(idrec));
     1562    tmp_proc->id="_auto";
     1563    tmp_proc->typ=PROC_CMD;
     1564    tmp_proc->data.pinf=(procinfo *)u->Data();
     1565    tmp_proc->ref=1;
     1566    d=u->data; u->data=(void *)tmp_proc;
    15671567    e=u->e; u->e=NULL;
    15681568    t=TRUE;
    15691569    typ=u->rtyp; u->rtyp=IDHDL;
    15701570  }
    1571   leftv sl;
     1571  BOOLEAN sl;
    15721572  if (u->req_packhdl==currPack)
    15731573    sl = iiMake_proc((idhdl)u->data,NULL,v);
     
    15791579    u->data=d;
    15801580    u->e=e;
    1581   }
    1582   if (sl==NULL)
    1583   {
    1584     return TRUE;
    1585   }
    1586   else
    1587   {
    1588     memcpy(res,sl,sizeof(sleftv));
    1589   }
     1581    omFreeSize(tmp_proc,sizeof(idrec));
     1582  }
     1583  if (sl) return TRUE;
     1584  memcpy(res,&iiRETURNEXPR,sizeof(sleftv));
    15901585  iiRETURNEXPR.Init();
    15911586  return FALSE;
     
    25122507static BOOLEAN jjLOAD2(leftv res, leftv, leftv v)
    25132508{
    2514   return jjLOAD(res, v,TRUE);
     2509  return jjLOAD((char*)v->Data(),TRUE);
    25152510}
    25162511static BOOLEAN jjLOAD_E(leftv res, leftv v, leftv u)
     
    25182513  char * s=(char *)u->Data();
    25192514  if(strcmp(s, "with")==0)
    2520     return jjLOAD(res, v, TRUE);
     2515    return jjLOAD((char*)v->Data(), TRUE);
    25212516  WerrorS("invalid second argument");
    25222517  WerrorS("load(\"libname\" [,\"with\"]);");
     
    43794374static BOOLEAN jjLOAD1(leftv res, leftv v)
    43804375{
    4381   return jjLOAD(res, v,FALSE);
     4376  return jjLOAD((char*)v->Data(),FALSE);
    43824377}
    43834378static BOOLEAN jjLISTRING(leftv res, leftv v)
     
    51555150  return FALSE;
    51565151}
    5157 static BOOLEAN jjLOAD(leftv, leftv v, BOOLEAN autoexport)
    5158 {
    5159   char * s=(char *)v->CopyD();
     5152
     5153BOOLEAN jjLOAD(char *s, BOOLEAN autoexport)
     5154{
    51605155  char libnamebuf[256];
    51615156  lib_types LT = type_of_LIB(s, libnamebuf);
  • Singular/ipid.cc

    rc90500 r3e7db4  
    194194  IDLEV(h)  = level;
    195195  IDNEXT(h) = this;
     196  BOOLEAN at_start=(this==IDROOT);
    196197  h->id_i=iiS2I(s);
    197198  if (init)
     
    221222  }
    222223  // --------------------------------------------------------
     224  if (at_start)
     225    IDNEXT(h) = IDROOT;
    223226  return  h;
    224227}
  • Singular/iplib.cc

    rc90500 r3e7db4  
    426426  }
    427427}
    428 sleftv * iiMake_proc(idhdl pn, package pack, sleftv* sl)
     428BOOLEAN iiMake_proc(idhdl pn, package pack, sleftv* sl)
    429429{
    430430  int err;
     
    434434    Werror("'%s::%s()' is a local procedure and cannot be accessed by an user.",
    435435           pi->libname, pi->procname);
    436     return NULL;
     436    return TRUE;
    437437  }
    438438  iiCheckNest();
     
    601601  procstack->pop();
    602602  if (err)
    603     return NULL;
    604   return &iiRETURNEXPR;
     603    return TRUE;
     604  return FALSE;
    605605}
    606606
  • Singular/ipshell.cc

    rc90500 r3e7db4  
    50445044{
    50455045#ifdef HAVE_RINGS
    5046   unsigned int ringtype = 0;
     5046  //unsigned int ringtype = 0;
    50475047  int_number modBase = NULL;
    50485048  unsigned int modExponent = 1;
     
    52125212        /* this branch should be active for modExponent = 2..32 resp. 2..64,
    52135213           depending on the size of a long on the respective platform */
    5214         ringtype = 1;       // Use Z/2^ch
     5214        //ringtype = 1;       // Use Z/2^ch
    52155215        cf=nInitChar(n_Z2m,(void*)(long)modExponent);
    52165216      }
    52175217      else
    52185218      {
    5219         ringtype = 3;
    5220         cf=nInitChar(n_Zn,(void*)(long)modBase);
     5219        //ringtype = 3;
     5220        cf=nInitChar(n_Zpn,(void*)(long)modBase);
    52215221      }
    52225222    }
     
    52245224    else if (cf == NULL)
    52255225    {
    5226       ringtype = 2;
     5226      //ringtype = 2;
    52275227      const int ch = mpz_get_ui(modBase);
    52285228      cf=nInitChar(n_Zn,(void*)(long)ch);
     
    52615261//  pn=pn->next;
    52625262
    5263   int l;
    52645263  /*every entry in the new ring is initialized to 0*/
    52655264
     
    52745273   *         q    q : GF(q=p^n)       *names         TRUE
    52755274  */
    5276   l = 0;
    5277 
    52785275  if (cf==NULL)
    52795276  {
     
    52865283
    52875284  R->cf = cf;
    5288 
    5289 #ifdef HAVE_RINGS
    5290   // the following should have beed set already into cf, right?!
    5291 //  R->cf->ringtype = ringtype;
    5292 //  R->cf->modBase = modBase;
    5293 //  R->cf->modExponent = modExponent;
    5294 #endif
    52955285
    52965286  /* names and number of variables-------------------------------------*/
  • Singular/ipshell.h

    rc90500 r3e7db4  
    6868   if  no, returns FALSE
    6969*/
     70/// load lib/module given in v
     71BOOLEAN jjLOAD(char *s, BOOLEAN autoexport = FALSE);
    7072BOOLEAN iiLocateLib(const char* lib, char* where);
    7173leftv   iiMap(map theMap, const char * what);
     
    192194int     iiDeclCommand(leftv sy, leftv name, int lev, int t, idhdl* root,
    193195  BOOLEAN isring = FALSE, BOOLEAN init_b=TRUE);
    194 sleftv * iiMake_proc(idhdl pn, package pack, sleftv* sl);
     196BOOLEAN iiMake_proc(idhdl pn, package pack, sleftv* sl);
    195197// from misc.cc:
    196198char *  showOption();
  • Singular/links/ndbm.cc

    rc90500 r3e7db4  
    291291#endif
    292292    }
    293     if (((short *)db->dbm_pagbuf)[0] != 0)
     293    short tmp;
     294    memcpy(&tmp, db->dbm_pagbuf, sizeof(short));
     295    if (tmp != 0)
    294296    {
    295297      item = makdatum(db->dbm_pagbuf, db->dbm_keyptr);
  • Singular/links/silink.cc

    rdcf88ff r3e7db4  
    3131#include <Singular/links/ssiLink.h>
    3232#include <Singular/links/pipeLink.h>
     33#include "feOpt.h"
    3334
    3435// #ifdef HAVE_DBM
     
    196197
    197198    if (l->m == NULL) slInit(l, ((char*)""));
     199
     200    if (feOptValue(FE_OPT_NO_SHELL)) {WerrorS("no links allowed");return TRUE;}
    198201
    199202    const char *c="_";;
  • Singular/minpoly.cc

    rc90500 r3e7db4  
    77
    88#include<cmath>
     9#include <cstdlib>
    910#include "config.h"
    1011#include<kernel/mod2.h>
     
    385386    }
    386387  }
     388  abort();
    387389}
    388390
  • Singular/misc_ip.cc

    rc90500 r3e7db4  
    11171117    type = nRegister(n_transExt, ntInitChar);
    11181118    assume(type == n_transExt);
     1119     
     1120    (void)type;
    11191121  }
    11201122#endif
  • Singular/newstruct.cc

    rc90500 r3e7db4  
    5757    if (p!=NULL)
    5858    {
    59       leftv sl;
     59      BOOLEAN sl;
    6060      sleftv tmp;
    6161      memset(&tmp,0,sizeof(tmp));
     
    7070      sl=iiMake_proc(&hh,NULL,&tmp);
    7171
    72       if (sl->Typ() == STRING_CMD)
    73       {
    74         char *res = omStrDup((char*)sl->Data());
    75         sl->CleanUp();
     72      if ((!sl)&& (iiRETURNEXPR.Typ() == STRING_CMD))
     73      {
     74        char *res = omStrDup((char*)iiRETURNEXPR.CopyD());
     75        iiRETURNEXPR.CleanUp();
    7676        iiRETURNEXPR.Init();
    7777        return res;
    7878      }
    79       sl->CleanUp();
     79      iiRETURNEXPR.CleanUp();
    8080      iiRETURNEXPR.Init();
    8181    }
     
    177177  if (p!=NULL)
    178178  {
     179    BOOLEAN sl;
    179180    idrec hh;
    180181    memset(&hh,0,sizeof(hh));
     
    185186    memset(&tmp,0,sizeof(sleftv));
    186187    tmp.Copy(r);
    187     leftv sl = iiMake_proc(&hh, NULL, &tmp);
    188     if (sl != NULL)
    189     {
    190       if (sl->Typ() == op)
    191       {
    192         l->Copy(sl);
     188    sl = iiMake_proc(&hh, NULL, &tmp);
     189    if (!sl)
     190    {
     191      if (iiRETURNEXPR.Typ() == op)
     192      {
     193        l->Copy(&iiRETURNEXPR);
    193194        iiRETURNEXPR.Init();
    194195        return FALSE;
    195196      }
    196       sl->CleanUp();
     197      iiRETURNEXPR.CleanUp();
    197198      iiRETURNEXPR.Init();
    198199    }
    199200  }
    200201  return TRUE;
     202}
     203
     204void lClean_newstruct(lists l)
     205{
     206  if (l->nr>=0)
     207  {
     208    int i;
     209    ring r=NULL;
     210    for(i=l->nr;i>=0;i--)
     211    {
     212      if ((i>0) && (l->m[i-1].rtyp==RING_CMD))
     213        r=(ring)(l->m[i-1].data);
     214      else
     215        r=NULL;
     216      l->m[i].CleanUp(r);
     217    }
     218    omFreeSize((ADDRESS)l->m, (l->nr+1)*sizeof(sleftv));
     219    l->nr=-1;
     220  }
     221  omFreeBin((ADDRESS)l,slists_bin);
    201222}
    202223
     
    242263      {
    243264        lists n1=(lists)l->Data();
    244         n1->Clean(); n1=NULL;
     265        lClean_newstruct(n1);
    245266      }
    246267      lists n2=(lists)r->Data();
     
    258279  }
    259280
    260   else if(l->Typ() > MAX_TOK)
     281  else
    261282  {
    262283    assume(l->Typ() > MAX_TOK);
     
    280301  if (p!=NULL)
    281302  {
    282     leftv sl;
     303    BOOLEAN sl;
    283304    sleftv tmp;
    284305    memset(&tmp,0,sizeof(sleftv));
     
    290311    hh.data.pinf=p->p;
    291312    sl=iiMake_proc(&hh,NULL,&tmp);
    292     if (sl==NULL) return TRUE;
     313    if (sl) return TRUE;
    293314    else
    294315    {
    295       res->Copy(sl);
     316      res->Copy(&iiRETURNEXPR);
    296317      iiRETURNEXPR.Init();
    297318      return FALSE;
     
    409430  if (p!=NULL)
    410431  {
    411     leftv sl;
     432    BOOLEAN sl;
    412433    sleftv tmp;
    413434    memset(&tmp,0,sizeof(sleftv));
     
    421442    hh.data.pinf=p->p;
    422443    sl=iiMake_proc(&hh,NULL,&tmp);
    423     if (sl==NULL) return TRUE;
     444    if (sl) return TRUE;
    424445    else
    425446    {
    426       res->Copy(sl);
     447      res->Copy(&iiRETURNEXPR);
    427448      iiRETURNEXPR.Init();
    428449      return FALSE;
     
    455476  if (p!=NULL)
    456477  {
    457     leftv sl;
     478    BOOLEAN sl;
    458479    sleftv tmp;
    459480    memset(&tmp,0,sizeof(sleftv));
     
    465486    hh.data.pinf=p->p;
    466487    sl=iiMake_proc(&hh,NULL,&tmp);
    467     if (sl==NULL) return TRUE;
     488    if (sl) return TRUE;
    468489    else
    469490    {
    470       res->Copy(sl);
     491      res->Copy(&iiRETURNEXPR);
    471492      iiRETURNEXPR.Init();
    472493      return FALSE;
     
    474495  }
    475496  return blackbox_default_OpM(op,res,args);
    476 }
    477 
    478 void lClean_newstruct(lists l)
    479 {
    480   if (l->nr>=0)
    481   {
    482     int i;
    483     ring r=NULL;
    484     for(i=l->nr;i>=0;i--)
    485     {
    486       if ((i>0) && (l->m[i-1].rtyp==RING_CMD))
    487         r=(ring)(l->m[i-1].data);
    488       else
    489         r=NULL;
    490       l->m[i].CleanUp(r);
    491     }
    492     omFreeSize((ADDRESS)l->m, (l->nr+1)*sizeof(sleftv));
    493     l->nr=-1;
    494   }
    495   omFreeBin((ADDRESS)l,slists_bin);
    496497}
    497498
     
    593594  if (p!=NULL)
    594595  {
    595     leftv sl;
     596    BOOLEAN sl;
    596597    sleftv tmp;
    597598    memset(&tmp,0,sizeof(tmp));
     
    604605    hh.data.pinf=p->p;
    605606    sl=iiMake_proc(&hh,NULL,&tmp);
    606     if (sl!=NULL) sl->CleanUp();
     607    if (!sl) iiRETURNEXPR.CleanUp();
    607608    iiRETURNEXPR.Init();
    608609  }
     
    745746  return scanNewstructFromString(s,res);
    746747}
    747 
    748748void newstructShow(newstruct_desc d)
    749749{
  • Singular/pyobject.cc

    rc90500 r3e7db4  
    1515#include "config.h"
    1616#include <kernel/mod2.h>
     17  //#include <misc/auxiliary.h>
     18  //#include "newstruct.h"
     19
     20#include <Python.h>
     21
     22#include <Singular/ipid.h>
     23#include <Singular/blackbox.h>
     24#include <Singular/lists.h>
     25#include <Singular/ipid.h>
     26#include <Singular/ipshell.h>
     27#include <Singular/newstruct.h>
     28
     29
    1730#include <misc/auxiliary.h>
    18 #include "newstruct.h"
    1931
    2032#include <omalloc/omalloc.h>
    2133
    2234#include <kernel/febase.h>
    23 #include <kernel/intvec.h>
     35#include <misc/intvec.h>
    2436
    2537#include "subexpr.h"
     
    2739#include "ipid.h"
    2840#include "blackbox.h"
    29 
    30 #include <Python.h>
     41#include "ipshell.h"
     42
     43
     44
     45
     46  //#include <Python.h>
    3147// #include <iterator>             // std::distance
    3248// #include <stdio.h>
     
    4864  /// Initialize unique (singleton) python interpreter instance,
    4965  /// and set Singular type identifier
    50   static void init(id_type num ) { instance().m_id = num; }
     66  static void init(id_type num) { instance().m_id = num; }
    5167
    5268  /// Get Singular type identitfier
     
    587603    return FALSE;
    588604
    589   return blackboxDefaultOp3(op, res, arg1, arg2, arg3);
     605  return blackbox_default_Op3(op, res, arg1, arg2, arg3);
    590606}
    591607
     
    686702
    687703
    688 // forward declaration
    689 int iiAddCproc(char *libname, char *procname, BOOLEAN pstatic,
    690                BOOLEAN(*func)(leftv res, leftv v));
    691 
    692 #define ADD_C_PROC(name) iiAddCproc("", (char*)#name, FALSE, name);
    693 
    694 
    695 void pyobject_init()
    696 {
    697   blackbox *b = (blackbox*)omAlloc0(sizeof(blackbox));
    698   b->blackbox_destroy = pyobject_destroy;
    699   b->blackbox_String  = pyobject_String;
    700   b->blackbox_Init    = pyobject_Init;
    701   b->blackbox_Copy    = pyobject_Copy;
    702   b->blackbox_Assign  = pyobject_Assign;
    703   b->blackbox_Op1     = pyobject_Op1;
    704   b->blackbox_Op2     = pyobject_Op2;
    705   b->blackbox_Op3     = pyobject_Op3;
    706   b->blackbox_OpM     = pyobject_OpM;
    707   b->data             = omAlloc0(newstruct_desc_size());
    708 
    709   PythonInterpreter::init(setBlackboxStuff(b,"pyobject"));
    710 
    711   ADD_C_PROC(python_import);
    712   ADD_C_PROC(python_eval);
    713   ADD_C_PROC(python_run);
    714 }
    715 
    716 extern "C" { void mod_init() { pyobject_init(); } }
    717 
     704
     705blackbox* pyobject_blackbox(int& tok) {
     706  if(blackboxIsCmd("pyobject", tok) != ROOT_DECL)
     707  {
     708    tok = setBlackboxStuff((blackbox*)omAlloc0(sizeof(blackbox)),
     709                           "pyobject");
     710  }
     711  return getBlackboxStuff(tok);
     712}
     713
     714
     715
     716#define PYOBJECT_ADD_C_PROC(name) \
     717  add_C_proc((currPack->libname? currPack->libname: ""), (char*)#name, FALSE, name);
     718
     719typedef  BOOLEAN (*func_type)(leftv, leftv);
     720void pyobject_init(int (*add_C_proc)(const char*, const char*, BOOLEAN,
     721                                     func_type) )
     722{
     723  int tok = -1;
     724  blackbox* bbx = pyobject_blackbox(tok);
     725  if (bbx->blackbox_Init != pyobject_Init)
     726  {
     727    bbx->blackbox_destroy = pyobject_destroy;
     728    bbx->blackbox_String  = pyobject_String;
     729    bbx->blackbox_Init    = pyobject_Init;
     730    bbx->blackbox_Copy    = pyobject_Copy;
     731    bbx->blackbox_Assign  = pyobject_Assign;
     732    bbx->blackbox_Op1     = pyobject_Op1;
     733    bbx->blackbox_Op2     = pyobject_Op2;
     734    bbx->blackbox_Op3     = pyobject_Op3;
     735    bbx->blackbox_OpM     = pyobject_OpM;
     736    bbx->data             = omAlloc0(newstruct_desc_size());
     737   
     738    PythonInterpreter::init(tok);
     739
     740    PYOBJECT_ADD_C_PROC(python_import);
     741    PYOBJECT_ADD_C_PROC(python_eval);
     742    PYOBJECT_ADD_C_PROC(python_run);
     743  }
     744}
     745#undef PYOBJECT_ADD_C_PROC
     746
     747#ifndef EMBED_PYTHON
     748extern "C" {
     749  void mod_init(SModulFunctions* psModulFunctions)
     750  {
     751    pyobject_init(psModulFunctions->iiAddCproc);
     752  }
     753}
     754#endif
  • Singular/pyobject_setup.cc

    rc90500 r3e7db4  
    1616#include <kernel/mod2.h>
    1717#include <kernel/febase.h>
     18#include <Singular/blackbox.h>
     19#include <Singular/ipshell.h>
    1820
    1921/* whether pyobject module is linked statically or dynamically */
     22
     23#ifdef EMBED_PYTHON // Case: we include the pyobject interface in the binary
     24
    2025#ifdef HAVE_PYTHON
     26#include "pyobject.cc"
     27static BOOLEAN pyobject_load()
     28{
     29   pyobject_init(iiAddCproc);
     30   return FALSE;
     31}
    2132
    22   #if defined(HAVE_STATIC)
    23     #ifdef HAVE_STATIC_PYTHON
    24       #define HAVE_STATIC_PYOBJECT
    25     #endif
    26   #else
    27     #ifdef EMBED_PYTHON
    28       #define HAVE_STATIC_PYOBJECT
    29     #else
    30       #define HAVE_DYNAMIC_PYOBJECT
    31     #endif
    32   #endif
     33#else // Forced embedding, but no (development version of) python available!
     34static BOOLEAN pyobject_load() { return TRUE; }
    3335#endif
    3436
    35 # ifdef HAVE_STATIC_PYOBJECT // Case: link pyobject interface statically
    36 #include "pyobject.cc"
    37 void pyobject_setup() { pyobject_init(); }
     37
     38# else // Case: pyobject may be loaded from a dynamic module (prefered variant)
     39// Note: we do not need python at compile time.
     40static BOOLEAN pyobject_load()
     41{
     42  return jjLOAD("pyobject.so", TRUE);
     43}
     44#endif
    3845
    3946
    40 # elif defined(HAVE_DYNAMIC_PYOBJECT) // Case: pyobject is dynamic module (prefered variant)
    4147
    42 // forward declaration for Singular/iplib.cc
    43 void* binary_module_function(const char* lib, const char* func);
    44 void pyobject_setup()
     48/// blackbox support - initialization via autoloading
     49void* pyobject_autoload(blackbox* bbx)
    4550{
    46   void* fktn = binary_module_function("pyobject", "mod_init");
    47   if (fktn) (* reinterpret_cast<void (*)()>(fktn) )();
    48   else Werror("python related functions are not available");
     51  assume(bbx != NULL);
     52  return (pyobject_load()? NULL: bbx->blackbox_Init(bbx));
    4953}
    5054
    51 #else                // Case: no python
    52 void pyobject_setup() { }
     55void pyobject_default_destroy(blackbox  *b, void *d)
     56{
     57  Werror("Python-based functionality not available!");
     58}
    5359
    54 #endif  // HAVE_PYTHON
     60// Setting up an empty blackbox type, which can be filled with pyobject
     61void pyobject_setup()
     62{
     63  blackbox *bbx = (blackbox*)omAlloc0(sizeof(blackbox));
     64  bbx->blackbox_Init = pyobject_autoload;
     65  bbx->blackbox_destroy = pyobject_default_destroy;
     66  setBlackboxStuff(bbx, "pyobject");
     67}
    5568
     69/// Explicitely load, if not loaded already
     70BOOLEAN pyobject_ensure() {
     71
     72  int tok = -1;
     73  blackbox* bbx = (blackboxIsCmd("pyobject", tok) == ROOT_DECL?
     74                   getBlackboxStuff(tok): (blackbox*)NULL);
     75  if (bbx == NULL) return TRUE;
     76  return (bbx->blackbox_Init == pyobject_autoload?  pyobject_load(): FALSE); 
     77}
     78
     79
     80
  • Singular/pyobject_setup.h

    rc90500 r3e7db4  
    1717#define SINGULAR_PYOBJECT_SETUP_H
    1818
     19/// initialize blackbox support for @c pyobject; functionilty os autoloaded on demand
    1920void pyobject_setup();
    2021
     22/// force leading of pyobject functionality
     23BOOLEAN pyobject_ensure();
     24
    2125#endif
  • Singular/subexpr.cc

    rc90500 r3e7db4  
    16471647        if(!nok)
    16481648        {
    1649           leftv r=iiMake_proc(h,req_packhdl,&d->arg2);
    1650           if (r!=NULL)
    1651             memcpy(this,r,sizeof(sleftv));
    1652           else
    1653             nok=TRUE;
     1649          nok=iiMake_proc(h,req_packhdl,&d->arg2);
     1650          if (!nok)
     1651            memcpy(this,&iiRETURNEXPR,sizeof(sleftv));
    16541652        }
    16551653      }
  • Singular/test.cc

    rc90500 r3e7db4  
    337337  else
    338338  {
    339     leftv res=iiMake_proc(datetime,NULL,NULL);
    340     if (res==NULL) { printf("datetime return an error\n"); errorreported = 0; }
    341     else           printf("datetime returned type %d, >>%s<<\n",res->Typ(),(char *)res->Data());
     339    const BOOLEAN res=iiMake_proc(datetime,NULL,NULL);
     340    if (res)
     341    {
     342      printf("iiMake_proc: datetime return an error\n");
     343      errorreported = 0;
     344    }
     345    else
     346    {
     347      printf("iiMake_proc: datetime returned type %d, >>%s<<\n", iiRETURNEXPR.Typ(), (char *)iiRETURNEXPR.Data());
     348      iiRETURNEXPR.CleanUp(); // calls Init afterwards
     349    }   
    342350  }
    343351
  • Singular/tesths.cc

    rdcf88ff r3e7db4  
    152152"FB Mathematik der Universitaet, D-67653 Kaiserslautern        \\\n"
    153153, S_VERSION1,S_VERSION2);
     154  if (feOptValue(FE_OPT_NO_SHELL)) Warn("running in restricted mode:"
     155    " shell invocation and links are disallowed");
    154156  }
    155157  else
  • Tst/Manual/pyobject.res.gz.uu

    rc90500 r3e7db4  
    1 begin 640 pyobject.res.gz
    2 M'XL("%%?<DX``W!Y;V)J96-T+G)E<P"UEVU/VS`0Q]_W4QS1)!)6"FEI"\F6
    3 M";2)(2%>#*:]F"::)A>:+;4SVZ'P[7?.<T$:H^FJJDUJ^W^_.Y_OTNN;CQ=7
    4 M`&![<'EQ!H:2:I#$<\,%NKJ-6:Q,R^WI;_`\2!_Y_"<&:L!P-9#*5[WK<OVP
    5 M&:0+J02\!^,S)@DWW!Z-?X!9-3Z#6$+&0HQBAF$QB$)P`3P(,B$PA)@!W<XQ
    6 MX@*A,)'09!@ZC<PS,[,:9K0&$S-%LX9;Q!BM8U0&&H`C#X@M9G<@Z:/`+'XP
    7 M"^JW8,`W+I)PQ[`:,!K)J1A7L`G7$7&]PNZL%'](R0^2+6;NT[U`*6/.!J`>
    8 M4X3=!29I.>KNUDZ.O<I*Y4%YVR&R8Z=6:85SXD&%GT?;!3@X@$]:TLF#E7+B
    9 MG2>XM4A.G%+E19,-Y;2BW&LO.<L4J`6AT-NG/%UAV-\:YK3&?-%FPWG<<(YH
    10 MOG[1&E_"BLZ1_M9+MY>4QRW&O]AK^$X\J*[MPP&QJ@5GMR)CID'V@4I/E+'`
    11 MW//%G;0<$*@RP<B65&;^$V5V;D$^LD!"P)G"!R5W:H<JN4Y>V8=.6ZL;6NV[
    12 M366X$K'[,.S#R"I#5H:M'*5ME1Q^,;X*07&XOK@Z_WIY^J7TL9:P.AQ%VW9:
    13 M2AO`-%X-6SLZ&NAXTZXF4E?-,H1X[R>F\7W4AVD?[!_MHEB/=]LO7;/_R7"#
    14 M354\%3PP?46E;V[F*_M@2"Z485G4%W4,3H.`BF4I!TM<SE&`X)DBJU)G=[$Z
    15 M4R@+X%RR+-,S"R(_3FI?JDI<S-&?,^MU;NH6L%7HLDFL!*>NDK>#$(/$%[YZ
    16 MVB"TV:8]V&.OB/5`FS;;F5,DS[M]P-]93/%'ZI]R0;/V:7=SW7KS:7VW;1\[
    17 MI<PF&$TJ3"IGBD"NZQ0J?J)0,%IWC__-FTGMS28<C3O3TAWW&=J&M6):@;6.
    18 MSW'KU)_4=3Q>IGHC#"Z-&I[`SU%)>L3(H@@BP9=U:O(P2RC!N-Q=+PB%3+=H
    19 MGCA/Y#:@JMT='E+I]I>XGF#MO;E9(,0A95D<Q73<>$2-#X&GJ,^2?F2C)HG+
    20 EJH235)<'9=V>MH'3^$>M2?\ET$_]F:36XK[I_0'_4\`[/0P`````
     1begin 664 pyobject.res.gz
     2M'XL("-48PE```W!Y;V)J96-T+G)E<P"-5&%OFS`0_<ZON*))0)>F)5F;-FQ,
     3MK39UD:I^6#KM0U6U!([&&[%3GVF:?[\S$""3)BU*@.#WGM^=GSV_^S*[!8`P
     4MAIO9%;B&S+`0"S<"?GH44A@_B!Q[ASB&]58M?F%JAA(W0S*)<>8-?]0-\@,9
     5M#9_`_89%H=RH!8WW0$(:!HVZX0\Q,%'(9R"^U!KU"[^6?`\N_%2ZR`[<H*.=
     6MQCM\Y'C5E`W(:R%G,>P4JGDC@.-C^*JUTE.0BMTH(K$HT&'PY\XD6@2H-"TU
     7M9O58FDA+2)5,$X.2?^"QL@>)S,!C;0]J,M7XG@1K@)#`?Q>8*XU0VRN$1#B;
     8MPM/_67QJJYKLJCKL4ZY*`V8I"/B;<#,VF`V:OE27KBOG'7_,7/MA?D*P89R]
     9M6YFHS_U+X"*&W7-X,F0QLU3R49?2=S/,@4.2ES+U#Q/]3,$4-)I22ZZ7C%^]
     10MXE6LIJ2M3,FVU.";H8-6DT.YTP@',!K`.&A\-EZ;4:Z3%/R6:I.!43"?W5[_
     11MN+G\[MPWK(=6<=1S/!Z"=;G>%F2#V+C'UZ3PW?OQ`"8#"!]Z00LYGVNM4C\Q
     12M',J%7Q$'X)+2Q@T"WB?6TF6:(E&C!BM<+5"#5J7A52;;U)I=&J16^#2N70RM
     13ME-^OL2[SXQ'@2RG8&?*>H26CCC@2B1%*MB)G.Y':T+Y,+9(4!C5'5KSBOU0F
     14MC4I4-<]VH6O>>:]Y%^URB]7:NG85N>V4/-TU&N+=6^8YY%JMVH:HK"QXRRAJ
     15M8S0ZX65.5KA?=M_ZW1)!9%R[R`5W4^6<3`2U1LWF[7'!*<:5X_$6$6^=+L?'
     164'F+VG"K)#X/HG?,'*18RJN\$````
    2117`
    2218end
  • Tst/Manual/pyobject.stat

    rc90500 r3e7db4  
    1 1 >> tst_memory_0 :: 1316104113:3132- exportiert :3-1-3:ix86-Linux:mamawutz:171632
    2 1 >> tst_memory_1 :: 1316104113:3132- exportiert :3-1-3:ix86-Linux:mamawutz:666332
    3 1 >> tst_memory_2 :: 1316104113:3132- exportiert :3-1-3:ix86-Linux:mamawutz:699116
    4 1 >> tst_timer_1 :: 1316104113:3132- exportiert :3-1-3:ix86-Linux:mamawutz:6
     11 >> tst_memory_0 :: 1354897621:0- spielwiese :spielwiese:version:brummsel:147248
     21 >> tst_memory_1 :: 1354897621:0- spielwiese :spielwiese:version:brummsel:1581056
     31 >> tst_memory_2 :: 1354897621:0- spielwiese :spielwiese:version:brummsel:1581056
     41 >> tst_timer_1 :: 1354897621:0- spielwiese :spielwiese:version:brummsel:4
  • Tst/Manual/pyobject_declarations.res.gz.uu

    rc90500 r3e7db4  
    1 begin 640 pyobject_declarations.res.gz
    2 M'XL("%%?<DX``W!Y;V)J96-T7V1E8VQA<F%T:6]N<RYR97,`K9-/:X,P&(?O
    3 M?HK?9`>%(=BNM9LT@['#"F.7#G:L_U+(R!))(L-OOZBM3D=/]1+S)J^_YTD@
    4 M^X^7W3N`D.!M]PS7:!-PEKDQ[.S`!#.>'SO-%X2@K&7V17-S*&C.4Y4:)H4.
    5 M!/T)M$F-LS^%+8@=SKV@WZ6I8\<N/2$YKR9@&I4HZ)$)6G2;5"FI(/.\4HH6
    6 M8`*VS.A1*HHNFMMF+!Z1_(M/>OBR@8^8;7$%<-D"IYQ[@GZ^"OX>N*RU4=C"
    7 M?:6<2WQ*Q8L;=\8;6(UOX`)O4%V3L9ZT&5N$T8Q*ZZE2SQ@THHD&U\:V<*:-
    8 MUQ[AKOO-GU$KFFI=9`Z:FT[3=@XBMKC"8G.R:"('S@-IWUCS<BKMA7Y\Z_P"
    9 (6QGLMXX#````
     1begin 664 pyobject_declarations.res.gz
     2M'XL("/H8PE```W!Y;V)J96-T7V1E8VQA<F%T:6]N<RYR97,`79!="X(P%(;O
     3M_16G$:@@@GW':!?114)X8]!%1/BQB\5RXDZ$_[YIIM7-=MC[O,_@Q,==&`%`
     4MP.`0;H&@1E^*E%`PTU44`AV76LT-C$%9J_3&,[SF/)-)E:!0A?8+_O0U)FC%
     5MG6S"S/%A@=]+K&D?3INP>XM4P?M@QJ"?Y_ZWH:PU5K`!LN=2*CBI2N8C,B@7
     6M[)<V5D,'RX%8_A%2HR&DT.BT<N_=<H?&ZMTP(+7.]O?'MF?4EQY<LW95S0(>
     7.V@E<.K9>XJB,/%4!````
    108`
    119end
  • Tst/Manual/pyobject_declarations.stat

    rc90500 r3e7db4  
    1 1 >> tst_memory_0 :: 1316104113:3132- exportiert :3-1-3:ix86-Linux:mamawutz:171700
    2 1 >> tst_memory_1 :: 1316104113:3132- exportiert :3-1-3:ix86-Linux:mamawutz:666332
    3 1 >> tst_memory_2 :: 1316104113:3132- exportiert :3-1-3:ix86-Linux:mamawutz:699116
    4 1 >> tst_timer_1 :: 1316104113:3132- exportiert :3-1-3:ix86-Linux:mamawutz:8
     11 >> tst_memory_0 :: 1354897658:0- spielwiese :spielwiese:version:brummsel:129456
     21 >> tst_memory_1 :: 1354897658:0- spielwiese :spielwiese:version:brummsel:1470464
     31 >> tst_memory_2 :: 1354897658:0- spielwiese :spielwiese:version:brummsel:1470464
     41 >> tst_timer_1 :: 1354897658:0- spielwiese :spielwiese:version:brummsel:4
  • Tst/Manual/pyobject_expressions.res.gz.uu

    rc90500 r3e7db4  
    1 begin 640 pyobject_expressions.res.gz
    2 M'XL("%%?<DX``W!Y;V)J96-T7V5X<')E<W-I;VYS+G)E<P"ME$MOPC`,@._]
    3 M%5:U0V$3HKQ9M2)-NR!-N[![RR-LV:JD2M(Q_OT<^C`J($V4"\2-Z^]S(%Z\
    4 MO\S?`,`/X77^#*[1II/PE1L`KB(NN/%:@6._(0PAW<O5%UN;B/VFBFG-I=`=
    5 MP78=;9;&612U>B%^E*FXT$;!$[CIWGQ*`1AQ\0%NX&#6#.(R,0:N(1,;MN6"
    6 M;?)-II14(-?K3"FV`2X`PQ7;2L4@IR68#+U'B/]#C"O%?JZ(.Z2!00.'?N%@
    7 M2Q)G4#L*+@R*]6[8^Z#>>XD@B6$N@1O$Q:`!=%A`;4GBC&K-)MJ:)%P;[W`N
    8 M#_D;K1MV/ZIW?Y%)FN-<$S-)!(,&%N/"PI8DSJ0Z=KB_=/Q"&KB&.*$?H"I.
    9 MY"F1V[<F3X_([3K9[U;WZJ!U]GY=2_:[=,6JZH3V"7W2=&.T?X0^[;H8>';8
    10 M1.QGF7BN/T;#@7OT5Z\VFXF4H^X<BX0.X\WL4R:W7H02LTQ\"[D3AV>S*@VG
    11 5DYWR=GAGVO-;P9WS!Q>(<>00!@``
     1begin 664 pyobject_expressions.res.gz
     2M'XL(""D9PE```W!Y;V)J96-T7V5X<')E<W-I;VYS+G)E<P"-DD]+Q#`0Q>_Y
     3M%$,0MEV78F)UE6`/XF5!O*PWD;*[1(V4M&S&/_WV3MKM%*N"ES;)^[TWG4S7
     4M]S>K.P!0!=RNKD%BP*QR6VF`5J7S#I/4B/B&HH"FK;>O=H>E_6SV-@17^Y!Y
     5M^Y$%W*!8'[)T08\!I47`/5R!;%I\J3W0SOEGD(;YTYXGP8C9=VK&4#X)=1XI
     6M5(\I9SU`YT9H/CV?V*H0;94+F'05%[TE'7.6O8-`(QZFG[,`_<CD!5>$XZ%R
     7MSNKEJ,Y_J.J$>^Z\O_7^QTTH-5HY^)_6PV2B6-KW395(M:3ZN:3^M6*L&PBV
     8?C:V?DI*DX?X8H&'$WR-._2TD*C5'X@LAU#9U20(`````
    129`
    1310end
  • Tst/Manual/pyobject_expressions.stat

    rc90500 r3e7db4  
    1 1 >> tst_memory_0 :: 1316104113:3132- exportiert :3-1-3:ix86-Linux:mamawutz:171700
    2 1 >> tst_memory_1 :: 1316104113:3132- exportiert :3-1-3:ix86-Linux:mamawutz:666332
    3 1 >> tst_memory_2 :: 1316104113:3132- exportiert :3-1-3:ix86-Linux:mamawutz:699116
    4 1 >> tst_timer_1 :: 1316104113:3132- exportiert :3-1-3:ix86-Linux:mamawutz:8
     11 >> tst_memory_0 :: 1354897705:0- spielwiese :spielwiese:version:brummsel:129408
     21 >> tst_memory_1 :: 1354897705:0- spielwiese :spielwiese:version:brummsel:1470464
     31 >> tst_memory_2 :: 1354897705:0- spielwiese :spielwiese:version:brummsel:1470464
     41 >> tst_timer_1 :: 1354897705:0- spielwiese :spielwiese:version:brummsel:4
  • Tst/Manual/pyobject_operations.res.gz.uu

    rc90500 r3e7db4  
    1 begin 640 pyobject_operations.res.gz
    2 M'XL("%)?<DX``W!Y;V)J96-T7V]P97)A=&EO;G,N<F5S`+V72V^;0!2%]_X5
    3 M-ZB2'VF(&6R#<4S5J(M&JK))I*JJ&D+P.*&E@S4,BOSO.YAY&;IHZU$W-A[@
    4 M?N><>>CZ[O[#S2T`>#%\NKD&AU7,+?(G9P7\*LE)SD;CU:#YACB&W;Y\^HXS
    5 MEI0[3%.6EZ1R"7YU*Y:RP9THA?1SP%Y+6`-:#?CX.WB4XX^05U"3#=[F!&_:
    6 MFYC2DD*9936E>`,Y`?[S"6]+BJ$M7?"'`46ZC"K_J."^"7^A&//[OD6\?X17
    7 M`"U@%H.ZGKL'A>?M@U(%'SH(("6#?Y$PCPXU5%G-7L0'WH5=WD+P+GJ\H.5-
    8 M[/("P9OT>&'+N[3+"P7OLL=;MKP'N[REX#UT>=Y4Y&DY4&\J$^U%ZGEZN7K(
    9 M%2OZJI&AZ,W0:?QFSYJ5-=YO'5]9-NP+PU<]OWQ["B5KRR9GVN2ZXW(N7*XM
    10 MVY0G@2JLD>(H6-M&RL-@W4<&&FD$>RHP,(!'H89R)F/+$QFJB8P[2'$>Q)8S
    11 ME0="W(T4395'RZL53;7)3K#($RXM+QWD29N]I8-0BSRSNG00$L"SKD-?XZPZ
    12 M]`U@QZ'1%B#>%J@68K>O&.4MA/,1%T7IV&R4YF:KTN5H98M8W#P'!SZ7M-B<
    13 M&3+XC=,R642BS%%]C0\D?F+V:2=C`X6=F.T9"@7NJ_?-(BV4M*:LABWUI/O3
    14 M9M+92TD26I.1PS'`.^=M3;+1)*7/U3@"BEE-"2]9L=%AR!EKC?+5DX3ZT\BL
    15 M]><RE">?GP[R!:5.#)PFK3D>=&4-1!K(]];;=F?912,#;3*T"-^8R9DK!;E.
    16 MDF1%6E5)XE@5--."CAA:T%RE$D5'*D:D+HHQE%M@^QV&X?O;+T,7[ND^)\]0
    17 ME.G&;:4,Q>M#KA*J.GN!79K]2)_QWRF=:Z7'0K34A9+J-A\)27]BJVDMC+0T
    18 L00L(C*P,!>KROX45F&']3FEH++.E>_@+WORUKJN1-UZ]&?P">K8C2*T/````
     1begin 664 pyobject_operations.res.gz
     2M'XL("&89PE```W!Y;V)J96-T7V]P97)A=&EO;G,N<F5S`(V47T^S,!3&[_<I
     3MCL0$-K6NK=O8&+UX\UZ\)L8;3;PP2G!6Q2`LM(O9MW];Z!\"B?&F0'_/<SCG
     4M],#=_=_K6P#`#&ZN_T`@A41E\1(DH.ZRHBID-$TF^@J,P?Y8OWSRG<SJ/6]R
     5M6=250!7_1D+F<G)G0A&O`_E=0PHD<9#VX4?#N<+4XRL&[GZ!6OM9ITLF"T>6
     6MK"47EEQ@AU8=FEFT="3NR*4E<T?6'7FV)+8$STVTV1AAGRDFR-2RU?)>:$R[
     7M`%OK=XEB5:GQI$/3PIC2L<M4GJ:C*O#*(QW.>V+[)C8DIG`V"D;FSC,,1[`Q
     8MC5,@I$,GPXH(]6!0$>F=.%$G[H9C?Q2R4<,1_.-E60=N1,B2&78&`3S43?EZ
     9MHFC8RLQSZ,0K*Y[I*>M$?O&ZV.@>\9.2<0_6/CTZU^G)C[K*FD,5!:_\#=3P
     10MOQVJ733+FW<QW4##Y:&IH"R$C-JM8.HRIZIS5J]V'Y\<(!ZH-IUW3=(2<@[4
     11MRV@OERMD+2C(LEV9"Y%EJ@];>=QS"#70GV?(G&/A7K+9_-*R=!:DEZS*O]39
     12DA6;/-8FN>J%_%,:]"M:H_<7H7\=!1'B:G$[^`P>OM<F-!```
    1913`
    2014end
  • Tst/Manual/pyobject_operations.stat

    rc90500 r3e7db4  
    1 1 >> tst_memory_0 :: 1316104113:3132- exportiert :3-1-3:ix86-Linux:mamawutz:171660
    2 1 >> tst_memory_1 :: 1316104113:3132- exportiert :3-1-3:ix86-Linux:mamawutz:666332
    3 1 >> tst_memory_2 :: 1316104113:3132- exportiert :3-1-3:ix86-Linux:mamawutz:699116
    4 1 >> tst_timer_1 :: 1316104113:3132- exportiert :3-1-3:ix86-Linux:mamawutz:7
     11 >> tst_memory_0 :: 1354897766:0- spielwiese :spielwiese:version:brummsel:129824
     21 >> tst_memory_1 :: 1354897766:0- spielwiese :spielwiese:version:brummsel:1581056
     31 >> tst_memory_2 :: 1354897766:0- spielwiese :spielwiese:version:brummsel:1581056
     41 >> tst_timer_1 :: 1354897766:0- spielwiese :spielwiese:version:brummsel:4
  • Tst/Manual/pyobject_related_functions.res.gz.uu

    rc90500 r3e7db4  
    1 begin 640 pyobject_related_functions.res.gz
    2 M'XL("%)?<DX``W!Y;V)J96-T7W)E;&%T961?9G5N8W1I;VYS+G)E<P"M5%UO
    3 MFS`4?<^ON$*3`M)&1YM^LC%UVAZJ3-U#]@X&.\$3LR-SW2[_OM>&FJX/R[*6
    4 M!V/PN1_G^-BK'U]N;@$@*^#;S6>(L,>TDW64`\U*J23&23YS;R@*V.YT_5,T
    5 M6!K1,12\7%O5H-2J3Y6X3WMD.%N-&8\+&AX#:-*C@8\0+6W=,0G+EJDHGQ'D
    6 M$U2/J`ID#U9QL99*\&%1&*,-Z*:QQ@@.4@%]UF*MC8"A5$=@.+Z":F^Y*C1W
    7 M4D"8+U(:CH[@FG/IN+`.'FFQ3N(.L#7:;EI@B$;6(>[4Q0W_8E_O+41ER753
    8 MEA%I%G!G7@BCF_@9N-%6890D<;1T`9ZNQU6T+M6F2F#-9!>4^+TE:J3!@'%C
    9 ME1PDTMD@TMY6JB'KO=%J`[C;"N"BZ9AA3I-T^#-O1;?UN?)YH'K^1-:+U.\_
    10 MY4^#+#E,#RG^X1VL6FT0E$:?NP^&H##O!EJ!__'#Q>B'P\I/!KDL0O=>FSAB
    11 M),P?X5_OA(+>)1`&8KD>O6!1S*EO]DNX_N_(0AR8XN1KVPN>O!K#2V+XNJT%
    12 M]MG[:1^S;-A';+4JC55Q1,WZ`Q(G5V`$6J,@.P\&KB;HB^AEV;B#^PM/??L[
    13 M9[2V0U)32D_D^P`\>0:D(^!>I=/FZ>'-%G\#TD>]NU:[[]@*<SN&#BHXT,OX
    14 B+SS_0TI/.IS^*SVZF]P][RYNV\=9DK^9/0!/7M;$$@8`````
     1begin 664 pyobject_related_functions.res.gz
     2M'XL("(\9PE```W!Y;V)J96-T7W)E;&%T961?9G5N8W1I;VYS+G)E<P#-5-N.
     3MTS`0?>]7C"*D)%(W2_;"`H5(B^!A5;1(E#>*(B=Q&X-K5[[L;OEZQKE,NGV`
     4M5_J0GC/VF?$<7U;?/M[=`T!>P.>[#Q`YZS(IJF@!B$JAA$O2Q2S\0U'`_J"K
     5MG[QVI>&2.=Z4&Z]J)[2RF>*/F77,S59#QHL"/Z,`@74&WD.T])5D`I8M4]&"
     6M)E\60/@JP\_Y.=PVC0BYF82Q#)/"'<"U1OMM"\PY(RK270=='TNZ<G.(RK+1
     7M=5E&V$.,D:1?30IG!2`5:KM6:_65.V\4,%"BYD,<#-\;;KG"EK`PZ`V6Y=#K
     8ML[6ZZSDS6[_#22`LZGOIO!LQ?=(')CT/HR%FV8Y2Q+3N5YU11M?)R>)K[96+
     9MTC2)EJ&!"U+<'+GU.NML1D5&W2Y@^J&1[\Y@U6KC0.F^&_O_FO&FH':Z]I.(
     10M8>_/VOGTP!78T!`WD(C-L.?>\=B""EFQ`I82#3#5@%?>\B:=[,M?3O;E>6^?
     11M:[4JC5=)U/!-=]R2].VX[/PFV#\JNG,][%28B$/?X[*LF91E&<\A8,FLG8BV
     12MWG"BNB&,M9B7SDY<AL1$!=ZT$8>-[>%&FQVC@2T_AF0%Q:2NF*0*+;/MB,.E
     13M'O%.-UZ2*)A(F#^.T/#&U_R$\:<IL*>EVWXI1,5OKC?$C@9\U9G5:OVKCP5+
     14M1\\FCJ81&5V;`NC31'1->&B>>.@K_D$[>7FRDWCE:%KW8@1&1S._^MMT)-7A
     15I5AV^X-$V]T."47G]KT+/I5-)?!K",QS>56^3/%V\F/T!I+0#[K$%````
    1516`
    1617end
  • Tst/Manual/pyobject_related_functions.stat

    rc90500 r3e7db4  
    1 1 >> tst_memory_0 :: 1316104113:3132- exportiert :3-1-3:ix86-Linux:mamawutz:171688
    2 1 >> tst_memory_1 :: 1316104113:3132- exportiert :3-1-3:ix86-Linux:mamawutz:666332
    3 1 >> tst_memory_2 :: 1316104113:3132- exportiert :3-1-3:ix86-Linux:mamawutz:699116
    4 1 >> tst_timer_1 :: 1316104113:3132- exportiert :3-1-3:ix86-Linux:mamawutz:5
     11 >> tst_memory_0 :: 1354897807:0- spielwiese :spielwiese:version:brummsel:129760
     21 >> tst_memory_1 :: 1354897807:0- spielwiese :spielwiese:version:brummsel:1581056
     31 >> tst_memory_2 :: 1354897807:0- spielwiese :spielwiese:version:brummsel:1581056
     41 >> tst_timer_1 :: 1354897807:0- spielwiese :spielwiese:version:brummsel:3
  • Tst/Manual/pyobject_related_functions_1.res.gz.uu

    rc90500 r3e7db4  
    1 begin 640 pyobject_related_functions_1.res.gz
    2 M'XL("%-?<DX``W!Y;V)J96-T7W)E;&%T961?9G5N8W1I;VYS7S$N<F5S`*V2
     1begin 664 pyobject_related_functions_1.res.gz
     2M'XL("((9PE```W!Y;V)J96-T7W)E;&%T961?9G5N8W1I;VYS7S$N<F5S`*V2
    33M34L#,1"&[_LKAN!A%V1A6[7:A0CBI2!>ZCW[-6NC:U*2">*_=[8M64&T%#UE
    44M,GEFWC?#K)_N5X\`4$AX6-V!($_YH!M1`D=*&TUI5B;C"5+"]L,V+]B2<CC4
  • Tst/Manual/pyobject_related_functions_1.stat

    rc90500 r3e7db4  
    1 1 >> tst_memory_0 :: 1316104113:3132- exportiert :3-1-3:ix86-Linux:mamawutz:171644
    2 1 >> tst_memory_1 :: 1316104113:3132- exportiert :3-1-3:ix86-Linux:mamawutz:666332
    3 1 >> tst_memory_2 :: 1316104113:3132- exportiert :3-1-3:ix86-Linux:mamawutz:699116
    4 1 >> tst_timer_1 :: 1316104113:3132- exportiert :3-1-3:ix86-Linux:mamawutz:8
     11 >> tst_memory_0 :: 1354897794:0- spielwiese :spielwiese:version:brummsel:127672
     21 >> tst_memory_1 :: 1354897794:0- spielwiese :spielwiese:version:brummsel:671744
     31 >> tst_memory_2 :: 1354897794:0- spielwiese :spielwiese:version:brummsel:671744
     41 >> tst_timer_1 :: 1354897794:0- spielwiese :spielwiese:version:brummsel:0
  • Tst/Short/factorizeQa_s.res.gz.uu

    rc90500 r3e7db4  
    11begin 644 factorizeQa_s.res.gz
    2 M'XL(",P%$TX``V9A8W1O<FEZ95%A7W,N<F5S`(U82V_;1A"^^U<0;0^2*(K<
    3 MV7<-^U#T$J`H4J2W(@YDQ7:5.'9@*:BH7]_9]RPE!X$`:3G?S.R\=ZEW?__^
    4 MYL^F:=AU\\>;WYJ?]KO]ZG%[^]/EQ;N(P'6#Q`_;I^U^-K^\<+_-]75SO][L
    5 MGU^VQ[N_UA]VJZ>[_U:[_7J?I?AUD]=BU?1]<__R_*5Y>'XYWCUF1*Z:E^W3
    6 M0_/N:C8L/\V7LV\SMEK!?'F(O\?P.U]^_%HL4M?-E^W3U^?'\>H3M*P`^KIQ
    7 MU.;M%>J9WXC%T?U`!PO_S!>H=AZ)6<BLFC8P>!BYHM2!ZLCLMF;'+T!XPL6&
    8 M58.[>@U0LW3^::J6,100Q4P(9N(7S#,/X-:"6`JO,7+*",FEF@>3TN8H.?O:
    9 M:92`VB>]0W64H(I2Q:YJ]A*"BDN?C1)447)/.</,E+)BF(E<A+.W6)K_L/>_
    10 M7F"*/N#BBH45O`^U$`V-BB&`/(`^.EVNC7;6?9J7T+8S?/J60N*?<H"ZR(5Q
    11 M]0K%*PIK?5VML'M%(]KNW6%+_TE^PU!B`,RWUGZ[^7RW;W[F?,@(Q-9ZV32N
    12 MN3;87(?E6#42\-Q(S56SP5;JQ:9C/5.%1<26NC\@RP'06L>$!OL52+5!*3:`
    13 MF!<92:;#[/[P>F:"$K.AON;J`)6W=N;]^_SE^0&UH0]E)VQX1"\OJ&'CB66+
    14 ML2@UM6WC#QBW&,^:9TL:^.#2D+(`7&6`I2R@!YB%]9DL<*!96-.!QGD*@1,_
    15 M=.OY8C;B=V$0E3O?=V8]SU4_AL>JPK).21Q3U#%C,UTGO[:^NK;HUWIYZZH,
    16 M/2OBAKJVK5RSU+5U>^LFT(:TNAA^T#64;6?;^6*3O?.4SI/.>BB85[W;?SS5
    17 M>T:VT#TY*8'HP$-P8.,<N*4.<.K`P_<<\!O>MM2#6:2<=T!D!T[TGHHF<MHD
    18 M*2%Y%ICGO,;<?MX^/C8OQ17,8T@WK>+E<;FK*EG8<C#7A2R'E.VKQF@^]%PO
    19 MUHO#C5R,-PRG/"YV-[)E6JB,&8>QC%$Q)(^()TB8('7``P-E\&C"A0.LA@AH
    20 M!PP9*!)('!&-0">DM+TP?I>LS.TB`@3"0UD=@:)45A@AX+U!,G<2$/<)9(%D
    21 MA61;41VS1:K*5#L,V7.=@@(>8H9@?F>3,2K&W/8R0UQ8Z(4M*9#17MYQ;7@/
    22 MP15%L\,[/1@6@C8!E#4BJ3/)3Z*.A:!9FE#>,<$4!'T3A)KG4VW/FH?;E"J@
    23 MYM5`"YJI'GA=<"+88(6W/"8[`RVW`JHBY45FD-ZE*=!*P2'MDXLWR'!C3-A'
    24 M5T"K#8:.%OQ0[Z-/Z)4[N1&F[N1:.'7'R^@S[M1`RR3S[I!&X$$9GJD!R&W`
    25 M)Q*Y"2+`M.PQ*[FHAEB*O(-!YRJU,=50A%0&=!813)3"AM@J<+*1A\39C9C+
    26 M',^0M**>2&A>B`TSIII'.@)4PH=-1$"Q:N*D1$/'``0=.28C121WJ0=:KK"!
    27 M8QOHU%;@(8MN3J9D`'!(1F53`(HR;X#-$+-RZ">#-2)")753Q#5;G'BF0JC5
    28 MWB%UQFHFR#RB5D\`OTV<N=X">=8"+Y6CTP%.Q=0A*0U>1C+=E]EN`[63JK"G
    29 MW&3V,N]59*?:4\8FVKT6'LG:6E>2I/(QO9ZJ2&DGFN?,I>NH!DR*IR6]TQJK
    30 M\R0D"6V9TI846B%+E?,"I:&\GCBA:;Y:SJ4A=9G(Q!S?1N*,.:JT%S6'DH%K
    31 M51U!/D<M`Y.M2?%"LC#,D*/'$[NXFTVI;(660,\A4U1J.D>0:!57Y>SQ-*R#
    32 M:J1,C$SE-S$RI:HRLA"3D6GB((498:KC:$`B5U;1LT-/&..009.$H">)OU%T
    33 MPBIQ<FT2K5+D``DD8:PB)X2_>G36@CFY6HF6<5"]KFEE^UP4]?:Y@<OVA80'
    34 MU$"/#F>3.QP'0XX-XXF%,T]%7JZ3[@)_U=PO[@L)R&V[.;W7=UH!`[P3]0QC
    35 M7=Z+QN,.WQTU[^VP[C"#O1$#OD3">.PT&B`DOE#"$7O;X+LD=T\=TQQO>QRP
    36 M"G?YQGX8Y5'L.-ZRI>BMQC>U41RY(R@3G@\<%;GS=L#G\+3#:<+]DSSN.J7\
    37 M<MSE_Q+&L)+N_2VN%:ZAPY?<,?Z'H9%`WT_Q(_PGOX1*\E^<%"O_;Y[[K^[;
    38 1;L;FE\TO%_\#E'X])004````
     2M'XL("!OBM%```V9A8W1O<FEZ95%A7W,N<F5S`)5:2V\DMQ&^[Z]H.#F,IM5J
     3MLOC.8G4(<@D0!`Z<6V`;6GFUD;WV&I(,J?7K\U613;)G>@W'"VNF6<5B/;\J
     4MMO3-O__V]W\.PZ"OAW_\_:_#5T^/3U>?[M]_]?;--X5"UP,6O[__Y?[I</'V
     5M#7\.U]?#W<WMT^>'^]</_[KY_O'JEP_/5X]/-T]UE[D>ZG=[-<SS</?P^>?A
     6MX^>'UP^?*L5=#0_WOWP<OGEW4)<_7EP>?COHJRNZN'PIGZ_Y\^+RAU^;1OYZ
     7M^/G^EU\_?UK>_4BC;H1P/?#J\/4[R+GXSAY?^8,F.LJS.4+L15FLF^+5,&8&
     8M(8.K['KI953VM&7'#P+YA$NKJP&GB@3:LDSR="I6:VRP34W*:N('750>PM&V
     9MTY2^Q&AZ1EI-VO(@*&/U$NLWGGJ)>OV<&+3U$FV\M&'W6_;F@@U7V/42;;S$
     10M3S7".K:TTHA$3<+#UTC-_^AO__(&(?H>7][I_(V^S;E0%"V"*1--)HIWIIH;
     11MXV'Z\:*Y=CS@Z;?5)?)4'305+OA5!-HO"-S*F[8"IR](A.YBCKZ4?ZO=I)H/
     12M2$MI/=W?_O3A:?B3,:I2J)36P^W`Q76+XGJY7#:%1*86TO!NN$4IS?9VTK/V
     13MC<66DKI[`<L+05MF@L+RC9R_Q2ZMR%ZT/:Y#A\/=RY<CDX7$V][6FAWDZ]&L
     14MWG\___SY(Z3!AG82"A[4MV]ZQ98SS8Y+$QJWNBU_0+GCLJM>:F$PBL.P1H&,
     15MKP2]1@$6(`HW.U$PU$?AI@<T8U87\/:7Z>;B>%CPLS'8C3F_;\S-1<WZ)3]N
     16M,JS*=)UAOC<LIKH>5KON);ON8=?-Y7O.,EC6ML?>M/N-::DW[69\SPATVY6Z
     17M57_0-.P=#_<7Q]MJG:Q,LK1KH=4B^O'IAW.Y.WO;NBRO0J@8\#$;<,L&O.\-
     18M,+T!'W_/`#GP_=A;<"@K^P;8:L"9W/.MZ_)ZR"JDB[/=Q-EZ&AX^_/KYX>G#
     19M#\/[Y:1IVQK[9^UR6C_OI+7=Q/X9R/L\VD;MJL>A>G(J:'!:KR(%4E8EG[Q2
     20MZOCR78#RY^O/*/;O_'&9$FGOK%51)Y,H;W''!?$X[.PZ9V<Y%OQFEW\\6V-^
     21M`WX[[IU,H+A]A7=%@=WO,"]LM3&D=/"!C$TF>%'?*&]#B$Z;E"S9K`X.3"'H
     22MX(*+"C22X[12VBNG'2D3R,9J*JMGO4G0WFAR0@(_SDDI6D4NZLINLB<G![G!
     23M.>^4,F(L-D3O-9J.BT:Q]L)/V9/3N3[3KC[B2%CJK4LF*F.5#YF=O$H."];&
     24MZ*UX*[N60K0NADC&84>.JB;R2<&!+)X]F&T=#UI'R+36F:`<%>X0C?9)*V^T
     25MKLR&'6.32RGA5.^<S=RCML8%2L9'[71<V:DXQL>`4ZU.RJ:BS4BD8X0K`[O9
     26MJAII(XGAG$D!<89(M>:D]Y!O@PI.JV*JY0Z$!N84'*-U"AJQ8;^01XE&6)N@
     27M/?07Y6&IB>Q%2(^6(M;!BT<-MH#`@IWBJOEX@/.49HE:*VP1[JA5L,XF&Y*/
     28M1668J'%:T`X4DR*"`P,-_`=5`Q(!\<?/BV(='V23MU83C,_>")J2]7"BH59Q
     29M[#H#NQ3BX+&E.'M"1GFEL95,B-5SG"$:5G%.(*U**4?CO.?R,$%S.HD6$&QT
     30M0H(8,,,?0<7$N:K@%U8Y.F@'9?(0@\(S[(&$$$1()HZWYTQE=SI4FE8\0HP'
     31M;Y"%*!J?(M%J&'34!`VT)$OKS$YW`$<KP!$`CN"+!/T"4IHBCA?4B`C(#D$P
     32M+DBX]J@(+[+,Q.006:0HYW)!10#N#K$@HYGVM6`4M%_89];BVU5D9W6M$?^E
     33M3>/^)H&^O0V+>$DAYQP`$:#@+"(DZ:B1=2'@`54-L`B4W<"IBPQ0(7K43R2=
     34MA'U"L6E"U%'F@!%.WXRB@HR<B2CIY#GZ#(?B:,-0!H"&3@`T!N.U;<CL:0C5
     35M":VP(Q%T$TA"(AL/7/#(;J)<)=F17*V<=!$^AJ\I**ELI\$*9%<&.!,H^%JO
     36M`@;D-?`71BHN10L5<T,`QJ(_$!(T6/+.%R]RM'0@9P3YT"\45+12O:@D)]5L
     37M(](\=Y$<*9QM(`4`@))8Z\RA2/&$7$^H8+.6,!]@0H`;$0D^*.E<&'"7@;,]
     38MHL>U9-6F\SC'U87``'<2%8PPCB$'@>*^$36I;?<A0#)2(OJ8^+_23X%W,`6M
     39M$2@$[:+:MJ`8(W`0300A4-(IN&83*MX'9`(`+3JKNBZ$]/&!897$SG(*IYR`
     40ML[9\$+5.9#'K`],L8``M"2W"<RE`,E322#O`&^#'^=**)B`8T`C_B(!F`![C
     41M17X$?T(XD!((HFW=B)$MN(1L3"&"'`2>5&++T*J#0R-`RONN'R7%?<TQJD7T
     42M[%*>0-_`:`V<,L!AK+>&A$SDQ`8^0A^0-8,@:H1P)OH8XLB=UM':DTBT58!R
     43M!GI=<@1@ZPQV<R-#'->82\?CB0)*8TK@]1)Q>,YC:D!PT"2I]05)DO\GWJ5)
     44M<6$P[A-C=-%JY"RG:.!#*Q-*B9V8[5!JV,7-T7&U<R@24@^-$?ZP:*(.O;WT
     45M*O1`U#6640=H.@&U*9V""Q@-&<T*/1]'Q=*NM$=M&YXPN"-BG-(^MVX\(I&@
     46M*?I81)>^6"$$N8=-2"],#C;E&6@$%TQ`M"W:K55YW-M'1X0>8H$D`"<7N'DF
     47MR2ZDE6.0`Y(C+CPNM"[5O:9SMGN?,ASN]/&.SBXMZ`<.#9H3G#L$&CMK2MQL
     48MH;NXM]TY>6SG!N87?LOC%E@)#V#!+O`_G(>O9K$CB+0PEN2EQ4\+MB*_9ZL=
     49M=@3/7T`!3XRR."9%9=$N.</R.N)1U@V?Q[TL$T(LZ[1D:,C"FYR%IU!E\K(-
     50M<S2(C#0\H[2;`1\Q\@BK`5OYB0\'!F`0<S-/?Q98#$`H#Z("R)C'9N`$P3B#
     51MBI3OHH8,U3Q2%MDC!E5D8I4M>F),Q/[@<0O`X4XDR!.4XUH$>,<T`^717S`/
     52M83[QY8G/'P_(;JTK'=D!V8V!H&#D6;ARL`<JF55$<H65.J(VT`4J@VB(I1DA
     53MPN6&`G]AL=(1X8<(ER`Y^$M^,X.Y=T:=YJO`G#%E;UZ;SRY$>2H#&'+E:]09
     54MU#J]?N6)+C#6<\4`Z`$):7:\@LK!-43Z"B,N;CT`8Y11X)(\8Y&!S^D9(S\P
     55M)/!G>WOR@C&$\SHL:T+[A7**FPGY:/F[R1D]:7&S;]D=Q@7[34YJ]+TUN3VG
     56MGRXI;TGR#Q(YQA8/?&>)->6E)=J5V=>41T"H)+:Q->$Y46PHJ8U9?\UXZ=^Z
     57M5`Y*.>>\E\N>J2D?K;8M*\N>V%(>,%HS7HH1M\26U$#6+J=S49+B+1A44*]\
     58M$'^ME<FHOV;\"&!UJF:\U"@0&$6$%60<6I5\S95JN,&U7,<`ZZDE<[Y-!95:
     59M.G._F_E^Z4JQ8OZWMI(%=/MB@>[(R31[(#0.X-E0=]4BN,*C7-4!X.AL*Y<\
     60MP[D9`P7"9N1++E/N=ZM+K/.=2[[L+E8'8"321HQ469IH@1D".(2J2]KZQ'7&
     61MUQMX3GL>F&7:8BHJ@*`P7,65RR.O8+D.^1[!]N*FQ*,FZ@6`;U`)4(_+$CU>
     62M&BIB!`0DH!3F8P[3.4LI?;@!%V0`)(_1R$%T.L(HR/,.[J9P%O$N&=@P69PQ
     63M9*1`6$.N2K1O*4O4/*,8ABZ5Y(::,*VQ+V+`C(5P1R=J\J2;/`8CC"D!^,*#
     64MO.&.S?/R_GLVU[TB<[Z^]I)7GGOOO%S8O/.RT[,9Z9G&Y^[%IXO=B\\7[:8%
     65M_VMW?-$&)AT7?"1<M[1&:\*31OL#,8W\L20D!XAAXH\E8/B.7)'\@0*`M4BF
     66MB3\`1"Q3)+:CTQ]]6SPM#>QH1/2`;Z;^BJ.\;:=GPS\ENDM;0A,H4.DRJRR/
     67MIN/,C*8R>C#:*B!S2CEV.ZD[HL@RX])VI<P%U)9->CUO0Z^'CZX>'O+A>5G7
     68MLS<&4MNH^[,SCUN/GESU@!S=D9OV(N'TESO;7_'X[E<\7E\-/]U_^C0\U#AZ
     69MNBZIV/]2X?+U\G&3C;[]>N?D]PJ^_E;GW8`J4;,)QYOR:D#;XRN^/.)ZHP.Z
     70M\$J+3-.5UF_#,J[FE82A74CY=JP-"%8(/--F0F""JH2V0\N+SY7`5T6,`E%.
     71MJ<+X%)M)9(54Q76DLJL*+"0R<RS72DWEG+QLRWN3M%EEYL17X[H***J6A]4I
     72M)"1Y-UB]HHI7Z&R;EG<IE60LVI9-+02NZ&NXP)'(V13?1P=9AK$G.^V$X-&7
     73M5G%QM;,3I[/34A]01@W<<+*\$TJOGH0Z[:JGJ<N"7KTM`4"F_4QFFW`VZY"L
     74M:%Z"70FC0:?:)*EI>P#G;-(I8>2+WWI.3=Z\A\?#?$[8$'!)@.OZA%?;<\+9
     75M^L:<6@BGYM1<.#=']H0=<[8$(+D6<[I",%F8PN`FA%H&YF1'+8)"P)@S(RHU
     76MJ51)18-1(]0L3274U#;Y2@AUB^499#6&2JG0V4%"LKL':7DE64FXJF\1">IE
     77MWVC<^/OPA$+H=XC;;"%XO4&<-=#$ORVP/>3$2FE;:I4*8>2W06L9A+6L2$B8
     78M\N83E,P$@&01=DJ@)DP42)6DDU/S";`6BO6KN%,*%UM!O+BA]%J+07Y':VT[
     79M/.JU/B'(,05S10.WJX'LJMZ9*/)L:C:`*7MP-YT;MJ>\.O$[QUI0)3:5O>&]
     80M+^R]]#5B)])%BBG+/!PB=%WF([RRZKO47M>$LZ8NK^*^O?HS=;4S1MPK*)X%
     81M%+?6D+I$:\O.U[A0*RB14Q"ZC]=HC(M=7J[+G3I21G9''=_*JU>G7R:YCW8M
     82M2&*$.V&LVJS^PC)&Z=BU'EF<RFEI#>5H@Z.^#\4F,O0X@L7$KRUJ[Y$UY,$&
     83M4DZ47-/O1,DU5!LEV^*JY(HX6,$U*&[:D<*B\<GWO2.<,!:0@4K6]IU$)HJ)
     84MWXJ>C4UV]+YK('D)-R??=0@9/2;<?N+9:&4QT9*?PW:M'5^38GM\+>!V?%N:
     85M^-;>M0[6B9NCBEW;B++8."LJFC9.\A_\O!ONCG=MR5]O7B:>WC6FX$GCSJMF
     86M7,%3NW@LKX\8E(.9D[J9$,$YOPRGY74*4,`ZOO:^HK;CK'$5QM/$KV_EKGA\
     87M?6RWEL6]VD>^"N/^G<(-7[Y?#2_XF)_Y5<0K]UN%Y_ST"#0Q\N1>'R?OY>OR
     88M6.\]2[O6C$N[N=`DUYIVF^C_7`C_K/RK?Q/D0S?<QROYXTK^T\G?'@_ZXNWP
     89,YS?_`\@ZJ/F3*0``
    3990`
    4091end
  • Tst/Short/factorizeQa_s.stat

    rc90500 r3e7db4  
    1 1 >> tst_memory_0 :: 1309869508:3132- 13777 :3-1-3:ix86-Linux:mamawutz:559656
    2 1 >> tst_memory_1 :: 1309869508:3132- 13777 :3-1-3:ix86-Linux:mamawutz:1718136
    3 1 >> tst_memory_2 :: 1309869508:3132- 13777 :3-1-3:ix86-Linux:mamawutz:1750920
    4 1 >> tst_timer_1 :: 1309869508:3132- 13777 :3-1-3:ix86-Linux:mamawutz:1988
     11 >> tst_memory_0 :: 1354031643:3150:3-1-5:ix86-Linux:mamawutz:1127772
     21 >> tst_memory_1 :: 1354031643:3150:3-1-5:ix86-Linux:mamawutz:2342912
     31 >> tst_memory_2 :: 1354031643:3150:3-1-5:ix86-Linux:mamawutz:2359296
     41 >> tst_timer_1 :: 1354031643:3150:3-1-5:ix86-Linux:mamawutz:637
  • Tst/Short/factorizeQa_s.tst

    rc90500 r3e7db4  
    4444facstd(g);
    4545
     46//ticket #462 reported by gorzel
     47ring rw15 = (0,w),(x,y),dp;
     48minpoly = w^2-w+4;
     49
     50poly f1 = 46082720409696000*x^7+(-46082720409696000*w)*x^6*y-92165440819392000*x^5*y^2+(46082720409696000*w-92165440819392000)*x^4*y^3+(46082720409696000*w+46082720409696000)*x^3*y^4+92165440819392000*x^2*y^5+(-46082720409696000*w+46082720409696000)*x*y^6-46082720409696000*y^7+(33201767234937600*w-30647785139942400)*x^5+(9771757580851200*w+100160515203724800)*x^4*y+(-44639165312524800*w+72399840258124800)*x^3*y^2+(-50857556500339200*w+8661330583027200)*x^2*y^3+(-9771757580851200*w-100160515203724800)*x*y^4+(33645938034067200*w-26095034448864000)*y^5+(-27845878235380000*w-122690040515260000)*x^4+(118340445370520000*w-78316910631160000)*x^3*y+(49599903465540000*w+143572936815180000)*x^2*y^2+(-68740541904980000*w+221889847446340000)*x*y^3+(-46553976962930000*w-92669364707510000)*y^4+(-10245093811971840*w-22646289009116160)*x^3+(13836455538428160*w-45510917399009280)*x^2*y+(23501184011055360*w-81074549479680)*x*y^2+(1628715454398720*w+33167517920305920)*y^3+(-39904964412744000*w+71294643532392000)*x^2+(-33810691604940000*w-61360144023780000)*x*y+(33142826091756000*w-83566672337148000)*y^2+(31945832606457089*w+80538751785644435)*x+(-60831105992681752*w+16100113835778104)*y+(6386463969822000*w+7137812672154000);
     51
     52poly f2 = 2294919476402860800*x^8+(2294919476402860800*w)*x^7*y+(2294919476402860800*w-4589838952805721600)*x^6*y^2-4589838952805721600*x^5*y^3-2294919476402860800*x^4*y^4-4589838952805721600*x^3*y^5+(-2294919476402860800*w-2294919476402860800)*x^2*y^6+(-2294919476402860800*w+2294919476402860800)*x*y^7+2294919476402860800*y^8+(2079252344885483520*w+199077352169886720)*x^6+(1664507861198219520*w-6691211003487859200)*x^5*y+(-940087496357798400*w-4357582041940853760)*x^4*y^2+(-132718234779924480*w-1360361906494225920)*x^3*y^3+(11059852898327040*w-5164951303518727680)*x^2*y^4+(-2615655210454344960*w-3058049326387426560)*x*y^5+(-1725337052139018240*w+3428554398481382400)*y^6+(-303374279659956000*w-5069995781923932000)*x^5+(-3770035487253912000*w-433219676416104000)*x^4*y+(-4550011664055924000*w+3596807869771812000)*x^3*y^2+(-2903294868999996000*w+8363429372035788000)*x^2*y^3+(-888281095906038000*w+7908367952545854000)*x*y^4+(2166700912923936000*w+2079936471472032000)*y^5+(423632341377847296*w-2525937150738157056)*x^4+(-1427080802231483136*w+208937943910563840)*x^3*y+(233775974997891072*w+1098882998754621696)*x^2*y^2+(909106583118508800*w-2643717921543353088)*x*y^3+(-1102041053136433152*w-662978218196823552)*y^4+(-2937940392496416000*w-2605343366930784000)*x^3+(-4025809830284004000*w+6326272590446292000)*x^2*y+(-2903294868999996000*w+8363429372035788000)*x*y^2+(1552119452639616000*w+5543283759427200000)*y^3+(-15951155173959635*w+2981235020448425687)*x^2+(1622440449955667768*w+1652892262372213288)*x*y+(1685231063399012416*w-2263997141199178816)*y^2+(-1166168320889497200*w+991554882467540400)*x+2294919476402860800*y+(941170437657378096*w+239157859721078160);
     53
     54factorize (f1*f2);
     55
     56ring rw =(0,w),(x,y),dp;
     57minpoly = w4-w3+2w2+w+1;
     58poly f = x15-y15-15*x13+15*y13+90*x11-90*y11-275*x9+275*y9+450*x7-450*y7-378*x5+378*y5+140*x3-140*y3-15*x+15*y;
     59factorize(f);
    4660
    4761kill r;
  • Tst/Short/factorizep_s.res.gz.uu

    rc90500 r3e7db4  
    11begin 644 factorizep_s.res.gz
    2 M'XL(",%6&E```V9A8W1O<FEZ97!?<RYR97,`E/U-DRQ/>MV)[?DIKLU&#00<
     2M'XL("*[7N%```V9A8W1O<FEZ97!?<RYR97,`E/U-DRQ/>MV)[?DIKLU&#00<
    33M<\O?2Q2P&)L-S<9F,[,;(V@4"5!M:@$T=$N\1=E\=X6?YSS',SRB;KJ,1E3T
    44M_Z:'9U5F^-OS.^?\;__[__SO_M<?/WY\_/V/_^7?_4\__H>__/DO?_NG/_[?
     
    13341334M_?CX67K\Z__V#^FO__L_Y"-^I%CLZK/&G^=_S^?_2D=,YS?KK_\;KC]B3I_G
    13351335MO]3S?YU[\=*\>3Q*KG;Q4<OGS_'Z(^;>RWC!<;[OFN;[J2_OIYUO]^]^_--_
    1336 M_$]_^9=__>-__\<??_BGO_JW/_[RCW_^B_VG/__XPY_^YL?YW_Y_[9U/<^3&
    1337 MD;?O_A2]CCUP"$)&_040LN:TE[WL9??,#8XDCAD>2XXA1_UGP]]],[.`0C6;
    1338 MM"5ZXHU](Y[U2@(*Z%_54Y69E55`-R_&1YM2QV@?NNA/OG=#SN&T[^?ZZ.SD
    1339 M]Z&?7=2+?IRG9Z^DK,UHQB->CD=JQB.UXW&SNWJ\>3H;C"2#\6P`4F@^'K<!
    1340 M>+R5Y.CJZ=VU'$0YN/5V&+JKWET_W;I)3_.XGLYVFNW&P8Y3595AM7)GY47,
    1341 MU/*JYJ.=NO4TV>E@=YIRRE4M%[5@#8AK`X+=)K-#.8W6!ID6EU.K+J[5Q6"G
    1342 MOFJ.JEDN6=62V2^G64]E,2,UQM&.)SU.5N[GY;9LU?D->:J"V:B]46>KUWL[
    1343 M-F3O[-@J]6NEV<3=7-7F3<W:X*P-4U&S0Q6S@[3Y<6X,([NWFG(UX\?8/X:G
    1344 M[M$_^>XI5AM^C%;4/SZ%6ARWXJ?MJ:T*M$7Y7%,$ZJ5QO=1?7)KD4NX>DUR*
    1345 M6FW0>G.Y-NNU7JYU5BR?E58\I7K=#>4&N=A?7G2K<J?*7;FKO<%O\K5JE3F_
    1346 M2_M$>FAY0.ZBG3X^];5$NT+[:RO1GNB>7MHD//M?L/^Y4`>U":TY7`2&W(36
    1347 MG)K`X(=!@\/]S<>;7VZ.-U]N#N]N=DV4R/DB2F29+"PR_$F,2*+JE]O0Q^O[
    1348 M6W_]\?J7ZZ.<^UVWNYJN]>(O4BQ+J/6R_/O0R<W7'^7(KFDL^5*EQ5?Z]8/A
    1349 M^M!OM\K9]5%T/Z[7;OW6HGFC&X?GUOVG%ZS[3W_/NN/]1_^+/_HOO1V%XZ'[
    1350 M&'X)!]]-]T$N:+G_^,OQB^^U(!RZK.?^RZ&[#U_"2Q/LZ)H6^HOA&27P/A^2
    1351 MNYL/-]_?W)\/QQ@OAF-,VW#<2<=\D'_N979T4[Z^DZ[[(//C]]JEG7,I^.L[
    1352 M*4G7W\N5>YT%8QA&*<E2(I_;5)NY;[R8^WYSE][7&/&AAH7L/WS?W=V?F;H8
    1353 M=:VUF>K&RZEN&IYWV=5!#/AT-L=-[J*[)O^^SFMB0ZD3"PS=2>/H07KJ>*O?
    1354 M9+B=Y"!U8JS25<=;O:3_399<'*2SCK=Y4VQFS2G^T['UH&W2)FF+]$E:=YCL
    1355 M/9ATG.R5F%/05UWS2V8VI:8I^;+/QDLSLTY[EJ=-TV6WS;7;UJ)9/*U/8Q@&
    1356 M[2=]1!*'Y$8YGL7E@V12TWQ=NE+2+DE#)[UOE%-)UJ8I>KVJ71FKHLQ,W9C#
    1357 M[.:EYU,7QIROR\CD/L=9SN4TR.G8IWE*3B.!CE&?HN1-LX:)V[GSPSS.-II5
    1358 M7-RNC]D-DC-J$T]]3D-,2Q/E=(YQ3N/21"]YH<OCZ,9A:66PDIQ=BDOC).^L
    1359 MXA)R)6\+?G3#TEHQEF[*?C1,;6_6*MTT9K\T>92"<4ACGJS1DYS*Y2%H;=J^
    1360 M,;HA>&N?)*RU*C$Q<=N8LS5DU+;?>NF:$/S:5F]%+H>4K;M2:;^637/T:Q.C
    1361 M)<)Y\JDV,IU5E;3+TN"GN#39$NI>,&?ME\*@$M*MN2!HOCWE/$W6-DO&Y\GG
    1362 M6%JF!?TH1N/"TBQ?DO=AF,1`EG8%NRV/*4UKNRS'[WT(4S$Q7]TQNC!+XG]8
    1363 M6B?UI<&E<6E;#2>SYHH2`?U<S.YD(3),PYA*2[2DG[R+5F=<FA;[<?1Q7FVN
    1364 M+$'F.$_K(&K#-@/6Y#$E+Y9H#2KK%.GR%.+2OMB[,8RQ&/CI-O6RG/'3G$J=
    1365 M6B)+E"2=L=2HC:BYY*RYI/!E<:>E_F`?"2Y'9U5&.Y^2V)E;6I`$=(HV!'HU
    1366 M=V(4(:=2@194^5FMV(TR3:QNI=5G<8WLBGPP`?FT..E26^XE!)11T:NCV*U?
    1367 M;5S/%W4W#.K=*<=<G%2EQVX4?YSG17GL<M+5GGWX)''79[<,KIV.@QC:\M&I
    1368 MEV"01J&2D[E6HB'$^7F<2F]*),C:7W+HAE[!M)_$O?:]GU+4CYO[[V4<AL&%
    1369 M-43)@K&;AVD>8W7_?:U#(XFL%,7*QQH*]K9LRZL)RWJRDU6K7X<QRWF4@#)7
    1370 MWY?S<1YT',UQY%3T@C??WZH*-N`YVXWJ7W*CF]PX#O/J_%*UN-LTY,WYI6B,
    1371 MT^9DP8K<'"3:C)OS-_5(4.DE^LTZS&L@D*HF-[O5TG*I7,*,]E+Q+^VE:1`/
    1372 M+\ZOE;AAC&EQ?M_4H+'$A7$8PU1C@;</B-/-J0D'VO<R4!IWFH"@]TJ8R#ZL
    1373 M?1J?U:`>[H,X@MVQ1@A5<S&-?HE8N99-,B#3&L.T)$<QB;2$!QGP3GS?NRT^
    1374 MM#90/#W*#4VTT,]D&63?Q@LM#.)3*3<APPKSX%P>:J1HY=71LT\NN#6N*;XZ
    1375 MQQ"6T*$VI]-+F2V+N4?%T!V'N+;`E](JK.M'+R(AKJ88UL_-PRQ36(TBT4QX
    1376 M"CFOD4Q'.UJ@*6'&*AMEX@DUEJ2M*J?^[F2^G,(Z??ARA[C*E'6>6R.*EL59
    1377 M<M%IC6!2,$E-R[QT,O^9LY_&&E=R4Y-3VY+;TYQK:,FJ*0E!<FO84GO.*9E7
    1378 M6/"Q@<DUOHSZ"2^1<UZC4U.%^KR/>;(,XZ0.VXO7A"21\KB<"ZH?U9@TNH04
    1379 M9'HQG]UKGBVN+@.S^*R62-X]Q;'Z[+Y.N\X5IP^^9AK!/B'Y2:S.JP7CF,2`
    1380 MJL-JD4C&L3ILJ5E2"C\O'MM6HXF$CX);IFZY9`YF&8/YMN8+?@KB!:O'EI8[
    1381 M[T/>'-8*I=]"&C9_/:M)=WVDYZ1'-M<MS2T#5+VUU"DM7A*YO-PG,5=FS;`&
    1382 MG48Z:^`2>Q^FQ6]]^8"7Z&?1.*V11JMS$@-;AUUN#I)KA,9ESX=C5.L:Q&!=
    1383 M;#S8[NFE4>.T3?:E,`J!&[=8H^G9($G6M'AN.)/7-:\F5-.6`Y3Q=@(UA,:/
    1384 MEV(?4TZA\=Y2+E/T/.3JON>5E)D]J_EOT4;:-8V3'U:'+E:59DE1I^K1L1B&
    1385 MEUQY:MPXMO)>EP)A").9XQ93](/"Y=.\Q13M'RE8P$[%;GM)8/R0JW.G,W5U
    1386 M;W'4:!_:PHBJ.PE((6]AQ%+<E);\Y;3X0-0<='7S?*:M?BWF%O,6-K0/).]0
    1387 MW!($1%2B1IKC&B:481IU:C@MCC-+&F-+!;T:JKIZLI>Q#\M:1R]*I)(L/&\S
    1388 MWM[6YG*/R]5_[#Z997+>,F`KTS0_;?-;6YGZLZX*8EY\IWP@BP.GQ?F#Q(QI
    1389 M=,6?3W:#3-]C7/W$2L2=VEGMK(YDZ56<_3QL_E((9"[2O83J(5::U+?"ZA\F
    1390 M+_FNQIC5N3=M=>4<)%=>9SA?""99,"R3SK&6^BQ#.LR-=Y2.E`6B&W/C'/ZL
    1391 M#O5E67S*?+QYBE][5M8"8^/(LK:0/'K(BW>$TG\:UEWUCG"FKK.VF&1V8^LJ
    1392 MRVC*!"<S1G6/M33E$MAJ%1*$-=8L[A&7!Q.2P6SN46S!2\S-8_6(I7"456W.
    1393 MC0]*)8,8ZS(M%"^1%9<;95DW+#YQ;D@:+)(L/F-JG"U(/B(34#*GR&7(9=$F
    1394 M?EN]2H9;DNTY+DX29.THW542JGU=)4EZ)MT49!FJU9O=R47)866%,%2SV]L#
    1395 MGM'9LB4L/A%EL3I7"]-S6<]9NKDXPU:'I01!PK9;TF]=RLEZ?%Z"L!7(M!)R
    1396 MJ''7RL2H9.T4-\.R>F31)LO,9M%U5IDO6;J;MOA;/A7"Z(=J^R(>)4ZL"[$"
    1397 M*9X?\QBK1?DS90L@4<+J/#06Y4N/R;)K2<5#+13G'E-CV%*!GTH2NUK=IJX1
    1398 M0[<(_&9:I9OG,<S+BF^UX-BG+,%\:,Q7ULMS'-.\&%8\TRZ10B:<R2]&MHR8
    1399 M&$AH,E,%&67H1S,L&T0QCJ3[)L=:(,MT-RY6ME51EO0QCDLPW>M25[QIW>"P
    1400 M@B#+N"9.:)&$ZE!C:+"B+-%]37WW=<$M8K:O(QX_N\7$9,4N%K(.HGU84I@Q
    1401 MUARXW*/^,VY#9H6:EOMI';"S>C0)D';KWD"U'VFHA*1UO5.&4VN??)BV`2NE
    1402 M8EBY65?[,W&;_"513W%J;$6D1EEQSFM<"$5HE+6DS\N0E<Z19=*LZ^;-&*IV
    1403 M'"PY2BXN*_%8/N&SIA7KJ"=Q/?6J93R3AN"4RNINK_MZXNANF5"TH*KK:EZ&
    1404 M9MON\':_6\N6\<N2QSN=DHZ+H"RK9#%;DIB3W2!N/L]KIYW5H<XKV64<Z]K!
    1405 M),91LGU7ATHTG28I2V=9.V0Y(8G%&D/]F:KE\).X=LTL2M/%.[V&N:4CLP;1
    1406 M,"VKB%(B29^JEJ[;%-5998&6<NFH_>VHV>>\9H):H)0IK6:@!5XBG$SX2S^-
    1407 MLH24)<JR`-*"JF[+\T$0QV7L2P7B\VE+\T?)I&154D;:*I!D?<X:%-8"7>E(
    1408 M)%Q@-GWU55DHQF*X^]M)%_YRJPVBGDN8DRE]==)),TY+DJQB.=5=LS5'L;T?
    1409 MR5*62J=:BZ[*-5KJEK1<F+LIA3@,5L,LL4(Z>RIIQ]S+U*X.L;]UP[=58'OH
    1410 MX/3Y^IOV\N<A;MOY(AD.XFH^ZP]1]-*<T7Z$0OIZ&`[^*+-S"#D=CC(;1?WY
    1411 M_B19AQ\/\=1KT)%[3Y+434Z_57"26X80#\=PZJ+^`1.]:73Q$$ZVVQOD)CGR
    1412 MLE`\')?7#/1WET^R5)2)^>!/]A#(N</QI/4.^H5..8J#%)VD`4'_/,,I=J<D
    1413 MJX#H#E$6Q)/7[_OJ2MG:L#??EO8&7:'KS[]+R3#X+(W8=Y*BZUTG+9-8IJW0
    1414 M+2/]YI5>'I.TP>\EPTR3M,&7'19M:KE+6B&RFME)`_<R-45W$GT91.FTO2[4
    1415 M_*SZ>R\!9?0BKX5^UI]KW^MB-7LO->BA5"D=I8>S_K:X%G8Z-QZD+BG3OQRA
    1416 M1Y)0A.%DVLGKA_>Z@3RY\7#4HZA_(43?S$@R_QQ.^V";ZD<[B/,\VUL;FE$?
    1417 M]M)]7M*VHQY(Q\:3'4C(WZ?Z\$MN2;,_Z(:L'\0<=/<SF3F$''7T)--+TVS&
    1418 M(.G&I%^Y%B<08^AF6>*:,43QFL48DLBK,?1QU+\N("7Z*HM9@SJE64/9L#-S
    1419 MD-Q5?\1>[<(^J4,O_934&FR3,9HU.%T`%G/0+P":.6BF)`84=>MF\&J5>S/I
    1420 M6$QBDMS9+$*[;CKJ;1J:U"0DXJ35)+Q\Q$Q"/ZN_Q&^%4XIF%5V,/A:KF.V;
    1421 MPV8I,HN:403]GJM9APR.&(5TC!J^#O40TFA&(:Q)&V(C/.COR$M9".*`-OS2
    1422 MD%1,PMOWL;5,>M,7DQC5Z-0B),L=3R8\R^#H`.OS#K6'?M*?<3$3T=X0*^BD
    1423 MFEC,0;*I:.;@]-&3V8/3+X;:@7CV8@]IW#__RU]+O&E>WG'Z\L[YPSNG[^L\
    1424 M>[_JA6=W3M_A.7]V)ZG(]LCS2H9HF8_TCZKI2U*:R3B=6]WR+&9=>DC?:72T
    1425 M^X=WU_K6B5QW_;[<Z8=./C/U\J_8+;.S_M=ULB!^M]6>&JS\QI#:AQI03W[8
    1426 M.]^=I"$'[WK]:M?1_C#XT??[[:<(CGJ;VJTLB,M7NF1,)8>58;=O1(H;O#(,
    1427 M8]->2<NTTY9WS/J:7O6EV[1KLAS[DKJ4/I+B7OM1IJJE6X)<V"_/7I8<:OE0
    1428 M3>CM"?.I7U8__?YV22>;?MQ><I#Y[:W]V#QG3KT%'/'XXVF+4(=TS'MQ>>TL
    1429 M=7/?6^RH3^U/>5\ZVYQ&[PCZ^P[Z!XA.G<:/YZ^NU#:[IOT7KT!(6-W,VYMI
    1430 MGYEUOGCQ06)3\R3_^NK0:?\?M"L[>ZMD/>Y<6[Z<!3L+V_%Y^;.SYU>+SM:2
    1431 MW*"]^47!;63J:$AMM>,/"TQ]A^H0VH)L=^@XU->FEO/UCLD^(B-^J&](+>?K
    1432 M'?I.U%I4A?5=J%*XB/W=5Y-J-S2)5)Z_^<UC5/MV;*+B^,^_N?9K^[;MRMQV
    1433 MY4O?WER;YYNFAA(Y6DYCE_-HY[%KG'N,S4?35WB'9(53T-B0;E1"J7^H\A*H
    1434 MMJ.Q:GT%Z!)G:WXSVN-;T^97FF\M?C%23XUI3)<3YM0,QQ3:EV$OHLMT&5VF
    1435 M)KK\VE&<FAZ;OD(<^!JC.#5#,RV.>!MV_4[B6&WXW/3D_!6<K#\V#:K[BG,S
    1436 M(//%.XIN;GQ@;MY13"^\V>7FIJOUK8MGHS<WU/I6PS:2,BD?NZ#IC,W/G64V
    1437 M<G`M[C_4H90E>A7PPU?HD6.WS;&'4SN4I\O1JQ7[IA&_*:#X(38?_;\14/R0
    1438 MFS:-BRFZP6PQ;BV?FKO>&DO.\AP)W6U^HZ<OQ1/OFC%W%_%$%B];AB*KV_J*
    1439 MY@]GKVAZ=Y&`>]<FX'?]!QFN.]VJO?YPO?N^CW::^@_=][)2N/[!LH_MLZEI
    1440 MU%O39Q]K=_1WW8>M-_Q\%[L/W\OJKPYH'_-=ZGX(7<P?Y%C:=_&3!;4]8].V
    1441 MZ;+#YN<KEOJZX<V7FU]N[!L);=?YX:+KO&M?U\QU^_(JE+6*?H&C+UNJ^L!4
    1442 MG\59`FVG4TW+]TO6[>QI[+JYV2V/$W4==.C;58OWC>OI4[PW6F&>MHZ?G:Z(
    1443 MCYTM3V5]K-LP7I:S2=_H]/;37_K`9#CM-T\[VD+4YYSM8)SGZ:`_@28%)B)K
    1444 M^\.6FF]^N"4NS\;.WX2;7,&:(*%/]M0\O3U7[%U]D:FO+[/$/JR/M:)U65G<
    1445 M].NS.5TPVMM%TN%A??4H=\Z52\L+9WUYMMAT=1,6_%MGS3[-FXW+>B1)?2E+
    1446 M=^O[=F/2%4H_ZEZ"UU^3D_^SM8^+^M-6NCL78SAL7V3015!GW]$YZ$.<-.K/
    1447 MQUI!?"UX^"9L^3+/GMFHO>)F9FEO&(7-*+MHS_#.[2\TL2B\=?[QF_'IIHY`
    1448 MB*//^B<-]7R.IW(NAM<U1F>[85&_)KM_A34TSA&6>4FGU4,?;#)]?K11-087
    1449 MOL*L)/JG/KR0:_C0&%48_W$3UR/?'&W-;L8V?(7TUIK=_&KB!8;?0)JOV'E]
    1450 M'&(@ME]@+ME]L6S@RO9>WFEHW'4[_4Z&W]ZTZ9R]T"2W?=G>7K&MB5.W?4?(
    1451 M-]_.\_&M(6_;IU'?ZTZ^^]*`2M'IBU\=Z;0<'<J!_L[@EE;$D_^BW[^7)KXV
    1452 M_33?%_0QU:[I#;RS,=TZ2A.^5\D;8WG[%_TV9]-@(4SA#+P[G=/]`[;&Y.(2
    1453 M3LJ<97-75_;:;/]",25*O>M."VMCN<V>HD__?!JK&\6Z[7`\M3F5;6`?3OKK
    1454 M1J>7`T9J3"NMB:RT55U-VBUI3\EHRX@I@;C$W*3CJ1GJ]!4"APS0(9RLY@U#
    1455 M?[=)=Z*M[E=`&DM)KZ:PJ1F\]/\TA6V^Y^?S$BWL69U^E\5>USW8^TU:LN_L
    1456 MH9Z9T`MW;)W??+?,Y[<&AH;FI#^T=I**9)YI5T5ML1S+X?X5RL8:<EK-21Q?
    1457 M'.,DKK^NC_0;9)H,NL;7F[TZ_^:]NKYU=MT:ZL.AYM!F2KTN\D[=:\/4&,BR
    1458 M.W;UFWV[V1GS7V-GK/CU*?PVUVXVO7S=]-)IIBRI%[\^FG65H+SL>Y?D6\*P
    1459 MYO*EQ%Z.ZL8&L1GH-V^+Y685:S\R<.;R]@L`H=D)+'F>_GR&_C<W6X+'DC4=
    1460 MRG\O-KJ;/FEL;-DY*]O]Y9U0>WJ2[,OFY0FVOE@B%[MIM!<DCK;Y/]H-XW*#
    1461 MYM63E.C;-MM'M&2>IN:>L4MQ.=6TW0U=\FLEL13,2R6ESDVLO/D8[)7&TH12
    1462 M4MZ*W$KL:_+3;$_XGY6.X_6Y7JP-3&>:T<66O)3YEN.ZO`';M+7JS<.S4F]U
    1463 MAP9SMM(T-8VTM[W=G-("&&LM>;DK;7?E<8%>[PK=G)=:M5^GM=8IM+VYE$X^
    1464 M-/>.2[OU+<SM7C<4PK5O:JLWXV^"Q)LW5?^O+T&;/5P_K>GMNAMW_>)V7>V@
    1465 M9H/73U]A7I*D36H]VZ:3JL]VZJ3^US*VJ8E54]IRG*-%[E.;Y:Q)J`;Z\SRG
    1466 MV4'V7V,'^:UY3K-K[)==XZM#K[G"T?XM\ZJFU\OQR<J;C*'93_9OWD\^FV2;
    1467 M[<?^L&8-NEM5-U8U1/?[:G7']7@4J^SW+S^UJFUL+&E>)C']HID.73<+W?)J
    1468 MF#TE.MAW#!O89N#G-T]2PP:K(4Z?N'7Z'=V*G=31=([6+]/*H?W[Q:FH-J8Q
    1469 MIGF\W)(H7Z7[=?L1S8:ZG]\:C"[W(]9]B/ZW[D&$9H,^#&[+`?7K9_J%OG6?
    1470 M?'DI8<D(SZ]^6P5\(_85(HD_RZ&6:@_'KEG@'I:FEM*78TIH=O'#D.HJT!)=
    1471 MQ;'=BF5;:4UX&],,S8Y[&+[&`ZF:UFX#):&DMQ^\E9I?&:JI:<5<'V-T)PLA
    1472 M1]VWT"#2;X\O0K,5']Q7R&V[]OE+WYS&<MJ?7AL"UYB&"W4(NA(/YG5B6M_U
    1473 M:!":L7-?8<DJ?2P]/S=F)3VGH_%RI[MFZ%WC_)K/;3YA65@?RB:X9N%-^YM1
    1474 M<V]./_*9R\^IK):*UV]65+9:RR5-OE]Y-R?XQBR\6Y;?<=?IPTSYMV12M?G-
    1475 M!GYX\P;^UOVGU.ECKY=^W",TV^AAV4;OA2]:R.F3U[=8]8<V8EBB4'G7O-=W
    1476 M=<WT)^D8.]#W\AKW;7;&P]MWQK4IFQF5.C8KLLJ;J&2-*VUKECY&L4"\NNX)
    1477 MS1YX\.NSYDD&YK#KW*YB-7O;X<U[VV?1]G"VINMD1CSTV^2I7%&[0>>;.,X:
    1478 MD%/(,H6.;IA><_QFDSLLF]R2M<?>;1S-N'^5W>P&HO,U<8]V&E/8QJ.3#*MY
    1479 M[Z>35>%4LYV#O5.Y!(K)SJ-+R^VSF<!V;J_\],T'['6??A-T9C1;?<Z,9FN.
    1480 M_JB1G-?6.LO#_L%;0L\-I]FM#[I;?_X@,33[[T'WW\M#Q9T^K;JY>W?Q.D?0
    1481 M/?._//QDSPWU1W%T3_Q._MF&+FZ/%:_LRCM=DMGWG2:-)UNA'[30C6K%M_;U
    1482 M?.>\G<RVV-PB3EQ_6>:C5'K0O\$@R9H;NZL[T=&_EU".]"\GVH'^E:2K.]TB
    1483 MT3]H:&5'Y[>BL![ZX[P<FN8LLG&K]>)Q<]!]\?N?/^^N'GYZVCU\)]B[A]T?
    1484 MU>\&_ZT6/'0AO*MWB^7^3SW)W\B8/1X?GW[\R^[J]WW_^>ZG'W[^R^]O=@];
    1485 M6(J3WG1A[>OE-.CEA_O=U:-=^B1F_F[W+]_M4JTS>;VEUJJ_-:?_MR&D7$H^
    1486 M?/[Q[L];J57\M_4T#[^BL=E?-O9C<]FJ?N:G[75IR-_^SH;X5,9M7,=J\^!1
    1487 M7Z.SD=/1++<]_T.3Z**++KKHHHLNNNBBBRZZZ**++KKHHHLNNNBBBRZZZ**+
    1488 M+KKHHHLNNNBBBRZZZ**++KKHHHLNNNBBBRZZZ**++KKHHHLNNNBBBRZZZ**+
    1489 M+KKHHHLNNNBBBRZZZ**++KKHHHLNNNBBBRZZZ**++KKHHHLNNNBBBRZZZ**+
    1490 M+KKHHHLNNNBBBRZZZ**++KKHHHLNNNBBBRZZZ**++KKHHHLNNNBBBRZZZ**+
    1491 M+KKHHHLNNNBBBRZZZ**++KKHHHLNNNBBBRZZZ**++KKHHHLNNNBBBRZZZ**+
    1492 M+KKHHHLNNNBBBRZZZ**++KKHHHLNNNBBBRZZZ**++KKHHHLNNNBBBRZZZ**+
    1493 M+KKHHHLNNNBBBRZZZ**++KKHHHLNNNBBBRZZZ**++KKHHHLNNNBBBRZZZ**+
    1494 M+KKHHHLNNNBBBRZZZ**++KKHHHLNNNBBBRZZZ**++KKHHHLNNNBBBRZZZ**+
    1495 M+KKHHHLNNNBBBRZZZ**++KKHHHLNNNBBBRZZZ**++KKHHHLNNNBBBRZZZ**+
    1496 M+KKHHHLNNNBBBRZZZ**++KKHHHLNNNBBBRZZZ**++KKHOJS[G__U;__^'[N0
    1497 MQ_>[>CQ]L_O\\-/'W>?==SM_<W6X.;Z[^>&OW_[N#W_875_O/O_XPX_W#S^5
    1498 M&ZZOZZ?F][N__OSIN+O_[G";=]WN>)ODWP?[]_$V?KO>.`[+C1_KC;G>>+@-
    1499 M^F_YQVT?<,L'_K1\X'!]7%07[:7,VUDX_[!_O_OT\/BT^^1N=I^\_!.V:^']
    1500 M[O[GS[NKAY^>=@_?R:=V#[L_[D(8!O^M%CQT(;RK=\=O=O]33](WTH6/Q\>G
    1501 M'_^RN_I]WW^^^^F'G__R^YO=P[M-?]2;/KGO=O=WWS_]_/GA]./NZKZY/MMU
    1502 M?W;]XW9]<G8]G%W_4W,]%/VM(!7!K:"T8$.>K,J'^]W5HZE]<F)-[W;_(@-=
    1503 M06>KMJ+.5LM9/7,J11\^_WCWYZW4*OM;/7U>E5^KJGT:A[.JXK!650GB\%)5
    1504 M<3BK*@[/JPJ75;GSJMQ:5>V;Z%ZLRIU7Y:2JOUUZPH-ZPBL>>LC=(75'^?\S
    1505 MYWOU=M\=?7?HW.;(L3MX*3O*?_62W>">.?)K:MVQ54K=(1Z[0S`9"P^BV<@'
    1506 M/>S6)AQ_=2T@@@@BB"""""*((((((H@@@@@BB"""""*((((((H@@@@@BB"""
    1507 M""*((((((H@@@@@BB"""""*((((((H@@@@@BB"""""*((((((H@@@@@BB"""
    1508 M""*((((((H@@@@@BB"""""*((((((H@@@@@BB"""""*((((((H@@@@@BB"""
    1509 M""*((((((H@@@@@BB"""""*((((((H@@@@@BB"""""*((((((H@@@@@BB"""
    1510 M""*((((((H@@@@@BB"""""*((((((H@@@@@BB"""""*((((((H@@@@@BB"""
    1511 M""*((((((H@@@@@BB"""""*((((((H@@@@@BB"""""*((((((H@@@@@BB"""
    1512 M""*((((((H@@@@@BB"""""*((((((H@@@@@BB"""""*((((((H@@@@@BB"""
    1513 M""*((((((H@@@@@BB"""""*((((((H@@@@@BB"""""*((((((H@@@@@BB"""
    1514 M""*((((((H@@@@@BB"""""*((((((H@@@@@BB"""""*((((((H@@@@@BB"""
    1515 M""*((((((H@@@@@BB"""""*((((((H@@@@@BB"""""*((((((H@@@@@BB"""
    1516 M""*((((((H@@@@@BB"""""*((((((H@@@@@BB"""""*((((((H@@@@@BB"""
    1517 M""*((((((H@@@@@BB"""""*((((((H@@@@@BB"""""*((((((H@@@@@BB"""
    1518 M""*((((((H@@@@@BB"""""*((((((H@@@@@BB"""""*((((((H@@@@@BB"""
    1519 M""*((((((H@@@@@BB"""""*((((((H@@@@@BB"""""*((((((H@@@@@BB"""
    1520 M""*((((((H@@@@@BB"""""*((((((H@@@@@BB"""""*((((((H@@@@@BB"""
    1521 M""*((((((H@@@@@BB"""""*((((((H@@@@@BB"""""*((((((H@@@@@BB"""
    1522 M""*((((((H@@@@@BB"""""*((((((H@@@@@BB"""""*((((((H@@@@@BB"""
    1523 M""*((((((H@@@@@BB"""""*((((((H@@@@@BB"""""*((((((H@@@@@BB"""
    1524 M""*((((((H@@@@@BB"""""*((((((H@@@@@BB"""""*((((((H@@@@@BB"""
    1525 M""*((((((H@@@@@BB"""""*((((((H@@@@@BB"""""*((((((H@@@@@BB"""
    1526 M""*((((((H@@@@@BB"""""*((((((H@@@@@BB"""""*((((((H@@@@@BB"""
    1527 M""*((((((H@@@@@BB"""""*((((((H@@@@@BB"""""*((((((H@@@@@BB"""
    1528 M""*((((((H@@@@@BB"""""*((((((H@@@@@BB"""""*((((((H@@@@@BB"""
    1529 M""*((((((H@@@@@BB"""""*((((((H@@@@@BB"""""*((((((H@@@@@BB"""
    1530 M""*((((((H@@@@@BB"""""*((((((H@@@@CB__^(__E?__;O_[&+?GB_J\?N
    1531 MF]T?_K![^OS-+L:AEOIO=G]^^/1I]_G;6A3>[SX__/1Q]_F[\>;J<'-\=_/#
    1532 M7[>K\?WNKS]_.N[N=]_MCK?I^G`;=[T<>3D:[2CLNMWA-FP?2>]WGQX>GW:?
    1533 MOKN_^_[IY\\/IQ^O[M]MU_/[W:.4[:X^2:>\V_UQE[_]W=;"\?WNZ<?'I_+1
    1534 M1[GI1C_[:D\&Z8_:D;VO9U'.ZDG2\:L]GNVL?]:)-^==.35=.7^S>WI\^N_'
    1535 6I[NG+X]7[MVW__J[_P6R?Y'ZP,P(````
     1336M_$]_^9=__>-__\<??_BGO_JW/_[RCW_^B_VG/__XPY_^YL?YW_Y_[9U+;]Q(
     1337MEN_W_2DXC;N01='%>$>@VE[-9C:#"\RL9J$+^2&7T"Y7PTI7DCGH[W[/.1&,
     1338M""HE=TEM7,P%_M-3-AED_B-^<1[Q(#-]9A]N2K71T8Q6G_2D9N_-Z3BE^NCL
     1339MI(]F2LKR11U2?/!*RM:,SA[VW!ZNLX?K[7$U7-Q?'7;&<&2,!P9PIONX;0:X
     1340MOZ;)T<7AU24=6#JXUG)HQHM)71ZN5>13'[;3)*=>;ISEV%55,JN4*RG/8J+F
     1341M-S5MY51MITY.9[E3E)VO:CZK&6F`W1I@Y#8:'?*IE3;0L%A.I3J[56>-G.JJ
     1342M&5@S7Y*J:69?3CV?TF*&:K1!CB,?.RG7J=SFI3K=D&,5]$*MA=I+O5K+L2!K
     1343M)<=2J=XJ]2*N4E5+34W:H*0-,:O)(8O)@6MQ[#O'\.JEKES=^-Y.]^8PWNN#
     1344M'@^V^O"]E:+I_F!JL6W%A_;4E@7Z(K_7)(%Z*6R7IK-+D2[Y\=[1)<O5&J[7
     1345MYVN)KTUT;91B^BRUXN#J=37G&^CB='Y1;<HC*X_YKOX&W>1KU2RSOXO[A'JH
     1346M/"!75D[O#U,MX:[@_FHEW!/CX;%-PMW_C/Q/F6K4+K5Z<Y88?)=:O>L2@YYG
     1347M3@ZW5Y^N?K]:K[Y=+:^NABY+>'^6)3P-%I(9?B$GHJSZ[=I,]O+V6E]^NOS]
     1348M<J5S/8S#1;SDB[]3,2VAMLOTYS+2S9>?Z$BN<2[Y5J4I5J;M@^9RF=JM=':Y
     1349MDNZG[=JU;BU*C2[,#[W[ET>\^Y?O>;>]_:1_UZO^-LF169?QD_G=+'J,MX8N
     1350M<+G^]/OZ34]<8);1\[G^MHRWYIMY;(`-JFNA/C-/H,3[T"0W5^^NWE_=[LT1
     1351M[)DY@FOFN*&.>4?_W=+HJ**_O*&N>T?CXWONTE$I9_3E#96XR_=TY99'06OF
     1352M0"6>2NAS3;4;^\+9V/?L+KVM.>)=30M>OWL_WMSN7)V<NM;:#77A?*B+\\,N
     1353MNUC(@4^[,2ZJL^Z*^FT=U\B'W$@>:,83Y]&%>FJ]YF\R7$<Z<",Y*W75>LV7
     1354M^&\GDXN%.FN]]DVQ&S6C_:=SZ\)MXB9QB_A)VKA$>0_&K5%>B3D9?M75/^9F
     1355MT75-\>=]%L[=3#KMP3PMQO-N2[7;MJ)$D3:Y8.:9^XD?D=C9J4#'B4+>T$PJ
     1356MILO<E33MHFEHY/L"G=)D+4:K^2IWI:V*-#*-P9ND4NEY-YK@_66VC)^\371.
     1357MIX9.P^12=(HS`=MH<I;F38G3Q'4:]9Q"$FM6<0J[R7HUTYR1FWB:O)NM*TVD
     1358MTV1M<J$T4=.\4/D05)A+*XV4>*^<+8VC>6<5IY1+\S:C@YI+:\E9QNAU$$QN
     1359MK^<J50Q>ER8'*@BS"SY*HR.=TN79<&W<OF#5;+2TCR:LM2IR,0I;Z[TT)'#;
     1360MKS5UC3%Z:ZN6(N6-\])=+K>?RV*R>FNBE8FPC]K51KI=58Z[S,TZVM)DF5!/
     1361MA)FX7S(#2U"W^HS`\^WH?8S2-IF,IZB]S2WC@BF0TRA3FJ7SY'V>(SE(:9>1
     1362MVWQP+F[MDCG^I(V)V<5T#4>K3**)_U):1_6Y6;E0VE;32>*Y(F5`G;+;G21%
     1363MFC@'EUO")5/4RDJ=MC3-3B%HFS:?RTN09%/<C,@-:P[,DT?G-'FB-"BO4ZC+
     1364MG;&E?792P02;'?QT[29:SNB87*Z32VB)XJ@S2HW<B#J73#R7)#Y/X53J-_(1
     1365MH[Q54J65\^C(SU1I@2/0:,4$?-6/Y!3&NUP!%U3YQ%ZL`@T36UAQ]9Y"PZLL
     1366M;T2`/DU!6FKS$Z6`;!6^&LAO]>;C?%[4U3QS=#MO?0Y2E@YCH'A,J2B'T3M>
     1367M[<F'3Y1WM5?%N'(:9G*T\M$X43)P@:CH)-5*.(4HG4+,O4F9P'-_T:&:)P;C
     1368M?J+P.DXZ.LL?E_`_DAWF69DM1=&"<4QS3,'6\#_6.CB3T$J1O#S45'"499O?
     1369M7)C6DR.M6O5F1D_GEA)*JK%/YR'-;$<)'#HE/:,E]EM51@SNO=S(\44WJJA"
     1370MF-,6_%0UA5N<?0M^*@HVMB`S4J22H6P36O!W]5!2F2C[)3;SE@BHJJB2VCS-
     1371MY\HIS7`OY?CB7HHS17@.?JY$S<&Z$ORZJX%SB3)A#B;67*#E`Q1TR77I@/N>
     1372M#,5YITL(?"^E":_-UJ?V00T<X=I0(,@=6X9@-65=T"5C^5H6R2!QRV%<XBVY
     1373MA"OI@0P^4NQKU?)#[P,YTBW=T&4+_HPG(^L^7W"AH9ARODL94NAGI?Q<,T4O
     1374MSX'NM5-&;7F-\3DX9E-2!_L<#R]YM,SN;AF#=QSLU@*=2ZLPKQ\UB1B[N:+9
     1375M/I?F1$-8S2)67#@:[[=,QM:VDFARFI'*`@T\IN82UZI2'.^*QLMHMN%#YSLH
     1376M5*+G<6[+*%QF$\U%XY;!J"!2365<.DG\)*]CJ'G%=S4I]BVZW25?4XMG39H0
     1377M.+6E+?9G[YQ$A20?,8RO^27P)S1ESK1EIZX*CGEM?909QHD#=J*H,8XRY5K.
     1378M"54'=B;.+L89&EXD9H\\SZ90)\.4F.42FG='&VK,'NNPJU0.>J/K3,/()VA^
     1379M8FOP<D$(CARH!BP7D:0--6!SS32ET*E$;%\-3R2T)=P\=-,E"3"9,4AL\WQ!
     1380M1T-1L$5L;KG2VO@6L%)(_6;<W.)U5Q/O^E#/48^TT,W-S0:JT9KKI!:7B9PO
     1381M]U'.I5'3;$FGD_:<N,C?YUCB5N</:,I^DHW=EFFX.D4YL`_8<K.AN8;I0G9O
     1382MCL#>-9/#*MM%L-PS4:-";(-]+K1$H$++-3P]FVF2%4ODFIT\KWEY0A7;'"#;
     1383M6Q'4;+HX+L7:.N],%[VYG(;H-/L:OOM*\LCNV?U;MJ%VQ1#UO`5T]BJ7:(H:
     1384M:T3;[!B:YLJQ"V/;RVM>"IC91'''EE/X@\2E76HYA?N'"@K8*?OM1!,8/?L:
     1385MW&ZGSN%-@6KE0RV-L+JBA&1\2R,RQ76NS%].)08LST&W,/<[;8YK<C?K6]K@
     1386M/J!Y!^/F)$"BE#5<LEN:8(88>&@XE<!)-(V1I0)?-56=(UF3[4U9Z_!%RE0T
     1387M"_=MQ#O*VISN4;[&C]Q'HXSW;08L93S-=VU\ZROC>.95@?4E=O('/`6P*\%O
     1388M*&?$H'(\G^0&&KZ#W>)$2BB<^E%M5X>3Z95-.LTM7C(!C46\EU`C1$H=QY;9
     1389MXD/D:;[+.68+[J;-H>P-S96W$4YG@D@+AC+HK+54>S+IG+KHR!U)"T05?!<<
     1390M>E<'QS(M/FD\;I&BMYZEM4#H`IG6%C2/GGV)#I/[C].ZJM%A=NH\:I-+>A7Z
     1391M4"G6I`&.1HP:'ENI\SFQU2HH"7.N*>%ARX,)FL&T\,B^H"GG^E`CHA0&6M5Z
     1392MW\4@53*3LY9A(4<)K;A4H&7=7&)B[TB<+!PM/JWK@LW0?(0&("=!X;/):=%&
     1393M<5NCBLQ-D^UD2Y`86CM2=^4)U;&NDFAZ1MUD:!G*U8O?T46:P](*8:YN=Y0'
     1394M/$')LL64F+"T6$W5P_B<UG,RW2S!T.J0*8&AM*W*])N7<K0>3R4)2P$-*\:;
     1395MFG>EC)R*UDZV.9;40XLV6F9VBZY=93K/TE5L^3=_RIB@Y^K[)&XI3VP+L0Q)
     1396MD6]]L-6C]$Y9$HBEM)KFSJ-T[C%:=I6IN*F%%-S!=8Y-%>B8)[&;US5USAB\
     1397M1:";:^5N3L&DLN+;/-A.SE,RGSOWI?5RLL&EXEAVIYTS!0TX41<G*Q8C!S'=
     1398MS)1!`ID^B&.)$<DY'.^;K+6`ENDJ%"]K5>0EO;6A)-,C+W4IFK8-#BDPM(SK
     1399M\@074:HV-8<:*?*4W;>I[[$NN$E,]G4HXI,J+D8K=O*0S8CR89K"!%OGP/D>
     1400MCI_03":%/"W7<3/8KAZ>!%"[>6^@^@\UE%+2MM[)YN3:HS:Q&2R7DF/Y;EVM
     1401M=^(R^--$W=G8^0I)!5IQIBTOF"P4:"VI?3%9[AQ:)B5>-S=GJ-IVELF14[:L
     1402MQ&W^A/8\K=BL[BCT.*J*/1VG8.?RZN[(^WH4Z*H,*%Q0U7DU3Z9IVQU:[E=;
     1403M6;&?IWF\XB%I+8*TK*+%;)[$G.0&"O.4MD[;U<'!2[-+&^K:021"H-F^JJ8B
     1404M3<63E-)9T@Y:3M#$8LNA>J<J<_A(H5UG%KGI%)V:TUSI2,])U,2RBL@E-.EC
     1405MU=QU39&#E19HSN>..EX'GGVF;2;(!4SIW.8&7*`IP]&`7_HIT!*2EBAE`<0%
     1406M55V6YS,AAF+[7`'%O&O3_$`S*5J59$M+!3193YZ3PE;`*QW*A`6FZ7.LTD+1
     1407M9L<]7D=>^-.M8D0^IS1'0_H6I)%GG#))DHKIE'?-MCF*[/W0+*54&FLMO"KG
     1408M;,E;TG0AC=$9.\]20Z)<09T=\[0C332T<T`<K]7\<Q5H#QT4/U]_T5Y^FFW;
     1409MSB=)LU"H:<\_1#%1<X+\"`7U]3PO>J71V1COEI5&(\L_W^]HUJ'#8D\3)QVZ
     1410M]T23NJCX6P4GNF4V=EG-:;3\#YCP34'9Q9QDM]?0372D::&XK.4U`_[=Y1,M
     1411M%6E@7O1)'@(IM:PGKG?F+W32D9VIZ$0-,/S/,YSL>'*T"K!JL;0@CIJ_[\LK
     1412M96G#46*;VFMXA<X__TXE\ZP]->(XTA2=[SIQ&>4R;@5O&?$WK_AR<-0&?:09
     1413MIHO4!IUW6+BI^2YJ!<GRS(X:>*2AR:H3Z9,1J=..O%#3B?6/FA)*T"3/A3KQ
     1414MS[4?>;'JM:8:^)"JI([BP\2_+<Z%(X^-"]5%9?PO1_`132C,?!)MI_G#1]Y`
     1415MCBHL*Q]9_A="^,T,1^//<CH:V51?Y<"FE.2M#9Y1+T?J/DW3MI4/J&/M20XH
     1416MY1]=??A%M[BD%]Z0U3.Y`^]^.G$'XRU;CV9Z+B9Q!IIN1/[*-04!.<.8:(DK
     1417MSF`I:HHS.))G9YALX']=@$KX51;Q!@Y*\8:\82?N0'-7_A%[]@OY))N>^LFQ
     1418M-\@FHQ5O4+P`S.[`7P`4=^"9$CF0Y:V;6;-7'L6E;7:)2'-G\0CNNKCR;9R:
     1419MV"4HX[C-)31]1%R"/\N_Q"^%T5GQBM%:;;-7)/GFL'@*C:+B%(:_YRK>0<8A
     1420MIZ".8<=G4\_&!7$*8G7<$+'PS+\C3V7&4`"*^:DA+KN$EN]C<QGUILXN$=CI
     1421MV"-HEAM.(IS(.&Q@?M[!_C!%_AD7<1'N#?*"D:JQV1UH-F7%'10_>A)_4/S%
     1422M4#F@R"[^X,+QX;_\5?)-]_*.XI=W]@_O%+^O\^#]JD>>W2E^AV?_[(ZF(NV1
     1423MYP69J(Q'_(^J\4M2/)-1/+:J\BQF6WI0WW%VE/OG5Y?\U@E=5],QWZGGD3X3
     1424M)_K#CF5TYK_52`OB5ZUVUV'Y%Z;4R=2$>M+S4>GQ1`U9M)KXJUVK_,/@JYZ.
     1425M[:<(5KZ-_986Q/DK7613FL.2V>4;D10&3Y@A=.VE:1EW6GG';*K3JREW&W>-
     1426MIV.=IRZYCZAXXGZDH:ITBZ$+Q_+LI<RARH?JA%Z>,)^FLOJ9CM=E.MGU8WO)
     1427M@<:WE_9C]YS939)P*.+74\M0BUO]D4*>.XO#7$^2.^I3^Y,_YLZ6H.$[#/^^
     1428M`_\#1*>1\\?#5U=JFU77_K-7("BM-O?6XMH[M_9G+SY0;NJ>Y%]>+"/W_\)=
     1429M.<I;)=OQJ/KR<F;DS+3C??F#LX=7LTYKB>_07ORB8+-,M0;55CM^*3#U':K%
     1430M]`5>[F`[U->FROEV1Y2/D,67^H94.=_NX'>BMJ(JS.]"Y<(B]MU7DVHW=!,I
     1431MGUX_VT:U;T.7%<,__^;:'^W;OBM]WY6/?7MS:Y[NFFIRYN@YA9W.K9S;L0ON
     1432M8+N/NA_P#LD&QZ"V(VU41,G_4.4Y4&U'Y]7\"M`Y3FM^9^WPTFGS$\V7%C^:
     1433MJ6/G&O%\P(R=.:+I7X8]RR[Q/+O$+KO\42O&KL?B#\@#/\**L3--+(%X;89I
     1434MH#Q6&YZZGDP_(,BFM6M0W5=,G4'2V3N**G4QD+IW%-TC;W:IU'4UOW7QP'JI
     1435MH^:W&IHE:5!>1\/3&1F?1YG9T,$EA?]<34E+]"J@YQ_0(^O8QMCEU)OR=&Z]
     1436M6K'N&O&LA*)GVWWT?T9"T;/OVA2**ZI9?-&VEL?NKI?FDMT\AU)W/[_AT\?R
     1437MB5:=S=59/J'%2YNAT.JVOJ+Y8?>*IE9G$W"M^@GXS?2.S'7#6[67[RZ']Y.5
     1438M4S>]&]_32N'R@\P^VF==UZB73I^UK=TQW8SO6F_H=&/'=^]I]5<-.EE_X\8/
     1439M9K3^'1U3^\Y^LJ"V)W1MB^<=EAZN6.KKAE??KGZ_DF\D]%VGY[.NTZI_7=/7
     1440M[<L+D]<J_`6.*6^I\@-3?A8G$V@YC75:?BRS;B5/8[?-S;$\3N1UT#+UJQ:M
     1441MN]#CIW@O]$(?6\<GQ2OB=93E*:V/>1M&TW+6\1N=6G[ZBQ^8S*=CB[15%J+:
     1442M>R\'(:6X\$^@48&(T-I^:5/S%H=MXO+`=OK*7/D*UB4)?K+'[JGEN>*DZHM,
     1443M4WV9Q4YF>ZQEI<ORXF;:GLWQ@E'>+J(.-]NK1WY4*E\J+YQ-^=EBU]5=6M`O
     1444M'34GEYJ/TWK$47W.4W?S^W;!\0IE"KR7H/G7Y.C_9.VC+/^T%>_.66N6]D4&
     1445M7@2-\AV=A1_BN,`_'RL%]JGDH;NTI?,XN_-1><5-W%+>,#+-*4<KS_#V_F>Z
     1446M7&1>.O[HYGR\J4,0%.B)_TE#/D_VE,_)\<;.Z60WS/+79(]/L)HN.$P9EWA8
     1447M728C@^G#HT;5.9SY`:,2Z9\F\\A<0YO.J4SXQTW<CG1WU)K=V=;\@.FM-+O[
     1448MU<0S#-U`NJ_8:7X<(B"R7R`A.7Z3V<"%[+V\XM0XC`-_)T.W-VU&)2\TT6W?
     1449MVMLKLC5Q&MMWA'3W[3QM7YKRVCX-Q]YXTN.W#I2*3M_T%DBG<K3D`_Z=P3:M
     1450ML"?]C;]_3TU\:OCIOB^HK:M=,PGX*#9M'<43OB?).V=Y^1?]6K!QLB`FLP,?
     1451M3WNZ?\#6N9PMZ22/63)VC7FO3?8O&).RU*OQ5%@[S^WV%+7[YZ>QO%',VP[K
     1452MJ9]3R0;V<N)?-SH]GC!<YUINF\A26SG4J-TT[<DSVFPQ)J"02-UTW'6F=C\@
     1453M<9"!%G.2FAL&_VX3[T1+W4^`=)[BGIS"NLYX[O_I%+;[GI_V)5O(LSK^+HN\
     1454MKKO(^TU<<ASEH9ZXT"-WM,[OOENF_4L30T=SXA]:.U%%-,[TJZ*^F([I\/@$
     1455M9><-WFWN1(%/@7&BT-_61_P-,IX,JB[6N[TZ_>*]NJD/=MX:FLQ2Y]#B2A,O
     1456M\D[C4V;J'*3LCET\.[:[G3'](W;&<ER?S/-"N]OTTG73BX>9O*0N<;V*=^6D
     1457M7/:]\^2;TC#/Y7.)O!PUA@ZQ,_2+M\5\MXJ5'QG8A;S\`H#I=@+S/(]_/H/_
     1458M]MV6X)IG34O^^VRCN^N3SL?*SEG>[L_OA,K3$R=?-L]/L/G%$KHXQB`O2*RR
     1459M^1_DAE!NX'EUI!)^VZ9]A$M2C-T]872VG/*T7<VCTULE-A>D4DFNLXGE-Q^-
     1460MO-*8FY!+\EN1K42^)A^3/.%_4!K"Y5[/U@:ZG:95MB?/9;KGN,QOP'9MK7II
     1461M?E"JI6[3828I=;%KI+SMK9)S!=#66GRYR[6[?"C0VUUF3+[4ROT:MUJCZ7NS
     1462ME$9MNGM#:3>_A=GN57,FW/JFMKHY?Y<D7KRI^C]]"=KMX>JX36^WW;C+1[?K
     1463M:@=U&[PZ_H!QB29M5.MNFXZJWNW44?U/S=ABEZNB:W.<53+WJ9_E;)-03O3[
     1464M>4ZW@ZQ_Q`[R2^<YW:ZQ+KO&%\O$<X55_J1QE:?7Y?@DY=V,H=M/UB_>3]X-
     1465MLMWVX[1LLP;>K:H;JYRBIV/UNG4[#N25T_'QIU:UC9TGI3*(\1?-V'1C(KKR
     1466M:I@\)5KD.X8=;&?X].)!:FZPG.+XB=O(W]&MV(X#C<=H_C(M'<J?CPY%M3&=
     1467M,Z5POB61OTKWQ_8CN@UUG5Z:C,[W([9]B.FY>Q"FVZ`WLVIS0/[Z&7^A;]LG
     1468M+R\EE!GA_NK/54!W8C\@D^C='*I4NZQCM\!=2E-SZ>,YQ72[^&9V=14H$UW&
     1469MD=V*LJVT37@[US3=CKN9?\0#J3JM;8:B5#+)#]Y2S4^8*G:M2/4QQGB2%++R
     1470MO@4GD:D]OC#=5KQ1/V!N._;/7Z;NU.;3Z?24"53G&LI4$XPY'Z1M8-K>]>@0
     1471M.MNI'[!DI3ZFGD^=6U'/L34>[W35F5YUP<_SN183,@N;3-X$YUEXU_[.:NK%
     1472MTP^_"_GD\FHI1WWSHKS5FB_QY/N)=W.,[MQ"J[+\ML/(#S/I3YI)U>9W&_CF
     1473MQ1OXK?M/;N3'7H_]N(?IMM%-V4:?B,]*RIF<YK=8^8<VK"E9*+]K/O&[NN+Z
     1474MD3I&#OB]O"Y\NYUQ\_*=<6Y*<Z-<1_,BJ;S+2M*XW+9NZ2,4!>+)=8_I]L"-
     1475MWIXU1S+,,HQJJ%C=WK9Y\=[V+MLNNS7=2"/B,K7!D[DL=P./-S8D3LC.>!I"
     1476M@YKC4X'?;7*;LLE-LW8[J<;1V?V'[&9W$*.N$W<KI]:99H^19EC=>S\CK0IC
     1477MG>TL\DYE2111SJURY?8D+M#.Y96?J?N`O.XS-4$E3M/J4^(TK3G\HT9T7ENK
     1478M9![V#]X2>N@XW6Z]X=WZ_8-$T^V_&]Y_SP\5!WY:=77SZNQU#L-[YK_>?9'G
     1479MAORC.+PG?D/_-=/9]ECQ0JZ\XB69?-\I<CYIA7KF0A78BZ_EZ_E*:3E)LMAL
     1480M&<=NORSSB2I=^-]@H,F:"N/%#>GPOY>0C_A?3I0#_E>2+FYXBX3_04,I6Y5N
     1481M168[U&LJAZ*92-:V6L\>-QO>%[_][>MP<??E,-R](>SA;O@+Q]VL?^:"N]&8
     1482M5_5N\MS_KB?^-=GL?KT_?/QUN/CS-'V]^?+AMU__?#7<M;1D(]]TYNW;93?S
     1483MY;O;X>)>+GTF-W\U_,N;P=4ZG>9;:JW\6W/\?PW!^5SR[NO'F[^V4JGX[]NI
     1484MG_]`8[T^;^RG[K)4_2!.^^O4D+]_9T,\9KN%S58M@@._1B>68VOFVQ[^0Y/0
     1485MA2YTH0M=Z$(7NM"%+G2A"UWH0A>ZT(4N=*$+7>A"%[K0A2YTH0M=Z$(7NM"%
     1486M+G2A"UWH0A>ZT(4N=*$+7>A"%[K0A2YTH0M=Z$(7NM"%+G2A"UWH0A>ZT(4N
     1487M=*$+7>A"%[K0A2YTH0M=Z$(7NM"%+G2A"UWH0A>ZT(4N=*$+7>A"%[K0A2YT
     1488MH0M=Z$(7NM"%+G2A"UWH0A>ZT(4N=*$+7>A"%[K0A2YTH0M=Z$(7NM"%+G2A
     1489M"UWH0A>ZT(4N=*$+7>A"%[K0A2YTH0M=Z$(7NM"%+G2A"UWH0A>ZT(4N=*$+
     1490M7>A"%[K0A2YTH0M=Z$(7NM"%+G2A"UWH0A>ZT(4N=*$+7>A"%[K0A2YTH0M=
     1491MZ$(7NM"%+G2A"UWH0A>ZT(4N=*$+7>A"%[K0A2YTH0M=Z$(7NM"%+G2A"UWH
     1492M0A>ZT(4N=*$+7>A"%[K0A2YTH0M=Z$(7NM"%+G2A"UWH0A>ZT(4N=*$+7>A"
     1493M%[K0A2YTH0M=Z$(7NM"%+G2A"UWH0A>ZT(4N=*$+7>A"%[K0A2YTH0M=Z$(7
     1494MNM"%+G2A"UWH0A>ZT(4N=*$+7>A"%[K0A2YTH0M=Z$(7NM"%+G2A"UWH0A>Z
     1495MT(4N=*$+7>A"%[K0A2YTH0O=QW7_XS__]=_^?3`^O!WJ<7P]?+W[\FGX.KP9
     1496M]-7%<K6^NOKPMY__]--/P^7E\/7CAX^W=U_R#9>7]5/I[?"WWSZOP^V;Y=H/
     1497MX[!>._ISD3_7:_OS=F.8RXV?ZHV^WKA<&_Z3_E/M`ZI\X)?R@>5R+:I%NY1I
     1498M.3/[#^NWP^>[^\/P65T-GS7]9]HU\W:X_>WK<''WY3#<O:%/#7?#7P9CYEG_
     1499MS`5WHS&OZMWV]?#?]<2]IBZ\7^\/'W\=+OX\35]OOGSX[=<_7PUWKYI^X)L^
     1500MJS?#[<W[PV]?[TX?AXO;[GJ2ZWIW_5.['I5<-[OKOW373=9O!2X+MH+<@H8<
     1501MI<J[V^'B7M0^*_*F5\._D*$K:))J*VJ26G;U))>+WGW]>//75BJ5_;V>/JQ*
     1502M;U75/K7SKBH[;U55`CL_5I6==U79^6%5YKPJM:]*;575OK'JT:K4OBI%5?W]
     1503M/!+N.!*>B-#%CXL;5_K_7?`]>;L>5STNHVJ!;,=%4]E*?_,EN4$]".2GU,:U
     1504M5W+C8M=Q,2(CZ8$T.WG#A^/6A/4/UP)$(`(1B$`$(A"!"$0@`A&(0`0B$($(
     1505M1"`"$8A`!"(0@0A$(`(1B$`$(A"!"$0@`A&(0`0B$($(1"`"$8A`!"(0@0A$
     1506M(`(1B$`$(A"!"$0@`A&(0`0B$($(1"`"$8A`!"(0@0A$(`(1B$`$(A"!"$0@
     1507M`A&(0`0B$($(1"`"$8A`!"(0@0A$(`(1B$`$(A"!"$0@`A&(0`0B$($(1"`"
     1508M$8A`!"(0@0A$(`(1B$`$(A"!"$0@`A&(0`0B$($(1"`"$8A`!"(0@0A$(`(1
     1509MB$`$(A"!"$0@`A&(0`0B$($(1"`"$8A`!"(0@0A$(`(1B$`$(A"!"$0@`A&(
     1510M0`0B$($(1"`"$8A`!"(0@0A$(`(1B$`$(A"!"$0@`A&(0`0B$($(1"`"$8A`
     1511M!"(0@0A$(`(1B$`$(A"!"$0@`A&(0`0B$($(1"`"$8A`!"(0@0A$(`(1B$`$
     1512M(A"!"$0@`A&(0`0B$($(1"`"$8A`!"(0@0A$(`(1B$`$(A"!"$0@`A&(0`0B
     1513M$($(1"`"$8A`!"(0@0A$(`(1B$`$(A"!"$0@`A&(0`0B$($(1"`"$8A`!"(0
     1514M@0A$(`(1B$`$(A"!"$0@`A&(0`0B$($(1"`"$8A`!"(0@0A$(`(1B$`$(A"!
     1515M"$0@`A&(0`0B$($(1"`"$8A`!"(0@0A$(`(1B$`$(A"!"$0@`A&(0`0B$($(
     1516M1"`"$8A`!"(0@0A$(`(1B$`$(A"!"$0@`A&(0`0B$($(1"`"$8A`!"(0@0A$
     1517M(`(1B$`$(A"!"$0@`A&(0`0B$($(1"`"$8A`!"(0@0A$(`(1B$`$(A"!"$0@
     1518M`A&(0`0B$($(1"`"$8A`!"(0@0A$(`(1B$`$(A"!"$0@`A&(0`0B$($(1"`"
     1519M$8A`!"(0@0A$(`(1B$`$(A"!"$0@`A&(0`0B$($(1"`"$8A`!"(0@0A$(`(1
     1520MB$`$(A"!"$0@`A&(0`0B$($(1"`"$8A`!"(0@0A$(`(1B$`$(A"!"$0@`A&(
     1521M0`0B$($(1"`"$8A`!"(0@0A$(`(1B$`$(A"!"$0@`A&(0`0B$($(1"`"$8A`
     1522M!"(0@0A$(`(1B$`$(A"!"$0@`A&(0`0B$($(1"`"$8A`!"(0@0A$(`(1B$`$
     1523M(A"!"$0@`A&(0`0B$($(1"`"$8A`!"(0@0A$(`(1B$`$(A"!"$0@`A&(0`0B
     1524M$($(1"`"$8A`!"(0@0A$(`(1B$`$(A"!"$0@`A&(0`0B$($(1"`"$8A`!"(0
     1525M@0A$(`(1B$`$(A"!"$0@`A&(0`0B$($(1"`"$8A`!"(0@0A$(`(1B$`$(A"!
     1526M"$0@`A&(0`0B$($(1"`"$8A`!"(0@0A$(`(1B$`$(A"!"$0@`A&(0`0B$($(
     1527M1"`"$8A`!"(0@0A$(`(1B$`$(A"!"$0@`A&(0`0B$($(1"`"$8A`!"(0@0A$
     1528M(`(1B$`$(A"!"$0@`A&(0`0B$($(1"`"$8A`!"(0@0A$(`(1B$`$(A"!"$0@
     1529M`A&(0`0B$($(1"`"$8A`!"(0@0A$(`(1B$`$(A"!"$0@`A&(0`0B$($(1"`"
     1530M$8A`!"(0@0A$(`(1B$`$(A"!"$0@`A&(0`0B$($(1"`"$8A`!"(0@0A$(`(1
     1531MB$`$(A"!"$0@`A&(0`0B$/__1_R/__S7?_OWP>KY[5"/U>OAIY^&P]?7@[5S
     1532M+=6OA[_>??X\?/VY%IFWP]>[+Y^&KV_"U<5RM;ZZ^O"W=M6^'?[VV^=UN!W>
     1533M#.NUNURN[3#1D::C($=F&(?EVK2/N+?#Y[O[P_#YS>W-^\-O7^].'R]N7[7K
     1534M_NUP3V7#Q6?JE%?#7P;_\Y]:"\/;X?#Q_I`_>D\W7?%GG^Q)0_U1.W+2]<S2
     1535M63UQ;+_:XU[.I@>=>+7ORMAU97I=C\U\UH%&U0[4YQUH]-:!;X:+Y=I?DAVO
     1536M[25U(/U-=J>.S,?T]RA'KR[S?72\7@>Z8NC8\*?&M?6B,;67A]K-0]_/QI[U
     1537MY/#=KES\RGZH.2[$];C/^*_FJ)X=,K"G&G;0]7$_-*YUGO&O"[HI2(Q"@2*8
     1538M#.]KAZR,R->YD^B.AD).\31G?"XGQQD#Z#X&]>HS/06<A*`$^^-\J?'9N3F'
     1539M53UK8<FDEVS*S+H9/'-V)K7Z.Y36/)\R@_209#O&%.,*XQ,6M+8C=!UAM:8M
     1540M3JF%5%Q9N'9VI3]SN7WHZ!W8]VQKGVO;M4O/8F).GTX2M*J)@4I=SK%KS:QG
     1541MV:`VH3.VZXSMJK$W]%70[<Z\G1.[[YG7/=N\&6K'NQGU";=UG5%=9U17C:K%
     1542MJ%N(YDS$&<A)UFI7>ZKOF<\].S1WSFK$?YO9J"ENS2,D_?^3%G.=Q7QG,=^'
     1543M9[$.$[I\UCFI_-=3^N_9SK\@-+.9V@1@S?XH`[Y^>H3WG0E]9T*_BTL]/D"4
     1544M.%RWX>8\O_KO&='_<T;LX\[4,QJ1)0;/K=C!=G8,G1V#ZHYU!L^IU67?K2G(
     1545MY"&EL03S'=#PW`%S[4</G7UR8UWS])+]]PDW#=TH&7R'%(HM+\M86+-JG0CL
     1546M$TN(WX-*S[6>#'Z[H3&/]D\Z9>RFG;&S3=2/."7_72//LU.VML;O62<^>SJC
     1547MU_WX/NZ=D2IW3]DF=K:)G6UBJ$F_2XG+-A:.?;S1>=?Z[]DH/MM&#:LGRFN(
     1548M-JJM8[?.*!'W=+BESHRI,V/2^^$A>^2R)<_M?.^3Z7NF3,\V91[LE@<&S8[Z
     1549MY#0M=49,G1%3-:+?&E]&[VPV3IU[F.\9+SW;>+ZN%RL,6\:L3^9]-S?;N+G9
     1550MQLU]^BMS3EN&Z,N:%/=SK[VEW/P=2[GYV2G1[U8/.XOQ-9Z3VD=&[UJAZT!]
     1551M!]H"K^7XRV:O;,'6[N]8S,W/MICK)B(RJ&5SB0D?Q5"=O51G+R7VRO9PW4)P
     1552MFT5;0:EI<C<E*9.R/'97&/4]\ZES\_VCE/F8W62I]%28.=693'4F4^'A4MDI
     1553M,LM//PVW7W_[=?C?KX?_NOOUUX]??[WY\F7X_>Z&EK/O[FD=_>WSS=?IP\??
     1554M/WZN'Z,%>%YA#V\&6F.O5X=^C>UXWZ-M4EP>KN,PRF;%X5KS$?WMZ>_#=9!R
     1555MOUV5OS5=M?6([J^J9#<IE(^:?(L<ZU8SS0L_?+SMMSIV!M#/G1H>>`PY])U_
     1556MH'%*'RAF#GFWRO`M=,ZG'$D'OLQ%9CQ(9*T'F4,>]./FXAV=P_WA_]P?;@[?
     15571[B\H$_RO/_U?.CZGWX[="```
    15361558`
    15371559end
  • Tst/Short/factorizep_s.stat

    rc90500 r3e7db4  
    1 1 >> tst_memory_0 :: 1343903425:3150:3-1-5:ix86-Linux:mamawutz:174032
    2 1 >> tst_memory_1 :: 1343903425:3150:3-1-5:ix86-Linux:mamawutz:2240284
    3 1 >> tst_memory_2 :: 1343903425:3150:3-1-5:ix86-Linux:mamawutz:2273068
    4 1 >> tst_timer :: 1343903425:3150:3-1-5:ix86-Linux:mamawutz:342
    5 2 >> tst_memory_0 :: 1343903425:3150:3-1-5:ix86-Linux:mamawutz:4109776
    6 2 >> tst_memory_1 :: 1343903425:3150:3-1-5:ix86-Linux:mamawutz:6680576
    7 2 >> tst_memory_2 :: 1343903425:3150:3-1-5:ix86-Linux:mamawutz:6680576
    8 2 >> tst_timer_1 :: 1343903425:3150:3-1-5:ix86-Linux:mamawutz:5873
     11 >> tst_memory_0 :: 1354291118:3150:3-1-5:ix86-Linux:mamawutz:173336
     21 >> tst_memory_1 :: 1354291118:3150:3-1-5:ix86-Linux:mamawutz:2240284
     31 >> tst_memory_2 :: 1354291118:3150:3-1-5:ix86-Linux:mamawutz:2273068
     41 >> tst_timer :: 1354291118:3150:3-1-5:ix86-Linux:mamawutz:276
     52 >> tst_memory_0 :: 1354291118:3150:3-1-5:ix86-Linux:mamawutz:4047200
     62 >> tst_memory_1 :: 1354291118:3150:3-1-5:ix86-Linux:mamawutz:6025216
     72 >> tst_memory_2 :: 1354291118:3150:3-1-5:ix86-Linux:mamawutz:6025216
     82 >> tst_timer_1 :: 1354291118:3150:3-1-5:ix86-Linux:mamawutz:5530
  • Tst/Short/factorizep_s.tst

    rc90500 r3e7db4  
    385385testfactors (l,f);
    386386
     387
     388kill r;
     389ring r=2,(x,y),dp;
     390poly f= (x^6*y+x^4*y^2+x^5+x^2*y^2+x^2*y+y^2+x)*(x^6*y^2+y^7+x^3*y^3+x^4+y);
     391list l= factorize (f);
     392testfactors (l, f);
     393
     394f= (x^3*y^2+y^3+x^2+1)*(x^2*y^6+x^4*y^2+y^4+y^3+x*y+x+1);
     395l= factorize (f);
     396testfactors (l, f);
     397
     398
     399f= (x^3*y^4+y^3+x+1)*(x*y^7+y^6+x^2*y^2+x^3+x*y+y);
     400l= factorize (f);
     401testfactors (l, f);
     402
     403
     404f= (x^4*y^3+x^2*y^4+x^5+x*y^2+1)*(x^2*y^6+x*y^5+x*y^4+x^2*y^2+x^2*y+y);
     405l= factorize (f);
     406testfactors (l, f);
     407
     408
     409f= (x^5+x*y^2+y)*(x^4*y^2+x^3+x*y+1);
     410l= factorize (f);
     411testfactors (l, f);
     412
     413
     414f= (x^2*y^3+y^3+x^2+x)*(x^7+x^5*y+x^2*y^3+y^3+1);
     415l= factorize (f);
     416testfactors (l, f);
     417
     418
     419f= (x^3*y+x*y+1)*(x^5*y+x*y^4+x^2*y^2+y^2+y+1);
     420l= factorize (f);
     421testfactors (l, f);
     422
     423
     424f= (x^4*y^2+x^3*y+x*y+1)*(x*y^5+y^5+x^2*y+x*y+x+1);
     425l= factorize (f);
     426testfactors (l, f);
     427
     428
     429
     430f= (y^6+x^5+y^3+x)*(x^2*y^3+y^4+y);
     431l= factorize (f);
     432testfactors (l, f);
     433
     434
     435f= (x*y^3+x*y^2+1)*(x^3*y^3+x^4*y+1);
     436l= factorize (f);
     437testfactors (l, f);
     438
     439
     440f= (x^4*y^2+x^3*y^2+x*y+1)*(x^6+y^5);
     441l= factorize (f);
     442testfactors (l, f);
     443
     444
     445f= (x^5*y+x^2*y^3+x*y^3+x^2+y+1)*(x*y^5+x^2);
     446l= factorize (f);
     447testfactors (l, f);
     448
     449
     450f= (x^2*y^3+x*y^2+x+1)*(x^5+x*y^2+x*y+1);
     451l= factorize (f);
     452testfactors (l, f);
     453
     454
     455f= (x^6+x*y^2+x^2+y)*(y^5+x^3*y+y+1);
     456l= factorize (f);
     457testfactors (l, f);
     458
     459
     460f= (y^6+x*y^4+y^4+y^3+1)*(y^6+x^5+x^2*y^2+x^2*y+x*y+1);
     461l= factorize (f);
     462testfactors (l, f);
     463
     464
     465f= (x^5+y^3+x)*(x*y^5+x^3*y+x^2+y);
     466l= factorize (f);
     467testfactors (l, f);
     468
     469
     470f=x^2*y^5+x^4*y^2+x^2*y^4+x^4*y+x^3*y^2+x*y^4+x^2*y^2+y^3+x^2+x*y+x+1;
     471l= factorize (f);
     472testfactors (l,f);
     473
     474
     475kill r;
     476// from P. Zimmermann via libsingular-devel
     477ring r = 2,(y,t),dp;
     478poly f = y*t^8 + y^5*t^2 + y*t^6 + t^7 + y^6 + y^5*t + y^2*t^4 + y^2*t^2 +
     479y^2*t + t^3 + y^2 + t^2;
     480def l=factorize (f);
     481testfactors (l, f);
    387482tst_status(1);$
  • Tst/Short/ok_s.lst

    rc90500 r3e7db4  
    213213primefactors
    214214primitiv_s
     215pyobject
    215216qhw_s
    216217quotient_s
  • Tst/Short/pyobject.res.gz.uu

    rc90500 r3e7db4  
    1 begin 644 pyobject.res.gz
    2 M'XL("&,.ZT\``W!Y;V)J96-T+G)E<P#M&FMOX\;QNW_%1B@@RM;I2$I\R(X5
     1begin 664 pyobject.res.gz
     2M'XL("`X&QE```W!Y;V)J96-T+G)E<P#M&FMOX\;QNW_%1B@@RM;I2$I\R(X5
    33MY*Y%&Z"X%+T`_>"Z,B6O;?8HDB`I6TK1_]Z9?<R.'K;/*5H@0"Z(S-UY[,SL
    44M[,SLD)]_^OT/GX00P4S\^8</HM>UW:C(%[V+D\\&$LX$3,[S,N^\P<4)_A6S
     
    6262MLL"@L8^DT!NTS8W:04"[,?+<V,\[VG6-+R_H3<JF!BV`HR9#"O7P+!0NHDV^
    6363MN7D]`9^?DP/H-.SC)R*0.U=PH!MA??!"?'V25;MN2G`PQ"-&,;:,*2$61;;\
    64 MLJ@V\Q_KH(\?5"D.Q@Y>%(8#="%1U>3[,.D/E'54FPL_Q++VT:L[(Y;+:E6#
    65 M9(M":C=R%0MM5,)#-/M<(/13MIU3?BQQF=93KR'UL;1HV*87(K\3GGE#K/?U
    66 MTH03'I;<^48<=F!#_`+K.!/KT"\ENA!;\6X0??WA5UKQTQ\&+DV%<*D\=&@"
    67 MID?S7(@=6$9$D2'4'P!9`AX90O894!CN1$/UBM[3[_Z/Q\.>M\K;%AQMT'LN
    68 M'H;A&^*A6FO')+KO:J.).IK'B\$06ZX:0;_2?:W$&XH^24]-D)!]=11B-Q8_
    69 67L3O$]>MQZ4"^__NY#_R48`L_B@`````
     64MLJ@V\Q_KH(\?5"D.Q@Y>!`<774A4-?D^3`8#91W5YL(/L:Q]].K.B.6R6M4@
     65MV:*0VHU<Q4(;E?`0S3X7"/V4;>>4'TM<IO74:TA]+"T:MNF%R.^$9]X0ZWV]
     66M-.&$AR5WOA&''=@0O\`ZSL0Z]$N)+L16O!M$7W_XE5;\](>!2U,A7"H/'9J`
     67MZ=$\%V('EA%19`CU!T"6@$>&D'T&%(8[T5"]HO?TN__C\;#GK?*V!4<;])Z+
     68MAV'XAGBHUMHQB>Z[VFBBCN;Q8C#$EJM&T*]T7ROQAJ)/TE,3)&1?'878C<6/
     696%_'[Q'7K<:G`_K\[^0^V-F^/_B@`````
    7070`
    7171end
  • configure.ac

    rc90500 r3e7db4  
    1212AM_MAINTAINER_MODE
    1313AM_INIT_AUTOMAKE([-Wall foreign subdir-objects]) # -Wno-extra-portability -Werror silent-rules
     14m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES])
     15m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
     16
    1417
    1518dnl Check if build env is sane
     
    5861LB_CHECK_NTL(5.0,,AC_MSG_WARN([Unable to find NTL (which is strongly recommended) on your machine: please use --with-ntl=PATH_TO_DIR_CONTAINING_LIB_AND_INCLUDE (see also ./configure --help if you do not understand what we are talking about)]))
    5962LB_CHECK_FLINT(2.3,,AC_MSG_WARN([Unable to find FLINT (which is strongly recommended) on your machine: please use --with-flint=PATH_TO_DIR_CONTAINING_LIB_AND_INCLUDE (see also ./configure --help if you do not understand what we are talking about)]))
     63
     64AX_PYTHON_DEFAULT()
     65AX_PYTHON_WITH_VERSION([2.4])
     66
    6067
    6168AC_FUNC_ERROR_AT_LINE
  • doc/singular.man

    rdcf88ff r3e7db4  
    6868Suppress all output
    6969.TP
     70\fB\-\-no\-shell\fR
     71Restricted mode: Prohibit shell escape commands and links
     72.TP
    7073\fB\-\-min\-time\fR=\fISECS\fR
    7174Do not display times smaller than SECS (in seconds)
  • dyn_modules/bigintm/Makefile.am

    rc90500 r3e7db4  
    3131
    3232AMLDFLAGS       =
    33 # -L${abs_top_builddir}/Singular -L${abs_top_builddir}/numeric -L${abs_top_builddir}/kernel \
    34 # -L${abs_top_builddir}/libpolys/polys $(USE_FACTORY) -L${abs_top_builddir}/omalloc -L${abs_top_builddir}/findexec
     33# -L${top_builddir}/Singular -L${top_builddir}/numeric -L${top_builddir}/kernel \
     34# -L${top_builddir}/libpolys/polys $(USE_FACTORY) -L${top_builddir}/omalloc -L${top_builddir}/findexec
    3535
    3636
  • dyn_modules/bigintm/bigintm.cc

    rc90500 r3e7db4  
    231231      }
    232232
    233       Werror("bigintm_Op2: Op: '==': Sorry unsupported 2nd argument-type: '%d' in", Tok2Cmdname(a2->Typ()));
     233      Werror("bigintm_Op2: Op: '==': Sorry unsupported 2nd argument-type: '%s' in", Tok2Cmdname(a2->Typ()));
    234234      WrongOp("bigintm_Op2", op, a1);
    235235      return TRUE;
  • dyn_modules/syzextra/Makefile.am

    rc90500 r3e7db4  
    3131
    3232AMLDFLAGS       =
    33 # -L${abs_top_builddir}/Singular -L${abs_top_builddir}/numeric -L${abs_top_builddir}/kernel \
    34 # -L${abs_top_builddir}/libpolys/polys $(USE_FACTORY) -L${abs_top_builddir}/omalloc -L${abs_top_builddir}/findexec
     33# -L${top_builddir}/Singular -L${top_builddir}/numeric -L${top_builddir}/kernel \
     34# -L${top_builddir}/libpolys/polys $(USE_FACTORY) -L${top_builddir}/omalloc -L${top_builddir}/findexec
    3535
    3636
  • dyn_modules/syzextra/mod_main.cc

    rc90500 r3e7db4  
    934934 
    935935  NoReturn(res);
     936  return false;
    936937}
    937938
  • factory/FLINTconvert.cc

    rc90500 r3e7db4  
    122122  {
    123123    CanonicalForm c= i.coeff();
    124     if (!c.isImm()) c.mapinto(); //c%= getCharacteristic();
     124    if (!c.isImm()) c=c.mapinto(); //c%= getCharacteristic();
    125125    if (!c.isImm())
    126126    {  //This case will never happen if the characteristic is in fact a prime
  • factory/Makefile.am

    rc90500 r3e7db4  
    1818
    1919libfactory_la_CXXFLAGS   = -O3 -fomit-frame-pointer ${CXXTEMPLFLAGS}
    20 libfactory_la_LIBADD     = ${abs_builddir}/libfac/libfac.la $(FLINT_LIBS) ${GMP_LIBS} ${NTL_LIBS}
     20libfactory_la_LIBADD     = ${builddir}/libfac/libfac.la $(FLINT_LIBS) ${GMP_LIBS} ${NTL_LIBS}
    2121libfactory_la_LDFLAGS    = -release ${PACKAGE_VERSION}
    2222libfactory_g_la_CXXFLAGS = -g -Wextra -Wall -pedantic -Wno-long-long ${CXXTEMPLFLAGS}
    23 libfactory_g_la_LIBADD   = ${abs_builddir}/libfac/libfac_g.la $(FLINT_LIBS) ${GMP_LIBS} ${NTL_LIBS}
     23libfactory_g_la_LIBADD   = ${builddir}/libfac/libfac_g.la $(FLINT_LIBS) ${GMP_LIBS} ${NTL_LIBS}
    2424libfactory_g_la_LDFLAGS  = -release ${PACKAGE_VERSION}
    2525
     
    8383                facIrredTest.cc \
    8484                facMul.cc \
     85                facNTLzzpEXGCD.cc \
    8586                facSparseHensel.cc \
    8687                ffops.cc \
     
    162163                facIrredTest.h \
    163164                facMul.h \
     165                facNTLzzpEXGCD.h \
    164166                facSparseHensel.h \
    165167                ffops.h \
     
    302304check_PROGRAMS = $(TESTS)
    303305
    304 AMLDFLAGS =  -L${abs_builddir}
     306AMLDFLAGS =  -L${builddir}
    305307
    306308TESTSSOURCES = test.cc
  • factory/NTLconvert.cc

    rc90500 r3e7db4  
    125125
    126126    CanonicalForm c=i.coeff();
    127     if (!c.isImm()) c.mapinto(); //c%= getCharacteristic();
     127    if (!c.isImm()) c=c.mapinto(); //c%= getCharacteristic();
    128128    if (!c.isImm())
    129129    {  //This case will never happen if the characteristic is in fact a prime
  • factory/algext.cc

    rc90500 r3e7db4  
    2626#include "cf_map.h"
    2727#include "cf_generator.h"
     28#include "facMul.h"
     29#include "facNTLzzpEXGCD.h"
    2830
    2931#ifdef HAVE_NTL
     
    365367static CanonicalForm tryvcontent ( const CanonicalForm & f, const Variable & x, const CanonicalForm & M, bool & fail );
    366368static CanonicalForm trycf_content ( const CanonicalForm & f, const CanonicalForm & g, const CanonicalForm & M, bool & fail );
    367 static void tryDivide( const CanonicalForm & f, const CanonicalForm & g, const CanonicalForm & M, CanonicalForm & result, bool & divides, bool & fail );
    368369
    369370static inline CanonicalForm
     
    463464    mv = g.level();
    464465  // here: mv is level of the largest variable in f, g
     466  Variable v1= Variable (1);
     467#ifdef HAVE_NTL
     468  Variable v= M.mvar();
     469  if (fac_NTL_char != getCharacteristic())
     470  {
     471    fac_NTL_char= getCharacteristic();
     472    zz_p::init (getCharacteristic());
     473  }
     474  zz_pX NTLMipo= convertFacCF2NTLzzpX (M);
     475  zz_pE::init (NTLMipo);
     476  zz_pEX NTLResult;
     477  zz_pEX NTLF;
     478  zz_pEX NTLG;
     479#endif
    465480  if(mv == 1) // f,g univariate
    466481  {
    467482    TIMING_START (alg_euclid_p)
     483#ifdef HAVE_NTL
     484    NTLF= convertFacCF2NTLzz_pEX (f, NTLMipo);
     485    NTLG= convertFacCF2NTLzz_pEX (g, NTLMipo);
     486    tryNTLGCD (NTLResult, NTLF, NTLG, fail);
     487    if (fail)
     488      return;
     489    result= convertNTLzz_pEX2CF (NTLResult, f.mvar(), v);
     490#else
    468491    tryEuclid(f,g,M,result,fail);
     492    if(fail)
     493      return;
     494#endif
    469495    TIMING_END_AND_PRINT (alg_euclid_p, "time for euclidean alg mod p: ")
    470     if(fail)
    471       return;
    472496    result= NN (reduce (result, M)); // do not forget to map back
    473497    return;
     
    482506    return;
    483507  CanonicalForm c;
     508#ifdef HAVE_NTL
     509  NTLF= convertFacCF2NTLzz_pEX (cf, NTLMipo);
     510  NTLG= convertFacCF2NTLzz_pEX (cg, NTLMipo);
     511  tryNTLGCD (NTLResult, NTLF, NTLG, fail);
     512  if (fail)
     513    return;
     514  c= convertNTLzz_pEX2CF (NTLResult, v1, v);
     515#else
    484516  tryEuclid(cf,cg,M,c,fail);
    485517  if(fail)
    486518    return;
     519#endif
    487520  // f /= cf
    488521  f.tryDiv (cf, M, fail);
     
    518551  CanonicalForm gamma;
    519552  TIMING_START (alg_euclid_p)
     553#ifdef HAVE_NTL
     554  NTLF= convertFacCF2NTLzz_pEX (firstLC (f), NTLMipo);
     555  NTLG= convertFacCF2NTLzz_pEX (firstLC (g), NTLMipo);
     556  tryNTLGCD (NTLResult, NTLF, NTLG, fail);
     557  if (fail)
     558    return;
     559  gamma= convertNTLzz_pEX2CF (NTLResult, v1, v);
     560#else
    520561  tryEuclid( firstLC(f), firstLC(g), M, gamma, fail );
     562  if(fail)
     563    return;
     564#endif
    521565  TIMING_END_AND_PRINT (alg_euclid_p, "time for gcd of lcs in alg mod p: ")
    522   if(fail)
    523     return;
    524566  for(int i=2; i<=mv; i++) // entries at i=0,1 not visited
    525567    if(N[i] < L[i])
     
    822864        equal= true; // modular image did not add any new information
    823865      TIMING_START (alg_termination)
     866#ifdef HAVE_FLINT
     867      if (equal && tmp.isUnivariate() && f.isUnivariate() && g.isUnivariate()
     868          && f.level() == tmp.level() && tmp.level() == g.level())
     869      {
     870        CanonicalForm Q, R, sf, sg, stmp;
     871        Variable x= Variable (1);
     872        sf= swapvar (f, f.mvar(), x);
     873        sg= swapvar (g, f.mvar(), x);
     874        stmp= swapvar (tmp, f.mvar(), x);
     875        newtonDivrem (sf, stmp, Q, R);
     876        if (R.isZero())
     877        {
     878          newtonDivrem (sg, stmp, Q, R);
     879          if (R.isZero())
     880          {
     881            Off (SW_RATIONAL);
     882            setReduce (a,true);
     883            if (off_rational) Off(SW_RATIONAL); else On(SW_RATIONAL);
     884            TIMING_END_AND_PRINT (alg_termination,
     885                                 "time for successful termination test in alg gcd: ")
     886            return tmp*gcdcfcg;
     887          }
     888        }
     889      }
     890      else
     891#endif
    824892      if(equal && fdivides( tmp, f ) && fdivides( tmp, g )) // trial division
    825893      {
     
    10171085  }
    10181086  return abs( f );
    1019 }
    1020 
    1021 
    1022 static void tryDivide( const CanonicalForm & f, const CanonicalForm & g, const CanonicalForm & M, CanonicalForm & result, bool & divides, bool & fail )
    1023 { // M "univariate" monic polynomial
    1024   // f, g polynomials with coeffs modulo M.
    1025   // if f is divisible by g, 'divides' is set to 1 and 'result' == f/g mod M coefficientwise.
    1026   // 'fail' is set to 1, iff a zero divisor is encountered.
    1027   // divides==1 implies fail==0
    1028   // required: getReduce(M.mvar())==0
    1029   if(g.inBaseDomain())
    1030   {
    1031     result = f/g;
    1032     divides = true;
    1033     return;
    1034   }
    1035   if(g.inCoeffDomain())
    1036   {
    1037     tryInvert(g,M,result,fail);
    1038     if(fail)
    1039       return;
    1040     result = reduce(f*result, M);
    1041     divides = true;
    1042     return;
    1043   }
    1044   // here: g NOT inCoeffDomain
    1045   Variable x = g.mvar();
    1046   if(f.degree(x) < g.degree(x))
    1047   {
    1048     divides = false;
    1049     return;
    1050   }
    1051   // here: f.degree(x) > 0 and f.degree(x) >= g.degree(x)
    1052   CanonicalForm F = f;
    1053   CanonicalForm q, leadG = LC(g);
    1054   result = 0;
    1055   while(!F.isZero())
    1056   {
    1057     tryDivide(F.LC(x),leadG,M,q,divides,fail);
    1058     if(fail || !divides)
    1059       return;
    1060     if(F.degree(x)<g.degree(x))
    1061     {
    1062       divides = false;
    1063       return;
    1064     }
    1065     q *= power(x,F.degree(x)-g.degree(x));
    1066     result += q;
    1067     F = reduce(F-q*g, M);
    1068   }
    1069   result = reduce(result, M);
    1070   divides = true;
    10711087}
    10721088
  • factory/cfModResultant.cc

    rc90500 r3e7db4  
    1414
    1515#include "cf_assert.h"
     16#include "timing.h"
    1617
    1718#include "cfModResultant.h"
     
    2930#include "FLINTconvert.h"
    3031#endif
     32
     33TIMING_DEFINE_PRINT(fac_resultant_p)
    3134
    3235//TODO arrange by bound= deg (F,xlevel)*deg (G,i)+deg (G,xlevel)*deg (F, i)
     
    255258  return CanonicalForm ((long) FLINTresult);
    256259#else
    257   zz_pBak bak;
    258   bak.save();
    259   zz_p::init (getCharacteristic());
     260  if (fac_NTL_char != getCharacteristic())
     261  {
     262    fac_NTL_char= getCharacteristic();
     263    zz_p::init (getCharacteristic());
     264  }
    260265  zz_pX NTLF= convertFacCF2NTLzzpX (F);
    261266  zz_pX NTLG= convertFacCF2NTLzzpX (G);
     
    263268  zz_p NTLResult= resultant (NTLF, NTLG);
    264269
    265   bak.restore();
    266270  return CanonicalForm (to_long (rep (NTLResult)));
    267271#endif
     
    327331    return power (B, degAx);
    328332
     333  if (A.isUnivariate() && B.isUnivariate() && A.level() == B.level())
     334    return uniResultant (A, B);
     335
    329336  CanonicalForm F= A;
    330337  CanonicalForm G= B;
     
    337344
    338345  Variable y= Variable (2);
    339 
    340   if (F.isUnivariate() && G.isUnivariate() && F.level() == G.level())
    341     return N(uniResultant (F, G));
    342346
    343347  int i= -1;
     
    363367    if (H == modResult)
    364368      equalCount++;
     369    else
     370      equalCount= 0;
    365371
    366372    count++;
     
    473479  CanonicalForm resultModP, q (0), newResult, newQ;
    474480  CanonicalForm result;
     481  int equalCount= 0;
     482  CanonicalForm test, newTest;
     483  int count= 0;
    475484  do
    476485  {
     
    487496    setCharacteristic (p);
    488497
     498    TIMING_START (fac_resultant_p);
    489499    resultModP= resultantFp (mapinto (F), mapinto (G), X, prob);
     500    TIMING_END_AND_PRINT (fac_resultant_p, "time to compute resultant mod p: ");
    490501
    491502    setCharacteristic (0);
    492503
     504    count++;
    493505    if ( q.isZero() )
    494506    {
     
    501513      q= newQ;
    502514      result= newResult;
    503       if (newQ > bound)
    504       {
    505         result= symmetricRemainder (result, q);
     515      test= symmetricRemainder (result,q);
     516      if (test != newTest)
     517      {
     518        newTest= test;
     519        equalCount= 0;
     520      }
     521      else
     522        equalCount++;
     523      if (newQ > bound || (prob && equalCount == 2))
     524      {
     525        result= test;
    506526        break;
    507527      }
  • factory/cf_gcd.cc

    rc90500 r3e7db4  
    4545
    4646bool
    47 gcd_test_one ( const CanonicalForm & f, const CanonicalForm & g, bool swap )
    48 {
     47gcd_test_one ( const CanonicalForm & f, const CanonicalForm & g, bool swap, int & d )
     48{
     49    d= 0;
    4950    int count = 0;
    5051    // assume polys have same level;
     
    114115      if (p == 2 && d < 6)
    115116      {
    116         zz_p::init (p);
     117        if (fac_NTL_char != 2)
     118        {
     119          fac_NTL_char= 2;
     120          zz_p::init (p);
     121        }
    117122        bool primFail= false;
    118123        Variable vBuf;
     
    138143      else if ((p == 3 && d < 4) || ((p == 5 || p == 7) && d < 3))
    139144      {
    140         zz_p::init (p);
     145        if (fac_NTL_char != p)
     146        {
     147          fac_NTL_char= p;
     148          zz_p::init (p);
     149        }
    141150        bool primFail= false;
    142151        Variable vBuf;
     
    218227    }
    219228
    220     if ( eval1.taildegree() > 0 && eval2.taildegree() > 0 )
    221     {
    222         if (passToGF)
    223           setCharacteristic (p);
    224         if (k > 1)
    225           setCharacteristic (p, k, gf_name);
    226         return false;
    227     }
    228 
    229229    CanonicalForm c= gcd (eval1, eval2);
    230     bool result= c.degree() < 1;
     230    d= c.degree();
     231    bool result= d < 1;
     232    if (d < 0)
     233      d= 0;
    231234
    232235    if (passToGF)
     
    463466//}}}
    464467
    465 //{{{ static CanonicalForm balance ( const CanonicalForm & f, const CanonicalForm & q )
     468//{{{ static CanonicalForm balance_p ( const CanonicalForm & f, const CanonicalForm & q )
    466469//{{{ docu
    467470//
    468 // balance() - map f from positive to symmetric representation
     471// balance_p() - map f from positive to symmetric representation
    469472//   mod q.
    470473//
     
    476479//}}}
    477480static CanonicalForm
     481balance_p ( const CanonicalForm & f, const CanonicalForm & q )
     482{
     483    Variable x = f.mvar();
     484    CanonicalForm result = 0, qh = q / 2;
     485    CanonicalForm c;
     486    CFIterator i;
     487    for ( i = f; i.hasTerms(); i++ )
     488    {
     489        c = i.coeff();
     490        if ( c.inCoeffDomain())
     491        {
     492          if ( c > qh )
     493            result += power( x, i.exp() ) * (c - q);
     494          else
     495            result += power( x, i.exp() ) * c;
     496        }
     497        else
     498          result += power( x, i.exp() ) * balance_p(c,q);
     499    }
     500    return result;
     501}
     502
     503/*static CanonicalForm
    478504balance ( const CanonicalForm & f, const CanonicalForm & q )
    479505{
     
    490516    }
    491517    return result;
    492 }
     518}*/
    493519//}}}
    494520
     
    566592    {
    567593      // now balance D mod q
    568       D = pp( balance( D, q ) );
     594      D = pp( balance_p( D, q ) );
    569595      if ( fdivides( D, f ) && fdivides( D, g ) )
    570596        return D * c;
     
    597623    pi1 = pi1 / Ci1; pi = pi / Ci;
    598624    C = gcd( Ci, Ci1 );
     625    int d= 0;
    599626    if ( !( pi.isUnivariate() && pi1.isUnivariate() ) )
    600627    {
    601         if ( gcd_test_one( pi1, pi, true ) )
     628        if ( gcd_test_one( pi1, pi, true, d ) )
    602629        {
    603630          C=abs(C);
     
    716743    pi1 = pi1 / Ci1; pi = pi / Ci;
    717744    C = gcd( Ci, Ci1 );
     745    int d= 0;
    718746    if ( pi.isUnivariate() && pi1.isUnivariate() )
    719747    {
     
    729757        return gcd_poly_univar0( pi, pi1, true ) * C;
    730758    }
    731     else if ( gcd_test_one( pi1, pi, true ) )
     759    else if ( gcd_test_one( pi1, pi, true, d ) )
    732760      return C;
    733761    Variable v = f.mvar();
     
    12041232    delete [] degsg;
    12051233}*/
    1206 
    1207 
    1208 static CanonicalForm
    1209 balance_p ( const CanonicalForm & f, const CanonicalForm & q )
    1210 {
    1211     Variable x = f.mvar();
    1212     CanonicalForm result = 0, qh = q / 2;
    1213     CanonicalForm c;
    1214     CFIterator i;
    1215     for ( i = f; i.hasTerms(); i++ )
    1216     {
    1217         c = i.coeff();
    1218         if ( c.inCoeffDomain())
    1219         {
    1220           if ( c > qh )
    1221             result += power( x, i.exp() ) * (c - q);
    1222           else
    1223             result += power( x, i.exp() ) * c;
    1224         }
    1225         else
    1226           result += power( x, i.exp() ) * balance_p(c,q);
    1227     }
    1228     return result;
    1229 }
    12301234
    12311235TIMING_DEFINE_PRINT(chinrem_termination)
  • factory/cf_gcd_smallp.cc

    rc90500 r3e7db4  
    414414Variable chooseExtension (const Variable & alpha)
    415415{
    416   zz_p::init (getCharacteristic());
     416  if (fac_NTL_char != getCharacteristic())
     417  {
     418    fac_NTL_char= getCharacteristic();
     419    zz_p::init (getCharacteristic());
     420  }
    417421  zz_pX NTLIrredpoly;
    418422  int i, m;
     
    440444{
    441445  int p= getCharacteristic();
    442   zz_p::init (p);
     446  if (p != fac_NTL_char)
     447  {
     448    fac_NTL_char= p;
     449    zz_p::init (p);
     450  }
    443451  zz_pX NTLirredpoly;
    444452  //TODO: replace d by max_{i} (deg_x{i}(f))
     
    13331341{
    13341342  int p= getCharacteristic();
    1335   zz_p::init (p);
     1343  if (fac_NTL_char != p)
     1344  {
     1345    fac_NTL_char= p;
     1346    zz_p::init (p);
     1347  }
    13361348  zz_pX NTLirredpoly;
    13371349  CanonicalForm CFirredpoly;
     
    19882000  nmod_mat_t FLINTN;
    19892001  convertFacCFMatrix2nmod_mat_t (FLINTN, *N);
    1990   long* dummy= new long [M.rows()];
    1991   for (int i= 0; i < M.rows(); i++)
    1992     dummy[i]= 0;
    1993   long rk= nmod_mat_rref (dummy, FLINTN);
     2002  long rk= nmod_mat_rref (FLINTN);
    19942003
    19952004  N= convertNmod_mat_t2FacCFMatrix (FLINTN);
    19962005  nmod_mat_clear (FLINTN);
    1997   delete dummy;
    19982006#else
    19992007  int p= getCharacteristic ();
    2000   zz_p::init (p);
     2008  if (fac_NTL_char != p)
     2009  {
     2010    fac_NTL_char= p;
     2011    zz_p::init (p);
     2012  }
    20012013  mat_zz_p *NTLN= convertFacCFMatrix2NTLmat_zz_p(*N);
    20022014  long rk= gauss (*NTLN);
     
    20282040    (*N) (j, M.columns() + 1)= L[i];
    20292041  int p= getCharacteristic ();
    2030   zz_p::init (p);
     2042  if (fac_NTL_char != p)
     2043  {
     2044    fac_NTL_char= p;
     2045    zz_p::init (p);
     2046  }
    20312047  zz_pX NTLMipo= convertFacCF2NTLzzpX (getMipo (alpha));
    20322048  zz_pE::init (NTLMipo);
     
    20632079  nmod_mat_t FLINTN;
    20642080  convertFacCFMatrix2nmod_mat_t (FLINTN, *N);
    2065   long* dummy= new long [M.rows()];
    2066   for (int i= 0; i < M.rows(); i++)
    2067     dummy[i]= 0;
    2068   long rk= nmod_mat_rref (dummy, FLINTN);
     2081  long rk= nmod_mat_rref (FLINTN);
    20692082#else
    20702083  int p= getCharacteristic ();
    2071   zz_p::init (p);
     2084  if (fac_NTL_char != p)
     2085  {
     2086    fac_NTL_char= p;
     2087    zz_p::init (p);
     2088  }
    20722089  mat_zz_p *NTLN= convertFacCFMatrix2NTLmat_zz_p(*N);
    20732090  long rk= gauss (*NTLN);
     
    20772094#ifdef HAVE_FLINT
    20782095    nmod_mat_clear (FLINTN);
    2079     delete dummy;
    20802096#endif
    20812097    delete N;
     
    20852101  N= convertNmod_mat_t2FacCFMatrix (FLINTN);
    20862102  nmod_mat_clear (FLINTN);
    2087   delete dummy;
    20882103#else
    20892104  N= convertNTLmat_zz_p2FacCFMatrix (*NTLN);
     
    21092124    (*N) (j, M.columns() + 1)= L[i];
    21102125  int p= getCharacteristic ();
    2111   zz_p::init (p);
     2126  if (fac_NTL_char != p)
     2127  {
     2128    fac_NTL_char= p;
     2129    zz_p::init (p);
     2130  }
    21122131  zz_pX NTLMipo= convertFacCF2NTLzzpX (getMipo (alpha));
    21132132  zz_pE::init (NTLMipo);
     
    45474566  }
    45484567
    4549   if( gcd_test_one( F, G, false ) )
     4568  int dummy= 0;
     4569  if( gcd_test_one( F, G, false, dummy ) )
    45504570  {
    45514571    return N (d);
     
    45624582  {
    45634583    if (p == 2)
    4564       setCharacteristic (2, 6, 'Z');
     4584      setCharacteristic (2, 12, 'Z');
    45654585    else if (p == 3)
    45664586      setCharacteristic (3, 4, 'Z');
     
    45934613    if (p == 2 && d < 6)
    45944614    {
    4595       zz_p::init (p);
     4615      if (fac_NTL_char != p)
     4616      {
     4617        fac_NTL_char= p;
     4618        zz_p::init (p);
     4619      }
    45964620      bool primFail= false;
    45974621      Variable vBuf;
     
    46174641    else if ((p == 3 && d < 4) || ((p == 5 || p == 7) && d < 3))
    46184642    {
    4619       zz_p::init (p);
     4643      if (fac_NTL_char != p)
     4644      {
     4645        fac_NTL_char= p;
     4646        zz_p::init (p);
     4647      }
    46204648      bool primFail= false;
    46214649      Variable vBuf;
  • factory/cf_map_ext.cc

    rc90500 r3e7db4  
    6767{
    6868  int p= getCharacteristic ();
    69   zz_p::init (p);
     69  if (fac_NTL_char != p)
     70  {
     71    fac_NTL_char= p;
     72    zz_p::init (p);
     73  }
    7074  zz_pX NTL_mipo= convertFacCF2NTLzzpX (getMipo (beta));
    7175  zz_pE::init (NTL_mipo);
     
    325329  int d= degree (mipo);
    326330  int p= getCharacteristic ();
    327   zz_p::init (p);
     331  if (fac_NTL_char != p)
     332  {
     333    fac_NTL_char= p;
     334    zz_p::init (p);
     335  }
    328336  zz_pX NTL_mipo;
    329337  CanonicalForm mipo2;
     
    378386    CanonicalForm primElemMipo= findMinPoly (primElem, alpha);
    379387    int p= getCharacteristic ();
    380     zz_p::init (p);
     388    if (fac_NTL_char != p)
     389    {
     390      fac_NTL_char= p;
     391      zz_p::init (p);
     392    }
    381393    zz_pX NTLMipo= convertFacCF2NTLzzpX (getMipo (beta));
    382394    zz_pE::init (NTLMipo);
     
    399411  }
    400412  int p= getCharacteristic ();
    401   zz_p::init (p);
     413  if (fac_NTL_char != p)
     414  {
     415    fac_NTL_char= p;
     416    zz_p::init (p);
     417  }
    402418  zz_pX NTL_mipo= convertFacCF2NTLzzpX (getMipo (beta));
    403419  zz_pE::init (NTL_mipo);
     
    422438  ASSERT (F.isUnivariate() && F.mvar()==alpha,"expected element of F_p(alpha)");
    423439
    424   zz_p::init (getCharacteristic());
     440  if (fac_NTL_char != getCharacteristic())
     441  {
     442    fac_NTL_char= getCharacteristic();
     443    zz_p::init (getCharacteristic());
     444  }
    425445  zz_pX NTLF= convertFacCF2NTLzzpX (F);
    426446  int d= degree (getMipo (alpha));
  • factory/configure.ac

    rc90500 r3e7db4  
    2121AM_MAINTAINER_MODE
    2222AM_INIT_AUTOMAKE([-Wall foreign subdir-objects]) # -Wno-extra-portability -Werror silent-rules
     23m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES])
     24m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
     25
    2326
    2427# Add pre'prefixed config
  • factory/facAlgExt.cc

    rc90500 r3e7db4  
    3535TIMING_DEFINE_PRINT(fac_alg_sqrf)
    3636TIMING_DEFINE_PRINT(fac_alg_factor_sqrf)
     37TIMING_DEFINE_PRINT(fac_alg_time_shift)
    3738
    3839// squarefree part of F
     
    126127  ASSERT (degree (norm, alpha) <= 0, "wrong norm computed");
    127128  TIMING_START (fac_alg_factor_norm);
     129  bool save_sort= !isOn (SW_USE_NTL_SORT);
     130  On (SW_USE_NTL_SORT);
    128131  CFFList normFactors= factorize (norm);
     132  if (save_sort)
     133    Off (SW_USE_NTL_SORT);
    129134  TIMING_END_AND_PRINT (fac_alg_factor_norm, "time to factor norm: ");
    130135  CFList factors;
     
    136141
    137142  normFactors.removeFirst();
     143  CFFListIterator i= normFactors;
    138144  CanonicalForm buf;
    139   buf= f;
     145  bool shiftBuf= false;
     146  if (!(normFactors.length() == 2 && degree (i.getItem().factor()) <= degree (f)))
     147  {
     148    TIMING_START (fac_alg_time_shift);
     149    if (shift != 0)
     150      buf= f (f.mvar() - shift*alpha, f.mvar());
     151    else
     152      buf= f;
     153    shiftBuf= true;
     154    TIMING_END_AND_PRINT (fac_alg_time_shift, "time to shift: ");
     155  }
     156  else
     157    buf= f;
    140158  CanonicalForm factor;
    141   for (CFFListIterator i= normFactors; i.hasItem(); i++)
     159  int count= 0;
     160  for (; i.hasItem(); i++)
    142161  {
    143162    ASSERT (i.getItem().exp() == 1, "norm not squarefree");
    144163    TIMING_START (fac_alg_gcd);
    145     if (shift == 0)
     164    if (shiftBuf)
    146165      factor= gcd (buf, i.getItem().factor());
    147166    else
    148       factor= gcd (buf, i.getItem().factor() (f.mvar() + shift*alpha, f.mvar()));
     167    {
     168      if (shift == 0)
     169        factor= gcd (buf, i.getItem().factor());
     170      else
     171        factor= gcd (buf, i.getItem().factor() (f.mvar() + shift*alpha, f.mvar()));
     172    }
    149173    buf /= factor;
     174    if (shiftBuf)
     175    {
     176      if (shift != 0)
     177        factor= factor (f.mvar() + shift*alpha, f.mvar());
     178    }
    150179    TIMING_END_AND_PRINT (fac_alg_gcd, "time to recover factors: ");
    151180    factors.append (factor);
     181    count++;
     182    if (normFactors.length() - 1 == count)
     183    {
     184      if (shiftBuf)
     185        factors.append (buf (f.mvar() + shift*alpha, f.mvar()));
     186      else
     187        factors.append (buf);
     188      buf= 1;
     189      break;
     190    }
    152191  }
    153192  ASSERT (degree (buf) <= 0, "incomplete factorization");
  • factory/facBivar.cc

    rc90500 r3e7db4  
    102102        K *= degs[i] + 1;
    103103    }
    104     K /= power (CanonicalForm (2), k);
    105     K= K.sqrt()+1;
     104    K /= power (CanonicalForm (2), k/2);
    106105    K *= power (CanonicalForm (2), M);
    107106    int N= degree (mipo);
    108107    CanonicalForm b;
    109108    b= 2*power (maxNorm (f), N)*power (maxNorm (mipo), 4*N)*K*
    110        power (CanonicalForm (2), N)*(CanonicalForm (M+1).sqrt()+1)*
    111        power (CanonicalForm (N+1).sqrt()+1, 7*N);
     109       power (CanonicalForm (2), N)*
     110       power (CanonicalForm (N+1), 4*N);
    112111    b /= power (abs (lc (mipo)), N);
    113 
    114     ZZX NTLmipo= convertFacCF2NTLZZX (mipo);
    115     ZZX NTLLcf= convertFacCF2NTLZZX (Lc (f));
    116     ZZ NTLf= resultant (NTLmipo, NTLLcf);
    117     ZZ NTLD= discriminant (NTLmipo);
    118     b /= abs (convertZZ2CF (NTLf))*abs (convertZZ2CF (NTLD));
    119112
    120113    CanonicalForm B = p;
     
    357350              (prod (bufUniFactors) == bufAeval));
    358351
     352    if (bufUniFactors.getFirst().inCoeffDomain())
     353      bufUniFactors.removeFirst();
     354
     355    if (bufUniFactors.length() == 1)
     356    {
     357      factors.append (A);
     358
     359      appendSwapDecompress (factors, conv (contentAxFactors),
     360                            conv (contentAyFactors), swap, swap2, N);
     361
     362      if (isOn (SW_RATIONAL))
     363        normalize (factors);
     364      return factors;
     365    }
     366
    359367    TIMING_START (fac_uni_factorizer);
    360368    if (extension)
     
    367375              (prod (bufUniFactors2) == bufAeval2));
    368376
    369     if (bufUniFactors.getFirst().inCoeffDomain())
    370       bufUniFactors.removeFirst();
    371377    if (bufUniFactors2.getFirst().inCoeffDomain())
    372378      bufUniFactors2.removeFirst();
    373     if (bufUniFactors.length() == 1 || bufUniFactors2.length() == 1)
     379    if (bufUniFactors2.length() == 1)
    374380    {
    375381      factors.append (A);
  • factory/facFactorize.cc

    rc90500 r3e7db4  
    401401    oldAeval[i]= Aeval2[i];
    402402
    403   getLeadingCoeffs (A, Aeval2, uniFactors, evaluation);
     403  getLeadingCoeffs (A, Aeval2);
    404404
    405405  CFList biFactorsLCs;
     
    622622                !isOnlyLeadingCoeff(iter2.getItem())) //content divides LCmultiplier completely and factor consists of more terms than just the leading coeff
    623623            {
    624               int index2= 1;
    625               for (CFListIterator iter3= leadingCoeffs2[lengthAeval2-1];
    626                    iter3.hasItem(); iter3++, index2++)
     624              Variable xx= Variable (2);
     625              CanonicalForm vars;
     626              vars= power (xx, degree (LC (getItem(oldBiFactors, index),1),
     627                                        xx));
     628              for (int i= 0; i < lengthAeval2; i++)
    627629              {
    628                 if (index2 == index)
     630                if (oldAeval[i].isEmpty())
     631                  continue;
     632                xx= oldAeval[i].getFirst().mvar();
     633                vars *= power (xx, degree (LC (getItem(oldAeval[i], index),1),
     634                                           xx));
     635              }
     636              if (vars.level() <= 2)
     637              {
     638                int index2= 1;
     639                for (CFListIterator iter3= leadingCoeffs2[lengthAeval2-1];
     640                     iter3.hasItem(); iter3++, index2++)
    629641                {
    630                   iter3.getItem() /= LCmultiplier;
    631                   break;
     642                  if (index2 == index)
     643                  {
     644                    iter3.getItem() /= LCmultiplier;
     645                    break;
     646                  }
    632647                }
     648                A /= LCmultiplier;
     649                foundMultiplier= true;
     650                iter.getItem()= 1;
    633651              }
    634               A /= LCmultiplier;
    635               foundMultiplier= true;
    636               iter.getItem()= 1;
    637652            }
    638653          }
  • factory/facFqBivar.cc

    rc90500 r3e7db4  
    155155          "univariate polynomial expected or constant expected");
    156156  CFFList factorsA;
    157   zz_p::init (getCharacteristic());
     157  if (fac_NTL_char != getCharacteristic())
     158  {
     159    fac_NTL_char= getCharacteristic();
     160    zz_p::init (getCharacteristic());
     161  }
    158162  if (GF)
    159163  {
     
    408412                if (recombination)
    409413                {
    410                   appendTestMapDown (result, buf (y - eval, y), info, source,
     414                  buf= buf (y-eval,y);
     415                  buf /= Lc (buf);
     416                  appendTestMapDown (result, buf, info, source,
    411417                                      dest);
    412418                  F= 1;
     
    435441      if (recombination)
    436442      {
    437         appendTestMapDown (result, buf (y - eval, y), info, source, dest);
     443        buf= buf (y-eval,y);
     444        buf /= Lc (buf);
     445        appendTestMapDown (result, buf, info, source, dest);
    438446        F= 1;
    439447        return result;
     
    587595            On (SW_RATIONAL);
    588596          g /= content (g, x);
     597          if (!isRat)
     598          {
     599            On (SW_RATIONAL);
     600            g *= bCommonDen (g);
     601            Off (SW_RATIONAL);
     602            g /= icontent (g);
     603            On (SW_RATIONAL);
     604          }
    589605          if (fdivides (g, buf, quot))
    590606          {
     
    673689Variable chooseExtension (const Variable & alpha, const Variable& beta, int k)
    674690{
    675   zz_p::init (getCharacteristic());
     691  if (fac_NTL_char != getCharacteristic())
     692  {
     693    fac_NTL_char= getCharacteristic();
     694    zz_p::init (getCharacteristic());
     695  }
    676696  zz_pX NTLIrredpoly;
    677697  int i=1, m= 2;
     
    754774            On (SW_RATIONAL);
    755775          g /= content (g, x);
     776          if (!isRat)
     777          {
     778            On (SW_RATIONAL);
     779            g *= bCommonDen (g);
     780            Off (SW_RATIONAL);
     781            g /= icontent (g);
     782            On (SW_RATIONAL);
     783          }
    756784          if (fdivides (g, buf, quot))
    757785          {
     
    17641792    buf /= content (buf, x);
    17651793    buf2= buf (y-evaluation, y);
     1794    buf2 /= Lc (buf2);
    17661795    if (!k && beta == x)
    17671796    {
     
    18441873    buf /= content (buf, x);
    18451874    buf2= buf (y-evaluation, y);
     1875    buf2 /= Lc (buf2);
    18461876    if (!k && beta == x)
    18471877    {
     
    20192049      tmp1= tmp1 (y - evaluation, y);
    20202050      tmp2= tmp2 (y - evaluation, y);
     2051      tmp1 /= Lc (tmp1);
     2052      tmp2 /= Lc (tmp2);
    20212053      if (!k && beta == x && degree (tmp2, alpha) < 1 &&
    20222054          degree (tmp1, alpha) < 1)
     
    20732105    buf /= content (buf, x);
    20742106    buf2= buf (y - evaluation, y);
     2107    buf2 /= Lc (buf2);
    20752108    if (!k && beta == x)
    20762109    {
     
    21482181      tmp1= tmp1 (y - evaluation, y);
    21492182      tmp2= tmp2 (y - evaluation, y);
     2183      tmp1 /= Lc (tmp1);
     2184      tmp2 /= Lc (tmp2);
    21502185      if (!k && beta == x && degree (tmp2, alpha) < 1 &&
    21512186          degree (tmp1, alpha) < 1)
     
    22022237    buf /= content (buf, x);
    22032238    buf2= buf (y - evaluation, y);
     2239    buf2 /= Lc (buf2);
    22042240    if (!k && beta == x)
    22052241    {
     
    23502386  }
    23512387  delete [] A;
     2388  if (!wasInBounds)
     2389  {
     2390    if (start)
     2391      henselLiftResume12 (F, factors, start, degree (F) + 1, Pi, diophant, M);
     2392    else
     2393      henselLift12 (F, factors, degree (F) + 1, Pi, diophant, M);
     2394    factors.insert (LCF);
     2395  }
    23522396  return l;
    23532397}
     
    24722516  }
    24732517  delete [] A;
     2518  if (!wasInBounds)
     2519  {
     2520    if (start)
     2521      henselLiftResume12 (F, factors, start, degree (F) + 1, Pi, diophant, M);
     2522    else
     2523      henselLift12 (F, factors, degree (F) + 1, Pi, diophant, M);
     2524    factors.insert (LCF);
     2525  }
    24742526  return l;
    24752527}
     
    26522704  }
    26532705  delete [] A;
     2706  if (!wasInBounds)
     2707  {
     2708    if (start)
     2709      henselLiftResume12 (F, factors, start, degree (F) + 1, Pi, diophant, M);
     2710    else
     2711      henselLift12 (F, factors, degree (F) + 1, Pi, diophant, M);
     2712    factors.insert (LCF);
     2713  }
    26542714  return l;
    26552715}
     
    28512911  }
    28522912  delete [] A;
     2913  if (!wasInBounds)
     2914  {
     2915    if (start)
     2916      henselLiftResume12 (F, factors, start, degree (F) + 1, Pi, diophant, M);
     2917    else
     2918      henselLift12 (F, factors, degree (F) + 1, Pi, diophant, M);
     2919    factors.insert (LCF);
     2920  }
    28532921  return l;
    28542922}
     
    29703038  }
    29713039  delete [] A;
     3040  if (!wasInBounds)
     3041  {
     3042    if (start)
     3043      henselLiftResume12 (F, factors, start, degree (F) + 1, Pi, diophant, M);
     3044    else
     3045      henselLift12 (F, factors, degree (F) + 1, Pi, diophant, M);
     3046    factors.insert (LCF);
     3047  }
    29723048  return l;
    29733049}
     
    31373213  }
    31383214  delete [] A;
     3215  if (!wasInBounds)
     3216  {
     3217    if (start)
     3218      henselLiftResume12 (F, factors, start, degree (F) + 1, Pi, diophant, M);
     3219    else
     3220      henselLift12 (F, factors, degree (F) + 1, Pi, diophant, M);
     3221    factors.insert (LCF);
     3222  }
    31393223  return l;
    31403224}
     
    35003584  {
    35013585    delete [] bounds;
    3502     CanonicalForm G= F;
     3586    Variable y= Variable (2);
     3587    CanonicalForm tmp= F (y - evaluation, y);
     3588    CFList source, dest;
     3589    tmp= mapDown (tmp, info, source, dest);
    35033590    F= 1;
    3504     return CFList (G);
     3591    return CFList (tmp);
    35053592  }
    35063593
    35073594  CFArray * A= new CFArray [factors.length()];
    35083595  CFArray bufQ= CFArray (factors.length());
    3509   zz_p::init (getCharacteristic());
     3596  if (fac_NTL_char != getCharacteristic())
     3597  {
     3598    fac_NTL_char= getCharacteristic();
     3599    zz_p::init (getCharacteristic());
     3600  }
    35103601  mat_zz_p NTLN;
    35113602  ident (NTLN, factors.length());
     
    37003791  CFArray * A= new CFArray [factors.length()];
    37013792  CFArray bufQ= CFArray (factors.length());
    3702   zz_p::init (getCharacteristic());
     3793  if (fac_NTL_char != getCharacteristic())
     3794  {
     3795    fac_NTL_char= getCharacteristic();
     3796    zz_p::init (getCharacteristic());
     3797  }
    37033798  zz_pX NTLMipo= convertFacCF2NTLzzpX (getMipo (alpha));
    37043799  zz_pE::init (NTLMipo);
     
    55995694  {
    56005695    i= 1;
    5601     while ((degree (F,y)/4)*i + 4 <= smallFactorDeg)
     5696    while (((degree (F,y)/4)*i+1) + 4 <= smallFactorDeg)
    56025697      i++;
    56035698    while (i < 5)
    56045699    {
    5605       dummy= tmin (degree (F,y)+1, (degree (F,y)/4)*i+4);
     5700      dummy= tmin (degree (F,y)+1, ((degree (F,y)/4)+1)*i+4);
    56065701      if (l < dummy)
    56075702      {
     
    57585853  {
    57595854    i= 1;
    5760     while ((degree (F,y)/4)*i + 4 <= smallFactorDeg)
     5855    while ((degree (F,y)/4+1)*i + 4 <= smallFactorDeg)
    57615856      i++;
    57625857    while (i < 5)
    57635858    {
    5764       dummy= tmin (degree (F,y)+1, (degree (F,y)/4)*i+4);
     5859      dummy= tmin (degree (F,y)+1, (degree (F,y)/4+1)*i+4);
    57655860      if (l < dummy)
    57665861      {
     
    59066001  {
    59076002    i= 1;
    5908     while ((degree (F,y)/4)*i + 4 <= smallFactorDeg)
     6003    while ((degree (F,y)/4+1)*i + 4 <= smallFactorDeg)
    59096004      i++;
    59106005    while (i < 5)
    59116006    {
    5912       dummy= tmin (degree (F,y)+1, (degree (F,y)/4)*i+4);
     6007      dummy= tmin (degree (F,y)+1, (degree (F,y)/4+1)*i+4);
    59136008      if (l < dummy)
    59146009      {
     
    61586253  nmod_mat_t FLINTN;
    61596254#else
    6160   zz_p::init (getCharacteristic());
     6255  if (fac_NTL_char != getCharacteristic())
     6256  {
     6257    fac_NTL_char= getCharacteristic();
     6258    zz_p::init (getCharacteristic());
     6259  }
    61616260  mat_zz_p NTLN;
    61626261#endif
     
    62656364  {
    62666365#ifdef HAVE_FLINT
    6267     nmod_mat_clear (FLINTN);
     6366    if (alpha.level() == 1 || (alpha.level() != 1 && reduceFq2Fp))
     6367      nmod_mat_clear (FLINTN);
    62686368#endif
    62696369    delete [] bounds;
    62706370    return Union (smallFactors,
    62716371                  factorRecombination (bufUniFactors, F,
    6272                                        power (y, degree (F) + 1 + degree (LCF)),
     6372                                       power (y, degree (F) + 1),
    62736373                                       degs, 1, bufUniFactors.length()/2
    62746374                                      )
     
    62806380  {
    62816381#ifdef HAVE_FLINT
    6282     nmod_mat_clear (FLINTN);
     6382    if (alpha.level() == 1 || (alpha.level() != 1 && reduceFq2Fp))
     6383      nmod_mat_clear (FLINTN);
    62836384#endif
    62846385    delete [] bounds;
     
    63286429      if (result.length() == nmod_mat_ncols (FLINTN))
    63296430      {
    6330         nmod_mat_clear (FLINTN);
     6431        if (alpha.level() == 1 || (alpha.level() != 1 && reduceFq2Fp))
     6432          nmod_mat_clear (FLINTN);
    63316433#else
    63326434      if (result.length() == NTLN.NumCols())
     
    63426444      if (result.length() == NTLNe.NumCols())
    63436445      {
    6344 #ifdef HAVE_FLINT
    6345         nmod_mat_clear (FLINTN);
    6346 #endif
    63476446        delete [] factorsFoundIndex;
    63486447        delete [] bounds;
     
    63756474    int factorsFound= 0;
    63766475    if (alpha.level() == 1 || (alpha.level() != 1 && reduceFq2Fp))
    6377       reconstructionTry (result, bufF, bufUniFactors, degree (F) + 1 + degree
    6378 #ifdef HAVE_FLINT
    6379                          (LCF), factorsFound, factorsFoundIndex, FLINTN, false
    6380 #else
    6381                          (LCF), factorsFound, factorsFoundIndex, NTLN, false
     6476      reconstructionTry (result, bufF, bufUniFactors, degree (F) + 1,
     6477#ifdef HAVE_FLINT
     6478                         factorsFound, factorsFoundIndex, FLINTN, false
     6479#else
     6480                         factorsFound, factorsFoundIndex, NTLN, false
    63826481#endif
    63836482                        );
    63846483    else
    6385       reconstructionTry (result, bufF, bufUniFactors, degree (F) + 1 + degree
    6386                          (LCF), factorsFound, factorsFoundIndex, NTLNe, false
     6484      reconstructionTry (result, bufF, bufUniFactors, degree (F) + 1,
     6485                         factorsFound, factorsFoundIndex, NTLNe, false
    63876486                        );
    63886487    if (alpha.level() == 1 || (alpha.level() != 1 && reduceFq2Fp))
     
    64056504      if (result.length() == NTLNe.NumCols())
    64066505      {
    6407 #ifdef HAVE_FLINT
    6408         nmod_mat_clear (FLINTN);
    6409 #endif
    64106506        delete [] factorsFoundIndex;
    64116507        delete [] bounds;
     
    64836579    if (result.length() == NTLNe.NumCols())
    64846580    {
    6485 #ifdef HAVE_FLINT
    6486       nmod_mat_clear (FLINTN);
    6487 #endif
    64886581      delete [] bounds;
    64896582      return Union (result, smallFactors);
     
    66296722    {
    66306723#ifdef HAVE_FLINT
    6631       nmod_mat_clear (FLINTN);
     6724      if (alpha.level() == 1 || (alpha.level() != 1 && reduceFq2Fp))
     6725        nmod_mat_clear (FLINTN);
    66326726#endif
    66336727      delete [] bounds;
     
    66486742    {
    66496743#ifdef HAVE_FLINT
    6650       nmod_mat_clear (FLINTN);
     6744      if (alpha.level() == 1 || (alpha.level() != 1 && reduceFq2Fp))
     6745        nmod_mat_clear (FLINTN);
    66516746#endif
    66526747      result.append (bufF);
     
    66546749    }
    66556750#ifdef HAVE_FLINT
    6656     nmod_mat_clear (FLINTN);
     6751    if (alpha.level() == 1 || (alpha.level() != 1 && reduceFq2Fp))
     6752      nmod_mat_clear (FLINTN);
    66576753#endif
    66586754    return Union (result, henselLiftAndLatticeRecombi (bufF, bufUniFactors,
     
    67136809      if (result.length()== NTLNe.NumCols())
    67146810      {
    6715 #ifdef HAVE_FLINT
    6716         nmod_mat_clear (FLINTN);
    6717 #endif
    67186811        delete [] bounds;
    67196812        result= Union (result, smallFactors);
     
    67726865        if (result.length() == NTLNe.NumCols())
    67736866        {
    6774 #ifdef HAVE_FLINT
    6775           nmod_mat_clear (FLINTN);
    6776 #endif
    67776867          delete [] bounds;
    67786868          result= Union (result, smallFactors);
     
    67926882  bounds= computeBounds (F, d, isIrreducible);
    67936883#ifdef HAVE_FLINT
    6794   nmod_mat_clear (FLINTN);
     6884  if (alpha.level() == 1 || (alpha.level() != 1 && reduceFq2Fp))
     6885    nmod_mat_clear (FLINTN);
    67956886#endif
    67966887  if (isIrreducible)
     
    68116902  {
    68126903    result= Union (result, smallFactors);
    6813     CanonicalForm MODl= power (y, degree (F) + 1 + degree (LC (F, 1)));
     6904    CanonicalForm MODl= power (y, degree (F) + 1);
    68146905    delete [] bounds;
    68156906    return Union (result, factorRecombination (bufUniFactors, F, MODl, degs, 1,
     
    70287119  int l= 1;
    70297120
    7030   zz_p::init (getCharacteristic());
     7121  if (fac_NTL_char != getCharacteristic())
     7122  {
     7123    fac_NTL_char= getCharacteristic();
     7124    zz_p::init (getCharacteristic());
     7125  }
    70317126  zz_pX NTLMipo;
    70327127  mat_zz_p NTLN;
     
    70607155    return Union (smallFactors, extFactorRecombination
    70617156                                (bufUniFactors, F,
    7062                                  power (y, degree (F) + 1 + degree (LCF)),info,
     7157                                 power (y, degree (F) + 1),info,
    70637158                                 degs, evaluation, 1, bufUniFactors.length()/2
    70647159                                )
     
    71137208    int factorsFound= 0;
    71147209
    7115     extReconstructionTry (result, bufF, bufUniFactors, degree (F) + 1 + degree
    7116                           (LCF), factorsFound, factorsFoundIndex, NTLN, false,
     7210    extReconstructionTry (result, bufF, bufUniFactors, degree (F) + 1,
     7211                          factorsFound, factorsFoundIndex, NTLN, false,
    71177212                          info, evaluation
    71187213                         );
     
    72427337    if (degs.getLength() == 1 || bufUniFactors.length() == 1)
    72437338    {
    7244       result.append (bufF);
     7339      CFList source, dest;
     7340      CanonicalForm tmp= bufF (y - evaluation, y);
     7341      tmp= mapDown (tmp, info, source, dest);
     7342      result.append (tmp);
    72457343      return result;
    72467344    }
     
    73097407  {
    73107408    result= Union (result, smallFactors);
    7311     CanonicalForm MODl= power (y, degree (F) + 1 + degree (LC (F, 1)));
     7409    CanonicalForm MODl= power (y, degree (F) + 1);
    73127410    delete [] bounds;
    73137411    return Union (result, extFactorRecombination (bufUniFactors, F, MODl, info,
     
    75997697    }
    76007698
    7601     if (i == 0)
     7699    if (i == 0 && !extension)
    76027700    {
    76037701      if (subCheck1 > 0)
  • factory/facFqBivarUtil.cc

    rc90500 r3e7db4  
    504504    CanonicalForm G3= div (G, xToOldL);
    505505    CanonicalForm Up= mulMod2 (G3, oldQ, xToLOldL);
    506     CanonicalForm xToOldL2= power (x, oldL/2);
     506    CanonicalForm xToOldL2= power (x, (oldL+1)/2);
    507507    CanonicalForm G2= mod (G, xToOldL);
    508508    CanonicalForm G1= div (G2, xToOldL2);
     
    510510    CanonicalForm oldQ1= div (oldQ, xToOldL2);
    511511    CanonicalForm oldQ0= mod (oldQ, xToOldL2);
    512     CanonicalForm Mid= mulMod2 (G1, oldQ1, xToLOldL);
     512    CanonicalForm Mid;
     513    if (oldL % 2 == 1)
     514      Mid= mulMod2 (G1, oldQ1*x, xToLOldL);
     515    else
     516      Mid= mulMod2 (G1, oldQ1, xToLOldL);
    513517    //computation of Low might be faster using a real middle product?
    514518    CanonicalForm Low= mulMod2 (G0, oldQ1, xToOldL)+mulMod2 (G1, oldQ0, xToOldL);
    515     Low= div (Low, xToOldL2);
     519    Low= div (Low, power (x, oldL/2));
     520    Low= mod (Low, xToLOldL);
    516521    Up += Mid + Low;
    517522    bufF= div (F, xToOldL);
  • factory/facFqFactorize.cc

    rc90500 r3e7db4  
    15761576          CFList result;
    15771577          result.append (LCF);
    1578           for (int k= 1; k <= factors.length(); k++)
    1579             result.append (LCF);
     1578          for (int j= 1; j <= factors.length(); j++)
     1579            result.append (1);
     1580          result= distributeContent (result, differentSecondVarLCs, lSecondVarLCs);
     1581          if (!result.getFirst().inCoeffDomain())
     1582          {
     1583            CFListIterator iter= result;
     1584            CanonicalForm tmp= iter.getItem();
     1585            iter++;
     1586            for (; iter.hasItem(); iter++)
     1587              iter.getItem() *= tmp;
     1588          }
    15801589          y= Variable (1);
    15811590          delete [] bufSqrfFactors;
     
    15891598    CFList result;
    15901599    result.append (LCF);
    1591     for (int k= 1; k <= factors.length(); k++)
    1592       result.append (LCF);
     1600    for (int j= 1; j <= factors.length(); j++)
     1601      result.append (1);
     1602    result= distributeContent (result, differentSecondVarLCs, lSecondVarLCs);
     1603    if (!result.getFirst().inCoeffDomain())
     1604    {
     1605      CFListIterator iter= result;
     1606      CanonicalForm tmp= iter.getItem();
     1607      iter++;
     1608      for (; iter.hasItem(); iter++)
     1609        iter.getItem() *= tmp;
     1610    }
    15931611    y= Variable (1);
    15941612    delete [] bufSqrfFactors;
     
    19371955
    19381956
    1939 void getLeadingCoeffs (const CanonicalForm& A, CFList*& Aeval,
    1940                        const CFList& uniFactors, const CFList& evaluation
     1957void getLeadingCoeffs (const CanonicalForm& A, CFList*& Aeval
    19411958                      )
    19421959{
     
    25622579    oldAeval[i]= Aeval2[i];
    25632580
    2564   getLeadingCoeffs (A, Aeval2, uniFactors, evaluation);
     2581  getLeadingCoeffs (A, Aeval2);
    25652582
    25662583  CFList biFactorsLCs;
     
    27862803                !isOnlyLeadingCoeff(iter2.getItem())) //content divides LCmultiplier completely and factor consists of more terms than just the leading coeff
    27872804            {
    2788               int index2= 1;
    2789               for (CFListIterator iter3= leadingCoeffs2[lengthAeval2-1];
    2790                    iter3.hasItem(); iter3++, index2++)
     2805              Variable xx= Variable (2);
     2806              CanonicalForm vars;
     2807              vars= power (xx, degree (LC (getItem(oldBiFactors, index),1),
     2808                                        xx));
     2809              for (int i= 0; i < lengthAeval2; i++)
    27912810              {
    2792                 if (index2 == index)
     2811                if (oldAeval[i].isEmpty())
     2812                  continue;
     2813                xx= oldAeval[i].getFirst().mvar();
     2814                vars *= power (xx, degree (LC (getItem(oldAeval[i], index),1),
     2815                                           xx));
     2816              }
     2817              if (vars.level() <= 2)
     2818              {
     2819                int index2= 1;
     2820                for (CFListIterator iter3= leadingCoeffs2[lengthAeval2-1];
     2821                     iter3.hasItem(); iter3++, index2++)
    27932822                {
    2794                   iter3.getItem() /= LCmultiplier;
    2795                   break;
     2823                  if (index2 == index)
     2824                  {
     2825                    iter3.getItem() /= LCmultiplier;
     2826                    break;
     2827                  }
    27962828                }
     2829                A /= LCmultiplier;
     2830                foundMultiplier= true;
     2831                iter.getItem()= 1;
    27972832              }
    2798               A /= LCmultiplier;
    2799               foundMultiplier= true;
    2800               iter.getItem()= 1;
    28012833            }
    28022834          }
  • factory/facFqFactorize.h

    rc90500 r3e7db4  
    601601void
    602602getLeadingCoeffs (const CanonicalForm& A,  ///< [in] some poly
    603                   CFList*& Aeval,          ///< [in,out] array of bivariate
     603                  CFList*& Aeval           ///< [in,out] array of bivariate
    604604                                           ///< factors, returns the leading
    605605                                           ///< coefficients of these factors
    606                   const CFList& uniFactors,///< [in] univariate factors of A
    607                   const CFList& evaluation ///< [in] evaluation point
    608606                 );
    609607
  • factory/facHensel.cc

    rc90500 r3e7db4  
    3030#include "cf_primes.h"
    3131#include "facBivar.h"
     32#include "facNTLzzpEXGCD.h"
    3233
    3334#ifdef HAVE_NTL
     
    3839CFList productsNTL (const CFList& factors, const CanonicalForm& M)
    3940{
    40   zz_p::init (getCharacteristic());
     41  if (fac_NTL_char != getCharacteristic())
     42  {
     43    fac_NTL_char= getCharacteristic();
     44    zz_p::init (getCharacteristic());
     45  }
    4146  zz_pX NTLMipo= convertFacCF2NTLzzpX (M);
    4247  zz_pE::init (NTLMipo);
     
    100105  buf1= bufFactors.getFirst();
    101106  buf2= i.getItem();
     107#ifdef HAVE_NTL
     108  Variable x= Variable (1);
     109  if (fac_NTL_char != getCharacteristic())
     110  {
     111    fac_NTL_char= getCharacteristic();
     112    zz_p::init (getCharacteristic());
     113  }
     114  zz_pX NTLMipo= convertFacCF2NTLzzpX (M);
     115  zz_pE::init (NTLMipo);
     116  zz_pEX NTLbuf1, NTLbuf2, NTLbuf3, NTLS, NTLT;
     117  NTLbuf1= convertFacCF2NTLzz_pEX (buf1, NTLMipo);
     118  NTLbuf2= convertFacCF2NTLzz_pEX (buf2, NTLMipo);
     119  tryNTLXGCD (NTLbuf3, NTLS, NTLT, NTLbuf1, NTLbuf2, fail);
     120  if (fail)
     121    return;
     122  S= convertNTLzz_pEX2CF (NTLS, x, M.mvar());
     123  T= convertNTLzz_pEX2CF (NTLT, x, M.mvar());
     124#else
    102125  tryExtgcd (buf1, buf2, M, buf3, S, T, fail);
    103126  if (fail)
    104127    return;
     128#endif
    105129  result.append (S);
    106130  result.append (T);
     
    109133  for (; i.hasItem(); i++)
    110134  {
     135#ifdef HAVE_NTL
     136    NTLbuf1= convertFacCF2NTLzz_pEX (i.getItem(), NTLMipo);
     137    tryNTLXGCD (NTLbuf3, NTLS, NTLT, NTLbuf3, NTLbuf1, fail);
     138    if (fail)
     139      return;
     140    S= convertNTLzz_pEX2CF (NTLS, x, M.mvar());
     141    T= convertNTLzz_pEX2CF (NTLT, x, M.mvar());
     142#else
    111143    buf1= i.getItem();
    112144    tryExtgcd (buf3, buf1, M, buf3, S, T, fail);
    113145    if (fail)
    114146      return;
     147#endif
    115148    CFListIterator k= factors;
    116149    for (CFListIterator j= result; j.hasItem(); j++, k++)
     
    417450  CanonicalForm modulus= p;
    418451  int d= b.getk();
     452  modpk b2;
    419453  for (int i= 1; i < d; i++)
    420454  {
     
    423457    coeffE= coeffE.mapinto();
    424458    setCharacteristic (0);
     459    b2= modpk (p, d - i);
    425460    if (!coeffE.isZero())
    426461    {
     
    432467      {
    433468        setCharacteristic (p);
    434         g= mulNTL (coeffE, j.getItem());
     469        g= modNTL (coeffE, bufFactors[ii]);
     470        g= mulNTL (g, j.getItem());
    435471        g= modNTL (g, bufFactors[ii]);
    436472        setCharacteristic (0);
    437473        k.getItem() += g.mapinto()*modulus;
    438         e -= mulNTL (g.mapinto()*modulus, l.getItem(), b);
     474        e -= mulNTL (g.mapinto(), b2 (l.getItem()), b2)*modulus;
    439475        e= b(e);
    440476      }
     
    535571  Variable beta;
    536572  Off (SW_RATIONAL);
    537   if (mipoHasDen)
    538   {
    539     setReduce (alpha, false);
    540     modMipo= modMipo.mapinto();
    541     modMipo /= lc (modMipo);
    542     beta= rootOf (modMipo);
    543     setReduce (alpha, true);
    544   }
     573  setReduce (alpha, false);
     574  modMipo= modMipo.mapinto();
     575  modMipo /= lc (modMipo);
     576  beta= rootOf (modMipo);
     577  setReduce (alpha, true);
    545578
    546579  setReduce (alpha, false);
    547580  for (k= 0; k < factors.length(); k++)
    548581  {
    549     if (!mipoHasDen)
    550       bufFactors [k]= bufFactors[k].mapinto();
    551     else
    552     {
    553       bufFactors [k]= bufFactors[k].mapinto();
    554       bufFactors [k]= replacevar (bufFactors[k], alpha, beta);
    555     }
     582    bufFactors [k]= bufFactors[k].mapinto();
     583    bufFactors [k]= replacevar (bufFactors[k], alpha, beta);
    556584  }
    557585  setReduce (alpha, true);
     
    596624  recResult= mapinto (recResult);
    597625  setReduce (alpha, true);
    598   if (mipoHasDen)
    599   {
    600     for (CFListIterator i= recResult; i.hasItem(); i++)
    601       i.getItem()= replacevar (i.getItem(), alpha, beta);
    602   }
     626
     627  for (CFListIterator i= recResult; i.hasItem(); i++)
     628    i.getItem()= replacevar (i.getItem(), alpha, beta);
    603629
    604630  setCharacteristic (0);
     
    606632  CanonicalForm modulus= p;
    607633  int d= b.getk();
     634  modpk b2;
    608635  for (int i= 1; i < d; i++)
    609636  {
     
    621648    if (mipoHasDen)
    622649      coeffE= replacevar (coeffE, gamma, beta);
     650    else
     651      coeffE= replacevar (coeffE, alpha, beta);
    623652    setCharacteristic (0);
     653    b2= modpk (p, d - i);
    624654    if (!coeffE.isZero())
    625655    {
     
    631661      {
    632662        setCharacteristic (p);
    633         setReduce (alpha, false);
    634         g= mulNTL (coeffE, j.getItem());
     663        g= modNTL (coeffE, bufFactors[ii]);
     664        g= mulNTL (g, j.getItem());
    635665        g= modNTL (g, bufFactors[ii]);
    636         setReduce (alpha, true);
    637666        setCharacteristic (0);
    638667        if (mipoHasDen)
     
    640669          setReduce (beta, false);
    641670          k.getItem() += replacevar (g.mapinto()*modulus, beta, gamma);
    642           e -= mulNTL (replacevar (g.mapinto(), beta, gamma)*modulus,
    643                                    l.getItem(), b);
     671          e -= mulNTL (replacevar (g.mapinto(), beta, gamma),
     672                       b2 (l.getItem()), b2)*modulus;
    644673          setReduce (beta, true);
    645674        }
    646675        else
    647676        {
    648           k.getItem() += g.mapinto()*modulus;
    649           e -= mulNTL (g.mapinto()*modulus, l.getItem(), b);
     677          setReduce (beta, false);
     678          k.getItem() += replacevar (g.mapinto()*modulus, beta, alpha);
     679          e -= mulNTL (replacevar (g.mapinto(), beta, alpha),
     680                       b2 (l.getItem()), b2)*modulus;
     681          setReduce (beta, true);
    650682        }
    651683        e= b(e);
     
    657689  }
    658690
     691  return result;
     692}
     693
     694CFList
     695diophantineQa (const CanonicalForm& F, const CanonicalForm& G,
     696               const CFList& factors, modpk& b, const Variable& alpha)
     697{
     698  bool fail= false;
     699  CFList recResult;
     700  CanonicalForm modMipo, mipo;
     701  //here SW_RATIONAL is off
     702  On (SW_RATIONAL);
     703  mipo= getMipo (alpha);
     704  bool mipoHasDen= false;
     705  if (!bCommonDen (mipo).isOne())
     706  {
     707    mipo *= bCommonDen (mipo);
     708    mipoHasDen= true;
     709  }
     710  Off (SW_RATIONAL);
     711  int p= b.getp();
     712  setCharacteristic (p);
     713  setReduce (alpha, false);
     714  while (1)
     715  {
     716    setCharacteristic (p);
     717    modMipo= mapinto (mipo);
     718    modMipo /= lc (modMipo);
     719    tryDiophantine (recResult, mapinto (F), mapinto (factors), modMipo, fail);
     720    if (fail)
     721    {
     722      int i= 0;
     723      while (cf_getBigPrime (i) < p)
     724        i++;
     725      findGoodPrime (F, i);
     726      findGoodPrime (G, i);
     727      p=cf_getBigPrime(i);
     728      b = coeffBound( G, p, mipo );
     729      modpk bb= coeffBound (F, p, mipo );
     730      if (bb.getk() > b.getk() ) b=bb;
     731      fail= false;
     732    }
     733    else
     734      break;
     735  }
     736  setReduce (alpha, true);
     737  setCharacteristic (0);
     738
     739  Variable gamma= alpha;
     740  CanonicalForm den;
     741  if (mipoHasDen)
     742  {
     743    On (SW_RATIONAL);
     744    modMipo= getMipo (alpha);
     745    den= bCommonDen (modMipo);
     746    modMipo *= den;
     747    Off (SW_RATIONAL);
     748    setReduce (alpha, false);
     749    gamma= rootOf (b (modMipo*b.inverse (den)));
     750    setReduce (alpha, true);
     751  }
     752
     753  Variable x= Variable (1);
     754  CanonicalForm buf1, buf2, buf3, S;
     755  CFList bufFactors= factors;
     756  CFListIterator i= bufFactors;
     757  if (mipoHasDen)
     758  {
     759    for (; i.hasItem(); i++)
     760      i.getItem()= replacevar (i.getItem(), alpha, gamma);
     761  }
     762  i= bufFactors;
     763  CFList result;
     764  if (i.hasItem())
     765    i++;
     766  buf1= 0;
     767  CanonicalForm Freplaced;
     768  if (mipoHasDen)
     769  {
     770    Freplaced= replacevar (F, alpha, gamma);
     771    buf2= divNTL (Freplaced, replacevar (i.getItem(), alpha, gamma), b);
     772  }
     773  else
     774    buf2= divNTL (F, i.getItem(), b);
     775  ZZ_p::init (convertFacCF2NTLZZ (b.getpk()));
     776  ZZ_pX NTLmipo= to_ZZ_pX (convertFacCF2NTLZZX (getMipo (gamma)));
     777  ZZ_pE::init (NTLmipo);
     778  ZZ_pEX NTLS, NTLT, NTLbuf3;
     779  ZZ_pEX NTLbuf1= convertFacCF2NTLZZ_pEX (buf1, NTLmipo);
     780  ZZ_pEX NTLbuf2= convertFacCF2NTLZZ_pEX (buf2, NTLmipo);
     781  XGCD (NTLbuf3, NTLS, NTLT, NTLbuf1, NTLbuf2);
     782  result.append (b (convertNTLZZ_pEX2CF (NTLS, x, gamma)));
     783  result.append (b (convertNTLZZ_pEX2CF (NTLT, x, gamma)));
     784  if (i.hasItem())
     785    i++;
     786  for (; i.hasItem(); i++)
     787  {
     788    if (mipoHasDen)
     789      buf1= divNTL (Freplaced, i.getItem(), b);
     790    else
     791      buf1= divNTL (F, i.getItem(), b);
     792    XGCD (NTLbuf3, NTLS, NTLT, NTLbuf3, convertFacCF2NTLZZ_pEX (buf1, NTLmipo));
     793    CFListIterator k= bufFactors;
     794    S= convertNTLZZ_pEX2CF (NTLS, x, gamma);
     795    for (CFListIterator j= result; j.hasItem(); j++, k++)
     796    {
     797      j.getItem()= mulNTL (j.getItem(), S, b);
     798      j.getItem()= modNTL (j.getItem(), k.getItem(), b);
     799    }
     800    result.append (b (convertNTLZZ_pEX2CF (NTLT, x, gamma)));
     801  }
    659802  return result;
    660803}
     
    674817      if (b.getp() != 0)
    675818      {
    676         CFList result= diophantineHenselQa (F, G, factors, b, v);
     819        CFList result= diophantineQa (F, G, factors, b, v);
    677820        return result;
    678821      }
  • factory/facMul.cc

    rc90500 r3e7db4  
    503503  ASSERT (F.isUnivariate() && G.isUnivariate(), "expected univariate polys");
    504504  ASSERT (F.level() == G.level(), "expected polys of same level");
    505   zz_p::init (getCharacteristic());
     505  if (fac_NTL_char != getCharacteristic())
     506  {
     507    fac_NTL_char= getCharacteristic();
     508    zz_p::init (getCharacteristic());
     509  }
    506510  Variable alpha;
    507511  CanonicalForm result;
     
    619623  ASSERT (F.isUnivariate() && G.isUnivariate(), "expected univariate polys");
    620624  ASSERT (F.level() == G.level(), "expected polys of same level");
    621   zz_p::init (getCharacteristic());
     625  if (fac_NTL_char != getCharacteristic())
     626  {
     627    fac_NTL_char= getCharacteristic();
     628    zz_p::init (getCharacteristic());
     629  }
    622630  Variable alpha;
    623631  CanonicalForm result;
     
    764772  ASSERT (F.isUnivariate() && G.isUnivariate(), "expected univariate polys");
    765773  ASSERT (F.level() == G.level(), "expected polys of same level");
    766   zz_p::init (getCharacteristic());
     774  if (fac_NTL_char != getCharacteristic())
     775  {
     776    fac_NTL_char= getCharacteristic();
     777    zz_p::init (getCharacteristic());
     778  }
    767779  Variable alpha;
    768780  CanonicalForm result;
     
    20742086    int d1= degAx + degBx + 1;
    20752087    int d2= tmax (degAy, degBy);
    2076     zz_p::init (getCharacteristic());
     2088    if (fac_NTL_char != getCharacteristic())
     2089    {
     2090      fac_NTL_char= getCharacteristic();
     2091      zz_p::init (getCharacteristic());
     2092    }
    20772093    zz_pX NTLMipo= convertFacCF2NTLzzpX (getMipo (alpha));
    20782094    zz_pE::init (NTLMipo);
     
    27332749    return;
    27342750  }
    2735   if (!(B.level() == 1 && B.isUnivariate()) &&
    2736       (A.level() == 1 && A.isUnivariate()))
    2737   {
    2738     Q= 0;
    2739     R= A;
    2740     return;
    2741   }
    27422751
    27432752  Variable x= Variable (1);
     
    28342843  if (p > 0)
    28352844  {
    2836     zz_p::init (p);
     2845    if (fac_NTL_char != p)
     2846    {
     2847      fac_NTL_char= p;
     2848      zz_p::init (p);
     2849    }
    28372850    Variable alpha;
    28382851    if (hasFirstAlgVar (A, alpha) || hasFirstAlgVar (B, alpha))
  • factory/facMul.h

    rc90500 r3e7db4  
    155155         const CFList& M  ///< [in] contains only powers of Variables
    156156        );
     157
     158#ifdef HAVE_FLINT
     159/// division with remainder of univariate polynomials over Q and Q(a) using
     160/// Newton inversion, satisfying F=G*Q+R, deg(R) < deg(G)
     161void
     162newtonDivrem (const CanonicalForm& F, ///<[in] univariate poly
     163              const CanonicalForm& G, ///<[in] univariate poly
     164              CanonicalForm& Q,       ///<[in, out] quotient
     165              CanonicalForm& R        ///<[in, out] remainder
     166             );
     167#endif
     168
    157169#endif
    158170/* FAC_MUL_H */
  • factory/fac_ezgcd.cc

    rc90500 r3e7db4  
    492492  }
    493493
    494   if ( gcd_test_one( F, G, false ) )
     494  int dummy= 0;
     495  if ( gcd_test_one( F, G, false, dummy ) )
    495496  {
    496497    DEBDECLEVEL( cerr, "ezgcd" );
  • factory/fac_util.h

    rc90500 r3e7db4  
    5454/*ENDPUBLIC*/
    5555
    56 bool gcd_test_one ( const CanonicalForm & f, const CanonicalForm & g, bool swap );
     56bool gcd_test_one ( const CanonicalForm & f, const CanonicalForm & g, bool swap, int & d );
    5757
    5858CanonicalForm ezgcd ( const CanonicalForm & f, const CanonicalForm & g );
  • factory/libfac/charset/alg_factor.cc

    rc90500 r3e7db4  
    7676{
    7777    current++;
    78 }
    79 
    80 // replacement for factory's broken psr
    81 static CanonicalForm
    82 mypsr ( const CanonicalForm &rr, const CanonicalForm &vv, const Variable & x )
    83 {
    84   CanonicalForm r=rr, v=vv, l, test, lu, lv, t, retvalue;
    85   int dr, dv, d,n=0;
    86 
    87 
    88   dr = degree( r, x );
    89   dv = degree( v, x );
    90   if (dv <= dr) {l=LC(v,x); v = v -l*power(x,dv);}
    91   else { l = 1; }
    92   d= dr-dv+1;
    93   while ( ( dv <= dr  ) && ( r != r.genZero()) ){
    94     test = power(x,dr-dv)*v*LC(r,x);
    95     if ( dr == 0 ) { r= CanonicalForm(0); }
    96     else { r= r - LC(r,x)*power(x,dr); }
    97     r= l*r -test;
    98     dr= degree(r,x);
    99     n+=1;
    100   }
    101   r= power(l, d-n)*r;
    102   return r;
    10378}
    10479
  • factory/libfac/charset/algfactor.cc

    rc90500 r3e7db4  
    4343}
    4444
     45/* unused functions:
    4546static CFFList
    4647myDifference(const CFFList & Inputlist1,const CFFList & Inputlist2){
     
    6566  }
    6667return 1;
    67 }
     68} */
    6869
    6970#ifdef CHARSETNADEBUG
  • factory/libfac/charset/charset.cc

    rc90500 r3e7db4  
    236236        if ( ! same( iitem, jitem ) )
    237237          if ( ! member(jitem, mem))
     238          {
    238239            if ( contractsub(iitem, jitem) ){
    239240              ts.append(jitem); mem.append(jitem);
     
    243244                ts.append(iitem);
    244245              }
     246          }
    245247      }
    246248  }
     
    515517  }
    516518  //  CERR << "ind= " << ind << "\n";
    517   if ( (ind == 1) ) //&& ( as.length() > 1) )
     519  if ( ind == 1 ) //&& ( as.length() > 1) )
    518520  {
    519521    if ( irreducible(AS) )
  • factory/libfac/charset/csutil.cc

    rc90500 r3e7db4  
    657657    elem = i.getItem();
    658658    if ( ! elem.isEmpty() )
     659    {
    659660      if ( length <= elem.length() ){ ppi2.append(elem); }
    660661      else { ppi1.append(elem); }
     662    }
    661663  }
    662664}
  • factory/libfac/factor/Factor.cc

    rc90500 r3e7db4  
    11///////////////////////////////////////////////////////////////////////////////
    2 static const char * errmsg = "\nYou found a bug!\nPlease inform singular@mathematik.uni-kl.de\nPlease include above information and your input (the ideal/polynomial and characteristic) in your bug-report.\nThank you.";
     2/*static const char * errmsg = "\nYou found a bug!\nPlease inform singular@mathematik.uni-kl.de\nPlease include above information and your input (the ideal/polynomial and characteristic) in your bug-report.\nThank you.";*/
    33///////////////////////////////////////////////////////////////////////////////
    44// FACTORY - Includes
  • factory/libfac/factor/SqrFree.cc

    rc90500 r3e7db4  
    11///////////////////////////////////////////////////////////////////////////////
    22// emacs edit mode for this file is -*- C++ -*-
    3 static const char * errmsg = "\nYou found a bug!\nPlease inform singular@mathematik.uni-kl.de\n Please include above information and your input (the ideal/polynomial and characteristic) in your bug-report.\nThank you.";
     3/*static const char * errmsg = "\nYou found a bug!\nPlease inform singular@mathematik.uni-kl.de\n Please include above information and your input (the ideal/polynomial and characteristic) in your bug-report.\nThank you.";*/
    44///////////////////////////////////////////////////////////////////////////////
    55// FACTORY - Includes
  • findexec/configure.ac

    rc90500 r3e7db4  
    88AM_MAINTAINER_MODE
    99AM_INIT_AUTOMAKE([-Wall foreign subdir-objects]) # -Wno-extra-portability -Werror silent-rules
     10m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES])
     11m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
     12
    1013
    1114dnl Check if build env is sane
  • kernel/fglmvec.cc

    rc90500 r3e7db4  
    133133    return elems[i - 1];
    134134  }
    135   const number getconstelem (int i) const
     135  number getconstelem (int i) const
    136136  {
    137137    fglmASSERT (0 < i && i <= N, "getconstelem: wrong index");
     
    440440}
    441441
    442 const number fglmVector::getconstelem (int i) const
     442number fglmVector::getconstelem (int i) const
    443443{
    444444  return rep->getconstelem (i);
  • kernel/fglmvec.h

    rc90500 r3e7db4  
    5454    friend fglmVector operator * ( const number n, const fglmVector & v );
    5555
    56     const number getconstelem( int i ) const;
     56    number getconstelem( int i ) const;
    5757    number & getelem( int i );
    5858    void setelem( int i, number & n );
  • kernel/hutil.cc

    rc90500 r3e7db4  
    10251025  if ((x==NULL) || (lm > lx))
    10261026  {
    1027     if ((x!=NULL)&&(lx>0)) omFreeSize((ADDRESS)x, lx * sizeof(scmon));
     1027    /* according to http://www.singular.uni-kl.de:8002/trac/ticket/463#comment:4
     1028     * we need to work around a compiler bug:
     1029    * if ((x!=NULL)&&(lx>0)) omFreeSize((ADDRESS)x, lx * sizeof(scmon));
     1030    */
     1031    if (x!=NULL) if (lx>0) omFreeSize((ADDRESS)x, lx * sizeof(scmon));
    10281032    monmem->mo = x = (scfmon)omAlloc(lm * sizeof(scmon));
    10291033    monmem->a = lm;
  • kernel/ideals.cc

    rc90500 r3e7db4  
    751751ideal idLiftStd (ideal  h1, matrix* ma, tHomog hi, ideal * syz)
    752752{
    753   int   i, j, k, t, inputIsIdeal=id_RankFreeModule(h1,currRing);
     753  int  i, j, t, inputIsIdeal=id_RankFreeModule(h1,currRing);
     754  long k;
    754755  poly  p=NULL, q;
    755756  intvec *w=NULL;
     
    778779  SI_SAVE_OPT2(save2);
    779780
    780   k=si_max(1,(int)id_RankFreeModule(h1,currRing));
     781  k=si_max((long)1,id_RankFreeModule(h1,currRing));
    781782
    782783  if ((k==1) && (!lift3)) si_opt_2 |=Sy_bit(V_IDLIFT);
  • kernel/kstd1.cc

    rc90500 r3e7db4  
    21562156    w = &temp_w;
    21572157  }
    2158   if ((h==testHomog)
    2159   )
     2158  if (h==testHomog)
    21602159  {
    21612160    if (strat->ak == 0)
  • kernel/kstdfac.cc

    rc90500 r3e7db4  
    905905  strat->LazyDegree = 1;
    906906  strat->ak = id_RankFreeModule(F,currRing);
    907   if ((h==testHomog))
     907  if (h==testHomog)
    908908  {
    909909    if (strat->ak==0)
  • kernel/kutil.cc

    rc90500 r3e7db4  
    33893389  {
    33903390    int j;
    3391     BOOLEAN new_pair=FALSE;
    33923391
    33933392    for (j=0; j<=k; j++)
     
    33983397      if ( iCompH == pGetComp(strat->S[j]) )
    33993398      {
    3400         {
    3401           if (enterOneStrongPoly(j,h,ecart,isFromQ,strat, atR))
    3402             new_pair=TRUE;
    3403         }
     3399        enterOneStrongPoly(j,h,ecart,isFromQ,strat, atR);
    34043400      }
    34053401    }
     
    59635959    strat->syzl       = strat->syzmax = ps;
    59645960    strat->syzidxmax  = comp;
    5965 #ifdef DEBUGF5 || DEBUGF51
     5961#if defined(DEBUGF5) || defined(DEBUGF51)
    59665962    printf("------------- GENERATING SYZ RULES NEW ---------------\n");
    59675963#endif
     
    81048100      return r;
    81058101    }
    8106       ring res = rCopy0(r, FALSE, TRUE);
    8107       for (int i=1; i<n-1; i++)
    8108       {
    8109         res->order[i] = res->order[i-1];
    8110         res->block0[i] = res->block0[i-1];
    8111         res->block1[i] = res->block1[i-1];
    8112         res->wvhdl[i] = res->wvhdl[i-1];
    8113       }
     8102    ring res = rCopy0(r, FALSE, TRUE);
     8103    for (int i=1; i<n-1; i++)
     8104    {
     8105      res->order[i] = res->order[i-1];
     8106      res->block0[i] = res->block0[i-1];
     8107      res->block1[i] = res->block1[i-1];
     8108      res->wvhdl[i] = res->wvhdl[i-1];
     8109    }
    81148110
    81158111    // new 1st block
     
    81378133    }
    81388134#endif
    8139   strat->tailRing = res;
    8140   return (res);
    8141   }
     8135    strat->tailRing = res;
     8136    return (res);
     8137  }
     8138 
    81428139  // not incremental => use Schreyer order
    81438140  // this is done by a trick when initializing the signatures
     
    81488145  // => we do not need to change the underlying polynomial ring at all!
    81498146
     8147  // UPDATE/NOTE/TODO: use induced Schreyer ordering 'IS'!!!!????
    81508148
    81518149  /*
     
    82448242  }
    82458243  */
     8244 
     8245  assume(FALSE);
     8246  return(NULL);
    82468247}
    82478248
  • kernel/tgbgauss.h

    rc90500 r3e7db4  
    1212//#include "tgb_internal.h"
    1313
    14 struct slimgb_alg;
     14class slimgb_alg;
    1515
    1616class tgb_matrix{
  • libpolys/coeffs/Makefile.am

    rc90500 r3e7db4  
    5151endif
    5252
    53 AMLDFLAGS = -L${abs_top_builddir}/coeffs -L${abs_top_builddir}/reporter -L${top_builddir}/misc ${USE_FACTORY} -L${top_builddir}/../omalloc -L${abs_top_builddir}/../findexec
     53AMLDFLAGS = -L${top_builddir}/coeffs -L${top_builddir}/reporter -L${top_builddir}/misc ${USE_FACTORY} -L${top_builddir}/../omalloc -L${top_builddir}/../findexec
    5454
    5555TESTS_ENVIRONMENT = SINGULARPATH='${top_srcdir}/../factory:${top_builddir}/../factory'
  • libpolys/coeffs/longrat.cc

    rc90500 r3e7db4  
    25452545    if (mpz_cmp(tmp,P)<0)
    25462546    {
    2547        // return N/B
    2548        z=ALLOC_RNUMBER();
    2549        #ifdef LDEBUG
    2550        z->debug=123456;
    2551        #endif
    25522547       if (mpz_isNeg(B))
    25532548       {
     
    25552550         mpz_neg(N,N);
    25562551       }
    2557        mpz_init_set(z->z,N);
    2558        mpz_init_set(z->n,B);
    2559        z->s = 0;
    2560        nlNormalize(z,r);
     2552       // check for gcd(N,B)==1
     2553       mpz_gcd(tmp,N,B);
     2554       if (mpz_cmp_ui(tmp,1)==0)
     2555       {
     2556         // return N/B
     2557         z=ALLOC_RNUMBER();
     2558         #ifdef LDEBUG
     2559         z->debug=123456;
     2560         #endif
     2561         mpz_init_set(z->z,N);
     2562         mpz_init_set(z->n,B);
     2563         z->s = 0;
     2564         nlNormalize(z,r);
     2565       }
     2566       else
     2567       {
     2568         // return nN (the input) instead of "fail"
     2569         z=nlCopy(nN,r);
     2570       }
    25612571       break;
    25622572    }
  • libpolys/coeffs/rmodulon.cc

    rc90500 r3e7db4  
    4040{
    4141  /* test, if r is an instance of nInitCoeffs(n,parameter) */
    42   return (n==n_Zn) && (mpz_cmp(r->modNumber,(mpz_ptr)parameter)==0);
     42  return (n==n_Zn) && (mpz_cmp_ui(r->modNumber,(long)parameter)==0);
    4343}
    4444
  • libpolys/configure.ac

    rc90500 r3e7db4  
    88AM_MAINTAINER_MODE
    99AM_INIT_AUTOMAKE([-Wall foreign subdir-objects]) # -Wno-extra-portability -Werror silent-rules
     10m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES])
     11m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
     12
    1013
    1114dnl Check if build env is sane
  • libpolys/misc/auxiliary.h.in

    rc90500 r3e7db4  
    161161// #endif
    162162
    163 static const int MAX_INT_LEN= 11;
    164163typedef void* ADDRESS;
    165164
  • libpolys/misc/intvec.h

    rc90500 r3e7db4  
    2323
    2424  inline intvec(int l = 1)
    25     {
    26       v = (int *)omAlloc0(sizeof(int)*l);
    27       row = l;
    28       col = 1;
    29     }
     25  {
     26    assume(l > 0);
     27    v = (int *)omAlloc0(sizeof(int)*l);
     28    row = l;
     29    col = 1;
     30  }
    3031  intvec(int s, int e);
    3132  intvec(int r, int c, int init);
     
    3536    row = iv->rows();
    3637    col = iv->cols();
     38    assume(row > 0);
     39    assume(col > 0);
    3740    if (row*col>0)
    3841    {
     
    111114  }
    112115#if 0
     116  // TODO: no omalloc Bin (de-)/allocation?
    113117  void* operator new ( size_t size )
    114118  {
  • libpolys/misc/mylimits.h

    rc90500 r3e7db4  
    99#define _MYLIMITS_H
    1010
    11 /* Maximum/minimum value an `signed int' can hold. */
    12 // #define MAX_INT_VAL        2147483647
    13 #ifndef MAX_INT_VAL
    14 #define MAX_INT_VAL     (2147483647)
    15 #endif
    16 
    17 #ifndef MIN_INT_VAL
    18 #define MIN_INT_VAL     (-MAX_INT_VAL-1)
    19 #endif
    20 
    21 
    22 // #define ULONG_MAX (~0UL) // ??
    23 #ifndef ULONG_MAX
    24 #define ULONG_MAX (~0L)
    25 #endif
    26 
    27 // TODO: fixing the following BUG (!?) leads to wrong ring::bitmask
    28 // #if ~0UL != 4294967295UL
    29 #ifndef LONG_MAX
    30 #if ~0UL == 4294967295UL
    31 #define LONG_MAX 9223372036854775807L
    32 #else
    33 #define LONG_MAX 2147483647L
    34 #endif
    35 #endif
     11/* Maximum/minimum value an `signed int' (in Singular interpreter) can hold. */
     12const int MAX_INT_VAL = 0x7fffffff;
     13const int MAX_INT_LEN = 11;
     14#include <limits.h>
    3615
    3716#endif /* _MYLIMITS_H */
  • libpolys/polys/Makefile.am

    rc90500 r3e7db4  
    155155
    156156templates_p_Procs_Generate_LDADD    = -lreporter -lmisc -lomalloc -lfindexec
    157 templates_p_Procs_Generate_LDFLAGS  = -L${abs_builddir} -L${abs_top_builddir}/coeffs -L${abs_top_builddir}/reporter -L${top_builddir}/misc -L${abs_top_builddir}/../omalloc -L${abs_top_builddir}/../findexec
     157templates_p_Procs_Generate_LDFLAGS  = -L${builddir} -L${top_builddir}/coeffs -L${top_builddir}/reporter -L${top_builddir}/misc -L${top_builddir}/../omalloc -L${top_builddir}/../findexec
    158158
    159159templates/p_Procs.inc: templates/p_Procs_Generate
  • libpolys/polys/ext_fields/algext.cc

    rc90500 r3e7db4  
    299299{
    300300  naTest(a); naTest(b);
    301 
    302301  /// simple tests
    303   if (a == b) return TRUE;
    304   if ((a == NULL) && (b != NULL)) return FALSE;
    305   if ((b == NULL) && (a != NULL)) return FALSE;
    306 
    307   /// deg test
    308   int aDeg = 0;
    309   if (a != NULL) aDeg = p_Totaldegree((poly)a, naRing);
    310   int bDeg = 0;
    311   if (b != NULL) bDeg = p_Totaldegree((poly)b, naRing);
    312   if (aDeg != bDeg) return FALSE;
    313 
    314   /// subtraction test
    315   number c = naSub(a, b, cf);
    316   BOOLEAN result = naIsZero(c, cf);
    317   naDelete(&c, cf);
    318   return result;
     302  if (a == NULL) return (b == NULL);
     303  if (b == NULL) return (a == NULL);
     304  return p_EqualPolys((poly)a,(poly)b,naRing);
    319305}
    320306