Changeset 6


Ignore:
Timestamp:
Apr 27, 2009 12:33:21 PM (11 years ago)
Author:
awalther
Message:

bug fixed for revreal as float

Location:
trunk/adolc
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/adolc/convolut.c

    r1 r6  
    2424/* Evaluates convolution of a and b to c */
    2525void conv( int dim, double *a, revreal *b, double *c ) {
     26    double tmpVal;
     27    int i,j;
     28    for (i=dim-1; i>=0; i--) {
     29        tmpVal = a[i]*b[0];
     30        for (j=1; j<=i; j++)
     31            tmpVal += a[i-j]*b[j];
     32        c[i] = tmpVal;
     33    }
     34}
     35
     36void conv0( int dim, revreal *a, revreal *b, double *c ) {
    2637    double tmpVal;
    2738    int i,j;
     
    6576}
    6677
     78/*--------------------------------------------------------------------------*/
     79/* olvo 980616 nf */
     80/* Increments truncated convolution of a and b to c and sets a to zero */
     81void inconv1( int dim, revreal *a, revreal *b, revreal *c ) {
     82    revreal tmpVal;
     83    int i,j;
     84    for (i=dim-1; i>=0; i--) {
     85        tmpVal = a[i]*b[0];
     86        a[i] = 0;
     87        for (j=1; j<=i; j++)
     88            tmpVal += a[i-j]*b[j];
     89        c[i] += tmpVal;
     90    }
     91}
     92
    6793/****************************************************************************/
    6894/*                                                  DECREMENTAL CONVOLUTION */
     
    90116        tmpVal = a[i]*b[0];
    91117        a[i] = 0;
     118        for (j=1; j<=i; j++)
     119            tmpVal += a[i-j]*b[j];
     120        c[i] -= tmpVal;
     121    }
     122}
     123
     124/*--------------------------------------------------------------------------*/
     125/* Decrements truncated convolution of a and b to c */
     126void deconv1( int dim, revreal *a, revreal *b, revreal *c ) {
     127    revreal tmpVal;
     128    int i,j;
     129    for (i=dim-1; i>=0; i--) {
     130        tmpVal = a[i]*b[0];
    92131        for (j=1; j<=i; j++)
    93132            tmpVal += a[i-j]*b[j];
  • trunk/adolc/convolut.h

    r1 r6  
    2626/*--------------------------------------------------------------------------*/
    2727/* Evaluates convolution of a and b to c */
    28 void conv( int dim, double *a, double *b, double *c );
     28void conv( int dim, double *a, revreal *b, double *c );
     29void conv0( int dim, revreal *a, revreal *b, double *c );
    2930
    3031/****************************************************************************/
     
    3334/*--------------------------------------------------------------------------*/
    3435/* Increments truncated convolution of a and b to c */
    35 void inconv ( int dim, double *a, double *b, double* c );
     36void inconv ( int dim, double *a, revreal *b, double* c );
    3637
    3738/*--------------------------------------------------------------------------*/
    3839/* Increments truncated convolution of a and b to c and sets a to zero */
    39 void inconv0( int dim, double *a, double *b, double* c );
     40void inconv0( int dim, double *a, revreal *b, double* c );
     41void inconv1( int dim, revreal *a, revreal *b, revreal* c );
    4042
    4143
     
    4951/*--------------------------------------------------------------------------*/
    5052/* Decrements truncated convolution of a and b to c and sets a to zero */
    51 void deconv0( int dim, double* a, double *b, double* c );
     53void deconv0( int dim, double* a, revreal *b, double* c );
     54void deconv1( int dim, revreal* a, revreal *b, revreal* c );
    5255
    5356
     
    5659
    5760/*--------------------------------------------------------------------------*/
    58 void divide(int dim, double* a, double *b, double* c);
     61void divide(int dim, revreal* a, revreal *b, revreal* c);
    5962
    6063/*--------------------------------------------------------------------------*/
    61 void recipr(int dim, double  a, double *b, double* c);
     64void recipr(int dim, double  a, revreal *b, revreal* c);
    6265
    6366
  • trunk/adolc/ho_rev.c

    r1 r6  
    10311031                /* RECOMPUTATION */
    10321032                ASSIGN_T( Tres,  rpp_T[res])
    1033                 deconv(k,Targ1,Targ2,Tres);
     1033                deconv1(k,Targ1,Targ2,Tres);
    10341034
    10351035                FOR_0_LE_l_LT_p
     
    10741074                /* RECOMPUTATION */
    10751075                ASSIGN_T( Tres,  rpp_T[res])
    1076                 inconv(k,Targ1,Targ2,Tres);
     1076                inconv1(k,Targ1,Targ2,Tres);
    10771077
    10781078                FOR_0_LE_l_LT_p
     
    10891089                    AARG2_INC_O;
    10901090
    1091                     deconv(k,Ares,Targ1,Aarg2);
    1092                     deconv(k,Ares,Targ2,Aarg1);
     1091                    deconv0(k,Ares,Targ1,Aarg2);
     1092                    deconv0(k,Ares,Targ2,Aarg1);
    10931093
    10941094                    HOV_INC(Ares,  k)
     
    11681168                      VEC_COMPUTED_CHECK
    11691169                      recipr(k,1.0,Targ2,rp_Ttemp);
    1170                       conv(k ,rp_Ttemp,
     1170                      conv0(k ,rp_Ttemp,
    11711171                           Tres, dp_Atemp2);
    11721172                      VEC_COMPUTED_END
     
    12221222                      VEC_COMPUTED_CHECK
    12231223                      recipr(k,1.0,Targ,rp_Ttemp);
    1224                       conv(k, rp_Ttemp,
     1224                      conv0(k, rp_Ttemp,
    12251225                           Tres, dp_Atemp);
    12261226                      VEC_COMPUTED_END
    1227                       deconv0(k,Ares,dp_Atemp,Aarg);
     1227                      deconv(k,Ares,dp_Atemp,Aarg);
    12281228
    12291229                      HOV_INC(Ares, k)
     
    20732073
    20742074    /* clean up */
    2075     myfree2(rpp_T);
     2075    free((char*)*rpp_T);
     2076    free((char*) rpp_T);
    20762077    myfree2(dpp_A);
    20772078    free(rp_Ttemp);
Note: See TracChangeset for help on using the changeset viewer.