Yes. -- Raul
On Mon, Oct 1, 2012 at 11:11 AM, Devon McCormick <[email protected]> wrote: > Don't +. and *. map to GCD and LCM for integers? > > On Mon, Oct 1, 2012 at 10:55 AM, Raul Miller <[email protected]> wrote: >> George Boole worked with a system of algebra which modern math texts >> call a "boolean ring". In J, we have +. and *. which correspond to >> operations within that system. >> >> "Type" gets used to describe a system for representing a set of values >> or for classifying the instructions for manipulating those >> representations. >> >> It's interesting to think about numeric types and how they relate to >> arithmetic correctness, and Boole's operations give us something to >> compare other things with. >> >> You can visualize the relationship between a rank 0 operation and a >> small domain using viewmat: >> >> require 'viewmat' >> illustrate=: 1 :'viewmat domain e.~ u"0/~ domain=.y' >> >> The boolean operations happen to be particularly boring to look at. >> For example: >> >> +. illustrate i. 100 >> *. illustrate i. 100 >> >> The implementation of viewmat which I am using shows these as solid >> white: if the domain is a sequence of integers 0..n all of the results >> from these operations are within the domain. >> >> So when I say "boolean integer" I mean a bounded non-negative integer domain. >> >> In C, this corresponds to types like "unsigned int", "unsigned long", >> "unsigned short" and "unsigned char". >> >> This kind of thinking turns out to be useful in the context of >> computers, because computers have finite memory and we expect them to >> produce results in finite time. >> >> It's interesting to take regular arithmetic operations, and see how >> well they map onto a boolean integer domain: >> >> + illustrate i. 100 >> - illustrate i. 100 >> * illustrate i. 100 >> % illustrate i. 100 >> >> + and - are rather nice -- half of the possibilities represent valid >> arithmetic. * and % are not so nice. >> >> Another interesting domain is the "2s complement" domain. Here, we >> take a boolean integer where the size of the set is 2^n and we >> represent values in the range (-2^n-1) .. (2^n-1)-1 >> >> For example: >> >> + illustrate (i. 256) - 128 >> - illustrate (i. 256) - 128 >> * illustrate (i. 256) - 128 >> % illustrate (i. 256) - 128 >> >> Twos complement gives us a nice property: zero is in the center of the >> set, and mostly we have valid results when are arguments are near >> zero. >> >> (It's also interesting to look at the type system that J uses for >> numbers (http://www.jsoftware.com/help/dictionary/dictg.htm) and think >> about the tradeoffs and what they say about the kinds of arithmetic >> people use.) >> >> -- >> Raul >> ---------------------------------------------------------------------- >> For information about J forums see http://www.jsoftware.com/forums.htm > > > > -- > Devon McCormick, CFA > ^me^ at acm. > org is my > preferred e-mail > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
