int RTOp_ROp_fraction_to_boundary_construct( RTOp_value_type tau,  struct RTOp_RTOp* op )
{
#ifdef RTOp_DEBUG
  assert(op);
#endif
  op->obj_data  = NULL;
  op->vtbl      = &RTOp_ROp_fraction_to_boundary_vtbl;
  op->vtbl->obj_data_vtbl->obj_create(NULL,NULL,&op->obj_data);
  return RTOp_ROp_fraction_to_boundary_init(tau,op);
}
AbstractLinAlgPack::value_type
AbstractLinAlgPack::fraction_to_boundary(
  const value_type tau,
  const Vector& x,
  const Vector& d,
  const Vector& xl,
  const Vector& xu
  )
{
  TEST_FOR_EXCEPT(0!=RTOp_ROp_fraction_to_boundary_init( tau, &fraction_to_boundary_op.op() ));
  fraction_to_boundary_op.reduct_obj_reinit(&*fraction_to_boundary_targ);
  const int num_vecs = 4;
  const Vector*
    vecs[num_vecs] = { &x, &d, &xl, &xu };
  apply_op(
    fraction_to_boundary_op, num_vecs, vecs, 0, NULL
    ,&*fraction_to_boundary_targ );
  return RTOp_ROp_fraction_to_boundary_val(fraction_to_boundary_op(*fraction_to_boundary_targ));
}