Changeset 02af91 in git for factory/ffops.h


Ignore:
Timestamp:
Jun 18, 1996, 8:57:00 AM (28 years ago)
Author:
Rüdiger Stobbe <stobbe@…>
Branches:
(u'spielwiese', '17f1d200f27c5bd38f5dfc6e8a0879242279d1d8')
Children:
cfa45ec3cccf336939c446d85de2dca6283593b1
Parents:
35930b6cf4435468b76d893cb0f2be0e692720cf
Message:
"Now the functionality to handle prime numbers that are bigger than 2^15.
This results in various changes and some new functions.
"


git-svn-id: file:///usr/local/Singular/svn/trunk@21 2c84dea3-7e68-4137-9b89-c4e89433aadc
File:
1 edited

Legend:

Unmodified
Added
Removed
  • factory/ffops.h

    r35930b r02af91  
    11// emacs edit mode for this file is -*- C++ -*-
    2 // $Id: ffops.h,v 1.0 1996-05-17 10:59:40 stobbe Exp $
     2// $Id: ffops.h,v 1.1 1996-06-18 06:57:00 stobbe Exp $
    33
    44#ifndef INCL_FFOPS_H
     
    77/*
    88$Log: not supported by cvs2svn $
     9Revision 1.0  1996/05/17 10:59:40  stobbe
     10Initial revision
     11
    912*/
    1013
     
    1518extern int ff_halfprime;
    1619extern short * ff_invtab;
     20extern bool ff_big;
    1721
    1822int ff_newinv ( const int );
     23int ff_biginv ( const int );
    1924void ff_setprime ( const int );
    2025
    2126inline int ff_norm ( const int a )
    2227{
    23   int n = a % ff_prime;
    24   if ( n < 0 )
    25     return n + ff_prime;
    26   else
    27     return n;
     28    int n = a % ff_prime;
     29    if ( n < 0 )
     30        return n + ff_prime;
     31    else
     32        return n;
    2833}
    2934
     
    3843inline int ff_longnorm ( const long a )
    3944{
    40   int n = (int)(a % (long)ff_prime);
    41   if ( n < 0 )
    42     return n + ff_prime;
    43   else
    44     return n;
     45    int n = (int)(a % (long)ff_prime);
     46    if ( n < 0 )
     47        return n + ff_prime;
     48    else
     49        return n;
     50}
     51
     52inline int ff_bignorm ( const long long int a )
     53{
     54    int n = (int)(a % (long long int)ff_prime);
     55    if ( n < 0 )
     56        return n + ff_prime;
     57    else
     58        return n;
    4559}
    4660
    4761inline int ff_add ( const int a, const int b )
    4862{
    49   return ff_norm( a + b );
     63    return ff_norm( a + b );
    5064}
    5165
    5266inline int ff_sub ( const int a, const int b )
    5367{
    54   return ff_norm( a - b );
     68    return ff_norm( a - b );
    5569}
    5670
    5771inline int ff_neg ( const int a )
    5872{
    59   return ff_norm( -a );
     73    return ff_norm( -a );
    6074}
    6175
    6276inline int ff_mul ( const int a, const int b )
    6377{
    64   return ff_longnorm ( (long)a * (long)b );
     78    if ( ff_big )
     79        return ff_bignorm( (long long int)a * (long long int)b );
     80    else
     81        return ff_longnorm ( (long)a * (long)b );
    6582}
    6683
    6784inline int ff_inv ( const int a )
    6885{
    69   register b;
    70   if ( (b = (int)(ff_invtab[a])) )
    71     return b;
    72   else
    73     return ff_newinv( a );
     86    if ( ff_big )
     87        return ff_biginv( a );
     88    else {
     89        register b;
     90        if ( (b = (int)(ff_invtab[a])) )
     91            return b;
     92        else
     93            return ff_newinv( a );
     94    }
     95   
    7496}
    7597
    7698inline int ff_div ( const int a, const int b )
    7799{
    78   return ff_mul( a, ff_inv( b ) );
     100    return ff_mul( a, ff_inv( b ) );
    79101}
    80102
    81103#endif /* INCL_FFOPS_H */
    82 
    83 
    84 
    85 
    86 
    87 
Note: See TracChangeset for help on using the changeset viewer.