Regen Configure.
[p5sagit/p5-mst-13.2.git] / lib / integer.pm
CommitLineData
a0d0e21e 1package integer;
2
f06db76b 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
a3cb178b 15This tells the compiler to use integer operations
f06db76b 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
a3cb178b 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
47f6b1df 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
f06db76b 42See L<perlmod/Pragmatic Modules>.
43
44=cut
45
a0d0e21e 46sub import {
47 $^H |= 1;
48}
49
50sub unimport {
51 $^H &= ~1;
52}
53
541;