A typical application (you said you forgot) for complex numbers is pairs, and specifically points.
I know you are focused on display, but I think pairs of numbers are the most useful "conversion" ----- Original Message ----- From: Skip Cave <[email protected]> To: "[email protected]" <[email protected]> Sent: Friday, August 19, 2016 3:06 AM Subject: Re: [Jprogramming] Gustafson's Unums Revisited Bob, Thanks! Your hint was exactly what I needed, to help me make my output "imaginary-zero-restorer" function. zr =. (' ';'j')rplc~ ] NB. use the "string replace" verb to put the 'j' back in the complex number. zr '1 0' 1j0 NB. we can do it! Just need to get the real & imaginary parts of a complex number into a text string. Robert showed us how to do that: +. 1j0 1 0 $ +. 1j0 2 NB. Got the complex parts as two separate numbers, thanks to Robert. Now convert to a string. ": +. 1j0 1 0 NB. This is a string. $ ": +. 1j0 3 NB. See? A string 3 characters long. zr ": +. 1j0 1j0 NB. Eureka! We did it. The Zero Restorer verb! $ zr ": +. 1j0 3 NB. Of course, the zero-restored display is a string as well. It has to be, for J to display the zero. zr ": +. _3.1j0.5 _3.1j0.5 NB. Our Zero Restorer doesn't affect the display of other complex numbers. ". zr ": +. 1j0 1 NB. Of course if you let J display the complex number natively, it steals the zero. Is there a more compact way to define the Zero Restorer verb? The string-replace function is probably overkill for what we want to do, and I haven't figured out how to include the Real/Imaginary (+. ) and the Format (":) inside the Zero Restorer Function. When you think about it, something like J's complex notation is the kind of notation that you would need for a native unum-based computational system. We don't want to use 'j' for the separator, it's already taken. What if we defined a new number format in J, the unum format, that used a 'u' instead of a 'j' for intervals. 4 bit unums would look something like this: UNUMS ┌──┬─────┬──┬─────┬──┬───────┬────┬──────┬─┬─────┬───┬─────┬─┬───┬─┬───┐ │__ │ __u_2 │ _2│_2u_1 │_1 │ _1u_1r2 │ _1r2 │ _1r2u0 │0│ 0u1r2 │ 1r2 │ 1r2u1 │ 1 │1u2 │2│ 2u_ │ └──┴─────┴──┴─────┴──┴───────┴────┴──────┴─┴─────┴───┴─────┴─┴───┴─┴───┘ If this was a native format, then we could just do all our unum calculations easily. No notation hassle. Skip Skip Cave Cave Consulting LLC On Thu, Aug 18, 2016 at 11:58 PM, robert therriault <[email protected]> wrote: > Hey Skip, > > You could capture that structure yourself using +. couldn't you? It may > not be as nice as having the display done > natively, but the information is not really thrown away. > > +. 3j0 > 3 0 > +. 3 > 3 0 > > Cheers, bob > > > On Aug 18, 2016, at 9:44 PM, Skip Cave <[email protected]> wrote: > > > > If we did have a display verb that could always show the > > zero-imaginary-part of complex numbers in storage, then we would have to > > use that verb every time we displayed output that might be complex, if we > > wanted to see any zero imaginary part. > > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
