summaryrefslogtreecommitdiff
path: root/fib.awk
blob: 01cb8ce5975eac8e7c1c0fc947ae2922214b9431 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/usr/bin/awk -f

### fib.awk
# print nth Fibonacci number, based on R. Hamming's solution to a diff eqn
# form of the sequence


BEGIN {
    ARGV[1] ? n = ARGV[1] : n = 0
    ARGV[2] ? OFMT = "%." ARGV[2] "g" : OFMT = "%g"

    # fib sol'n from Hamming
    C1 = 1.0/sqrt(5.0)
    C2 = -1.0/sqrt(5.0)
    print C1*(0.5*(1 + sqrt(5.0)))^n + C2*(0.5*(1 - sqrt(5.0)))^n

    phi = 0.5*(1 + sqrt(5.0))
    binet = (phi^n - (-1.0/phi)^n)/sqrt(5.0)
    print binet
}