Changeset 679


Ignore:
Timestamp:
Mar 17, 2016 10:43:26 AM (4 years ago)
Author:
kulshres
Message:

bug in pl drivers fixed

Location:
stable/2.6/ADOL-C
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • stable/2.6/ADOL-C/include/adolc/drivers/psdrivers.h

    r661 r679  
    2727
    2828/*--------------------------------------------------------------------------*/
     29/*                                             directional_active_gradient_ */
     30/*                                                                          */
     31ADOLC_DLL_EXPORT fint directional_active_gradient_(fint,fint,double*,short*,double*,double*,double**,short*); 
     32/*--------------------------------------------------------------------------*/
     33/*                                              directional_active_gradient */
     34/*                                                                          */
     35ADOLC_DLL_EXPORT int directional_active_gradient(
     36                                short tag,      /* trace identifier */
     37                                int n,          /* number of independents */
     38                                double* x,      /* value of independents */
     39                                short *sigma_x, /* sigma of x */
     40                                double* d,      /* direction */
     41                                double* g,      /* directional active gradient */
     42                                double** grad_u,
     43                                short *sigma_g  /* sigma of g */
     44                                );
     45
     46
     47/*--------------------------------------------------------------------------*/
    2948/*                                                               abs_normal */
    3049/*                                                                          */
  • stable/2.6/ADOL-C/include/adolc/internal/adolc_settings.h

    r648 r679  
    22 ADOL-C -- Automatic Differentiation by Overloading in C++
    33 File:     adolc_settings.h
    4  Revision: $Id$
     4 Revision: $Id: adolc_settings.h.in 537 2014-08-15 14:10:48Z kulshres $
    55 Contents: ADOL-C Settings:
    66           These parameters might affect the performance of the ADOL-C
  • stable/2.6/ADOL-C/src/drivers/psdrivers.c

    r661 r679  
    6262
    6363  zos_pl_forward(tag,m,n,1,x,y,z);
     64  printf("y =  %f ",y[0]);
     65  printf(" z = ");
     66  for(i=0;i<s;i++)
     67    printf(" %f ",z[i]);
     68  printf("\n");
    6469  for(i=0;i<m+s;i++){
    6570    int l = i - s;
     
    95100
    96101
     102/*--------------------------------------------------------------------------*/
     103/*                                              directional_active_gradient */
     104/*                                                                          */
     105int directional_active_gradient(short tag,      /* trace identifier */
     106                                int n,          /* number of independents */
     107                                double* x,      /* value of independents */
     108                                short *sigma_x, /* sigma of x */
     109                                double* d,      /* direction */
     110                                double* g,      /* directional active gradient */
     111                                double** grad_u,     
     112                                short *sigma_g  /* sigma of g */
     113                                )
     114{
     115  int i, j, p, k, s, max_dk, done, sum, keep;
     116  double max_entry, y, by;
     117  double *z;
     118  double **E, **invE, **grad, **gradu;
     119
     120  keep = 1;
     121  by = 1;
     122
     123  s=get_num_switches(tag);
     124
     125  z = myalloc1(s);
     126
     127  grad = (double**)myalloc2(1,n);
     128  gradu = (double**)myalloc2(s,n);
     129  E = (double**)myalloc2(n,n);
     130
     131#if !defined(ADOLC_USE_CALLOC)
     132  memset(&(E[0][0]), 0, n*n*sizeof(double));
     133#endif
     134
     135  max_dk=0;
     136  max_entry = -1;
     137  for(i=0;i<n;i++){
     138    E[i][0] = d[i];
     139    if(max_entry<fabs(d[i])){
     140      max_dk=i;
     141      max_entry = fabs(d[i]);
     142    }
     143  }
     144
     145  k = 1; done = 0;
     146  j = 0;
     147
     148  while((k<6) && (done == 0))
     149    {
     150      fov_pl_sig_forward(tag,1,n,k,x,E,s,sigma_x,NULL,&y,grad,z,gradu,sigma_g);
     151
     152      printf(" fov_pl_sig x: %f \n",y);
     153      printf(" sigma_g \n");
     154      sum = 0;
     155      for(i=0;i<s;i++)
     156        {
     157          printf(" %d ",sigma_g[i]);
     158          printf("\n");
     159          sum += fabs(sigma_g[i]);
     160        }
     161
     162      fov_pl_forward(tag,1,n,k,x,E,&y,grad,z,gradu);
     163
     164      printf(" fov_pl x: %f \n",y);
     165
     166
     167       if (sum == s)
     168        {
     169
     170          zos_pl_forward(tag,1,n,keep,x,&y,z);
     171          fos_pl_sig_reverse(tag,1,n,s,sigma_g, &by ,g);
     172          done = 1;
     173        }
     174      else
     175        {
     176          if(j==max_dk)
     177            j++;
     178          E[j][k]=1;
     179          j++;
     180          k++;
     181        }
     182    }
     183
     184  if (done == 0)
     185    {
     186      printf(" NOT ENOUGH DIRECTIONS !!!!\n");
     187        exit(-1);
     188    }
     189
     190  myfree1(z); myfree2(E); myfree2(grad); myfree2(gradu);
     191  return 0;
     192}
    97193END_C_DECLS
  • stable/2.6/ADOL-C/src/uni5_for.c

    r639 r679  
    8787#elif defined(_ABS_NORM_SIG_)
    8888#define GENERATED_FILENAME "fov_pl_sig_forward"
    89 #if defined(_MSC_VER) && _MSC_VER < 1800
     89#if defined(_MSC_VER) && _MSC_VER < 180
    9090#define fmin __min
    9191#define fmax __max
     
    20482048                IF_KEEP_WRITE_TAYLOR(res,keep,k,p)
    20492049
     2050                 
    20502051#if !defined(_NTIGHT_)
    20512052                dp_T0[res] = dp_T0[arg1] + dp_T0[arg2];
     
    43944395                COPYTAYL_P(swtaylors[switchnum],Targ);
    43954396                FOR_0_LE_l_LT_p
    4396                     TRES_INC = y * TARG_INC;
     4397                    TRES_INC = fabs(dp_T0[arg]+TARG_INC)-fabs(dp_T0[arg]);
    43974398#elif defined(_ABS_NORM_SIG_)
    43984399                if (sigdir == NULL)
     
    63416342#if defined(_ABS_NORM_) && defined(_FOV_)
    63426343short firstsign(int p, double *u, double* du) {
    6343     int i=0;
     6344    int i=1;
    63446345    short tmp;
    6345     tmp=(*u>0.0)?1.0:((*u<0.0)?-1.0:0.0);
     6346    tmp=((*u+*du)>0.0)?1.0:(((*u+*du)<0.0)?-1.0:0.0);
    63466347    while(i<p && tmp==0.0) {
    63476348        tmp=(du[i]>0.0)?1.0:((du[i]<0.0)?-1.0:0.0);
Note: See TracChangeset for help on using the changeset viewer.