source: trunk/third/perl/lib/integer.pm @ 14545

Revision 14545, 1.2 KB checked in by ghudson, 24 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r14544, which included commits to RCS files with non-trunk default branches.
Line 
1package integer;
2
3=head1 NAME
4
5integer - Perl pragma to compute arithmetic in integer instead of double
6
7=head1 SYNOPSIS
8
9    use integer;
10    $x = 10/3;
11    # $x is now 3, not 3.33333333333333333
12
13=head1 DESCRIPTION
14
15This tells the compiler to use integer operations
16from here to the end of the enclosing BLOCK.  On many machines,
17this doesn't matter a great deal for most computations, but on those
18without floating point hardware, it can make a big difference.
19
20Note that this affects the operations, not the numbers.  If you run this
21code
22
23    use integer;
24    $x = 1.5;
25    $y = $x + 1;
26    $z = -1.5;
27
28you'll be left with C<$x == 1.5>, C<$y == 2> and C<$z == -1>.  The $z
29case happens because unary C<-> counts as an operation.
30
31Native integer arithmetic (as provided by your C compiler) is used.
32This means that Perl's own semantics for arithmetic operations may
33not be preserved.  One common source of trouble is the modulus of
34negative numbers, which Perl does one way, but your hardware may do
35another.
36
37  % perl -le 'print (4 % -3)'
38  -2
39  % perl -Minteger -le 'print (4 % -3)'
40  1
41
42See L<perlmod/Pragmatic Modules>.
43
44=cut
45
46$integer::hint_bits = 0x1;
47
48sub import {
49    $^H |= $integer::hint_bits;
50}
51
52sub unimport {
53    $^H &= ~$integer::hint_bits;
54}
55
561;
Note: See TracBrowser for help on using the repository browser.