Sha256: 87f41be4b7f3cd8a4a32b4adf12345ca9bcfc3c20e9993f283116a4e097beb92

Contents?: true

Size: 1.28 KB

Versions: 1

Compression:

Stored size: 1.28 KB

Contents

#ifndef _SCS_FILE_TEST_CHASSIS
#define _SCS_FILE_TEST_CHASSIS

#include "glbopts.h"
#include "minunit.h"
#include "problem_utils.h"
#include "rw.h"
#include "scs.h"
#include "util.h"

static const char *_test_prob_from_data(const char *file, scs_float OPT) {
  scs_int read_status;
  ScsData *d;
  ScsCone *k;
  ScsSettings *stgs;
  ScsSolution *sol;
  ScsInfo info = {0};
  scs_int exitflag;
  scs_float perr, derr;
  scs_int success;
  const char *fail;

  read_status = SCS(read_data)(file, &d, &k, &stgs);

  if (read_status < 0) {
    return "Data read failure, exit.\n";
  }

  stgs->eps_abs = 1e-6;
  stgs->eps_rel = 1e-6;

  sol = (ScsSolution *)scs_calloc(1, sizeof(ScsSolution));
  exitflag = scs(d, k, stgs, sol, &info);

  perr = SCS(dot)(d->c, sol->x, d->n) - OPT;
  derr = -SCS(dot)(d->b, sol->y, d->m) - OPT;
  scs_printf("primal obj error %4e\n", perr);
  scs_printf("dual obj error %4e\n", derr);

  success = ABS(perr) < 1e-4 && ABS(derr) < 1e-4 && exitflag == SCS_SOLVED;
  if (!success) {
    scs_printf("%s: FAILED\n", file);
  }
  mu_assert(file, success);
  fail = verify_solution_correct(d, k, stgs, &info, sol, exitflag);
  SCS(free_data)(d);
  SCS(free_cone)(k);
  SCS(free_sol)(sol);
  scs_free(stgs);

  if (fail) {
    scs_printf("%s: FAILED\n", file);
  }
  return fail;
}

#endif

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
scs-0.4.1 vendor/scs/test/problems/test_prob_from_data_file.h