Skip to content

Commit

Permalink
Update C tests and examples for 64-bit integer
Browse files Browse the repository at this point in the history
  • Loading branch information
amontoison committed Feb 9, 2024
1 parent 95ffea5 commit 254238d
Show file tree
Hide file tree
Showing 100 changed files with 2,149 additions and 2,149 deletions.
30 changes: 15 additions & 15 deletions src/bgo/C/bgos.c
Original file line number Diff line number Diff line change
Expand Up @@ -12,21 +12,21 @@ struct userdata_type {
};

// Function prototypes
int fun( int n, const real_wp_ x[], real_wp_ *f, const void * );
int grad( int n, const real_wp_ x[], real_wp_ g[], const void * );
int hess( int n, int ne, const real_wp_ x[], real_wp_ hval[], const void * );
int hessprod( int n, const real_wp_ x[], real_wp_ u[], const real_wp_ v[],
ipc_ fun( ipc_ n, const real_wp_ x[], real_wp_ *f, const void * );
ipc_ grad( ipc_ n, const real_wp_ x[], real_wp_ g[], const void * );
ipc_ hess( ipc_ n, ipc_ ne, const real_wp_ x[], real_wp_ hval[], const void * );
ipc_ hessprod( ipc_ n, const real_wp_ x[], real_wp_ u[], const real_wp_ v[],
bool got_h, const void * );

int main(void) {
ipc_ main(void) {

// Derived types
void *data;
struct bgo_control_type control;
struct bgo_inform_type inform;

// Initialize BGO
int status;
ipc_ status;
bgo_initialize( &data, &control, &status );

// Set user-defined control options
Expand All @@ -43,14 +43,14 @@ int main(void) {
userdata.mag = 1000.0;

// Set problem data
int n = 3; // dimension
int ne = 5; // Hesssian elements
ipc_ n = 3; // dimension
ipc_ ne = 5; // Hesssian elements
real_wp_ x[] = {0,0,0}; // start from zero
real_wp_ x_l[] = {-10.0,-10.0,-10.0};
real_wp_ x_u[] = {0.5,0.5,0.5};
char H_type[] = "coordinate"; // specify co-ordinate storage
int H_row[] = {0, 1, 2, 2, 2}; // Hessian H
int H_col[] = {0, 1, 0, 1, 2}; // NB lower triangle
ipc_ H_row[] = {0, 1, 2, 2, 2}; // Hessian H
ipc_ H_col[] = {0, 1, 0, 1, 2}; // NB lower triangle

// Set storage
real_wp_ g[n]; // gradient
Expand All @@ -72,11 +72,11 @@ int main(void) {
printf("BGO successful solve\n");
printf("TR iter: %d \n", inform.trb_inform.iter);
printf("x: ");
for(int i = 0; i < n; i++) printf("%f ", x[i]);
for(ipc_ i = 0; i < n; i++) printf("%f ", x[i]);
printf("\n");
printf("objective: %f \n", inform.obj);
printf("gradient: ");
for(int i = 0; i < n; i++) printf("%f ", g[i]);
for(ipc_ i = 0; i < n; i++) printf("%f ", g[i]);
printf("\n");
printf("f_eval: %d \n", inform.f_eval);
printf("time: %f \n", inform.time.clock_total);
Expand All @@ -93,7 +93,7 @@ int main(void) {
}

// Objective function
int fun( int n, const real_wp_ x[], real_wp_ *f, const void *userdata){
ipc_ fun( ipc_ n, const real_wp_ x[], real_wp_ *f, const void *userdata){
struct userdata_type *myuserdata = (struct userdata_type *) userdata;
real_wp_ p = myuserdata->p;
real_wp_ freq = myuserdata->freq;
Expand All @@ -105,7 +105,7 @@ int fun( int n, const real_wp_ x[], real_wp_ *f, const void *userdata){
}

// Gradient of the objective
int grad( int n, const real_wp_ x[], real_wp_ g[], const void *userdata){
ipc_ grad( ipc_ n, const real_wp_ x[], real_wp_ g[], const void *userdata){
struct userdata_type *myuserdata = (struct userdata_type *) userdata;
real_wp_ p = myuserdata->p;
real_wp_ freq = myuserdata->freq;
Expand All @@ -118,7 +118,7 @@ int grad( int n, const real_wp_ x[], real_wp_ g[], const void *userdata){
}

// Hessian of the objective
int hess( int n, int ne, const real_wp_ x[], real_wp_ hval[],
ipc_ hess( ipc_ n, ipc_ ne, const real_wp_ x[], real_wp_ hval[],
const void *userdata){
struct userdata_type *myuserdata = (struct userdata_type *) userdata;
real_wp_ freq = myuserdata->freq;
Expand Down
38 changes: 19 additions & 19 deletions src/bgo/C/bgos2.c
Original file line number Diff line number Diff line change
Expand Up @@ -12,23 +12,23 @@ struct userdata_type {
};

// Function prototypes
int fun( int n, const real_wp_ x[], real_wp_ *f, const void * );
int grad( int n, const real_wp_ x[], real_wp_ g[], const void * );
int hessprod( int n, const real_wp_ x[], real_wp_ u[], const real_wp_ v[],
ipc_ fun( ipc_ n, const real_wp_ x[], real_wp_ *f, const void * );
ipc_ grad( ipc_ n, const real_wp_ x[], real_wp_ g[], const void * );
ipc_ hessprod( ipc_ n, const real_wp_ x[], real_wp_ u[], const real_wp_ v[],
bool got_h, const void * );
int shessprod( int n, const real_wp_ x[], int nnz_v, const int index_nz_v[],
const real_wp_ v[], int *nnz_u, int index_nz_u[], real_wp_ u[],
ipc_ shessprod( ipc_ n, const real_wp_ x[], ipc_ nnz_v, const ipc_ index_nz_v[],
const real_wp_ v[], int *nnz_u, ipc_ index_nz_u[], real_wp_ u[],
bool got_h, const void * );

int main(void) {
ipc_ main(void) {

// Derived types
void *data;
struct bgo_control_type control;
struct bgo_inform_type inform;

// Initialize BGO
int status;
ipc_ status;
bgo_initialize( &data, &control, &status );

// Set user-defined control options
Expand All @@ -43,8 +43,8 @@ int main(void) {
userdata.p = 4.0;

// Set problem data
int n = 3; // dimension
int ne = 5; // Hesssian elements
ipc_ n = 3; // dimension
ipc_ ne = 5; // Hesssian elements
real_wp_ x[] = {1.,1.,1.}; // start from one
real_wp_ infty = 1e20; // infinity
real_wp_ x_l[] = {-infty,-infty, 0.};
Expand All @@ -69,11 +69,11 @@ int main(void) {
printf("BGO successful solve\n");
printf("iter: %d \n", inform.trb_inform.iter);
printf("x: ");
for(int i = 0; i < n; i++) printf("%f ", x[i]);
for(ipc_ i = 0; i < n; i++) printf("%f ", x[i]);
printf("\n");
printf("objective: %f \n", inform.obj);
printf("gradient: ");
for(int i = 0; i < n; i++) printf("%f ", g[i]);
for(ipc_ i = 0; i < n; i++) printf("%f ", g[i]);
printf("\n");
printf("f_eval: %d \n", inform.f_eval);
printf("time: %f \n", inform.time.clock_total);
Expand All @@ -90,7 +90,7 @@ int main(void) {
}

// Objective function
int fun(int n, const real_wp_ x[], real_wp_ *f, const void *userdata){
ipc_ fun(ipc_ n, const real_wp_ x[], real_wp_ *f, const void *userdata){
struct userdata_type *myuserdata = (struct userdata_type *) userdata;
real_wp_ p = myuserdata->p;

Expand All @@ -99,7 +99,7 @@ int fun(int n, const real_wp_ x[], real_wp_ *f, const void *userdata){
}

// Gradient of the objective
int grad(int n, const real_wp_ x[], real_wp_ g[], const void *userdata){
ipc_ grad(ipc_ n, const real_wp_ x[], real_wp_ g[], const void *userdata){
struct userdata_type *myuserdata = (struct userdata_type *) userdata;
real_wp_ p = myuserdata->p;

Expand All @@ -110,7 +110,7 @@ int grad(int n, const real_wp_ x[], real_wp_ g[], const void *userdata){
}

// Hessian-vector product
int hessprod(int n, const real_wp_ x[], real_wp_ u[], const real_wp_ v[],
ipc_ hessprod(ipc_ n, const real_wp_ x[], real_wp_ u[], const real_wp_ v[],
bool got_h, const void *userdata){
u[0] = u[0] + 2.0 * ( v[0] + v[2] ) - cos( x[0] ) * v[0];
u[1] = u[1] + 2.0 * ( v[1] + v[2] );
Expand All @@ -119,13 +119,13 @@ int hessprod(int n, const real_wp_ x[], real_wp_ u[], const real_wp_ v[],
}

// Sparse Hessian-vector product
int shessprod(int n, const real_wp_ x[], int nnz_v, const int index_nz_v[],
const real_wp_ v[], int *nnz_u, int index_nz_u[], real_wp_ u[],
ipc_ shessprod(ipc_ n, const real_wp_ x[], ipc_ nnz_v, const ipc_ index_nz_v[],
const real_wp_ v[], int *nnz_u, ipc_ index_nz_u[], real_wp_ u[],
bool got_h, const void *userdata){
real_wp_ p[] = {0., 0., 0.};
bool used[] = {false, false, false};
for(int i = 0; i < nnz_v; i++){
int j = index_nz_v[i];
for(ipc_ i = 0; i < nnz_v; i++){
ipc_ j = index_nz_v[i];
switch(j){
case 0:
p[0] = p[0] + 2.0 * v[0] - cos(x[0]) * v[0];
Expand All @@ -150,7 +150,7 @@ int shessprod(int n, const real_wp_ x[], int nnz_v, const int index_nz_v[],
}
}
*nnz_u = 0;
for(int j = 0; j < 3; j++){
for(ipc_ j = 0; j < 3; j++){
if(used[j]){
u[j] = p[j];
*nnz_u = *nnz_u + 1;
Expand Down
18 changes: 9 additions & 9 deletions src/bgo/C/bgos3.c
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,15 @@
#include "galahad_precision.h"
#include "galahad_bgo.h"

int main(void) {
ipc_ main(void) {

// Derived types
void *data;
struct bgo_control_type control;
struct bgo_inform_type inform;

// Initialize BGO
int status;
ipc_ status;
bgo_initialize( &data, &control, &status );

// Set user-defined control options
Expand All @@ -25,18 +25,18 @@ int main(void) {
//control.print_level = 1;

// Set problem data
int n = 3; // dimension
int ne = 5; // Hesssian elements
ipc_ n = 3; // dimension
ipc_ ne = 5; // Hesssian elements
real_wp_ x[] = {1.,1.,1.}; // start from one
real_wp_ infty = 1e20; // infinity
real_wp_ x_l[] = {-infty,-infty, 0.};
real_wp_ x_u[] = {1.1,1.1,1.1};
char H_type[] = "coordinate"; // specify co-ordinate storage
int H_row[] = {0, 2, 1, 2, 2}; // Hessian H
int H_col[] = {0, 0, 1, 1, 2}; // NB lower triangle
ipc_ H_row[] = {0, 2, 1, 2, 2}; // Hessian H
ipc_ H_col[] = {0, 0, 1, 1, 2}; // NB lower triangle

// Reverse-communication input/output
int eval_status;
ipc_ eval_status;
real_wp_ f;
real_wp_ g[n];
real_wp_ u[n], v[n];
Expand Down Expand Up @@ -122,11 +122,11 @@ int main(void) {
// Print solution details
printf("iter: %d \n", inform.trb_inform.iter);
printf("x: ");
for(int i = 0; i < n; i++) printf("%f ", x[i]);
for(ipc_ i = 0; i < n; i++) printf("%f ", x[i]);
printf("\n");
printf("objective: %f \n", inform.obj);
printf("gradient: ");
for(int i = 0; i < n; i++) printf("%f ", g[i]);
for(ipc_ i = 0; i < n; i++) printf("%f ", g[i]);
printf("\n");
printf("f_eval: %d \n", inform.f_eval);
printf("time: %f \n", inform.time.clock_total);
Expand Down
22 changes: 11 additions & 11 deletions src/bgo/C/bgos4.c
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,15 @@
#include "galahad_precision.h"
#include "galahad_bgo.h"

int main(void) {
ipc_ main(void) {

// Derived types
void *data;
struct bgo_control_type control;
struct bgo_inform_type inform;

// Initialize BGO
int status;
ipc_ status;
bgo_initialize( &data, &control, &status );

// Set user-defined control options
Expand All @@ -25,20 +25,20 @@ int main(void) {
//control.print_level = 1;

// Set problem data
int n = 3; // dimension
int ne = 5; // Hesssian elements
ipc_ n = 3; // dimension
ipc_ ne = 5; // Hesssian elements
real_wp_ x[] = {1.,1.,1.}; // start from one
real_wp_ infty = 1e20; // infinity
real_wp_ x_l[] = {-infty,-infty, 0.};
real_wp_ x_u[] = {1.1,1.1,1.1};
char H_type[] = "absent"; // specify Hessian-vector products

// Reverse-communication input/output
int eval_status, nnz_u, nnz_v;
ipc_ eval_status, nnz_u, nnz_v;
real_wp_ f;
real_wp_ g[n];
real_wp_ u[n], v[n];
int index_nz_u[n], index_nz_v[n];
ipc_ index_nz_u[n], index_nz_v[n];

// Set Hessian storage format, structure and problem bounds
bgo_import( &control, &data, &status, n, x_l, x_u,
Expand Down Expand Up @@ -77,8 +77,8 @@ int main(void) {
}else if(status == 7){ // obtain sparse Hessian-vector product
real_wp_ tmp[] = {0., 0., 0.};
bool used[] = {false, false, false};
for(int i = 0; i < nnz_v; i++){
int j = index_nz_v[i];
for(ipc_ i = 0; i < nnz_v; i++){
ipc_ j = index_nz_v[i];
switch(j){
case 0:
tmp[0] = tmp[0] + 2.0 * v[0] - cos(x[0]) * v[0];
Expand All @@ -103,7 +103,7 @@ int main(void) {
}
}
nnz_u = 0;
for(int j = 0; j < 3; j++){
for(ipc_ j = 0; j < 3; j++){
if(used[j]){
u[j] = tmp[j];
nnz_u = nnz_u + 1;
Expand Down Expand Up @@ -150,11 +150,11 @@ int main(void) {
// Print solution details
printf("iter: %d \n", inform.trb_inform.iter);
printf("x: ");
for(int i = 0; i < n; i++) printf("%f ", x[i]);
for(ipc_ i = 0; i < n; i++) printf("%f ", x[i]);
printf("\n");
printf("objective: %f \n", inform.obj);
printf("gradient: ");
for(int i = 0; i < n; i++) printf("%f ", g[i]);
for(ipc_ i = 0; i < n; i++) printf("%f ", g[i]);
printf("\n");
printf("f_eval: %d \n", inform.f_eval);
printf("time: %f \n", inform.time.clock_total);
Expand Down
Loading

0 comments on commit 254238d

Please sign in to comment.