#= Reference data from
- Fischer, C. (1977). The Hartree-Fock Method for Atoms : A Numerical
  Approach. New York: Wiley.
=#

# # Table 6.2
# exact_Yᵏs = Dict(((1,0),(1,0),0) => r -> 1 - exp(-2r)*(1 + r),
#                  ((2,0),(2,0),0) => r -> 1 - exp(-r)*(1 + 3/4*r + 1/4*r^2 + 1/8*r^3),
#                  ((2,1),(2,1),0) => r -> 1 - exp(-r)*(1 + 3/4*r + 1/4*r^2 + 1/24*r^3),
#                  ((2,1),(2,1),2) => r -> 30/r^2*(1 - exp(-r)*(1 + r + 1/2*r^2 + 1/6*r^3 +
#                                                             1/24*r^4 + 1/144*r^5)))

# Reference data generated using analytic-integrals.jl
include("exact_Yks.jl")

# Table 6.3–6.3B
exact_Fᵏs = Dict(((1,0),(1,0),0)=>5//8,
                 ((2,0),(1,0),0)=>17//81,
                 ((2,0),(2,0),0)=>77//512,
                 ((2,1),(1,0),0)=>59//243,
                 ((2,1),(2,0),0)=>83//512,
                 ((2,1),(2,1),0)=>93//512,
                 ((4,0),(4,0),0)=>19541//524288,
                 ((4,0),(4,1),0)=>19943//524288,
                 ((4,0),(4,2),0)=>20693//524288,
                 ((4,0),(4,3),0)=>21743//524288,
                 ((4,1),(4,1),0)=>20413//524288,
                 ((4,1),(4,2),0)=>21239//524288,
                 ((4,1),(4,3),0)=>22373//524288,
                 ((4,2),(4,2),0)=>22373//524288,
                 ((4,2),(4,3),0)=>23759//524288,
                 ((4,3),(4,3),0)=>26333//524288)

# Table 6.3
exact_Gᵏs = Dict(((2,0),(1,0),0)=>16//729,
                 ((2,1),(1,0),1)=>112//2187,
                 ((2,1),(2,0),1)=>45//512)

#= Table 1 of

- Golden, L. (1978). Exact Slater Integrals. Computer Physics
  Communications, 14(3-4),
  255–260. http://dx.doi.org/10.1016/0010-4655(78)90018-8
=#

exact_Fᵏs[(((1,0), (1,0), 0))] = (5//8)
exact_Gᵏs[(((1,0), (1,0), 0))] = (5//8)
exact_Fᵏs[(((1,0),(2,0), 0))] = (17//81)
exact_Gᵏs[(((1,0),(2,0), 0))] = (16//729)
exact_Fᵏs[(((1,0),(3,0), 0))] = (815//8192)
exact_Gᵏs[(((1,0), (3,0), 0))] = (189//32768)
exact_Fᵏs[(((2,0),(2,0), 0))] = (77//512)
exact_Gᵏs[(((2,0), (2,0), 0))] = (77//512)
exact_Fᵏs[(((2,0), (3,0), 0))] = (197142//2343750)
exact_Gᵏs[(((2,0), (3,0), 0))] = (73008//9765625)
exact_Fᵏs[(((3,0), (3,0), 0))] = (17//256)
exact_Gᵏs[(((3,0), (3,0), 0))] = (17//256)
exact_Fᵏs[(((1,0),(2,1), 0))] = (59//243)
exact_Gᵏs[(((1,0), (2,1), 1))] = (112//2187)
exact_Fᵏs[(((1,0),(3,1), 0))] = (1783//16384)
exact_Gᵏs[(((1,0), (3,1), 1))] = (891//65536)
exact_Fᵏs[(((2,0), (2,1), 0))] = (83//512)
exact_Gᵏs[(((2,0), (2,1), 1))] = (45//512)
exact_Fᵏs[(((2,0), (3,1), 0))] = (35161//390625)
exact_Gᵏs[(((2,0), (3,1), 1))] = (82944//9765625)
exact_Fᵏs[(((3,0), (3,1), 0))] = (317//4608)
exact_Gᵏs[(((3,0), (3,1), 1))] = (65//1536)
exact_Fᵏs[(((3,0), (2,1), 0))] = (33889//390625)
exact_Gᵏs[(((3,0), (2,1), 1))] = (92016//9765625)
exact_Fᵏs[(((1,0), (3,2), 0))] = (1819//16384)
exact_Gᵏs[(((1,0), (3,2), 2))] = (81//65536)
exact_Fᵏs[(((2,0), (3,2), 0))] = (202301//1953125)
exact_Gᵏs[(((2,0), (3,2), 2))] = (1783296//48828125)
exact_Fᵏs[(((3,0),(3,2), 0))] = (337//4608)
exact_Gᵏs[(((3,0), (3,2), 2))] = (35//1536)
exact_Fᵏs[(((2,1),(2,1), 0))] = (93//512)
exact_Gᵏs[(((2,1),(2,1), 0))] = (93//512)
exact_Fᵏs[(((2,1), (3,1), 0))] = (36697//390625)
exact_Gᵏs[(((2,1), (3,1), 0))] = (96768//9765625)
exact_Fᵏs[(((3,1), (3,1), 0))] = (1987//27648)
exact_Gᵏs[(((3,1), (3,1), 0))] = (1987//27648)
exact_Fᵏs[(((2,1), (2,1), 2))] = (45//512)
exact_Gᵏs[(((2,1), (2,1), 2))] = (45//512)
exact_Fᵏs[(((2,1), (3,1), 2))] = (2022//78125)
exact_Gᵏs[(((2,1), (3,1), 2))] = (110592//9765625)
exact_Fᵏs[(((3,1), (3,1), 2))] = (995//27648)
exact_Gᵏs[(((3,1), (3,1), 2))] = (995//27648)
exact_Fᵏs[(((2,1), (3,2), 0))] = (207677//1953125)
exact_Gᵏs[(((2,1), (3,2), 1))] = (1824768//48828125)
exact_Fᵏs[(((3,1),(3,2), 0))] = (709//9216)
exact_Gᵏs[(((3,1), (3,2), 1))] = (105//3072)
exact_Fᵏs[(((2,1), (3,2), 2))] = (14502//390625)
exact_Gᵏs[(((2,1), (3,2), 3))] = (1064448//48828125)
exact_Fᵏs[(((3,1), (3,2), 2))] = (37//1024)
exact_Gᵏs[(((3,1), (3,2), 3))] = (1995//82944)
exact_Fᵏs[(((3,2), (3,2), 0))] = (793//9216)
exact_Gᵏs[(((3,2), (3,2), 0))] = (793//9216)
exact_Fᵏs[(((3,2), (3,2), 2))] = (2093//46080)
exact_Gᵏs[(((3,2), (3,2), 2))] = (2093//46080)
exact_Fᵏs[(((3,2), (3,2), 4))] = (91//3072)
exact_Gᵏs[(((3,2), (3,2), 4))] = (91//3072)
