static VALUE rb_ool_conmin_gencan_parameters_default(VALUE klass) { ool_conmin_gencan_parameters P; VALUE ary; ool_conmin_parameters_default(ool_conmin_minimizer_gencan, (void*) &P); ary = create_parameters_ary_gencan(&P); RBGSL_SET_CLASS(ary, cool_conmin_gencan_parameters); return ary; }
static VALUE rb_ool_conmin_gencan_parameters_default(VALUE klass) { ool_conmin_gencan_parameters P; VALUE ary; ool_conmin_parameters_default(ool_conmin_minimizer_gencan, (void*) &P); ary = create_parameters_ary_gencan(&P); RBASIC(ary)->klass = cool_conmin_gencan_parameters; return ary; }
static void* get_parameter(const ool_conmin_minimizer_type *T, ool_conmin_pgrad_parameters *Pp, ool_conmin_spg_parameters *Ps, ool_conmin_gencan_parameters *Pg, VALUE ary) { if (T == ool_conmin_minimizer_pgrad) { if (ary == Qnil) { ool_conmin_parameters_default(T, (void*) Pp); } else { Pp->fmin = NUM2DBL(rb_ary_entry(ary, 0)); Pp->tol = NUM2DBL(rb_ary_entry(ary, 1)); Pp->alpha = NUM2DBL(rb_ary_entry(ary, 2)); Pp->sigma1 = NUM2DBL(rb_ary_entry(ary, 3)); Pp->sigma2 = NUM2DBL(rb_ary_entry(ary, 4)); } return (void*) Pp; } else if (T == ool_conmin_minimizer_spg) { if (ary == Qnil) { ool_conmin_parameters_default(T, (void*) Ps); } else { Ps->fmin = NUM2DBL(rb_ary_entry(ary, 0)); Ps->tol = NUM2DBL(rb_ary_entry(ary, 1)); Ps->M = NUM2DBL(rb_ary_entry(ary, 2)); Ps->alphamin = NUM2DBL(rb_ary_entry(ary, 3)); Ps->alphamax = NUM2DBL(rb_ary_entry(ary, 4)); Ps->gamma = NUM2DBL(rb_ary_entry(ary, 5)); Ps->sigma2 = NUM2DBL(rb_ary_entry(ary, 6)); Ps->sigma2 = NUM2DBL(rb_ary_entry(ary, 7)); } return (void*) Ps; } else { if (ary == Qnil) { ool_conmin_parameters_default(T, (void*) Pg); } else { Pg->epsgpen = NUM2DBL(rb_ary_entry(ary, 0)); Pg->epsgpsn = NUM2DBL(rb_ary_entry(ary, 1)); Pg->fmin = NUM2DBL(rb_ary_entry(ary, 2)); Pg->udelta0 = NUM2DBL(rb_ary_entry(ary, 3)); Pg->ucgmia = NUM2DBL(rb_ary_entry(ary, 4)); Pg->ucgmib = NUM2DBL(rb_ary_entry(ary, 5)); Pg->cg_scre = FIX2INT(rb_ary_entry(ary, 6)); Pg->cg_gpnf = NUM2DBL(rb_ary_entry(ary, 7)); Pg->cg_epsi = NUM2DBL(rb_ary_entry(ary, 8)); Pg->cg_epsf = NUM2DBL(rb_ary_entry(ary, 9)); Pg->cg_epsnqmp = NUM2DBL(rb_ary_entry(ary, 10)); Pg->cg_maxitnqmp = (size_t) FIX2INT(rb_ary_entry(ary, 11)); Pg->nearlyq = FIX2INT(rb_ary_entry(ary, 12)); Pg->nint = NUM2DBL(rb_ary_entry(ary, 13)); Pg->next = NUM2DBL(rb_ary_entry(ary, 14)); Pg->mininterp = (size_t) FIX2INT(rb_ary_entry(ary, 15)); Pg->maxextrap = (size_t) FIX2INT(rb_ary_entry(ary, 16)); Pg->trtype = FIX2INT(rb_ary_entry(ary, 17)); Pg->eta = NUM2DBL(rb_ary_entry(ary, 18)); Pg->delmin = NUM2DBL(rb_ary_entry(ary, 19)); Pg->lspgmi = NUM2DBL(rb_ary_entry(ary, 20)); Pg->lspgma = NUM2DBL(rb_ary_entry(ary, 21)); Pg->theta = NUM2DBL(rb_ary_entry(ary, 22)); Pg->gamma = NUM2DBL(rb_ary_entry(ary, 23)); Pg->beta = NUM2DBL(rb_ary_entry(ary, 24)); Pg->sigma1 = NUM2DBL(rb_ary_entry(ary, 25)); Pg->sigma2 = NUM2DBL(rb_ary_entry(ary, 26)); Pg->epsrel = NUM2DBL(rb_ary_entry(ary, 27)); Pg->epsabs = NUM2DBL(rb_ary_entry(ary, 28)); Pg->infrel = NUM2DBL(rb_ary_entry(ary, 29)); Pg->infabs = NUM2DBL(rb_ary_entry(ary, 30)); } return (void*) Pg; } }