Negate: Difference between revisions

Jump to navigation Jump to search
62 bytes added ,  07:14, 9 July 2020
(One intermediate revision by the same user not shown)
Line 23: Line 23:


For integers, which are always stored in [[wikipedia:two's complement|two's complement]] format on modern computers, Negate forces a conversion to a higher type when passed the smallest possible value: for example, the range of 1-byte integers is from <source lang=apl inline>¯128</source> to <source lang=apl inline>127</source> inclusive, so <source lang=apl inline>-¯128</source> requires a 2-byte integer to store. Similarly, negating a [[Boolean]] array (that is, 1-bit unsigned values) forces it to be converted to an integer array. These conversions cannot cause a loss of precision in any normal APL because the result is a power of two, and is exactly representable in floating-point format. In [[K]], which wraps on integer overflow, there is also no possibility of such a loss of precision because the minimum 4-byte integer is used as a null value, making the integer range symmetric.
For integers, which are always stored in [[wikipedia:two's complement|two's complement]] format on modern computers, Negate forces a conversion to a higher type when passed the smallest possible value: for example, the range of 1-byte integers is from <source lang=apl inline>¯128</source> to <source lang=apl inline>127</source> inclusive, so <source lang=apl inline>-¯128</source> requires a 2-byte integer to store. Similarly, negating a [[Boolean]] array (that is, 1-bit unsigned values) forces it to be converted to an integer array. These conversions cannot cause a loss of precision in any normal APL because the result is a power of two, and is exactly representable in floating-point format. In [[K]], which wraps on integer overflow, there is also no possibility of such a loss of precision because the minimum 4-byte integer is used as a null value, making the integer range symmetric.
== See also ==
* [[Signum]]
* [[Conjugate]]
* [[Reciprocal]]


== External links ==
== External links ==

Navigation menu