#!/usr/bin/python

# sigmoid.py
#       --copyright--                   Copyright 2007 (C) Tranzoa, Co. All rights reserved.    Warranty: You're free and on your own here. This code is not necessarily up-to-date or of public quality.
#       --url--                         http://www.tranzoa.net/tzpython/
#       --email--                       pycode is the name to send to. tranzoa.com is the place to send to.
#       --bodstamps--
#       October 11, 2006        bar
#       November 18, 2007       bar     turn on doxygen
#       November 21, 2007       bar     import-able
#       November 27, 2007       bar     insert boilerplate copyright
#       May 17, 2008            bar     email adr
#       May 27, 2012            bar     doxygen namespace
#       December 5, 2012        bar     gompertz()
#       --eodstamps--
##      \file
#       \namespace              tzpython.sigmoid
#
#
#       Print out various sigmoid function numbers
#
#

import  math
import  sys



def gompertz(a, b, c, t) :
    """
        Compute a Gompertz function value.

        http://en.wikipedia.org/wiki/Gompertz_function
    """
    return(a * math.e ** (-b * (math.e ** (-c * float(t)))))



def print_v(i, v) :

    print "%5.2f" % ( v ),
    if  0.0 <= v <= 2.0 :
        print (" " * int((v + 1.0) * 40.0)) + "*"
    else :
        print

    pass


def print_sigmoid_u(flatness = 4.0) :
    print
    print   "flatness = ", flatness
    i   = -1.0
    while i <= 1.0 :

        v   = 1.0 / (1.0 + math.exp(abs(i) * -flatness))

        v  += 0.25
        v  *= v

        print_v(i, v)

        i  += 0.1
    pass



def print_sigmoid(flatness = 4.0) :
    print
    print   "flatness = ", flatness
    i   = -1.0
    while i <= 1.0 :

        v   = 1.0 / (1.0 + math.exp(i * -flatness))

        print_v(i, v)

        i  += 0.1
    pass


if __name__ == '__main__' :
    sys.argv.pop(0)

    if  len(sys.argv) > 0 :
        while len(sys.argv) > 0 :
            flatness = float(sys.argv.pop(0))
            print_sigmoid(flatness)
            print_sigmoid_u(flatness)
        pass
    else :
        print_sigmoid()
        print_sigmoid_u()

    pass


#
#
#
# eof
