https://github.com/cran/aster
Tip revision: 63c8e8a453ea587001e2438a8ce51cf0e1e1675c authored by Charles J. Geyer on 23 March 2009, 00:00:00 UTC
version 0.7-7
version 0.7-7
Tip revision: 63c8e8a
astderiv.c
#include "aster.h"
#include "raster.h"
void aster_D_beta2theta2phi(int *nindin, int *nnodein, int *ncoefin,
int *pred, int *fam, double *theta, double *modmat, double *gradmat)
{
int nind = nindin[0];
int nnode = nnodein[0];
int ncoef = ncoefin[0];
int i, j, k, m, jfam, jbase;
aster_check_model(nindin, nnodein, pred, fam);
for (i = 0; i < nind * nnode * ncoef; ++i)
gradmat[i] = modmat[i];
/* j and k are 1-origin indexing */
for (j = nnode; j > 0; --j) {
k = pred[j - 1];
jfam = fam[j - 1];
if (k > 0) {
jbase = nind * (j - 1);
for (i = 0; i < nind; ++i) {
int one = 1;
double foo;
aster_family(&jfam, &one, &theta[jbase + i], &foo);
for (m = 0; m < ncoef; ++m)
gradmat[nind * (nnode * m + (k - 1)) + i] -=
modmat[nind * (nnode * m + (j - 1)) + i] * foo;
}
}
}
}