def func_SH_Watanabe(P:float,
                   IN0:float,
                   Sinh:float)->float:
    """天空日射量の推計式 Watanabeモデル
    Args:
      P(float): 大気透過率(-)      
      IN0(float): 大気外法線面日射量(MJ/m2)
      Sinh(float): 太陽高度角のサイン(-)

    Returns:
      TH(float)): 水平面全天日射量(MJ/m2)
    """
    
    if P >= 1.0: # Watanabe式の場合Pが1以上の時エラーとなる
        P = 1.0
        
    Q = (0.8672 + 0.7505 * Sinh) * (
        P**(0.421*1/Sinh)) * ((1-P ** (1/Sinh))**2.277)
    return IN0 * Sinh *( Q / ( 1 + Q ))