import numpy as np
from scipy.special import gamma
[docs]def discrete_confocal_coordinates_gamma(a, b, c):
"""a > b > c"""
intervals = [[-a, -b], [-b, -c], [-c, np.inf]]
def fct(n1, n2, n3, a=a, b=b, c=c):
A = 1 / (np.sqrt(a - b - 0.5) * np.sqrt(a - c - 1))
B = 1 / (np.sqrt(a - b - 0.5) * np.sqrt(b - c - 0.5))
C = 1 / (np.sqrt(a - c - 1) * np.sqrt(b - c - 0.5))
def f1(n1, n2, n3, a=a):
return (
A
* (gamma(n1 + a + 0.5) / gamma(n1 + a))
* (gamma(n2 + a) / gamma(n2 + a - 0.5))
* (gamma(n3 + a - 0.5) / gamma(n3 + a - 1.0))
)
def f2(n1, n2, n3, b=b):
return (
B
* (gamma(-n1 - b + 0.5) / gamma(-n1 - b))
* (gamma(n2 + b + 0.5) / gamma(n2 + b))
* (gamma(n3 + b) / gamma(n3 + b - 0.5))
)
def f3(n1, n2, n3, c=c):
return (
C
* (gamma(-n1 - c) / gamma(-n1 - c - 0.5))
* (gamma(-n2 - c + 0.5) / gamma(-n2 - c))
* (gamma(n3 + c + 0.5) / gamma(n3 + c))
)
return np.array((f1(n1, n2, n3), f2(n1, n2, n3), f3(n1, n2, n3)))
return (fct, intervals)