File: euclid.pir

package info (click to toggle)
parrot 6.6.0-1
  • links: PTS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 25,164 kB
  • ctags: 16,050
  • sloc: ansic: 110,715; perl: 94,382; yacc: 1,911; lex: 1,529; lisp: 1,163; cpp: 782; python: 646; ruby: 335; sh: 140; makefile: 129; cs: 49; asm: 30
file content (51 lines) | stat: -rw-r--r-- 1,065 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# Copyright (C) 2001-2008, Parrot Foundation.
# This program is free software. It is subject to the same
# license as Perl itself.

=head1 NAME

examples/pir/euclid.pir - Euclid's algorithm

=head1 SYNOPSIS

    % ./parrot examples/pir/euclid.pir

=head1 DESCRIPTION

Implements Euclid's algorithm
(http://www.cut-the-knot.org/blue/Euclid.shtml) and uses it to compute
C<gcd(96,64)>.

Knuth, Donald E. I<The Art of Computer Programming Volume 1: Fundamental
Algorithms>. Third Edition. Section 1.1 Algorithm E (Euclid's algorithm)
Page 2:

    I1: m
    I2: n
    I4: r

    E1: Find remainder.
    E2: Is it zero?
    E3: Reduce.

=cut

.sub 'example' :main
        $I1 = 96
        $I2 = 64
        print  "Algorithm E (Euclid's algorithm)\n"
e1:     $I4 = mod $I1, $I2
e2:     unless $I4 goto done
e3:     $I1 = $I2
        $I2 = $I4
        branch e1
done:   print "The greatest common denominator of 96 and 64 is "
        print  $I2
        print  ".\n"
.end

# Local Variables:
#   mode: pir
#   fill-column: 100
# End:
# vim: expandtab shiftwidth=4 ft=pir: