Algorithm: trust-region Newton. Each macro step solves the
subproblem min_p g.p + 1/2 p.H p s.t. |p| <= Delta by the
Steihaug-Toint preconditioned conjugate-gradient method (preconditioner
M = diag(h_diag)); the step is accepted/rejected and Delta updated from
the ratio of actual to predicted energy reduction. H.p is formed matrix-
free via calc_h_op (a Fock-like contraction); H is never built.
Convention: calc_g_h / calc_h_op return half the true orbital gradient /
Hessian (same as otr_interface, which scales by 2), so we scale by 2.
Note
E1 implementation (CG-Steihaug + basic trust control). Hardening of the micro-solver for pathological/negative-gap cases (Jacobi-Davidson, restarts, random trial vectors) is Phase-E2.