*/
#include <math.h>
+#include <string.h>
#include <gsl/gsl_errno.h>
#include <gsl/gsl_sf.h>
return gsl_sf_sinc(x / M_PI);
}
+static int NP;
static double *INPUT; /* dyanmic array, on main's stack */
static double PREP[NPREP];
CALCULATE_F_G;
double e = 0;
+ int P;
for (P=0; P<NP-3; P++) {
double P_cost;
CALCULATE_COST;
double *x = xp;
int i;
double step[NX];
- gsl_ran_dir_nd(rng, N,step);
- for (i=0; i<N; i++)
+ gsl_ran_dir_nd(rng, NX, step);
+ for (i=0; i<NX; i++)
x[i] += step_size * step[i];
//printf("\n cb_step %p %10.7f [", xp, step_size);
//for (i=0; i<N; i++) printf(" %10.7f,", step[i]);
const double *x=xp, *y=yp;
int i;
double s;
- for (i=0, s=0; i<N; i++) {
+ for (i=0, s=0; i<NX; i++) {
double d = x[i] - y[i];
s += d*d;
}
return sqrt(s);
}
-static void printcore(const double *x) {
+static void printcore(const double *X) {
int i;
- double F[N];
- X_EXTRACT;
- F_POPULATE;
printf("[");
- for (i=0; i<6; i++) printf(" %.18g,", x[i]);
- for (i=0; i<6; i++) printf(" %.18g,", F[i]);
+ for (i=0; i<NX; i++) printf(" %.18g,", X[i]);
printf(" ]\n");
}
return v;
}
-int main(int argc, const char *const argv) {
+int main(int argc, const char *const *argv) {
double epsilon;
int i;
R = C + 0.5 * (C - D)
QR = R - Q
BC = C - B
- cost_ABCD = (QR & QR) / (BC & BC)
global cost_ABCD
+ cost_ABCD = (QR & QR) / (BC & BC)
dbg('cost_ABCD')
dprint(A)
gen_point_index_macro('E', 'INPUT', '3*0')
gen_point_index_macro('F0', 'INPUT', '3*1')
- gen_point_index_macro('G0', 'INPUT', '3*(N-2)')
- gen_point_index_macro('H', 'INPUT', '3*(N-1)')
- cprintraw( '#define NINPUT ( 3*(N-0) )')
+ gen_point_index_macro('G0', 'INPUT', '3*(NP-2)')
+ gen_point_index_macro('H', 'INPUT', '3*(NP-1)')
+ cprintraw( '#define NINPUT ( 3*(NP-0) )')
gen_point_index_macro('En', 'PREP', '3*0')
gen_point_index_macro('Hn', 'PREP', '3*1')
- cprintraw( '#define PREP_N (3*2)')
+ cprintraw( '#define NPREP (3*2)')
- cprintraw('#define X_N_DIRECT 3*(N-4)')
+ cprintraw('#define NX_DIRECT 3*(NP-4)')
cprint('#define POINT(PP) (')
- cprint(' (PP) == 0 ? E :')
- cprint(' (PP) == 1 ? F :')
- cprint(' (PP) == N-2 ? G :')
- cprint(' (PP) == N-1 ? H :')
+ cprint(' (PP) == 0 ? E :')
+ cprint(' (PP) == 1 ? F :')
+ cprint(' (PP) == NP-2 ? G :')
+ cprint(' (PP) == NP-1 ? H :')
cprint(' &X[3*((PP)-2)]')
cprintraw(')')
- cprintraw('#define EFl X[ X_N_DIRECT + 0 ]')
- cprintraw('#define GHl X[ X_N_DIRECT + 1 ]')
- cprintraw('#define X_N ( X_N_DIRECT + 2 )')
+ cprintraw('#define EFl X[ NX_DIRECT + 0 ]')
+ cprintraw('#define GHl X[ NX_DIRECT + 1 ]')
+ cprintraw('#define NX ( NX_DIRECT + 2 )')
for ai in range(0, len(abcd)):
cprintraw('#define %s POINT(P%+d)' % (abcd[ai], ai))
def gen_prepare():
cprint('#define PREPARE')
- cprint('memcpy(X, &INPUT[3*2], sizeof(double) * X_N_DIRECT)')
+ cprint('memcpy(X, &INPUT[3*2], sizeof(double) * NX_DIRECT);')
cassign_vector((F0 - E).normalize(), 'En', 'tmp_En')
cassign_vector((G0 - H).normalize(), 'Hn', 'tmp_Hn')
cprintraw('')