/usr/lib/petscdir/3.1/include/adic/ad_grad_daxpy.h is in libpetsc3.1-dev 3.1.dfsg-11ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 | /*
,
THIS PROGRAM DISCLOSES MATERIAL PROTECTABLE UNDER COPYRIGHT
LAWS OF THE UNITED STATES. FOR LICENSING INFORMATION CONTACT:
Christian Bischof or Lucas Roh, Mathematics and Computer Science Division,
Argonne National Laboratory, 9700 S. Cass Avenue, Argonne IL 60439,
{bischof,roh}@mcs.anl.gov.
*/
#if !defined(AD_GRAD_DYN_H)
#define AD_GRAD_DYN_H
#include "../adic/run-alloc.h"
#if defined(__cplusplus)
extern "C" {
#endif
#define VALIDATE(px) \
if (!*px) { \
*px = (double*)ad_adic_deriv_alloc(); \
} \
#define INVALIDATE(ppx) \
if (*ppx) { \
ad_adic_deriv_free(*ppx); \
*ppx = (double*)0; \
}
#define IS_ZERO(px) \
!px
#define SET_ZERO_FLAG(flag, px, pos)\
if (IS_ZERO(px)) {\
flag |= (1<<pos);\
}
#define DAXPY1(ppz, a, pa) \
{\
int _i; double*pz;\
VALIDATE(ppz);\
pz = *ppz; \
for (_i = 0; _i < ad_grad_size; _i++) {\
pz[_i] = a*pa[_i];\
}\
}
#define DAXPY2(ppz, a, pa, b, pb) \
{\
int _i; double*pz;\
VALIDATE(ppz);\
pz = *ppz;\
for (_i = 0; _i < ad_grad_size; _i++) {\
pz[_i] = a*pa[_i] + b*pb[_i];\
}\
}
#define DAXPY3(ppz, a, pa, b, pb, c, pc) \
{\
int _i; double*pz;\
VALIDATE(ppz);\
pz = *ppz;\
for (_i = 0; _i < ad_grad_size; _i++) {\
pz[_i] = a*pa[_i] + b*pb[_i] + c*pc[_i];\
}\
}
void ad_grad_daxpy_init(void);
void ad_grad_daxpy_final(void);
#define ad_grad_daxpy_free(pz) ad_adic_deriv_free(pz)
void ad_grad_daxpy_0(double** ppz);
void ad_grad_daxpy_copy(double** ppz, double* pa);
void ad_grad_daxpy_1(double** pz, double a, double* pa);
void ad_grad_daxpy_2(double** ppz, double a, double* pa,
double b, double* pb);
void ad_grad_daxpy_3(double** ppz, double a, double* pa,
double b, double* pb, double c, double* pc);
void ad_grad_daxpy_n(int n, double** ppz, ...);
void ad_grad_daxpy_4(double** ppz, double ca, double* pa, double cb, double* pb, double cc, double* pc, double cd, double* pd);
void ad_grad_daxpy_5(double** ppz, double ca, double* pa, double cb, double* pb, double cc, double* pc, double cd, double* pd, double ce, double* pe);
#if defined(__cplusplus)
}
#endif
#endif /*AD_GRAD_DYN_H*/
|