root.py

#!/usr/bin/env python
#
#  Compute root of a real number
#
# Author:  Yotam Medini  [email protected] -- Created: 2005/December/11
#

import sys


def usage_exit(a0, rc):
    sys.stderr.write(
"""
Usage:
  %s <a> <n>

Where:
  <a>   Real number  to get root from
  <n>   Integer number which is the order of the root to get.
""" % a0)
    sys.exit(rc)


def root(a, n):
    m = 0.
    M = a + 1.
    error = M - m
    progress = True
    while progress:
        x = (m + M)/2.
        xSquare = x**n
        if xSquare == a:
            progress = False
        else:
            if xSquare < a:
                m = x
            else:
                M = x
            new_error = M - m
            progress = (new_error < error)
            error = new_error
    return x


if len(sys.argv) != 3:
    usage_exit(sys.argv[0], 1)

a = float(sys.argv[1])
n = int(sys.argv[2])
r = root(a, n)
sys.stdout.write("Root[%d](%f) = %f\n" % (n, a, r))

sys.exit(0)


Generated by GNU enscript 1.6.4.