Exemplo n.º 1
0
def main(argv):
    if len(argv) == 1:
        text = sys.stdin.read()
    elif len(argv) == 2:
        with open(argv[1], "r") as f:
            text = f.read()
    if text.strip() == "":
        text = "(FPCore (x) :pre (<= 1/100 x 1/2) (/ (- (exp x) 1) x))"

    parsed = parse(text)[0]
    parsed.remove_let()
    parsed.set_name()
    parsed.extract_input_domains()
    query = parsed.to_fptaylor()
    result = FPTaylorResult(query, ERROR_FORM_CONFIG)

    logger.set_log_level(Logger.EXTRA)
    logger.blog("Input text", text)

    parsed.match_fptaylor_forms(result)

    def print_forms(e):
        logger.log("{} = {}", e.name, e.name_val())
        for wrt, form in e.forms.items():
            for k,v in form.items():
                logger.log("  form wrt {} {}: {}", wrt, k, v)

    parsed.expression.for_each(print_forms)
Exemplo n.º 2
0
def main(argv):
    logger.set_log_level(Logger.EXTRA)

    if len(argv) == 1:
        text = sys.stdin.read()
    elif len(argv) == 2:
        with open(argv[1], "r") as f:
            text = f.read()
    if text.strip() == "":
        text = "(FPCore (x) :pre (<= 1/100 x 1/2) (/ (- (exp x) 1) x))"

    logger.blog("Input text", text)

    parsed = parse(text)[0]
    parsed.remove_let()

    logger.blog("Removed lets", parsed)
Exemplo n.º 3
0
def main(argv):
    logger.set_log_level(Logger.EXTRA)

    if len(argv) == 1:
        text = sys.stdin.read()
    elif len(argv) == 2:
        with open(argv[1], "r") as f:
            text = f.read()
    if text.strip() == "":
        text = ("(FPCore (x) :pre (<= 101/100 x 3/2)"
                " (+ (- (exp x) 1) (log (+ 1 x))))")

    logger.blog("Input text", text)

    parsed = parse(text)[0]
    parsed.replace_exp_log()

    logger.blog("Replaced log/exp", parsed)
Exemplo n.º 4
0
def main(argv):
    logger.set_log_level(Logger.EXTRA)

    if len(argv) == 1:
        text = sys.stdin.read()
    elif len(argv) == 2:
        with open(argv[1], "r") as f:
            text = f.read()
    if text.strip() == "":
        text = "(FPCore (x) :pre (<= 1/100 x 1/2) (/ (- (exp x) 1) x))"

    logger.blog("Input text", text)

    parsed = parse(text)[0]
    parsed.remove_let()
    parsed.set_name()
    parsed.extract_input_domains()

    logger.blog("FPTaylor_query", parsed.to_fptaylor())
Exemplo n.º 5
0
def main(argv):
    logger.set_log_level(Logger.EXTRA)

    if len(argv) == 1:
        text = sys.stdin.read()
    elif len(argv) == 2:
        with open(argv[1], "r") as f:
            text = f.read()
    if text.strip() == "":
        text = "(FPCore (x) :pre (<= 1/100 x 1/2) (/ (- (exp x) 1) x))"

    logger.blog("Input text", text)

    parsed = parse(text)[0]
    parsed.remove_let()
    parsed.set_name()
    print_name_assignment = lambda e: logger.log("{} = {}", e.name, e.name_val(
    ))
    parsed.expression.for_each(print_name_assignment)
Exemplo n.º 6
0
def main(argv):
    logger.set_log_level(Logger.EXTRA)

    if len(argv) == 1:
        text = sys.stdin.read()
    elif len(argv) == 2:
        with open(argv[1], "r") as f:
            text = f.read()
    if text.strip() == "":
        text = "(FPCore (x) :pre (<= 1/100 x 1/2) (let ([y (sin x)]) (+ y y)))"

    logger.blog("Input text", text)

    parsed = parse(text)[0]
    parsed.remove_let()
    parsed.set_name()
    parsed.extract_input_domains()
    parsed.mark_duplicates()

    logger.blog("AST nodes", parsed.pretty_internals())
Exemplo n.º 7
0
def main(argv):
    logger.set_log_level(Logger.EXTRA)

    if len(argv) == 1:
        text = sys.stdin.read()
    elif len(argv) == 2:
        with open(argv[1], "r") as f:
            text = f.read()
    if text.strip() == "":
        text = "(FPCore (x) :pre (<= 1/100 x 1/2) (/ (- (exp x) 1) x))"

    logger.blog("Input text", text)

    parsed = parse(text)[0]
    parsed.remove_let()

    try:
        parsed.reject_unsupported()
        logger("FPCore accepted")
    except UnsupportedFPCoreError as e:
        logger("Caught unsupported FPCore feature: {}", e.feature)