Changeset bec902b in git


Ignore:
Timestamp:
Jun 23, 2010, 4:59:23 PM (13 years ago)
Author:
Martin Lee <martinlee84@…>
Branches:
(u'jengelh-datetime', 'ceac47cbc86fe4a15902392bdbb9bd2ae0ea02c6')(u'spielwiese', 'f875bbaccd0831e36aaed09ff6adeb3eb45aeb94')
Children:
ec997eb1e80a2da151d8d2d80c4034bc01febe72
Parents:
a0ce49c7c05b8b409237dc853e846599cae23aea
git-author:
Martin Lee <martinlee84@web.de>2010-06-23 16:59:23+02:00
git-committer:
Mohamed Barakat <mohamed.barakat@rwth-aachen.de>2011-11-09 11:55:17+01:00
Message:
fixed modulop, first changes to rintegers, added Zp to test
Location:
coeffs
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • coeffs/modulop.cc

    ra0ce49 rbec902b  
    318318}
    319319
    320 void npInitChar(coeffs r, int c)
    321 {
     320void npInitChar(coeffs r, void* p)
     321{
     322  int c= (int) (long) p;
    322323  int i, w;
    323324
  • coeffs/modulop.h

    ra0ce49 rbec902b  
    2424extern int npGen;
    2525
    26 void npInitChar(coeffs r, int ch);
     26void npInitChar(coeffs r, void* p);
    2727
    2828BOOLEAN npGreaterZero (number k, const coeffs r);
  • coeffs/rintegers.cc

    ra0ce49 rbec902b  
    2828 * Multiply two numbers
    2929 */
    30 number nrzMult (number a, number b)
     30number nrzMult (number a, number b, const coeffs r)
    3131{
    3232  int_number erg = (int_number) omAllocBin(gmp_nrz_bin);
     
    6363 * a solution and r, s, s.t. k = s*a + t*b
    6464 */
    65 number  nrzExtGcd (number a, number b, number *s, number *t)
     65number  nrzExtGcd (number a, number b, number *s, number *t, const coeffs r)
    6666{
    6767  int_number erg = (int_number) omAllocBin(gmp_nrz_bin);
     
    7777}
    7878
    79 void nrzPower (number a, int i, number * result)
     79void nrzPower (number a, int i, number * result, const coeffs r)
    8080{
    8181  int_number erg = (int_number) omAllocBin(gmp_nrz_bin);
     
    129129}
    130130
    131 number nrzAdd (number a, number b)
     131number nrzAdd (number a, number b, const coeffs r)
    132132{
    133133  int_number erg = (int_number) omAllocBin(gmp_nrz_bin);
     
    137137}
    138138
    139 number nrzSub (number a, number b)
     139number nrzSub (number a, number b, const coeffs r)
    140140{
    141141  int_number erg = (int_number) omAllocBin(gmp_nrz_bin);
     
    150150}
    151151
    152 BOOLEAN nrzIsUnit (number a)
     152BOOLEAN nrzIsUnit (number a, const coeffs r)
    153153{
    154154  return 0 == mpz_cmpabs_ui((int_number) a, 1);
    155155}
    156156
    157 BOOLEAN nrzIsZero (number  a)
     157BOOLEAN nrzIsZero (number  a, const coeffs r)
    158158{
    159159  return 0 == mpz_cmpabs_ui((int_number) a, 0);
    160160}
    161161
    162 BOOLEAN nrzIsOne (number a)
     162BOOLEAN nrzIsOne (number a, const coeffs r)
    163163{
    164164  return (a!=NULL) && (0 == mpz_cmp_si((int_number) a, 1));
    165165}
    166166
    167 BOOLEAN nrzIsMOne (number a)
     167BOOLEAN nrzIsMOne (number a, const coeffs r)
    168168{
    169169  return (a!=NULL) && (0 == mpz_cmp_si((int_number) a, -1));
    170170}
    171171
    172 BOOLEAN nrzEqual (number a,number b)
     172BOOLEAN nrzEqual (number a,number b, const coeffs r)
    173173{
    174174  return 0 == mpz_cmp((int_number) a, (int_number) b);
    175175}
    176176
    177 BOOLEAN nrzGreater (number a,number b)
     177BOOLEAN nrzGreater (number a,number b, const coeffs r)
    178178{
    179179  return 0 < mpz_cmp((int_number) a, (int_number) b);
    180180}
    181181
    182 BOOLEAN nrzGreaterZero (number k)
     182BOOLEAN nrzGreaterZero (number k, const coeffs r)
    183183{
    184184  return 0 < mpz_cmp_si((int_number) k, 0);
    185185}
    186186
    187 int nrzDivComp(number a, number b)
    188 {
    189   if (nrzDivBy(a, b))
    190   {
    191     if (nrzDivBy(b, a)) return 2;
     187int nrzDivComp(number a, number b, const coeffs r)
     188{
     189  if (nrzDivBy(a, b, r))
     190  {
     191    if (nrzDivBy(b, a, r)) return 2;
    192192    return -1;
    193193  }
    194   if (nrzDivBy(b, a)) return 1;
     194  if (nrzDivBy(b, a, r)) return 1;
    195195  return 0;
    196196}
    197197
    198 BOOLEAN nrzDivBy (number a,number b)
     198BOOLEAN nrzDivBy (number a,number b, const coeffs r)
    199199{
    200200  return mpz_divisible_p((int_number) a, (int_number) b) != 0;
    201201}
    202202
    203 number nrzDiv (number a,number b)
     203number nrzDiv (number a,number b, const coeffs R)
    204204{
    205205  int_number erg = (int_number) omAllocBin(gmp_nrz_bin);
     
    208208  mpz_init(r);
    209209  mpz_tdiv_qr(erg, r, (int_number) a, (int_number) b);
    210   if (!nrzIsZero((number) r))
     210  if (!nrzIsZero((number) r, R))
    211211  {
    212212    WerrorS("Division by non divisible element.");
     
    218218}
    219219
    220 number nrzIntDiv (number a,number b)
     220number nrzIntDiv (number a,number b, const coeffs r)
    221221{
    222222  int_number erg = (int_number) omAllocBin(gmp_nrz_bin);
     
    226226}
    227227
    228 number nrzIntMod (number a,number b)
     228number nrzIntMod (number a,number b, const coeffs R)
    229229{
    230230  int_number erg = (int_number) omAllocBin(gmp_nrz_bin);
     
    239239number  nrzInvers (number c, const coeffs r)
    240240{
    241   if (!nrzIsUnit((number) c))
     241  if (!nrzIsUnit((number) c, r))
    242242  {
    243243    WerrorS("Non invertible element.");
     
    247247}
    248248
    249 number nrzNeg (number c)
     249number nrzNeg (number c, const coeffs r)
    250250{
    251251// nNeg inplace !!!
  • coeffs/rintegers.h

    ra0ce49 rbec902b  
    1717int     nrzSize        (number a);
    1818void    nrzDelete      (number *a, const coeffs r);
    19 BOOLEAN nrzGreaterZero (number k);
    20 number  nrzMult        (number a, number b);
     19BOOLEAN nrzGreaterZero (number k, const coeffs r);
     20number  nrzMult        (number a, number b, const coeffs r);
    2121number  nrzInit        (int i, const coeffs r);
    2222int     nrzInt         (number &n, const coeffs r);
    23 number  nrzAdd         (number a, number b);
    24 number  nrzSub         (number a, number b);
    25 void    nrzPower       (number a, int i, number * result);
    26 BOOLEAN nrzIsZero      (number a);
    27 BOOLEAN nrzIsOne       (number a);
    28 BOOLEAN nrzIsMOne      (number a);
    29 BOOLEAN nrzIsUnit      (number a);
    30 number  nrzGetUnit     (number a);
    31 number  nrzDiv         (number a, number b);
    32 number  nrzIntDiv      (number a, number b);
    33 number  nrzIntMod      (number a, number b);
    34 number  nrzNeg         (number c);
    35 number  nrzInvers      (number c);
    36 BOOLEAN nrzGreater     (number a, number b);
    37 BOOLEAN nrzDivBy       (number a, number b);
    38 int     nrzDivComp     (number a, number b);
    39 BOOLEAN nrzEqual       (number a, number b);
    40 number  nrzLcm         (number a,number b, coeffs r);
    41 number  nrzGcd         (number a,number b,coeffs r);
    42 number  nrzExtGcd      (number a, number b, number *s, number *t);
     23number  nrzAdd         (number a, number b, const coeffs r);
     24number  nrzSub         (number a, number b, const coeffs r);
     25void    nrzPower       (number a, int i, number * result, const coeffs r);
     26BOOLEAN nrzIsZero      (number a, const coeffs r);
     27BOOLEAN nrzIsOne       (number a, const coeffs r);
     28BOOLEAN nrzIsMOne      (number a, const coeffs r);
     29BOOLEAN nrzIsUnit      (number a, const coeffs r);
     30number  nrzGetUnit     (number a, const coeffs r);
     31number  nrzDiv         (number a, number b, const coeffs r);
     32number  nrzIntDiv      (number a, number b, const coeffs r);
     33number  nrzIntMod      (number a, number b, const coeffs r);
     34number  nrzNeg         (number c, const coeffs r);
     35number  nrzInvers      (number c, const coeffs r);
     36BOOLEAN nrzGreater     (number a, number b, const coeffs r);
     37BOOLEAN nrzDivBy       (number a, number b, const coeffs r);
     38int     nrzDivComp     (number a, number b, const coeffs r);
     39BOOLEAN nrzEqual       (number a, number b, const coeffs r);
     40number  nrzLcm         (number a,number b, const coeffs r);
     41number  nrzGcd         (number a,number b, const coeffs r);
     42number  nrzExtGcd      (number a, number b, number *s, number *t, const coeffs r);
    4343nMapFunc nrzSetMap     (const coeffs src, const coeffs dst);
    4444void    nrzWrite       (number &a, const coeffs r);
  • coeffs/test.cc

    ra0ce49 rbec902b  
    1313#include <shortfl.h>
    1414#include <ffields.h>
    15 
     15#include <modulop.h>
    1616#include <rmodulon.h>
    1717#include <rmodulo2m.h>
     
    125125  n_coeffType type;
    126126
    127   // TODO: n_Zp, n_GF, n_Zp_a, n_Q_a ?
     127  // rings needed for: n_Zp_a, n_Q_a ?
    128128 
    129129  type = nRegister( n_Q, nlInitChar); assume( type == n_Q );
     
    143143    c ++;
    144144
     145  type = nRegister( n_Zp, npInitChar); assume( type == n_Zp );
     146  if( Test(type) )
     147    c ++;
     148
    145149#ifdef HAVE_RINGS
    146150  type = nRegister( n_Z2m, nr2mInitChar); assume( type == n_Z2m );
     
    153157
    154158//  n_Z, // TODO?
    155 //  n_Zpn, // no longer exists?
    156159#endif
    157160
Note: See TracChangeset for help on using the changeset viewer.