Changeset 9c11211 in git


Ignore:
Timestamp:
Jul 29, 2014, 12:16:26 PM (10 years ago)
Author:
Claus Fieker <fieker@…>
Branches:
(u'fieker-DuVal', '117eb8c30fc9e991c4decca4832b1d19036c4c65')(u'spielwiese', '621b9f8a1abfff16bce972b1d8d012d1e1ccb6ef')
Children:
d21b700adb5e8106ab69ce599d924b7818ffb9ad
Parents:
4a51c16a6a1512db2a1cb23591e79de775516f76
git-author:
Claus Fieker <fieker@mathematik.uni-kl.de>2014-07-29 12:16:26+02:00
git-committer:
Hans Schoenemann <hannes@mathematik.uni-kl.de>2014-07-29 13:38:41+02:00
Message:
comments
Location:
libpolys/coeffs
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • libpolys/coeffs/README.coeffs

    r4a51c1 r9c11211  
    1414-cfCoeffWrite
    1515-cfCoeffString
    16 -cfMult, cfSub ,cfAdd ,cfDiv
     16-cfMult, cfSub, cfAdd, cfDiv
     17  cfDiv is supposed to be a Euclidean division in rings that are meant
     18  to be Euclidean and an exact division otherwise.
    1719-cfInit
    1820-cfInt
    1921-cfMPZ
    2022-cfInpNeg
     23  negates (mult. by -1) in-place.
    2124-cfInvers
    2225-cfWriteLong
     
    2831-cfIsMOne
    2932-cfGreaterZero
    30 -cfPower
    3133-cfSetMap
    3234-cfQuot1
     35 appears to create a quotient ring modulo 1 element. Probably mainly
     36 supported by Z -> Zm and Zm -> Zn
    3337-ch
    3438
     
    3842-cfSetChar: if additional initializations to use numbers from this coeffs is needed (should not be needed)
    3943-cfIntMod: if the ring has a meaningful Euclidean structure
     44 In this case, this computes the remainder under the Euclidean division.
    4045-cfGcd, cfExtGcd,cfXExtGcd,cfEucNorm: if the ring (or a subring)  has a meaningful Euclidean structure
     46 +Gcd: the usual Gcd
     47 +ExtGcd(a,b) -> g = ea+fb, the usual extended version with co-factors
     48 +XExtGcd(a,b) -> (a,b)*((e,f)(u,v)) = (g,0) and the matrix is unimodular.
     49 If the Euclidean ring is a domain, one can compute the matrix from the normal
     50 ExtGcd, however in the presence of zero-divisors, this does not work, hence the
     51 more general function.
    4152-cfSubringGcd: if cf is q quotient field of a ring: Gcd of that ring
    4253  (example: Q: Gcd for Z, Q(t): Gcd for Z[t], Z/p(t): Gcd for Z/p[t])
     54  Z[t] has no gcd. Is there a function to get the ring as well?
    4355-cfAnn: in a principal ideal ring (with zero divisors)
     56 a generator for the annihilator
    4457-cfWriteFd,cfReadFd: for use of ssi
    4558-cfDelete: if has_simple_Alloc==0, otherwise noop
    4659-cfCopy: if has_simple_Alloc==0, otherwise trivial
    4760-iNumberOfParameters (otherwise 0)
     61  probably related to (multivariate) polynomial rings.
    4862-pParameterNames (otherwise NULL)
    4963-if cf is not a field: cfDivComp, cfIsUnit, cfGetUnit, cfDivBy
     64  +DivComp(a,b) returns 2 if b|a and a|b, -1 if b|a, 1 if a|b and 0 otherwise.
     65  +IsUnit
     66  +GetUnit(a) returns a unit u s.th. au is normalised (ie. positive for Z,
     67  a canonical rep in Z/mZ, a monic polynomial in K[x], ..)
     68  +DivBy(a,b) returns TRUE iff b divides a
    5069-cfDBTest: for debugging, noop otherwise
    5170-cfInitMPZ: otherwise via cfInit
    5271
    5372optional:
    54 -cfExactDiv (otherwise: it is cfDiv): for optimization
     73-cfExactDiv (otherwise: it is cfDiv): for optimization. Behaviour undefined if
     74  the division does not work
    5575-cfSize (otherwise: !cfIsZero(..))
     76  Question: is this a mathematical size or a printing size? ie. what is the use
     77  for it?
    5678-cfRePart (otherwise: cfCopy)
    5779-cfImPart (otherwise returns cfInit(0))
    5880-cfWriteShort (otherwise: cfWriteLong)
    59 -cfNormalize (otherwise: noop)
     81-cfNormalize (otherwise: noop) paired with cfGetUnit: a == Normalize(a)*GetUnit(a)
     82 Question: make GetUnit return the inverse?
    6083-cfGetDenom (otherwise cfInit(1))
     84 Question: what is the use? Is a*Den(a) mathematically integral or has no
     85 denominator in the current rep?
     86 Stupid example: take K=Q as a number field with basis 1/2. Then wrt to the basis
     87 1/2, the element 1/2 has no denominator, hence Den(1/2)=1. However...
    6188-cfGetNumerator (otherwiser cfCopy)
    6289-cfName (otherwise return NULL)
     90 Use?
    6391-cfInpMult (otherwise via cfMult/cfDelet): for optimization
    6492-cfInpAdd (otherwise via cfAdd/cfDelet): for optimization
    65 -cfFarey,cfChineseRemainder (otherwise: error)
     93-cfFarey:(x, M) find a/b in the quotient field of R sth. a = bx mod M and both
     94 a and b are suitable smaller than M. Implemented for Z -> Q currently.
     95-cfChineseRemainder (otherwise: error)
     96 takes arrays a and q of length r to find a single
     97 A = a[i]mod q[i]. A can be chosen in the symmetric or positive remainder.
     98 Question: do the q[i] have to be coprime?
     99
    66100-cfParDeg (otherwise: -1 for 0, 0 for non-zero)
     101 Use?
    67102-cfParameter (otherwise: error)
     103 Use?
    68104
    69105automatic:
     
    72108-type (by nInitChar)
    73109to describe:
    74 -cfLcm
     110-cfLcm for Euclidean rings the product divided by the (a) gcd.
    75111-cfNormalizeHelper
    76112-cfQuotRem
     113 returns both the Euclidean quotient and the remainder in one go.
    77114-cfRandom
     115 Question: random(Z)?
    78116-cfClearContent
    79117-cfClearDenominators
     118-cfPower only small exponents (machine int) supported right now.
    80119
  • libpolys/coeffs/bigintmat.h

    r4a51c1 r9c11211  
    197197    int findcolnonzero(int j); // ---"--- Spalte j
    198198    void getcol(int j, bigintmat *a); // Schreibt j-te Spalte in Vektor (Matrix) a
     199                                      // matrix needs to be pre-allocated
    199200    void getColRange(int j, int no, bigintmat *a); // copies col j..j+no-1 into cols 1..no of a
    200201    void getrow(int i, bigintmat *a); // Schreibt i-te Zeile in Vektor (Matrix) a
    201202    void setcol(int j, bigintmat *m); // Setzt j-te Spalte gleich ÃŒbergebenem Vektor (Matrix) m
    202203    void setrow(int i, bigintmat *m); // Setzt i-te Zeile gleich ÃŒbergebenem Vektor (Matrix) m
    203     void appendCol (bigintmat *a);
     204    void appendCol (bigintmat *a);  // horizontally joins the matrices. Old 1st
    204205    void extendCols (int i);
    205206    bool add(bigintmat *b); // Addiert zur Matrix die Matrix b dazu. Return false => an error occured
  • libpolys/coeffs/coeffs.h

    r4a51c1 r9c11211  
    398398#endif
    399399
    400   /*CF: for blackbox rings */
     400  /*CF: for blackbox rings, contains data needed to define the ring.
     401   * contents depends on the actual example.*/
    401402  void * data;
    402403#ifdef LDEBUG
    403404   // must be last entry:
    404405   /// Test: is "a" a correct number?
     406   // DB as in debug, not data base.
    405407   BOOLEAN (*cfDBTest)(number a, const char *f, const int l, const coeffs r);
    406408#endif
Note: See TracChangeset for help on using the changeset viewer.