示例#1
0
def get_approx_dp(S, name, approx_perc, approx_abs, approx_abs_S, max_value,
                  max_value_S):
    from mcdp_posets.types_universe import express_value_in_isomorphic_space

    approx_abs_ = express_value_in_isomorphic_space(S1=approx_abs_S,
                                                    s1=approx_abs,
                                                    S2=S)
    max_value_ = express_value_in_isomorphic_space(S1=max_value_S,
                                                   s1=max_value,
                                                   S2=S)

    if approx_perc > 0:  # pragma: no cover
        raise_desc(DPNotImplementedError, 'Approx_perc not implemented')

    dps = []

    if max_value > 0:
        dp_max = FuncNotMoreThan(S, max_value_)
        dps.append(dp_max)

    if approx_abs_ > 0:
        dps.append(makeLinearCeilDP(S, approx_abs_))

    dp = wrap_series(S, dps)

    ndp = dpwrap(dp, name, name)
    return ndp
示例#2
0
def CeilSqrtNatDP():
    # promote to float
    # take sqrt
    # make ceil
    # coerce
    R = Rcomp()
    N = Nat()
    dps = (PromoteToFloatDP(N, R), SqrtRDP(R), CeilDP(R, R), CoerceToIntDP(R, N))
    return wrap_series(N, dps)
示例#3
0
def CeilSqrtNatDP():
    # promote to float
    # take sqrt
    # make ceil
    # coerce
    R = Rcomp()
    N = Nat()
    dps = (
        PromoteToFloatDP(N, R),
        SqrtRDP(R),
        CeilDP(R, R),
        CoerceToIntDP(R, N),
    )
    return wrap_series(N, dps)
def get_approx_dp(S, name, approx_perc, approx_abs, approx_abs_S, max_value, 
                  max_value_S):
    from mcdp_posets.types_universe import express_value_in_isomorphic_space

    approx_abs_ = express_value_in_isomorphic_space(S1=approx_abs_S, s1=approx_abs, S2=S)
    max_value_ = express_value_in_isomorphic_space(S1=max_value_S, s1=max_value, S2=S)

    if approx_perc > 0:
        raise_desc(DPNotImplementedError, 'Approx_perc not implemented')

    dps = []
    
    if max_value > 0:
        dp_max = FuncNotMoreThan(S, max_value_)
        dps.append(dp_max)

    if approx_abs_ > 0:
        dps.append(makeLinearCeilDP(S, approx_abs_))
    
    dp = wrap_series(S, dps)
    
    ndp = dpwrap(dp, name, name)
    return ndp