Thinking that all these years (decades?) I could have written _.5 instead of _0.5! I was wondering if anyone had used that form before in actual code and I searched the forum posts; apparently, although there are pleanty of instances of _0.5 nobody has used _.5 in actual code, at least in the forums, with one possible exception.
Learning J is akin to reading an interesting book which it seems it never ends. I learned something useful today. On Saturday, July 1, 2017, HenryRich <[email protected] <javascript:_e(%7B%7D,'cvml','[email protected]');>> wrote: > To summarize: > > A word is numeric if and only if it begins with 0-9 or _ > > Within a numeric word, zero is not required before a decimal point. > > 1e.4 is not allowed because the exponent must be an integer. > > Henry Rich > > > On 7/1/2017 1:46 PM, Martin Kreuzer wrote: > >> Raul - >> >> * Many thanks for pointing out the difference between (.) the character >> and (.) the conjunction; has made it very clear. >> >> * Powers of 10 -- the Dictionary says under /Constants that "The form of >> a numeric constant ... is elaborated by the use of further letters, as in >> 2r3 for two-thirds, 2p1 for two [pi], and 2e3p1 for 2000 [pi]." >> >> Here we have the exception to the rule formulated; (e) seems -by >> implementation- to be the "weakest" of these elements, "dominated" by r, p >> (and x), as a result of accepting only integer (not real) exponents: >> >> 1e1r2 NB. 10/2, instead of sqrt(10) >> 5 >> 1e1p1 NB. 10*pi, instead of 10^3.14... >> 31.4159 >> 1e1x1 NB. 10*en, instead of 10^2.71... >> 27.1828 >> >> -M >> >> At 2017-07-01 15:23, you wrote: >> >> Looking at word formation is important for understanding this issue: >>> >>> ;:'2 .3 .4 .5' >>> +-+-+-+-+-+-+-+ >>> |2|.|3|.|4|.|5| >>> +-+-+-+-+-+-+-+ >>> ;:'0.2 0.3 0.4 0.5' >>> +---------------+ >>> |0.2 0.3 0.4 0.5| >>> +---------------+ >>> ;:'3j.4' >>> +----+ >>> |3j.4| >>> +----+ >>> >>> An issue here is that . is a conjunction and passing numbers to it is >>> invalid (bad syntax). Its domain for its verb arguments does not >>> include numbers. >>> >>> That doesn't happen for 3j.4. Meanwhile, if you look at the result: >>> >>> 3j.4 >>> 3j0.4 >>> >>> you can see that it makes sense. >>> >>> Basically, the dot character is a valid part of a number and since >>> 3j.4 begins with a digit, it is being interpreted as a number, and >>> since . makes sense where it's being used here there's no error. >>> >>> That would not be the case if the j were replaced with an e because >>> basically no one uses fractions in the exponent in exponential >>> notation. Hypothetically, it could be implemented, so that instead of >>> getting >>> >>> 3e.4 >>> |ill-formed number >>> >>> you would get >>> >>> 3*10^0.4 >>> 7.53566 >>> >>> but since 3e.4 is more likely to be a mistake than something done >>> intentionally, and since it's easy to catch, it's treated as an error. >>> >>> Thanks, >>> >>> -- >>> Raul >>> >>> On Sat, Jul 1, 2017 at 6:50 AM, bill lam <[email protected]> wrote: >>> > this is parsed as a token >>> > ;:'3e.4' >>> > +----+ >>> > |3e.4| >>> > +----+ >>> > but it (rightfully?) throws an error >>> > 3e.4 >>> > |ill-formed number >>> >>> > this is also parsed as a token >>> > ;:'3j.4' >>> > +----+ >>> > |3j.4| >>> > +----+ >>> >>> > the behavior seems endemic >>> > 3p.4 >>> > 4.74221 >>> > 3ad.4 >>> > 2.99993j0.0209438 >>> > 3ar.4 >>> > 2.76318j1.16826 >>> > 3x.4 >>> > 4.47547 >>> > 3b.4 >>> > 1.33333 >>> >>> > I think either 3e.4 should be legal or all others should be illegal >>> > for consistent. >>> >>> > Сб, 01 июл 2017, Martin Kreuzer Ð½Ð°Ð¿Ð¸Ñ Ð°Ð»(а): >>> >> Looking at the examples, I came across the difference between >>> >> >>> >> 3 j. 4 NB. spaces >>> >> 3j4 >>> >> >>> >> and >>> >> >>> >> 3j.4 NB. no spaces >>> >> 3j0.4 >>> >> >>> >> Given that this (rightfully) throws an error >>> >> >>> >> .2 .3 .4 .5 >>> >> |syntax error >>> >> | .2 .3 .4 .5 >>> >> >>> >> while this doesn't >>> >> >>> >> 0.2 0.3 0.4 0.5 >>> >> 0.2 0.3 0.4 0.5 >>> >> >>> >> why then is the construct 3j.4 valid..? >>> >> >>> >> -M >>> >> >>> >> >>> >> At 2017-07-01 04:43, you wrote: >>> >> >>> >> > > As Henry points out, the NuVoc page is quite a bit clearer on >>> this topic. >>> >> > >>> >> > Sample google search: >>> >> > site:jsoftware.com inurl:nuvoc complex >>> >> > >>> >> > Quite a bit of reading there, if you have the patience for it (be >>> sure >>> >> > to mix in plenty of trial and error, though, or it's a total >>> snoozer). >>> >> > >>> >> > Thanks, >>> >> > >>> >> > -- >>> >> > Raul >>> >> > >>> >> > >>> >> > On Fri, Jun 30, 2017 at 11:30 PM, Rob Hodgkinson <[email protected]> >>> wrote: >>> >> > > Hi Lawrence, the “ill-formed number†i¬ is because "j." is >>> a verb, >>> >> > quite different to “œj†which is part of a noun construct >>> (like 3j4, >>> >> >> or 1e3 for 1000). >>> >> > >>> >> > > So in your examples ... >>> >> > >>> >> > > NB. But wait, not so fast: >>> >> > > 1j.(2^0.5)%2 >>> >> > > |ill-formed number >>> >> > > NB. No >>> >> > >>> >> > > NB. Now try to separate the “j.†verb with a spacspace >>> either side to >>> >> > make it clear to J that this is not “1jxxx†where J would >>> assume you >>> >> > are try trying to make a complex constant. >>> >> > > 1 j. (2^0.5)%2 >>> >> > > 1j0.707107 >>> >> > >>> >> > > The reason is that J can also directly interpret ‘complex >>> >> > constantsâ€â€™ entered directly using the j notation (as a >>> continuous >>> >> > sequence of non-blank chars)â€Â¦ >>> >> > > 3j4 NB. This is a single complex constant 3+i4 >>> >> > > 3j4 >>> >> > >>> >> > > 3 j4 NB. But now J tries to view this as a list of (3) and >>> (j4) >>> >> > which which J would assume is (3) and a variable called (j4). >>> >> > > |syntax error >>> >> > > | 3 j4 >>> >> > >>> >> > > As Henry points out, the NuVoc page is quite a bit clearer on >>> this topic. >>> >> > >>> >> > > HTH, Regards Rob >>> >> > >>> >> > >>> >> > >> On 1 Jul 2017, at 1:14 pm, Lawrence Wickert < >>> [email protected]> >>> >> > wrote: >>> >> > >> >>> >> > >> Hello, I am a old EE still trying to learn. I am a real >>> beginner >>> >> > having no end of problems with specifying complex numbers. I am >>> using >>> >> > j64-804 on ubuntu 12.04. I am either doing something really stupid >>> or I >>> >> > need to update to 806. Updating anything gives me heartburn or >>> worse so >>> >> > I hope it is just my misunderstanding of basic principles. Although >>> I >>> >> > have a bad habit of RTFM as a last resort I have tried the >>> Dictionary to >>> >> > no avail. I appreciate any guidance. >>> >> > >> >>> >> > >> 0j(2^0.5)%2 >>> >> > >> |ill-formed number >>> >> > >> >>> >> > >> 0j((2^0.5)%2) >>> >> > >> |ill-formed number >>> >> > >> >>> >> > >> j.(2^0.5)%2 >>> >> > >> 0j0.707107 >>> >> > >> NB. Eureaka, OK, I get it! >>> >> > >> >>> >> > >> NB. But wait, not so fast: >>> >> > >> 1j.(2^0.5)%2 >>> >> > >> |ill-formed number >>> >> > >> NB. No >>> >> > >> >>> >> > >> 1j(2^0.5)%2 >>> >> > >> |ill-formed number >>> >> > >> NB. Still No >>> >> > >> >>> >> > >> 1+j.(2^0.5)%2 >>> >> > >> 1j0.707107 >>> >> > >> NB. This works! >>> >> > >> >>> >> > >> Let's try to do something with it: >>> >> > >> k=:(0 1+j.(2^0.5)%2 3 4 0 5) >>> >> > >> |length error >>> >> > >> | k=:(0 1 +j.(2^0.5)%2 3 4 0 5) >>> >> > >> >>> >> > >> NB. Maybe parantheses will help: >>> >> > >> k=:(0 (1+j.(2^0.5)%2) 3 4 0 5) >>> >> > >> |syntax error >>> >> > >> | k=:( 0(1+j.(2^0.5)%2)3 4 0 5) >>> >> > >> >>> >> > >> NB. This one has to work: >>> >> > >> k=:(0 1j0.7071 3 4 0 5) >>> >> > >> k >>> >> > >> 0 1j0.7071 3 4 0 5 >>> >> > >> NB. It does but it can't be the only way to do it. >>> >> > >> >>> >> > >> NB. One last rry: >>> >> > >> g=: 1+j.(2^0.5)%2 >>> >> > >> g >>> >> > >> 1j0.707107 >>> >> > >> NB. That's nice. >>> >> > >> >>> >> > >> k=:(0 g 3 4 0 5) >>> >> > >> |syntax error >>> >> > >> | k=:( 0 g 3 4 0 5) >>> >> > >> NB. This isn't nice. >>> >> > >> >>> >> > >> Lost in the high desert of New Mexico, Larry Wickert >>> >> > >> >>> >> > >> ------------------------------------------------------------ >>> ---------- >>> >> > >> For information about J forums see >>> http://www.jsoftware.com/forums.htm >>> >> > >>> >> > > ------------------------------------------------------------ >>> ---------- >>> >> > > For information about J forums see http://www.jsoftware.com/forum >>> s.htm >>> >> > ------------------------------------------------------------ >>> ---------- >>> >> > For information about J forums see http://www.jsoftware.com/forum >>> s.htm >>> >> >>> >> ------------------------------------------------------------ >>> ---------- >>> >> For information about J forums see http://www.jsoftware.com/forum >>> s.htm >>> >>> > -- >>> > regards, >>> > ==================================================== >>> > GPG key 1024D/4434BAB3 2008-08-24 >>> > gpg --keyserver subkeys.pgp.net --recv-keys 4434BAB3 >>> > gpg --keyserver subkeys.pgp.net --armor --export 4434BAB3 >>> > ---------------------------------------------------------------------- >>> > 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 >> > > > --- > This email has been checked for viruses by AVG. > http://www.avg.com > > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
