Changeset 1135a61 in git for libpolys/polys/weight0.c


Ignore:
Timestamp:
Apr 19, 2011, 12:00:52 PM (12 years ago)
Author:
Hans Schoenemann <hannes@…>
Branches:
(u'spielwiese', '8d54773d6c9e2f1d2593a28bc68b7eeab54ed529')
Children:
ec0d9b416a53586bd0d5b780545cea184cf3d824
Parents:
f27003fd89ac86ed0bd7cc93a1342d129926c00c
git-author:
Hans Schoenemann <hannes@mathematik.uni-kl.de>2011-04-19 12:00:52+02:00
git-committer:
Mohamed Barakat <mohamed.barakat@rwth-aachen.de>2011-11-09 12:31:18+01:00
Message:
fix weight0.c
File:
1 moved

Legend:

Unmodified
Added
Removed
  • libpolys/polys/weight0.c

    rf27003 r1135a61  
    1010#include <math.h>
    1111#include <string.h>
    12 #include <kernel/mod2.h>
     12#include <misc/auxiliary.h>
    1313#include <omalloc/omalloc.h>
    14 #include <kernel/structs.h>
    1514
    1615double wFunctionalMora(int *degw, int *lpol, int npol,
     
    1817double wFunctionalBuch(int *degw, int *lpol, int npol,
    1918       double *rel, double wx, double wwNsqr);
    20 void wAdd(int *A, int mons, int kn, int xx);
     19void wAdd(int *A, int mons, int kn, int xx, int rvar);
    2120void wNorm(int *degw, int *lpol, int npol, double *rel);
    2221void wFirstSearch(int *A, int *x, int mons,
    23         int *lpol, int npol, double *rel, double *fopt, double wNsqr);
     22        int *lpol, int npol, double *rel, double *fopt, double wNsqr, int rvar);
    2423void wSecondSearch(int *A, int *x, int *lpol,
    25         int npol, int mons, double *rel, double *fk, double wNsqr);
     24        int npol, int mons, double *rel, double *fk, double wNsqr, int rvar);
    2625void wGcd(int *x, int n);
    2726/*0 implementation*/
    2827
    2928short * ecartWeights=NULL;
    30 extern int pVariables;
    3129
    3230double (*wFunctional)(int *degw, int *lpol, int npol,
     
    112110
    113111
    114 static void wSub(int *A, int mons, int kn, int xx)
     112static void wSub(int *A, int mons, int kn, int xx,int rvar)
    115113{
    116114  int  i, *B, *ex;
    117115
    118116  B = A + ((kn - 1) * mons);
    119   ex = A + (pVariables * mons);
     117  ex = A + (rvar * mons);
    120118  i = mons;
    121119  if (xx == 1)
     
    132130
    133131
    134 void wAdd(int *A, int mons, int kn, int xx)
     132void wAdd(int *A, int mons, int kn, int xx, int rvar)
    135133{
    136134  int  i, *B, *ex;
    137135
    138136  B = A + ((kn - 1) * mons);
    139   ex = A + (pVariables * mons);
     137  ex = A + (rvar * mons);
    140138  i = mons;
    141139  if (xx == 1)
     
    153151
    154152void wFirstSearch(int *A, int *x, int mons,
    155   int *lpol, int npol, double *rel, double *fopt, double wNsqr)
     153  int *lpol, int npol, double *rel, double *fopt, double wNsqr, int rvar)
    156154{
    157155  int  a0, a, n, xn, t, xx, y1;
     
    162160
    163161  fy = *fopt;
    164   n = pVariables;
     162  n = rvar;
    165163  xn = n + 6 + (21 / n);
    166164  a0 = n * sizeof(double);
     
    187185        x[t] = xx;
    188186        if (xx > 1)
    189           wAdd(A, mons, t, 1);
     187          wAdd(A, mons, t, 1, rvar);
    190188        t++;
    191189      }
     
    195193        x[t] = 0;
    196194        if (xx!=0)
    197           wSub(A, mons, t, xx);
     195          wSub(A, mons, t, xx, rvar);
    198196        t--;
    199197        if (t==0)
     
    211209    xx--;
    212210    if (xx!=0)
    213       wAdd(A, mons, t, xx);
     211      wAdd(A, mons, t, xx, rvar);
    214212    fmax = (*wFunctional)(degw, lpol, npol, rel, wx,wNsqr);
    215213    if (xx!=0)
    216       wSub(A, mons, t, xx);
     214      wSub(A, mons, t, xx, rvar);
    217215    if (fmax < fy)
    218216    {
     
    238236
    239237static void wEstimate(int *A, int *x, int *lpol, int npol, int mons,
    240 double wx, double *rel, double *fopt, int *s0, int *s1, int *s2, double wNsqr)
     238double wx, double *rel, double *fopt, int *s0, int *s1, int *s2, double wNsqr, int rvar)
    241239{
    242240  int  n, i1, i2, k0 = 0, k1 = 0, k2 = 0;
     
    244242  double fo1, fo2, fmax, wx1, wx2;
    245243
    246   n = pVariables;
     244  n = rvar;
    247245  degw = A + (n * mons);
    248246  fo2 = fo1 = (double)1.0e10;
     
    251249    if (x[i1] > 1)
    252250    {
    253       wSub(A, mons, i1, 1);
     251      wSub(A, mons, i1, 1, rvar);
    254252      wx1 = wx - wx / (double)x[i1];
    255253      x[i1]--;
     
    264262        if (x[i2] > 1)
    265263        {
    266           wSub(A, mons, i2, 1);
     264          wSub(A, mons, i2, 1, rvar);
    267265          wx2 = wx1 - wx1 / (double)x[i2];
    268266          fmax = (*wFunctional)(degw, lpol, npol, rel, wx2, wNsqr);
     
    273271            k2 = i2;
    274272          }
    275           wAdd(A, mons, i2, 1);
     273          wAdd(A, mons, i2, 1, rvar);
    276274        }
    277275      }
    278       wAdd(A, mons, i1, 1);
     276      wAdd(A, mons, i1, 1, rvar);
    279277      x[i1]++;
    280278    }
     
    296294
    297295void wSecondSearch(int *A, int *x, int *lpol,
    298 int npol, int mons, double *rel, double *fk, double wNsqr)
     296int npol, int mons, double *rel, double *fk, double wNsqr, int rvar)
    299297{
    300298  int  n, s0, s1, s2, *xopt;
    301299  double  one, fx, fopt, wx;
    302300
    303   n = pVariables;
     301  n = rvar;
    304302  xopt = x + (n + 2);
    305303  fopt = *fk * (double)0.999999999999;
     
    308306  loop
    309307  {
    310     wEstimate(A, x, lpol, npol, mons, wx, rel, &fx, &s0, &s1, &s2, wNsqr);
     308    wEstimate(A, x, lpol, npol, mons, wx, rel, &fx, &s0, &s1, &s2, wNsqr, rvar);
    311309    if (fx > fopt)
    312310    {
     
    341339    }
    342340    if (s0!=0)
    343       wSub(A, mons, s0, 1);
     341      wSub(A, mons, s0, 1, rvar);
    344342    else
    345343    {
    346       wSub(A, mons, s1, 1);
    347       wSub(A, mons, s2, 1);
     344      wSub(A, mons, s1, 1, rvar);
     345      wSub(A, mons, s2, 1, rvar);
    348346    }
    349347    wx = wPrWeight(x, n);
Note: See TracChangeset for help on using the changeset viewer.