Changeset 7bbbef in git for coeffs/coeffs.h


Ignore:
Timestamp:
May 31, 2010, 3:09:00 PM (14 years ago)
Author:
Hans Schoenemann <hannes@…>
Branches:
(u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
Children:
a98f56d0b08e7bf18c6536ebf73eecb1db4bc4eb
Parents:
b695dd84dfeeea2e9ac126f42fc4eb453f454056
git-author:
Hans Schoenemann <hannes@mathematik.uni-kl.de>2010-05-31 15:09:00+02:00
git-committer:
Mohamed Barakat <mohamed.barakat@rwth-aachen.de>2011-11-09 11:54:59+01:00
Message:
access macros -> coeffs.h, internal proc renamed (n.. -> cf...)
File:
1 edited

Legend:

Unmodified
Added
Removed
  • coeffs/coeffs.h

    rb695dd r7bbbef  
    7878                                // or NULL
    7979   // general stuff
    80    numberfunc nMult, nSub ,nAdd ,nDiv, nIntDiv, nIntMod, nExactDiv;
     80   numberfunc cfMult, cfSub ,cfAdd ,cfDiv, cfIntDiv, cfIntMod, cfExactDiv;
    8181   /// init with an integer
    8282   number  (*cfInit)(int i,const coeffs r);
    83    number  (*nPar)(int i, const coeffs r);
    84    int     (*nParDeg)(number n, const coeffs r);
     83   number  (*cfPar)(int i, const coeffs r);
     84   int     (*cfParDeg)(number n, const coeffs r);
    8585   /// how complicated, (0) => 0, or positive
    86    int     (*nSize)(number n, const coeffs r);
     86   int     (*cfSize)(number n, const coeffs r);
    8787   /// convertion, 0 if impossible
    88    int     (*n_Int)(number &n, const coeffs r);
     88   int     (*cfInt)(number &n, const coeffs r);
    8989#ifdef HAVE_RINGS
    90    int     (*nDivComp)(number a,number b,const coeffs r);
    91    BOOLEAN (*nIsUnit)(number a,const coeffs r);
    92    number  (*nGetUnit)(number a,const coeffs r);
    93    number  (*nExtGcd)(number a, number b, number *s, number *t,const coeffs r);
     90   int     (*cfDivComp)(number a,number b,const coeffs r);
     91   BOOLEAN (*cfIsUnit)(number a,const coeffs r);
     92   number  (*cfGetUnit)(number a,const coeffs r);
     93   number  (*cfExtGcd)(number a, number b, number *s, number *t,const coeffs r);
    9494#endif
    9595   /// changes argument  inline: a:= -a
    96    number  (*nNeg)(number a, const coeffs r);
     96   number  (*cfNeg)(number a, const coeffs r);
    9797   /// return 1/a
    98    number  (*nInvers)(number a, const coeffs r);
     98   number  (*cfInvers)(number a, const coeffs r);
    9999   /// return a copy of a
    100100   number  (*cfCopy)(number a, const coeffs r);
    101    number  (*nRePart)(number a, const coeffs r);
    102    number  (*nImPart)(number a, const coeffs r);
     101   number  (*cfRePart)(number a, const coeffs r);
     102   number  (*cfImPart)(number a, const coeffs r);
    103103   void    (*cfWrite)(number &a, const coeffs r);
    104    const char *  (*nRead)(const char * s, number * a, const coeffs r);
    105    void    (*nNormalize)(number &a, const coeffs r);
    106    BOOLEAN (*nGreater)(number a,number b, const coeffs r),
     104   const char *  (*cfRead)(const char * s, number * a, const coeffs r);
     105   void    (*cfNormalize)(number &a, const coeffs r);
     106   BOOLEAN (*cfGreater)(number a,number b, const coeffs r),
    107107#ifdef HAVE_RINGS
    108            (*nDivBy)(number a, number b, const coeffs r),
     108           (*cfDivBy)(number a, number b, const coeffs r),
    109109#endif
    110110            /// tests
    111            (*nEqual)(number a,number b, const coeffs r),
    112            (*nIsZero)(number a, const coeffs r),
    113            (*nIsOne)(number a, const coeffs r),
    114            (*nIsMOne)(number a, const coeffs r),
    115            (*nGreaterZero)(number a, const coeffs r);
    116    void    (*nPower)(number a, int i, number * result, const coeffs r);
     111           (*cfEqual)(number a,number b, const coeffs r),
     112           (*cfIsZero)(number a, const coeffs r),
     113           (*cfIsOne)(number a, const coeffs r),
     114           (*cfIsMOne)(number a, const coeffs r),
     115           (*cfGreaterZero)(number a, const coeffs r);
     116   void    (*cfPower)(number a, int i, number * result, const coeffs r);
    117117   number  (*cfGetDenom)(number &n, const coeffs r);
    118118   number  (*cfGetNumerator)(number &n, const coeffs r);
    119    number  (*nGcd)(number a, number b, const coeffs r);
    120    number  (*nLcm)(number a, number b, const coeffs r);
     119   number  (*cfGcd)(number a, number b, const coeffs r);
     120   number  (*cfLcm)(number a, number b, const coeffs r);
    121121   void    (*cfDelete)(number * a, const coeffs r);
    122122   nMapFunc (*cfSetMap)(const coeffs src, const coeffs dst);
    123123
    124124   /// For extensions (writes into global string buffer)
    125    char *  (*nName)(number n, const coeffs r);
     125   char *  (*cfName)(number n, const coeffs r);
    126126
    127127   /// Inline: a := b
    128    void    (*nInpMult)(number &a, number b, const coeffs r);
     128   void    (*cfInpMult)(number &a, number b, const coeffs r);
    129129   /// maps the bigint i (from dummy) into the coeffs dst
    130    number  (*nInit_bigint)(number i, const coeffs dummy, const coeffs dst);
     130   number  (*cfInit_bigint)(number i, const coeffs dummy, const coeffs dst);
    131131
    132132#ifdef LDEBUG
    133133   /// Test: is "a" a correct number?
    134    BOOLEAN (*nDBTest)(number a, const char *f,const int l,const coeffs r);
     134   BOOLEAN (*cfDBTest)(number a, const char *f,const int l,const coeffs r);
    135135#endif
    136136
     
    157157
    158158};
    159 
    160 #endif
    161 
     159//
     160// test properties and type
     161/// Returns the type of coeffs domain
     162static inline n_coeffType getCoeffType(const coeffs r)
     163{
     164  return r->type;
     165}
     166
     167static inline int nInternalChar(const coeffs r)
     168{
     169  return r->ch;
     170}
     171
     172/// one-time initialisations for new coeffs
     173coeffs nInitChar(n_coeffType t, void * parameter);
     174/// undo all initialisations
     175void nKillChar(coeffs r);
     176/// initialisations after each ring change
     177inline void nSetChar(coeffs r)
     178{
     179  if ((r!=NULL) && (r->cfSetChar!=NULL)) r->cfSetChar(r);
     180}
     181
     182//
     183// the access macros:
     184
     185#define n_Copy(n, r)          (r)->cfCopy(n,r)
     186#define n_Delete(n, r)        (r)->cfDelete(n,r)
     187#define n_Mult(n1, n2, r)     (r)->cfMult(n1, n2,r)
     188#define n_Add(n1, n2, r)      (r)->cfAdd(n1, n2,r)
     189#define n_IsZero(n, r)        (r)->cfIsZero(n,r)
     190#define n_Equal(n1, n2, r)    (r)->cfEqual(n1, n2,r)
     191#define n_Neg(n, r)           (r)->cfNeg(n,r)
     192#define n_Sub(n1, n2, r)      (r)->cfSub(n1, n2,r)
     193#define n_GetChar(r)          nInternalChar(r)
     194#define n_Init(i, r)          (r)->cfInit(i,r)
     195#define n_IsOne(n, r)         (r)->cfIsOne(n,r)
     196#define n_IsMOne(n, r)        (r)->cfIsMOne(n,r)
     197#define n_GreaterZero(n, r)   (r)->cfGreaterZero(n,r)
     198#define n_Write(n, r)         (r)->cfWrite(n,r)
     199#define n_Normalize(n, r)     (r)->cfNormalize(n,r)
     200#define n_Gcd(a, b, r)        (r)->cfGcd(a,b,r)
     201#define n_IntDiv(a, b, r)     (r)->cfIntDiv(a,b,r)
     202#define n_Div(a, b, r)        (r)->cfDiv(a,b,r)
     203#define n_Invers(a, r)        (r)->cfInvers(a,r)
     204#define n_ExactDiv(a, b, r)   (r)->cfExactDiv(a,b,r)
     205#define n_Test(a,r)           (r)->cfDBTest(a,r,__FILE__,__LINE__)
     206
     207#define n_InpMult(a, b, r)    (r)->cfInpMult(a,b,r)
     208#define n_Power(a, b, res, r) (r)->cfPower(a,b,res,r)
     209#define n_Size(n,r)           (r)->cfSize(n,r)
     210#define n_GetDenom(N,r)       (r)->cfGetDenom((N),r)
     211#define n_GetNumerator(N,r)   (r)->cfGetNumerator((N),r)
     212
     213#define n_New(n, r)           nNew(n)
     214
     215
     216// and the routines w.r.t. currRing:
     217// (should only be used in the context of currRing, i.e. in the interpreter)
     218void           nNew(number * a);
     219#define nCopy(n)          (currRing->cf)->cfCopy(n,currRing->cf)
     220#define nDelete(n)        (currRing->cf)->cfDelete(n,currRing->cf)
     221#define nMult(n1, n2)     (currRing->cf)->nMult(n1, n2,currRing->cf)
     222#define nAdd(n1, n2)      (currRing->cf)->nAdd(n1, n2,currRing->cf)
     223#define nIsZero(n)        (currRing->cf)->nIsZero(n,currRing->cf)
     224#define nEqual(n1, n2)    (currRing->cf)->nEqual(n1, n2,currRing->cf)
     225#define nNeg(n)           (currRing->cf)->nNeg(n,currRing->cf)
     226#define nSub(n1, n2)      (currRing->cf)->nSub(n1, n2,currRing->cf)
     227#define nGetChar()        nInternalChar(currRing->cf)
     228#define nInit(i)          (currRing->cf)->cfInit(i,currRing->cf)
     229#define nIsOne(n)         (currRing->cf)->nIsOne(n,currRing->cf)
     230#define nIsMOne(n)        (currRing->cf)->nIsMOne(n,currRing->cf)
     231#define nGreaterZero(n)   (currRing->cf)->nGreaterZero(n,currRing->cf)
     232#define nWrite(n)         (currRing->cf)->cfWrite(n,currRing->cf)
     233#define nNormalize(n)     (currRing->cf)->nNormalize(n,currRing->cf)
     234#define nGcd(a, b)        (currRing->cf)->nGcd(a,b,currRing->cf)
     235#define nIntDiv(a, b)     (currRing->cf)->nIntDiv(a,b,currRing->cf)
     236#define nDiv(a, b)        (currRing->cf)->nDiv(a,b,currRing->cf)
     237#define nInvers(a)        (currRing->cf)->nInvers(a,currRing->cf)
     238#define nExactDiv(a, b)   (currRing->cf)->nExactDiv(a,b,currRing->cf)
     239#define nTest(a)          (currRing->cf)->nDBTest(a,currRing->cf,__FILE__,__LINE__)
     240
     241#define nInpMult(a, b)    (currRing->cf)->nInpMult(a,b,currRing->cf)
     242#define nPower(a, b, res) (currRing->cf)->nPower(a,b,res,currRing->cf)
     243#define nSize(n)          (currRing->cf)->nSize(n,currRing->cf)
     244#define nGetDenom(N)      (currRing->cf)->cfGetDenom((N),currRing->cf)
     245#define nGetNumerator(N)  (currRing->cf)->cfGetNumerator((N),currRing->cf)
     246
     247#define nSetMap(R) (currRing->cf->cfSetMap(R,currRing))
     248
     249#endif
     250
Note: See TracChangeset for help on using the changeset viewer.