Lines Matching refs:dx
10 static PetscErrorCode Tao_mcstep(TaoLineSearch ls, PetscReal *stx, PetscReal *fx, PetscReal *dx, PetscReal *sty, PetscReal *fy, PetscReal *dy, PetscReal *stp, PetscReal *fp, PetscReal *dp);
320 subroutine mcstep(stx,fx,dx,sty,fy,dy,stp,fp,dp,bracket,
325 stx, fx, and dx are variables which specify the step,
328 of the step, that is, dx and stp-stx must have opposite
363 static PetscErrorCode Tao_mcstep(TaoLineSearch ls, PetscReal *stx, PetscReal *fx, PetscReal *dx, PetscReal *sty, PetscReal *fy, PetscReal *dy, PetscReal *stp, PetscReal *fp, PetscReal *dp)
373 PetscCheck(*dx * (*stp - *stx) < 0.0, PETSC_COMM_SELF, PETSC_ERR_ARG_OUTOFRANGE, "dx * (stp-stx) >= 0.0");
377 sgnd = *dp * (*dx / PetscAbsReal(*dx));
387 theta = 3 * (*fx - *fp) / (*stp - *stx) + *dx + *dp;
388 s = PetscMax(PetscAbsReal(theta), PetscAbsReal(*dx));
390 gamma1 = s * PetscSqrtScalar(PetscPowScalar(theta / s, 2.0) - (*dx / s) * (*dp / s));
393 p = (gamma1 - *dx) + theta;
394 q = ((gamma1 - *dx) + gamma1) + *dp;
397 stpq = *stx + ((*dx / ((*fx - *fp) / (*stp - *stx) + *dx)) * 0.5) * (*stp - *stx);
410 theta = 3 * (*fx - *fp) / (*stp - *stx) + *dx + *dp;
411 s = PetscMax(PetscAbsReal(theta), PetscAbsReal(*dx));
413 gamma1 = s * PetscSqrtScalar(PetscPowScalar(theta / s, 2.0) - (*dx / s) * (*dp / s));
416 q = ((gamma1 - *dp) + gamma1) + *dx;
419 stpq = *stp + (*dp / (*dp - *dx)) * (*stx - *stp);
424 } else if (PetscAbsReal(*dp) < PetscAbsReal(*dx)) {
436 theta = 3 * (*fx - *fp) / (*stp - *stx) + *dx + *dp;
437 s = PetscMax(PetscAbsReal(theta), PetscAbsReal(*dx));
442 gamma1 = s * PetscSqrtScalar(PetscMax(0.0, PetscPowScalar(theta / s, 2.0) - (*dx / s) * (*dp / s)));
445 q = (gamma1 + (*dx - *dp)) + gamma1;
450 stpq = *stp + (*dp / (*dp - *dx)) * (*stx - *stp);
496 *dy = *dx;
500 *dx = *dp;