[perldocjp-cvs 448] CVS update: docs/modules/integer-1.00

Back to archive index

argra****@users***** argra****@users*****
2009年 6月 22日 (月) 18:36:44 JST


Index: docs/modules/integer-1.00/integer.pod
diff -u /dev/null docs/modules/integer-1.00/integer.pod:1.1
--- /dev/null	Mon Jun 22 18:36:44 2009
+++ docs/modules/integer-1.00/integer.pod	Mon Jun 22 18:36:44 2009
@@ -0,0 +1,187 @@
+
+=encoding euc-jp
+
+=head1 NAME
+
+=begin original
+
+integer - Perl pragma to use integer arithmetic instead of floating point
+
+=end original
+
+integer - 浮動小数点ではなく整数算術を使うための Perl プラグマ
+
+=head1 SYNOPSIS
+
+    use integer;
+    $x = 10/3;
+    # $x is now 3, not 3.33333333333333333
+
+=head1 DESCRIPTION
+
+=begin original
+
+This tells the compiler to use integer operations from here to the end
+of the enclosing BLOCK.  On many machines, this doesn't matter a great
+deal for most computations, but on those without floating point
+hardware, it can make a big difference in performance.
+
+=end original
+
+これは、BLOCK 内で整数演算を使うようにコンパイラに知らせます。
+多くのマシンで、これはほとんどの計算に対して大きな意味はありませんが、
+浮動小数点演算ハードウェアを持たないマシンにとっては、性能上
+大きな差となります。
+
+=begin original
+
+Note that this only affects how most of the arithmetic and relational
+B<operators> handle their operands and results, and B<not> how all
+numbers everywhere are treated.  Specifically, C<use integer;> has the
+effect that before computing the results of the arithmetic operators
+(+, -, *, /, %, +=, -=, *=, /=, %=, and unary minus), the comparison
+operators (<, <=, >, >=, ==, !=, <=>), and the bitwise operators (|, &,
+^, <<, >>, |=, &=, ^=, <<=, >>=), the operands have their fractional
+portions truncated (or floored), and the result will have its
+fractional portion truncated as well.  In addition, the range of
+operands and results is restricted to that of familiar two's complement
+integers, i.e., -(2**31) .. (2**31-1) on 32-bit architectures, and
+-(2**63) .. (2**63-1) on 64-bit architectures.  For example, this code
+
+=end original
+
+これはほとんどの算術および関係 B<演算子> がオペランドと結果を
+どのように扱うかにのみ影響を与え、
+その他の全てでどのように数値を扱うかには影響を B<与えない> ことに
+注意してください。
+具体的には、C<use integer;> は算術演算子
+(+, -, *, /, %, +=, -=, *=, /=, %=, 単項のマイナス)、比較演算子
+(<, <=, >, >=, ==, !=, <=>)、ビット単位演算子 (|, &,
+^, <<, >>, |=, &=, ^=, <<=, >>=) の結果を計算する前に
+オペランドの小数部は切り詰め (または切り捨て) られます,
+結果の小数部も同様に切り詰められます。
+さらに、オペランドと結果の範囲はおなじみの 2 の補数に制限されます;
+つまり、32 ビットアーキテクチャでは -(2**31) .. (2**31-1)、
+64 ビットアーキテクチャでは -(2**63) .. (2**63-1) です。
+例えば、以下のコードは
+
+=begin original
+
+    use integer;
+    $x = 5.8;
+    $y = 2.5;
+    $z = 2.7;
+    $a = 2**31 - 1;  # Largest positive integer on 32-bit machines
+    $, = ", ";
+    print $x, -$x, $x + $y, $x - $y, $x / $y, $x * $y, $y == $z, $a, $a + 1;
+
+=end original
+
+    use integer;
+    $x = 5.8;
+    $y = 2.5;
+    $z = 2.7;
+    $a = 2**31 - 1;  # 32 ビットマシンでの最大の正数
+    $, = ", ";
+    print $x, -$x, $x + $y, $x - $y, $x / $y, $x * $y, $y == $z, $a, $a + 1;
+
+=begin original
+
+will print:  5.8, -5, 7, 3, 2, 10, 1, 2147483647, -2147483648
+
+=end original
+
+以下の結果となります: 5.8, -5, 7, 3, 2, 10, 1, 2147483647, -2147483648
+
+=begin original
+
+Note that $x is still printed as having its true non-integer value of
+5.8 since it wasn't operated on.  And note too the wrap-around from the
+largest positive integer to the largest negative one.   Also, arguments
+passed to functions and the values returned by them are B<not> affected
+by C<use integer;>.  E.g.,
+
+=end original
+
+$x は、まだ演算されていないので、5.8 という非整数値を持っているように
+表示されることに注意してください。
+最大の整数から最小の整数への回り込みにも注意してください。
+また、関数に渡される引数と、関数から返される値は、
+C<use integer;> の影響を B<受けません>。
+例えば、
+
+    srand(1.5);
+    $, = ", ";
+    print sin(.5), cos(.5), atan2(1,2), sqrt(2), rand(10);
+
+=begin original
+
+will give the same result with or without C<use integer;>  The power
+operator C<**> is also not affected, so that 2 ** .5 is always the
+square root of 2.  Now, it so happens that the pre- and post- increment
+and decrement operators, ++ and --, are not affected by C<use integer;>
+either.  Some may rightly consider this to be a bug -- but at least it's
+a long-standing one.
+
+=end original
+
+これは C<use integer;> のありなしで同じ結果を返します。
+累乗演算子 C<**> も影響を受けないので、2 ** .5 は常に 2 の平方根です。
+そして、事前と事後のインクリメントおよびデクリメント演算子
+++ と -- も C<use integer;> の影響を受けません。
+正当にもこれをバグだと考える人もいます -- しかし少なくともこれは
+長年存在するものです。
+
+=begin original
+
+Finally, C<use integer;> also has an additional affect on the bitwise
+operators.  Normally, the operands and results are treated as
+B<unsigned> integers, but with C<use integer;> the operands and results
+are B<signed>.  This means, among other things, that ~0 is -1, and -2 &
+-5 is -6.
+
+=end original
+
+最後に、C<use integer;> はビット単位演算子にも追加の影響を与えます。
+通常、オペランドと結果は B<符号なし> 整数として扱われますが、
+C<use integer;> 付きでは、オペランドと結果は B<符号付き> になります。
+これは、特に、~0 は -1、-2 & -5 は -6 になることを意味します。
+
+=begin original
+
+Internally, native integer arithmetic (as provided by your C compiler)
+is used.  This means that Perl's own semantics for arithmetic
+operations may not be preserved.  One common source of trouble is the
+modulus of negative numbers, which Perl does one way, but your hardware
+may do another.
+
+=end original
+
+内部的には、(C コンパイラによって提供される) ネイティブな整数算術が
+使われます。
+これは、算術演算の Perl 独自の意味論は保存されないことを意味します。
+よくある問題の源の一つは、負数の剰余で、Perl の方式とハードウェアの
+方式は違うかも知れません。
+
+    % perl -le 'print (4 % -3)'
+    -2
+    % perl -Minteger -le 'print (4 % -3)'
+    1
+
+=begin original
+
+See L<perlmodlib/"Pragmatic Modules">, L<perlop/"Integer Arithmetic">
+
+=end original
+
+L<perlmodlib/"Pragmatic Modules">, L<perlop/"Integer Arithmetic"> を
+参照してください。
+
+=begin meta
+
+Translate: Kentaro Shirakata <argra****@ub32*****> (1.00)
+
+=end meta
+
+=cut
+



perldocjp-cvs メーリングリストの案内
Back to archive index