Changeset 198a339 in git


Ignore:
Timestamp:
Feb 10, 2009, 6:04:17 PM (15 years ago)
Author:
Martin Monerjan
Branches:
(u'spielwiese', '17f1d200f27c5bd38f5dfc6e8a0879242279d1d8')
Children:
79d3879fcd4dcf40029e29ecc50ac26cbbd425ff
Parents:
03de21090abd52e7f4a5dab11e0839b0f062a419
Message:
*** empty log message ***


git-svn-id: file:///usr/local/Singular/svn/trunk@11363 2c84dea3-7e68-4137-9b89-c4e89433aadc
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • kernel/gfan.cc

    r03de21 r198a339  
    22Compute the Groebner fan of an ideal
    33Author: $Author: monerjan $
    4 Date: $Date: 2009-02-10 12:03:50 $
    5 Header: $Header: /exports/cvsroot-2/cvsroot/kernel/gfan.cc,v 1.8 2009-02-10 12:03:50 monerjan Exp $
    6 Id: $Id: gfan.cc,v 1.8 2009-02-10 12:03:50 monerjan Exp $
     4Date: $Date: 2009-02-10 17:04:17 $
     5Header: $Header: /exports/cvsroot-2/cvsroot/kernel/gfan.cc,v 1.9 2009-02-10 17:04:17 monerjan Exp $
     6Id: $Id: gfan.cc,v 1.9 2009-02-10 17:04:17 monerjan Exp $
    77*/
    88
     
    1212#include "polys.h"
    1313#include "ideals.h"
     14#include "kmatrix.h"
    1415
    1516#ifndef gfan_DEBUG
     
    5051        // End of var declaration
    5152
    52         printf("The Gröbner basis has %i elements\n",lengthGB);
     53        printf("The Groebner basis has %i elements\n",lengthGB);
    5354        printf("The current ring has %i variables\n",numvar);
    5455        cols = numvar;
     
    6364        printf("rows=%i\n",rows);
    6465        printf("Will create a %i x %i - matrix to store inequalities\n",rows,cols);
    65         matrix ineq[rows][cols];
    66 
     66        int ineq[rows][cols];   // array of int vs matrix vs KMatrix ??? What's to use?
     67        int aktmatrixrow=0;     // needed to store the diffs of the expvects in the rows of ineq
    6768
    6869        // We loop through each g\in GB
    6970        for (int i=0; i<IDELEMS(I); i++)
    7071        {
    71                 aktpoly=(poly)I->m[i];
    72                 pCompCount=pLength(aktpoly);
     72                aktpoly=(poly)I->m[i];          //get aktpoly as i-th component of I
     73                pCompCount=pLength(aktpoly);    //How many terms does aktpoly consist of?
    7374                printf("Poly No. %i has %i components\n",i,pCompCount);
    7475
    7576                int *v=(int *)omAlloc((numvar+1)*sizeof(int));
    7677                pGetExpV(aktpoly,v);    //find the exp.vect in v[1],...,v[n], use pNext(p)
    77 
     78               
    7879                //Store leadexp for aktpoly
    7980                for (int kk=0;kk<numvar;kk++)
     
    8182                        leadexp[kk]=v[kk+1];
    8283                        printf("Leadexpcomp=%i\n",leadexp[kk]);
     84                        //Since we need to know the difference of leadexp with the other expvects we do nothing here
     85                        //but compute the diff below
    8386                }
    8487
    85                 while (pNext(aktpoly)!=NULL)
     88               
     89                while (pNext(aktpoly)!=NULL) //move to next term until NULL
    8690                {
    8791                        aktpoly=pNext(aktpoly);
    88                         pSetm(aktpoly);
     92                        pSetm(aktpoly);         //doesn't seem to help anything
    8993                        pGetExpV(aktpoly,v);
    9094                        for (int kk=0;kk<numvar;kk++)
     
    9397                                aktexp[kk]=v[kk+1];
    9498                                printf("aktexpcomp=%i\n",aktexp[kk]);
     99                                ineq[aktmatrixrow][kk]=leadexp[kk]-aktexp[kk];  //dito
    95100                        }
     101                        aktmatrixrow=aktmatrixrow+1;
    96102                }//while
    97 
    98103        } //for
     104        #ifdef gfan_DEBUG
     105        printf("Inequalitiy matrix\n");
     106        for (int i=0;i<rows;i++)
     107        {
     108                for (int j=0;j<cols;j++)
     109                {
     110                        printf("%i ",ineq[i][j]);
     111                }
     112                printf("\n");
     113        }
     114        #endif
    99115        //res=(ideal)aktpoly;
    100116        //return res;
  • ntl/include/NTL/gmp_aux.h

    r03de21 r198a339  
    1 #define NTL_ZZ_NBITS (64)
    2 #define NTL_ZZ_FRADIX (((double)(1L<<62))*((double)(1L<<2)))
     1#define NTL_ZZ_NBITS (32)
     2#define NTL_ZZ_FRADIX (((double)(1L<<30))*((double)(1L<<2)))
  • ntl/include/NTL/mach_desc.h

    r03de21 r198a339  
    33
    44
    5 #define NTL_BITS_PER_LONG (64)
    6 #define NTL_MAX_LONG (9223372036854775807L)
     5#define NTL_BITS_PER_LONG (32)
     6#define NTL_MAX_LONG (2147483647L)
    77#define NTL_MAX_INT (2147483647)
    88#define NTL_BITS_PER_INT (32)
    9 #define NTL_BITS_PER_SIZE_T (64)
     9#define NTL_BITS_PER_SIZE_T (32)
    1010#define NTL_ARITH_RIGHT_SHIFT (1)
    11 #define NTL_NBITS_MAX (50)
     11#define NTL_NBITS_MAX (30)
    1212#define NTL_DOUBLE_PRECISION (53)
    13 #define NTL_FDOUBLE_PRECISION (((double)(1L<<52)))
     13#define NTL_FDOUBLE_PRECISION (((double)(1L<<30))*((double)(1L<<22)))
    1414#define NTL_QUAD_FLOAT_SPLIT ((((double)(1L<<27)))+1.0)
    15 #define NTL_EXT_DOUBLE (0)
    16 #define NTL_SINGLE_MUL_OK (0)
    17 #define NTL_DOUBLES_LOW_HIGH (0)
     15#define NTL_EXT_DOUBLE (1)
     16#define NTL_SINGLE_MUL_OK (1)
     17#define NTL_DOUBLES_LOW_HIGH (1)
    1818
    1919
     
    2222#define NTL_BB_MUL_CODE0 \
    2323   _ntl_ulong hi, lo, t;\
    24    _ntl_ulong A[16];\
    25    A[0] = 0;\
    26    A[1] = a;\
    27    A[2] = A[1] << 1;\
    28    A[3] = A[2] ^ A[1];\
    29    A[4] = A[2] << 1;\
    30    A[5] = A[4] ^ A[1];\
    31    A[6] = A[3] << 1;\
    32    A[7] = A[6] ^ A[1];\
    33    A[8] = A[4] << 1;\
    34    A[9] = A[8] ^ A[1];\
    35    A[10] = A[5] << 1;\
    36    A[11] = A[10] ^ A[1];\
    37    A[12] = A[6] << 1;\
    38    A[13] = A[12] ^ A[1];\
    39    A[14] = A[7] << 1;\
    40    A[15] = A[14] ^ A[1];\
    41    lo = A[b & 15]; t = A[(b >> 4) & 15]; hi = t >> 60; lo ^= t << 4;\
    42    t = A[(b >> 8) & 15]; hi ^= t >> 56; lo ^= t << 8;\
    43    t = A[(b >> 12) & 15]; hi ^= t >> 52; lo ^= t << 12;\
    44    t = A[(b >> 16) & 15]; hi ^= t >> 48; lo ^= t << 16;\
    45    t = A[(b >> 20) & 15]; hi ^= t >> 44; lo ^= t << 20;\
    46    t = A[(b >> 24) & 15]; hi ^= t >> 40; lo ^= t << 24;\
    47    t = A[(b >> 28) & 15]; hi ^= t >> 36; lo ^= t << 28;\
    48    t = A[(b >> 32) & 15]; hi ^= t >> 32; lo ^= t << 32;\
    49    t = A[(b >> 36) & 15]; hi ^= t >> 28; lo ^= t << 36;\
    50    t = A[(b >> 40) & 15]; hi ^= t >> 24; lo ^= t << 40;\
    51    t = A[(b >> 44) & 15]; hi ^= t >> 20; lo ^= t << 44;\
    52    t = A[(b >> 48) & 15]; hi ^= t >> 16; lo ^= t << 48;\
    53    t = A[(b >> 52) & 15]; hi ^= t >> 12; lo ^= t << 52;\
    54    t = A[(b >> 56) & 15]; hi ^= t >> 8; lo ^= t << 56;\
    55    t = A[b >> 60]; hi ^= t >> 4; lo ^= t << 60;\
    56    if (a >> 63) hi ^= ((b & 0xeeeeeeeeeeeeeeeeUL) >> 1);\
    57    if ((a >> 62) & 1) hi ^= ((b & 0xccccccccccccccccUL) >> 2);\
    58    if ((a >> 61) & 1) hi ^= ((b & 0x8888888888888888UL) >> 3);\
     24   _ntl_ulong A[8];\
     25   A[0] = 0;\
     26   A[1] = a;\
     27   A[2] = A[1] << 1;\
     28   A[3] = A[2] ^ A[1];\
     29   A[4] = A[2] << 1;\
     30   A[5] = A[4] ^ A[1];\
     31   A[6] = A[3] << 1;\
     32   A[7] = A[6] ^ A[1];\
     33   lo = A[b & 7]; t = A[(b >> 3) & 7]; hi = t >> 29; lo ^= t << 3;\
     34   t = A[(b >> 6) & 7]; hi ^= t >> 26; lo ^= t << 6;\
     35   t = A[(b >> 9) & 7]; hi ^= t >> 23; lo ^= t << 9;\
     36   t = A[(b >> 12) & 7]; hi ^= t >> 20; lo ^= t << 12;\
     37   t = A[(b >> 15) & 7]; hi ^= t >> 17; lo ^= t << 15;\
     38   t = A[(b >> 18) & 7]; hi ^= t >> 14; lo ^= t << 18;\
     39   t = A[(b >> 21) & 7]; hi ^= t >> 11; lo ^= t << 21;\
     40   t = A[(b >> 24) & 7]; hi ^= t >> 8; lo ^= t << 24;\
     41   t = A[(b >> 27) & 7]; hi ^= t >> 5; lo ^= t << 27;\
     42   t = A[b >> 30]; hi ^= t >> 2; lo ^= t << 30;\
     43   if (a >> 31) hi ^= ((b & 0xb6db6db6UL) >> 1);\
     44   if ((a >> 30) & 1) hi ^= ((b & 0x24924924UL) >> 2);\
    5945   c[0] = lo;    c[1] = hi;\
    6046
     
    8672   for (i = 0; i < sb; i++) {\
    8773      b = bp[i];\
    88       lo = A[b & 15]; t = A[(b >> 4) & 15]; hi = t >> 60; lo ^= t << 4;\
    89       t = A[(b >> 8) & 15]; hi ^= t >> 56; lo ^= t << 8;\
    90       t = A[(b >> 12) & 15]; hi ^= t >> 52; lo ^= t << 12;\
    91       t = A[(b >> 16) & 15]; hi ^= t >> 48; lo ^= t << 16;\
    92       t = A[(b >> 20) & 15]; hi ^= t >> 44; lo ^= t << 20;\
    93       t = A[(b >> 24) & 15]; hi ^= t >> 40; lo ^= t << 24;\
    94       t = A[(b >> 28) & 15]; hi ^= t >> 36; lo ^= t << 28;\
    95       t = A[(b >> 32) & 15]; hi ^= t >> 32; lo ^= t << 32;\
    96       t = A[(b >> 36) & 15]; hi ^= t >> 28; lo ^= t << 36;\
    97       t = A[(b >> 40) & 15]; hi ^= t >> 24; lo ^= t << 40;\
    98       t = A[(b >> 44) & 15]; hi ^= t >> 20; lo ^= t << 44;\
    99       t = A[(b >> 48) & 15]; hi ^= t >> 16; lo ^= t << 48;\
    100       t = A[(b >> 52) & 15]; hi ^= t >> 12; lo ^= t << 52;\
    101       t = A[(b >> 56) & 15]; hi ^= t >> 8; lo ^= t << 56;\
    102       t = A[b >> 60]; hi ^= t >> 4; lo ^= t << 60;\
    103       if (a >> 63) hi ^= ((b & 0xeeeeeeeeeeeeeeeeUL) >> 1);\
    104       if ((a >> 62) & 1) hi ^= ((b & 0xccccccccccccccccUL) >> 2);\
    105       if ((a >> 61) & 1) hi ^= ((b & 0x8888888888888888UL) >> 3);\
     74      lo = A[b & 15]; t = A[(b >> 4) & 15]; hi = t >> 28; lo ^= t << 4;\
     75      t = A[(b >> 8) & 15]; hi ^= t >> 24; lo ^= t << 8;\
     76      t = A[(b >> 12) & 15]; hi ^= t >> 20; lo ^= t << 12;\
     77      t = A[(b >> 16) & 15]; hi ^= t >> 16; lo ^= t << 16;\
     78      t = A[(b >> 20) & 15]; hi ^= t >> 12; lo ^= t << 20;\
     79      t = A[(b >> 24) & 15]; hi ^= t >> 8; lo ^= t << 24;\
     80      t = A[b >> 28]; hi ^= t >> 4; lo ^= t << 28;\
     81      if (a >> 31) hi ^= ((b & 0xeeeeeeeeUL) >> 1);\
     82      if ((a >> 30) & 1) hi ^= ((b & 0xccccccccUL) >> 2);\
     83      if ((a >> 29) & 1) hi ^= ((b & 0x88888888UL) >> 3);\
    10684      cp[i] = carry ^ lo;    carry = hi;\
    10785   }\
     
    135113   for (i = 0; i < sb; i++) {\
    136114      b = bp[i];\
    137       lo = A[b & 15]; t = A[(b >> 4) & 15]; hi = t >> 60; lo ^= t << 4;\
    138       t = A[(b >> 8) & 15]; hi ^= t >> 56; lo ^= t << 8;\
    139       t = A[(b >> 12) & 15]; hi ^= t >> 52; lo ^= t << 12;\
    140       t = A[(b >> 16) & 15]; hi ^= t >> 48; lo ^= t << 16;\
    141       t = A[(b >> 20) & 15]; hi ^= t >> 44; lo ^= t << 20;\
    142       t = A[(b >> 24) & 15]; hi ^= t >> 40; lo ^= t << 24;\
    143       t = A[(b >> 28) & 15]; hi ^= t >> 36; lo ^= t << 28;\
    144       t = A[(b >> 32) & 15]; hi ^= t >> 32; lo ^= t << 32;\
    145       t = A[(b >> 36) & 15]; hi ^= t >> 28; lo ^= t << 36;\
    146       t = A[(b >> 40) & 15]; hi ^= t >> 24; lo ^= t << 40;\
    147       t = A[(b >> 44) & 15]; hi ^= t >> 20; lo ^= t << 44;\
    148       t = A[(b >> 48) & 15]; hi ^= t >> 16; lo ^= t << 48;\
    149       t = A[(b >> 52) & 15]; hi ^= t >> 12; lo ^= t << 52;\
    150       t = A[(b >> 56) & 15]; hi ^= t >> 8; lo ^= t << 56;\
    151       t = A[b >> 60]; hi ^= t >> 4; lo ^= t << 60;\
    152       if (a >> 63) hi ^= ((b & 0xeeeeeeeeeeeeeeeeUL) >> 1);\
    153       if ((a >> 62) & 1) hi ^= ((b & 0xccccccccccccccccUL) >> 2);\
    154       if ((a >> 61) & 1) hi ^= ((b & 0x8888888888888888UL) >> 3);\
     115      lo = A[b & 15]; t = A[(b >> 4) & 15]; hi = t >> 28; lo ^= t << 4;\
     116      t = A[(b >> 8) & 15]; hi ^= t >> 24; lo ^= t << 8;\
     117      t = A[(b >> 12) & 15]; hi ^= t >> 20; lo ^= t << 12;\
     118      t = A[(b >> 16) & 15]; hi ^= t >> 16; lo ^= t << 16;\
     119      t = A[(b >> 20) & 15]; hi ^= t >> 12; lo ^= t << 20;\
     120      t = A[(b >> 24) & 15]; hi ^= t >> 8; lo ^= t << 24;\
     121      t = A[b >> 28]; hi ^= t >> 4; lo ^= t << 28;\
     122      if (a >> 31) hi ^= ((b & 0xeeeeeeeeUL) >> 1);\
     123      if ((a >> 30) & 1) hi ^= ((b & 0xccccccccUL) >> 2);\
     124      if ((a >> 29) & 1) hi ^= ((b & 0x88888888UL) >> 3);\
    155125      cp[i] ^= (carry ^ lo);    carry = hi;\
    156126   }\
     
    184154   for (i = 0; i < sb; i++) {\
    185155      b = bp[i];\
    186       lo = A[b & 15]; t = A[(b >> 4) & 15]; hi = t >> 60; lo ^= t << 4;\
    187       t = A[(b >> 8) & 15]; hi ^= t >> 56; lo ^= t << 8;\
    188       t = A[(b >> 12) & 15]; hi ^= t >> 52; lo ^= t << 12;\
    189       t = A[(b >> 16) & 15]; hi ^= t >> 48; lo ^= t << 16;\
    190       t = A[(b >> 20) & 15]; hi ^= t >> 44; lo ^= t << 20;\
    191       t = A[(b >> 24) & 15]; hi ^= t >> 40; lo ^= t << 24;\
    192       t = A[(b >> 28) & 15]; hi ^= t >> 36; lo ^= t << 28;\
    193       t = A[(b >> 32) & 15]; hi ^= t >> 32; lo ^= t << 32;\
    194       t = A[(b >> 36) & 15]; hi ^= t >> 28; lo ^= t << 36;\
    195       t = A[(b >> 40) & 15]; hi ^= t >> 24; lo ^= t << 40;\
    196       t = A[(b >> 44) & 15]; hi ^= t >> 20; lo ^= t << 44;\
    197       t = A[(b >> 48) & 15]; hi ^= t >> 16; lo ^= t << 48;\
    198       t = A[(b >> 52) & 15]; hi ^= t >> 12; lo ^= t << 52;\
    199       t = A[(b >> 56) & 15]; hi ^= t >> 8; lo ^= t << 56;\
    200       t = A[b >> 60]; hi ^= t >> 4; lo ^= t << 60;\
     156      lo = A[b & 15]; t = A[(b >> 4) & 15]; hi = t >> 28; lo ^= t << 4;\
     157      t = A[(b >> 8) & 15]; hi ^= t >> 24; lo ^= t << 8;\
     158      t = A[(b >> 12) & 15]; hi ^= t >> 20; lo ^= t << 12;\
     159      t = A[(b >> 16) & 15]; hi ^= t >> 16; lo ^= t << 16;\
     160      t = A[(b >> 20) & 15]; hi ^= t >> 12; lo ^= t << 20;\
     161      t = A[(b >> 24) & 15]; hi ^= t >> 8; lo ^= t << 24;\
     162      t = A[b >> 28]; hi ^= t >> 4; lo ^= t << 28;\
    201163      cp[i] = carry ^ lo;    carry = hi;\
    202164   }\
     
    214176   A[2] = A[1] << 1;\
    215177   A[3] = A[2] ^ A[1];\
    216    lo = A[b & 3]; t = A[(b >> 2) & 3]; hi = t >> 62; lo ^= t << 2;\
    217    t = A[(b >> 4) & 3]; hi ^= t >> 60; lo ^= t << 4;\
    218    t = A[(b >> 6) & 3]; hi ^= t >> 58; lo ^= t << 6;\
    219    t = A[(b >> 8) & 3]; hi ^= t >> 56; lo ^= t << 8;\
    220    t = A[(b >> 10) & 3]; hi ^= t >> 54; lo ^= t << 10;\
    221    t = A[(b >> 12) & 3]; hi ^= t >> 52; lo ^= t << 12;\
    222    t = A[(b >> 14) & 3]; hi ^= t >> 50; lo ^= t << 14;\
    223    t = A[(b >> 16) & 3]; hi ^= t >> 48; lo ^= t << 16;\
    224    t = A[(b >> 18) & 3]; hi ^= t >> 46; lo ^= t << 18;\
    225    t = A[(b >> 20) & 3]; hi ^= t >> 44; lo ^= t << 20;\
    226    t = A[(b >> 22) & 3]; hi ^= t >> 42; lo ^= t << 22;\
    227    t = A[(b >> 24) & 3]; hi ^= t >> 40; lo ^= t << 24;\
    228    t = A[(b >> 26) & 3]; hi ^= t >> 38; lo ^= t << 26;\
    229    t = A[(b >> 28) & 3]; hi ^= t >> 36; lo ^= t << 28;\
    230    t = A[b >> 30]; hi ^= t >> 34; lo ^= t << 30;\
    231    if (a >> 63) hi ^= ((b & 0xaaaaaaaaUL) >> 1);\
     178   lo = A[b & 3]; t = A[(b >> 2) & 3]; hi = t >> 30; lo ^= t << 2;\
     179   t = A[(b >> 4) & 3]; hi ^= t >> 28; lo ^= t << 4;\
     180   t = A[(b >> 6) & 3]; hi ^= t >> 26; lo ^= t << 6;\
     181   t = A[(b >> 8) & 3]; hi ^= t >> 24; lo ^= t << 8;\
     182   t = A[(b >> 10) & 3]; hi ^= t >> 22; lo ^= t << 10;\
     183   t = A[(b >> 12) & 3]; hi ^= t >> 20; lo ^= t << 12;\
     184   t = A[b >> 14]; hi ^= t >> 18; lo ^= t << 14;\
     185   if (a >> 31) hi ^= ((b & 0xaaaaUL) >> 1);\
    232186   c[0] = lo;    c[1] = hi;\
    233187
     
    237191
    238192#define NTL_ALT_BB_MUL_CODE0 \
    239    _ntl_ulong A[16];\
    240    A[0] = 0;\
    241    A[1] = a;\
    242    A[2] = A[1] << 1;\
    243    A[3] = A[2] ^ A[1];\
    244    A[4] = A[2] << 1;\
    245    A[5] = A[4] ^ A[1];\
    246    A[6] = A[3] << 1;\
    247    A[7] = A[6] ^ A[1];\
    248    A[8] = A[4] << 1;\
    249    A[9] = A[8] ^ A[1];\
    250    A[10] = A[5] << 1;\
    251    A[11] = A[10] ^ A[1];\
    252    A[12] = A[6] << 1;\
    253    A[13] = A[12] ^ A[1];\
    254    A[14] = A[7] << 1;\
    255    A[15] = A[14] ^ A[1];\
    256    const _ntl_ulong t4 = A[(b >> 4) & 15]; \
    257    const _ntl_ulong t8 = A[(b >> 8) & 15]; \
    258    const _ntl_ulong t12 = A[(b >> 12) & 15]; \
    259    const _ntl_ulong t16 = A[(b >> 16) & 15]; \
    260    const _ntl_ulong t20 = A[(b >> 20) & 15]; \
    261    const _ntl_ulong t24 = A[(b >> 24) & 15]; \
    262    const _ntl_ulong t28 = A[(b >> 28) & 15]; \
    263    const _ntl_ulong t32 = A[(b >> 32) & 15]; \
    264    const _ntl_ulong t36 = A[(b >> 36) & 15]; \
    265    const _ntl_ulong t40 = A[(b >> 40) & 15]; \
    266    const _ntl_ulong t44 = A[(b >> 44) & 15]; \
    267    const _ntl_ulong t48 = A[(b >> 48) & 15]; \
    268    const _ntl_ulong t52 = A[(b >> 52) & 15]; \
    269    const _ntl_ulong t56 = A[(b >> 56) & 15]; \
    270    const _ntl_ulong t60 = A[b >> 60]; \
    271    const _ntl_ulong lo = A[b & 15] \
    272       ^ (t4 << 4)\
    273       ^ (t8 << 8)\
     193   _ntl_ulong A[8];\
     194   A[0] = 0;\
     195   A[1] = a;\
     196   A[2] = A[1] << 1;\
     197   A[3] = A[2] ^ A[1];\
     198   A[4] = A[2] << 1;\
     199   A[5] = A[4] ^ A[1];\
     200   A[6] = A[3] << 1;\
     201   A[7] = A[6] ^ A[1];\
     202   const _ntl_ulong t3 = A[(b >> 3) & 7]; \
     203   const _ntl_ulong t6 = A[(b >> 6) & 7]; \
     204   const _ntl_ulong t9 = A[(b >> 9) & 7]; \
     205   const _ntl_ulong t12 = A[(b >> 12) & 7]; \
     206   const _ntl_ulong t15 = A[(b >> 15) & 7]; \
     207   const _ntl_ulong t18 = A[(b >> 18) & 7]; \
     208   const _ntl_ulong t21 = A[(b >> 21) & 7]; \
     209   const _ntl_ulong t24 = A[(b >> 24) & 7]; \
     210   const _ntl_ulong t27 = A[(b >> 27) & 7]; \
     211   const _ntl_ulong t30 = A[b >> 30]; \
     212   const _ntl_ulong lo = A[b & 7] \
     213      ^ (t3 << 3)\
     214      ^ (t6 << 6)\
     215      ^ (t9 << 9)\
    274216      ^ (t12 << 12)\
    275       ^ (t16 << 16)\
    276       ^ (t20 << 20)\
     217      ^ (t15 << 15)\
     218      ^ (t18 << 18)\
     219      ^ (t21 << 21)\
    277220      ^ (t24 << 24)\
    278       ^ (t28 << 28)\
    279       ^ (t32 << 32)\
    280       ^ (t36 << 36)\
    281       ^ (t40 << 40)\
    282       ^ (t44 << 44)\
    283       ^ (t48 << 48)\
    284       ^ (t52 << 52)\
    285       ^ (t56 << 56)\
    286       ^ (t60 << 60);\
    287    const _ntl_ulong hi = (t4 >> 60)\
    288       ^ (t8 >> 56)\
    289       ^ (t12 >> 52)\
    290       ^ (t16 >> 48)\
    291       ^ (t20 >> 44)\
    292       ^ (t24 >> 40)\
    293       ^ (t28 >> 36)\
    294       ^ (t32 >> 32)\
    295       ^ (t36 >> 28)\
    296       ^ (t40 >> 24)\
    297       ^ (t44 >> 20)\
    298       ^ (t48 >> 16)\
    299       ^ (t52 >> 12)\
    300       ^ (t56 >> 8)\
    301       ^ (t60 >> 4)\
    302       ^ (((b & 0xeeeeeeeeeeeeeeeeUL) >> 1) & (-(a >> 63)))\
    303       ^ (((b & 0xccccccccccccccccUL) >> 2) & (-((a >> 62) & 1UL)))\
    304       ^ (((b & 0x8888888888888888UL) >> 3) & (-((a >> 61) & 1UL)));\
     221      ^ (t27 << 27)\
     222      ^ (t30 << 30);\
     223   const _ntl_ulong hi = (t3 >> 29)\
     224      ^ (t6 >> 26)\
     225      ^ (t9 >> 23)\
     226      ^ (t12 >> 20)\
     227      ^ (t15 >> 17)\
     228      ^ (t18 >> 14)\
     229      ^ (t21 >> 11)\
     230      ^ (t24 >> 8)\
     231      ^ (t27 >> 5)\
     232      ^ (t30 >> 2)\
     233      ^ (((b & 0xb6db6db6UL) >> 1) & (-(a >> 31)))\
     234      ^ (((b & 0x24924924UL) >> 2) & (-((a >> 30) & 1UL)));\
    305235   c[0] = lo;    c[1] = hi;\
    306236
     
    337267      const _ntl_ulong t20 = A[(b >> 20) & 15]; \
    338268      const _ntl_ulong t24 = A[(b >> 24) & 15]; \
    339       const _ntl_ulong t28 = A[(b >> 28) & 15]; \
    340       const _ntl_ulong t32 = A[(b >> 32) & 15]; \
    341       const _ntl_ulong t36 = A[(b >> 36) & 15]; \
    342       const _ntl_ulong t40 = A[(b >> 40) & 15]; \
    343       const _ntl_ulong t44 = A[(b >> 44) & 15]; \
    344       const _ntl_ulong t48 = A[(b >> 48) & 15]; \
    345       const _ntl_ulong t52 = A[(b >> 52) & 15]; \
    346       const _ntl_ulong t56 = A[(b >> 56) & 15]; \
    347       const _ntl_ulong t60 = A[b >> 60]; \
     269      const _ntl_ulong t28 = A[b >> 28]; \
    348270      const _ntl_ulong lo = A[b & 15] \
    349271         ^ (t4 << 4)\
     
    353275         ^ (t20 << 20)\
    354276         ^ (t24 << 24)\
    355          ^ (t28 << 28)\
    356          ^ (t32 << 32)\
    357          ^ (t36 << 36)\
    358          ^ (t40 << 40)\
    359          ^ (t44 << 44)\
    360          ^ (t48 << 48)\
    361          ^ (t52 << 52)\
    362          ^ (t56 << 56)\
    363          ^ (t60 << 60);\
    364       const _ntl_ulong hi = (t4 >> 60)\
    365          ^ (t8 >> 56)\
    366          ^ (t12 >> 52)\
    367          ^ (t16 >> 48)\
    368          ^ (t20 >> 44)\
    369          ^ (t24 >> 40)\
    370          ^ (t28 >> 36)\
    371          ^ (t32 >> 32)\
    372          ^ (t36 >> 28)\
    373          ^ (t40 >> 24)\
    374          ^ (t44 >> 20)\
    375          ^ (t48 >> 16)\
    376          ^ (t52 >> 12)\
    377          ^ (t56 >> 8)\
    378          ^ (t60 >> 4)\
    379          ^ (((b & 0xeeeeeeeeeeeeeeeeUL) >> 1) & (-(a >> 63)))\
    380          ^ (((b & 0xccccccccccccccccUL) >> 2) & (-((a >> 62) & 1UL)))\
    381          ^ (((b & 0x8888888888888888UL) >> 3) & (-((a >> 61) & 1UL)));\
     277         ^ (t28 << 28);\
     278      const _ntl_ulong hi = (t4 >> 28)\
     279         ^ (t8 >> 24)\
     280         ^ (t12 >> 20)\
     281         ^ (t16 >> 16)\
     282         ^ (t20 >> 12)\
     283         ^ (t24 >> 8)\
     284         ^ (t28 >> 4)\
     285         ^ (((b & 0xeeeeeeeeUL) >> 1) & (-(a >> 31)))\
     286         ^ (((b & 0xccccccccUL) >> 2) & (-((a >> 30) & 1UL)))\
     287         ^ (((b & 0x88888888UL) >> 3) & (-((a >> 29) & 1UL)));\
    382288      cp[i] = carry ^ lo;    carry = hi;\
    383289   }\
     
    416322      const _ntl_ulong t20 = A[(b >> 20) & 15]; \
    417323      const _ntl_ulong t24 = A[(b >> 24) & 15]; \
    418       const _ntl_ulong t28 = A[(b >> 28) & 15]; \
    419       const _ntl_ulong t32 = A[(b >> 32) & 15]; \
    420       const _ntl_ulong t36 = A[(b >> 36) & 15]; \
    421       const _ntl_ulong t40 = A[(b >> 40) & 15]; \
    422       const _ntl_ulong t44 = A[(b >> 44) & 15]; \
    423       const _ntl_ulong t48 = A[(b >> 48) & 15]; \
    424       const _ntl_ulong t52 = A[(b >> 52) & 15]; \
    425       const _ntl_ulong t56 = A[(b >> 56) & 15]; \
    426       const _ntl_ulong t60 = A[b >> 60]; \
     324      const _ntl_ulong t28 = A[b >> 28]; \
    427325      const _ntl_ulong lo = A[b & 15] \
    428326         ^ (t4 << 4)\
     
    432330         ^ (t20 << 20)\
    433331         ^ (t24 << 24)\
    434          ^ (t28 << 28)\
    435          ^ (t32 << 32)\
    436          ^ (t36 << 36)\
    437          ^ (t40 << 40)\
    438          ^ (t44 << 44)\
    439          ^ (t48 << 48)\
    440          ^ (t52 << 52)\
    441          ^ (t56 << 56)\
    442          ^ (t60 << 60);\
    443       const _ntl_ulong hi = (t4 >> 60)\
    444          ^ (t8 >> 56)\
    445          ^ (t12 >> 52)\
    446          ^ (t16 >> 48)\
    447          ^ (t20 >> 44)\
    448          ^ (t24 >> 40)\
    449          ^ (t28 >> 36)\
    450          ^ (t32 >> 32)\
    451          ^ (t36 >> 28)\
    452          ^ (t40 >> 24)\
    453          ^ (t44 >> 20)\
    454          ^ (t48 >> 16)\
    455          ^ (t52 >> 12)\
    456          ^ (t56 >> 8)\
    457          ^ (t60 >> 4)\
    458          ^ (((b & 0xeeeeeeeeeeeeeeeeUL) >> 1) & (-(a >> 63)))\
    459          ^ (((b & 0xccccccccccccccccUL) >> 2) & (-((a >> 62) & 1UL)))\
    460          ^ (((b & 0x8888888888888888UL) >> 3) & (-((a >> 61) & 1UL)));\
     332         ^ (t28 << 28);\
     333      const _ntl_ulong hi = (t4 >> 28)\
     334         ^ (t8 >> 24)\
     335         ^ (t12 >> 20)\
     336         ^ (t16 >> 16)\
     337         ^ (t20 >> 12)\
     338         ^ (t24 >> 8)\
     339         ^ (t28 >> 4)\
     340         ^ (((b & 0xeeeeeeeeUL) >> 1) & (-(a >> 31)))\
     341         ^ (((b & 0xccccccccUL) >> 2) & (-((a >> 30) & 1UL)))\
     342         ^ (((b & 0x88888888UL) >> 3) & (-((a >> 29) & 1UL)));\
    461343      cp[i] ^= (carry ^ lo);    carry = hi;\
    462344   }\
     
    495377      const _ntl_ulong t20 = A[(b >> 20) & 15]; \
    496378      const _ntl_ulong t24 = A[(b >> 24) & 15]; \
    497       const _ntl_ulong t28 = A[(b >> 28) & 15]; \
    498       const _ntl_ulong t32 = A[(b >> 32) & 15]; \
    499       const _ntl_ulong t36 = A[(b >> 36) & 15]; \
    500       const _ntl_ulong t40 = A[(b >> 40) & 15]; \
    501       const _ntl_ulong t44 = A[(b >> 44) & 15]; \
    502       const _ntl_ulong t48 = A[(b >> 48) & 15]; \
    503       const _ntl_ulong t52 = A[(b >> 52) & 15]; \
    504       const _ntl_ulong t56 = A[(b >> 56) & 15]; \
    505       const _ntl_ulong t60 = A[b >> 60]; \
     379      const _ntl_ulong t28 = A[b >> 28]; \
    506380      const _ntl_ulong lo = A[b & 15] \
    507381         ^ (t4 << 4)\
     
    511385         ^ (t20 << 20)\
    512386         ^ (t24 << 24)\
    513          ^ (t28 << 28)\
    514          ^ (t32 << 32)\
    515          ^ (t36 << 36)\
    516          ^ (t40 << 40)\
    517          ^ (t44 << 44)\
    518          ^ (t48 << 48)\
    519          ^ (t52 << 52)\
    520          ^ (t56 << 56)\
    521          ^ (t60 << 60);\
    522       const _ntl_ulong hi = (t4 >> 60)\
    523          ^ (t8 >> 56)\
    524          ^ (t12 >> 52)\
    525          ^ (t16 >> 48)\
    526          ^ (t20 >> 44)\
    527          ^ (t24 >> 40)\
    528          ^ (t28 >> 36)\
    529          ^ (t32 >> 32)\
    530          ^ (t36 >> 28)\
    531          ^ (t40 >> 24)\
    532          ^ (t44 >> 20)\
    533          ^ (t48 >> 16)\
    534          ^ (t52 >> 12)\
    535          ^ (t56 >> 8)\
    536          ^ (t60 >> 4);\
     387         ^ (t28 << 28);\
     388      const _ntl_ulong hi = (t4 >> 28)\
     389         ^ (t8 >> 24)\
     390         ^ (t12 >> 20)\
     391         ^ (t16 >> 16)\
     392         ^ (t20 >> 12)\
     393         ^ (t24 >> 8)\
     394         ^ (t28 >> 4);\
    537395      cp[i] = carry ^ lo;    carry = hi;\
    538396   }\
     
    555413   const _ntl_ulong t10 = A[(b >> 10) & 3]; \
    556414   const _ntl_ulong t12 = A[(b >> 12) & 3]; \
    557    const _ntl_ulong t14 = A[(b >> 14) & 3]; \
    558    const _ntl_ulong t16 = A[(b >> 16) & 3]; \
    559    const _ntl_ulong t18 = A[(b >> 18) & 3]; \
    560    const _ntl_ulong t20 = A[(b >> 20) & 3]; \
    561    const _ntl_ulong t22 = A[(b >> 22) & 3]; \
    562    const _ntl_ulong t24 = A[(b >> 24) & 3]; \
    563    const _ntl_ulong t26 = A[(b >> 26) & 3]; \
    564    const _ntl_ulong t28 = A[(b >> 28) & 3]; \
    565    const _ntl_ulong t30 = A[b >> 30]; \
     415   const _ntl_ulong t14 = A[b >> 14]; \
    566416   const _ntl_ulong lo = A[b & 3] \
    567417      ^ (t2 << 2)\
     
    571421      ^ (t10 << 10)\
    572422      ^ (t12 << 12)\
    573       ^ (t14 << 14)\
    574       ^ (t16 << 16)\
    575       ^ (t18 << 18)\
    576       ^ (t20 << 20)\
    577       ^ (t22 << 22)\
    578       ^ (t24 << 24)\
    579       ^ (t26 << 26)\
    580       ^ (t28 << 28)\
    581       ^ (t30 << 30);\
    582    const _ntl_ulong hi = (t2 >> 62)\
    583       ^ (t4 >> 60)\
    584       ^ (t6 >> 58)\
    585       ^ (t8 >> 56)\
    586       ^ (t10 >> 54)\
    587       ^ (t12 >> 52)\
    588       ^ (t14 >> 50)\
    589       ^ (t16 >> 48)\
    590       ^ (t18 >> 46)\
    591       ^ (t20 >> 44)\
    592       ^ (t22 >> 42)\
    593       ^ (t24 >> 40)\
    594       ^ (t26 >> 38)\
    595       ^ (t28 >> 36)\
    596       ^ (t30 >> 34)\
    597       ^ (((b & 0xaaaaaaaaUL) >> 1) & (-(a >> 63)));\
     423      ^ (t14 << 14);\
     424   const _ntl_ulong hi = (t2 >> 30)\
     425      ^ (t4 >> 28)\
     426      ^ (t6 >> 26)\
     427      ^ (t8 >> 24)\
     428      ^ (t10 >> 22)\
     429      ^ (t12 >> 20)\
     430      ^ (t14 >> 18)\
     431      ^ (((b & 0xaaaaUL) >> 1) & (-(a >> 31)));\
    598432   c[0] = lo;    c[1] = hi;\
    599433
     
    604438#define NTL_ALT1_BB_MUL_CODE0 \
    605439   _ntl_ulong hi, lo, t;\
    606    _ntl_ulong A[16];\
    607    A[0] = 0;\
    608    A[1] = a;\
    609    A[2] = A[1] << 1;\
    610    A[3] = A[2] ^ A[1];\
    611    A[4] = A[2] << 1;\
    612    A[5] = A[4] ^ A[1];\
    613    A[6] = A[3] << 1;\
    614    A[7] = A[6] ^ A[1];\
    615    A[8] = A[4] << 1;\
    616    A[9] = A[8] ^ A[1];\
    617    A[10] = A[5] << 1;\
    618    A[11] = A[10] ^ A[1];\
    619    A[12] = A[6] << 1;\
    620    A[13] = A[12] ^ A[1];\
    621    A[14] = A[7] << 1;\
    622    A[15] = A[14] ^ A[1];\
    623    lo = A[b & 15]; t = A[(b >> 4) & 15]; hi = t >> 60; lo ^= t << 4;\
    624    t = A[(b >> 8) & 15]; hi ^= t >> 56; lo ^= t << 8;\
    625    t = A[(b >> 12) & 15]; hi ^= t >> 52; lo ^= t << 12;\
    626    t = A[(b >> 16) & 15]; hi ^= t >> 48; lo ^= t << 16;\
    627    t = A[(b >> 20) & 15]; hi ^= t >> 44; lo ^= t << 20;\
    628    t = A[(b >> 24) & 15]; hi ^= t >> 40; lo ^= t << 24;\
    629    t = A[(b >> 28) & 15]; hi ^= t >> 36; lo ^= t << 28;\
    630    t = A[(b >> 32) & 15]; hi ^= t >> 32; lo ^= t << 32;\
    631    t = A[(b >> 36) & 15]; hi ^= t >> 28; lo ^= t << 36;\
    632    t = A[(b >> 40) & 15]; hi ^= t >> 24; lo ^= t << 40;\
    633    t = A[(b >> 44) & 15]; hi ^= t >> 20; lo ^= t << 44;\
    634    t = A[(b >> 48) & 15]; hi ^= t >> 16; lo ^= t << 48;\
    635    t = A[(b >> 52) & 15]; hi ^= t >> 12; lo ^= t << 52;\
    636    t = A[(b >> 56) & 15]; hi ^= t >> 8; lo ^= t << 56;\
    637    t = A[b >> 60]; hi ^= t >> 4; lo ^= t << 60;\
    638    hi ^= (((b & 0xeeeeeeeeeeeeeeeeUL) >> 1) & (-(a >> 63)))\
    639       ^ (((b & 0xccccccccccccccccUL) >> 2) & (-((a >> 62) & 1UL)))\
    640       ^ (((b & 0x8888888888888888UL) >> 3) & (-((a >> 61) & 1UL)));\
     440   _ntl_ulong A[8];\
     441   A[0] = 0;\
     442   A[1] = a;\
     443   A[2] = A[1] << 1;\
     444   A[3] = A[2] ^ A[1];\
     445   A[4] = A[2] << 1;\
     446   A[5] = A[4] ^ A[1];\
     447   A[6] = A[3] << 1;\
     448   A[7] = A[6] ^ A[1];\
     449   lo = A[b & 7]; t = A[(b >> 3) & 7]; hi = t >> 29; lo ^= t << 3;\
     450   t = A[(b >> 6) & 7]; hi ^= t >> 26; lo ^= t << 6;\
     451   t = A[(b >> 9) & 7]; hi ^= t >> 23; lo ^= t << 9;\
     452   t = A[(b >> 12) & 7]; hi ^= t >> 20; lo ^= t << 12;\
     453   t = A[(b >> 15) & 7]; hi ^= t >> 17; lo ^= t << 15;\
     454   t = A[(b >> 18) & 7]; hi ^= t >> 14; lo ^= t << 18;\
     455   t = A[(b >> 21) & 7]; hi ^= t >> 11; lo ^= t << 21;\
     456   t = A[(b >> 24) & 7]; hi ^= t >> 8; lo ^= t << 24;\
     457   t = A[(b >> 27) & 7]; hi ^= t >> 5; lo ^= t << 27;\
     458   t = A[b >> 30]; hi ^= t >> 2; lo ^= t << 30;\
     459   hi ^= (((b & 0xb6db6db6UL) >> 1) & (-(a >> 31)))\
     460      ^ (((b & 0x24924924UL) >> 2) & (-((a >> 30) & 1UL)));\
    641461   c[0] = lo;    c[1] = hi;\
    642462
     
    668488   for (i = 0; i < sb; i++) {\
    669489      b = bp[i];\
    670       lo = A[b & 15]; t = A[(b >> 4) & 15]; hi = t >> 60; lo ^= t << 4;\
    671       t = A[(b >> 8) & 15]; hi ^= t >> 56; lo ^= t << 8;\
    672       t = A[(b >> 12) & 15]; hi ^= t >> 52; lo ^= t << 12;\
    673       t = A[(b >> 16) & 15]; hi ^= t >> 48; lo ^= t << 16;\
    674       t = A[(b >> 20) & 15]; hi ^= t >> 44; lo ^= t << 20;\
    675       t = A[(b >> 24) & 15]; hi ^= t >> 40; lo ^= t << 24;\
    676       t = A[(b >> 28) & 15]; hi ^= t >> 36; lo ^= t << 28;\
    677       t = A[(b >> 32) & 15]; hi ^= t >> 32; lo ^= t << 32;\
    678       t = A[(b >> 36) & 15]; hi ^= t >> 28; lo ^= t << 36;\
    679       t = A[(b >> 40) & 15]; hi ^= t >> 24; lo ^= t << 40;\
    680       t = A[(b >> 44) & 15]; hi ^= t >> 20; lo ^= t << 44;\
    681       t = A[(b >> 48) & 15]; hi ^= t >> 16; lo ^= t << 48;\
    682       t = A[(b >> 52) & 15]; hi ^= t >> 12; lo ^= t << 52;\
    683       t = A[(b >> 56) & 15]; hi ^= t >> 8; lo ^= t << 56;\
    684       t = A[b >> 60]; hi ^= t >> 4; lo ^= t << 60;\
    685       hi ^= (((b & 0xeeeeeeeeeeeeeeeeUL) >> 1) & (-(a >> 63)))\
    686          ^ (((b & 0xccccccccccccccccUL) >> 2) & (-((a >> 62) & 1UL)))\
    687          ^ (((b & 0x8888888888888888UL) >> 3) & (-((a >> 61) & 1UL)));\
     490      lo = A[b & 15]; t = A[(b >> 4) & 15]; hi = t >> 28; lo ^= t << 4;\
     491      t = A[(b >> 8) & 15]; hi ^= t >> 24; lo ^= t << 8;\
     492      t = A[(b >> 12) & 15]; hi ^= t >> 20; lo ^= t << 12;\
     493      t = A[(b >> 16) & 15]; hi ^= t >> 16; lo ^= t << 16;\
     494      t = A[(b >> 20) & 15]; hi ^= t >> 12; lo ^= t << 20;\
     495      t = A[(b >> 24) & 15]; hi ^= t >> 8; lo ^= t << 24;\
     496      t = A[b >> 28]; hi ^= t >> 4; lo ^= t << 28;\
     497      hi ^= (((b & 0xeeeeeeeeUL) >> 1) & (-(a >> 31)))\
     498         ^ (((b & 0xccccccccUL) >> 2) & (-((a >> 30) & 1UL)))\
     499         ^ (((b & 0x88888888UL) >> 3) & (-((a >> 29) & 1UL)));\
    688500      cp[i] = carry ^ lo;    carry = hi;\
    689501   }\
     
    717529   for (i = 0; i < sb; i++) {\
    718530      b = bp[i];\
    719       lo = A[b & 15]; t = A[(b >> 4) & 15]; hi = t >> 60; lo ^= t << 4;\
    720       t = A[(b >> 8) & 15]; hi ^= t >> 56; lo ^= t << 8;\
    721       t = A[(b >> 12) & 15]; hi ^= t >> 52; lo ^= t << 12;\
    722       t = A[(b >> 16) & 15]; hi ^= t >> 48; lo ^= t << 16;\
    723       t = A[(b >> 20) & 15]; hi ^= t >> 44; lo ^= t << 20;\
    724       t = A[(b >> 24) & 15]; hi ^= t >> 40; lo ^= t << 24;\
    725       t = A[(b >> 28) & 15]; hi ^= t >> 36; lo ^= t << 28;\
    726       t = A[(b >> 32) & 15]; hi ^= t >> 32; lo ^= t << 32;\
    727       t = A[(b >> 36) & 15]; hi ^= t >> 28; lo ^= t << 36;\
    728       t = A[(b >> 40) & 15]; hi ^= t >> 24; lo ^= t << 40;\
    729       t = A[(b >> 44) & 15]; hi ^= t >> 20; lo ^= t << 44;\
    730       t = A[(b >> 48) & 15]; hi ^= t >> 16; lo ^= t << 48;\
    731       t = A[(b >> 52) & 15]; hi ^= t >> 12; lo ^= t << 52;\
    732       t = A[(b >> 56) & 15]; hi ^= t >> 8; lo ^= t << 56;\
    733       t = A[b >> 60]; hi ^= t >> 4; lo ^= t << 60;\
    734       hi ^= (((b & 0xeeeeeeeeeeeeeeeeUL) >> 1) & (-(a >> 63)))\
    735          ^ (((b & 0xccccccccccccccccUL) >> 2) & (-((a >> 62) & 1UL)))\
    736          ^ (((b & 0x8888888888888888UL) >> 3) & (-((a >> 61) & 1UL)));\
     531      lo = A[b & 15]; t = A[(b >> 4) & 15]; hi = t >> 28; lo ^= t << 4;\
     532      t = A[(b >> 8) & 15]; hi ^= t >> 24; lo ^= t << 8;\
     533      t = A[(b >> 12) & 15]; hi ^= t >> 20; lo ^= t << 12;\
     534      t = A[(b >> 16) & 15]; hi ^= t >> 16; lo ^= t << 16;\
     535      t = A[(b >> 20) & 15]; hi ^= t >> 12; lo ^= t << 20;\
     536      t = A[(b >> 24) & 15]; hi ^= t >> 8; lo ^= t << 24;\
     537      t = A[b >> 28]; hi ^= t >> 4; lo ^= t << 28;\
     538      hi ^= (((b & 0xeeeeeeeeUL) >> 1) & (-(a >> 31)))\
     539         ^ (((b & 0xccccccccUL) >> 2) & (-((a >> 30) & 1UL)))\
     540         ^ (((b & 0x88888888UL) >> 3) & (-((a >> 29) & 1UL)));\
    737541      cp[i] ^= (carry ^ lo);    carry = hi;\
    738542   }\
     
    766570   for (i = 0; i < sb; i++) {\
    767571      b = bp[i];\
    768       lo = A[b & 15]; t = A[(b >> 4) & 15]; hi = t >> 60; lo ^= t << 4;\
    769       t = A[(b >> 8) & 15]; hi ^= t >> 56; lo ^= t << 8;\
    770       t = A[(b >> 12) & 15]; hi ^= t >> 52; lo ^= t << 12;\
    771       t = A[(b >> 16) & 15]; hi ^= t >> 48; lo ^= t << 16;\
    772       t = A[(b >> 20) & 15]; hi ^= t >> 44; lo ^= t << 20;\
    773       t = A[(b >> 24) & 15]; hi ^= t >> 40; lo ^= t << 24;\
    774       t = A[(b >> 28) & 15]; hi ^= t >> 36; lo ^= t << 28;\
    775       t = A[(b >> 32) & 15]; hi ^= t >> 32; lo ^= t << 32;\
    776       t = A[(b >> 36) & 15]; hi ^= t >> 28; lo ^= t << 36;\
    777       t = A[(b >> 40) & 15]; hi ^= t >> 24; lo ^= t << 40;\
    778       t = A[(b >> 44) & 15]; hi ^= t >> 20; lo ^= t << 44;\
    779       t = A[(b >> 48) & 15]; hi ^= t >> 16; lo ^= t << 48;\
    780       t = A[(b >> 52) & 15]; hi ^= t >> 12; lo ^= t << 52;\
    781       t = A[(b >> 56) & 15]; hi ^= t >> 8; lo ^= t << 56;\
    782       t = A[b >> 60]; hi ^= t >> 4; lo ^= t << 60;\
     572      lo = A[b & 15]; t = A[(b >> 4) & 15]; hi = t >> 28; lo ^= t << 4;\
     573      t = A[(b >> 8) & 15]; hi ^= t >> 24; lo ^= t << 8;\
     574      t = A[(b >> 12) & 15]; hi ^= t >> 20; lo ^= t << 12;\
     575      t = A[(b >> 16) & 15]; hi ^= t >> 16; lo ^= t << 16;\
     576      t = A[(b >> 20) & 15]; hi ^= t >> 12; lo ^= t << 20;\
     577      t = A[(b >> 24) & 15]; hi ^= t >> 8; lo ^= t << 24;\
     578      t = A[b >> 28]; hi ^= t >> 4; lo ^= t << 28;\
    783579      cp[i] = carry ^ lo;    carry = hi;\
    784580   }\
     
    796592   A[2] = A[1] << 1;\
    797593   A[3] = A[2] ^ A[1];\
    798    lo = A[b & 3]; t = A[(b >> 2) & 3]; hi = t >> 62; lo ^= t << 2;\
    799    t = A[(b >> 4) & 3]; hi ^= t >> 60; lo ^= t << 4;\
    800    t = A[(b >> 6) & 3]; hi ^= t >> 58; lo ^= t << 6;\
    801    t = A[(b >> 8) & 3]; hi ^= t >> 56; lo ^= t << 8;\
    802    t = A[(b >> 10) & 3]; hi ^= t >> 54; lo ^= t << 10;\
    803    t = A[(b >> 12) & 3]; hi ^= t >> 52; lo ^= t << 12;\
    804    t = A[(b >> 14) & 3]; hi ^= t >> 50; lo ^= t << 14;\
    805    t = A[(b >> 16) & 3]; hi ^= t >> 48; lo ^= t << 16;\
    806    t = A[(b >> 18) & 3]; hi ^= t >> 46; lo ^= t << 18;\
    807    t = A[(b >> 20) & 3]; hi ^= t >> 44; lo ^= t << 20;\
    808    t = A[(b >> 22) & 3]; hi ^= t >> 42; lo ^= t << 22;\
    809    t = A[(b >> 24) & 3]; hi ^= t >> 40; lo ^= t << 24;\
    810    t = A[(b >> 26) & 3]; hi ^= t >> 38; lo ^= t << 26;\
    811    t = A[(b >> 28) & 3]; hi ^= t >> 36; lo ^= t << 28;\
    812    t = A[b >> 30]; hi ^= t >> 34; lo ^= t << 30;\
    813    hi ^= (((b & 0xaaaaaaaaUL) >> 1) & (-(a >> 63)));\
     594   lo = A[b & 3]; t = A[(b >> 2) & 3]; hi = t >> 30; lo ^= t << 2;\
     595   t = A[(b >> 4) & 3]; hi ^= t >> 28; lo ^= t << 4;\
     596   t = A[(b >> 6) & 3]; hi ^= t >> 26; lo ^= t << 6;\
     597   t = A[(b >> 8) & 3]; hi ^= t >> 24; lo ^= t << 8;\
     598   t = A[(b >> 10) & 3]; hi ^= t >> 22; lo ^= t << 10;\
     599   t = A[(b >> 12) & 3]; hi ^= t >> 20; lo ^= t << 12;\
     600   t = A[b >> 14]; hi ^= t >> 18; lo ^= t << 14;\
     601   hi ^= (((b & 0xaaaaUL) >> 1) & (-(a >> 31)));\
    814602   c[0] = lo;    c[1] = hi;\
    815603
     
    823611lo=sqrtab[a&255];\
    824612lo=lo|(sqrtab[(a>>8)&255]<<16);\
    825 lo=lo|(sqrtab[(a>>16)&255]<<32);\
    826 lo=lo|(sqrtab[(a>>24)&255]<<48);\
    827 hi=sqrtab[(a>>32)&255];\
    828 hi=hi|(sqrtab[(a>>40)&255]<<16);\
    829 hi=hi|(sqrtab[(a>>48)&255]<<32);\
    830 hi=hi|(sqrtab[(a>>56)&255]<<48);\
    831 
    832 
    833 
    834 
    835 #define NTL_BB_REV_CODE (revtab[(a>>0)&255]<<56)\
    836 |(revtab[(a>>8)&255]<<48)\
    837 |(revtab[(a>>16)&255]<<40)\
    838 |(revtab[(a>>24)&255]<<32)\
    839 |(revtab[(a>>32)&255]<<24)\
    840 |(revtab[(a>>40)&255]<<16)\
    841 |(revtab[(a>>48)&255]<<8)\
    842 |(revtab[(a>>56)&255]<<0)
     613hi=sqrtab[(a>>16)&255];\
     614hi=hi|(sqrtab[(a>>24)&255]<<16);\
     615
     616
     617
     618
     619#define NTL_BB_REV_CODE (revtab[(a>>0)&255]<<24)\
     620|(revtab[(a>>8)&255]<<16)\
     621|(revtab[(a>>16)&255]<<8)\
     622|(revtab[(a>>24)&255]<<0)
    843623
    844624#define NTL_MIN_LONG (-NTL_MAX_LONG - 1L)
Note: See TracChangeset for help on using the changeset viewer.