Source code for minihf.hamiltonian.integral.boys

import numpy as np
import scipy.special as sc
from functools import lru_cache


[docs] @lru_cache(maxsize=8192) def boys(n, x): """ Boys function F_n(x) using incomplete gamma function. Parameters ---------- n : int x : float Returns ------- float """ if x < 1e-12: return 1.0 / (2 * n + 1) return ( 0.5 * x**(-(n + 0.5)) * sc.gammainc( n + 0.5, x, ) * sc.gamma(n + 0.5) )
[docs] def boys_recursion(n, x, fn): """ Downward recursion F_{n-1}(x) from F_n(x) Parameters ---------- n : int x : float fn : callable Returns ------- float """ return (np.exp(-x)+ 2.0 * x * fn) / (2.0 * n - 1.0)