Since all of this is also directed at users
trying to figure out how rank works, I want
to further clarify two things:

“3 items in left, 3 rows in right”
yes, but in J lingo, these rows are items
as well. And the IE does just that: match
the number of items (generally: prefixes
of noun ranks) against each other.

The last example doesn’t need the explicitely
stated rank, either, thanks to this very matching.

   100 200 300 400 +&.|: a
100 201 302 403
104 205 306 407
108 209 310 411

I attach my effort at explaining ranks stemming
from the discussions about conjunctions back in
May.

Am 17.01.21 um 04:33 schrieb 'Rob Hodgkinson' via Programming:
> Arnab, Henry’s explanation below should be really helpful.  When I learnt 
> rank it also helped me to see what happens with rank slicing up the left and 
> right arguments.
> 
> I add some (hopeful) clarity here that may help using the + primitive again 
> to show how rank can provide looping constructs between the arguments …
> 
>    ]a=. i.3 4
> 0 1 2 3
> 4 5 6 7
> 8 9 10 11
> 
>    100+a                        NB. Add 100 to every element of a (+ does 
> this natively)
> 100 101 102 103
> 104 105 106 107
> 108 109 110 111
> 
>    100 200 300 + a        NB. But ‘frames’ are also used to line up to slice 
> arguments so the “3 frames” in each argument (3 items in left, 3 rows in 
> right) produce this result
> 100 101 102 103
> 204 205 206 207
> 308 309 310 311
> 
>    100 200 300 +"0 _ a   NB. Rank allows us to now explicitly along a cell in 
> the left argument (using rank 0) with the *whole* of the right argument <a> 
> (using rank _ infinity)
> 100 101 102 103
> 104 105 106 107
> 108 109 110 111
> 
> 200 201 202 203
> 204 205 206 207
> 208 209 210 211
> 
> 300 301 302 303
> 304 305 306 307
> 308 309 310 311
> 
>    100 200 300 +"0 1 a   NB. This case mirrors the second example above (that 
> was done within frames by the engine) … each cell is added to each row (3 
> frames) using expect rank
> 100 101 102 103
> 204 205 206 207
> 308 309 310 311
> 
>    100 200 300 400 +"0 1 &. |: a     NB. This shows how we might now add 
> cells to columns, by transposing, applying row-wise, then transposing back
> 100 201 302 403
> 104 205 306 407
> 108 209 310 411
> 
> I hope this does not confuse, but playing with examples as per above should 
> help you understand the rank operator more clearly (and how it slices the 
> data, potentially in both arguments in the dyadic case).
> 
> HTH, Rob
> 
>> On 17 Jan 2021, at 1:52 pm, Henry Rich <[email protected]> wrote:
>>
>> Well explained!  What you say makes perfect sense.  Now, what can we do to 
>> help people stop doing that?
>>
>> Abstractly, specifying rank u"n is simply an instruction to JE to chop up 
>> the arguments into pieces of rank(s) n before applying u. For general u, JE 
>> does exactly that.  Thus "n is a directive to execute a certain loop.  It is 
>> not merely informational.
>>
>> [Implicitly, every verb has a rank.  Presented with an argument larger than 
>> its verb rank, the verb will chop up its arguments.]
>>
>> The implementation problem is that executing a verb u has a certain overhead 
>> because of the nature of interpreters: arguments have different types, 
>> results have types and shapes, they all have to coexist: starting u and 
>> assimilating its result takes a few dozen clock cycles.  If u executes on 
>> one lousy atom, it's finished in 1 clock cycle, and almost all the CPU time 
>> is spent in overhead.
>>
>> The solution to this problem is Integrated Rank Support (IRS). When a verb 
>> supports IRS, it warrants to JE that it will take care of a rank if given.  
>> JE will skip the chopping-up step, trusting the verb to create the right 
>> result.  All the usual arithmetic verbs, and several others, have IRS.
>>
>> When you write a + b, JE passes a and b to the + verb.  Even though its rank 
>> is 0, + knows better than to chop up the arguments into atoms: instead it 
>> processes them as vectors, repeating a short-frame argument if needed.  
>> That's IRS for you: even though the verb has nominal rank 0, it can use the 
>> SIMD instructions. The result is AS IF the processing were at rank 0.
>>
>> When you write a +"1 b or a +/ b, JE does even more for you.  JE notes that 
>> + supports IRS, so it avoids the explicit chopping-up step and passes a and 
>> b to + .  + now has more work to do: rather than just repeating a short 
>> argument, it must also repeat over inner cells, with 4 nested loops.  If you 
>> perversely write +"0, JE will set up the 4 loops, then see that two are 
>> nugatory, and revert to just one or two loops.
>>
>>
>>
>> What's the practical effect of all this?   You provided a great example by 
>> pointing out that it makes perfect sense to think of scalar and vector 
>> addition as different operations.  What the beginner needs to do is note 
>> that the rank of + is 0, which means that if you want scalar addition you 
>> don't need to write +"0: + means the same thing.  The added "0 might seem 
>> harmless, or even useful for documentation, but it does add to the 
>> interpreter's work.  If you are adding vectors, write +"1 only when it would 
>> give different results from +"0, that is, when you have one vector to add to 
>> an array of vectors.
>>
>> The apparent anomaly of sin is because of the details of the & and o. 
>> primitives.  o. has rank 0 with IRS, but m&o. is defined as having infinite 
>> rank (with IRS).  So yes, sin has infinite rank.  But because it's a monad, 
>> it produces the same results no matter what its rank: there is no extension 
>> of a short argument.
>>
>> Henry Rich
>>
>>
>>
>>
>>
>>  which knows to repeat an argument that
>>
>>
>>
>> On 1/16/2021 8:59 PM, Arnab Chakraborty wrote:
>>> Thanks for the lively discussion, much of which I could not follow, though,
>>> owing to my ignorance about rank integration.
>>>
>>> However, I understand that some sort of efficiency issue is involved.
>>>
>>> BTW, I can answer one question that even Henry could not answer (for a
>>> change): why beginners write things like +"0 and sin"0.
>>>
>>> They (read "we") are confused by ranks, and the closest concept familiar to
>>> them is that of dimension of domain. For instance, scalar addition is
>>> different from vector addition. So +"0 is scalar addition, and +"1 is
>>> vector addition. This habit is further encouraged by the apparently
>>> inconsistent rank system of J, like *: having rank 0 while sin has rank
>>> infinity. But both are functions from IR to IR. Not sure what is happening
>>> internally, they prefer to explicitly "specify the domain."
>>>
>>> Indeed, before this email thread, it never occurred to me that rank is
>>> somehow linked with efficiency. I just considered a function's rank to be a
>>> property  that is competely dictated by the math of the function.
>>>
>>>
>>>
>>> On Sun, 17 Jan 2021, 06:46 Henry Rich, <[email protected]> wrote:
>>>
>>>> I can't answer that, but I can assure you that they do.
>>>>
>>>> Henry Rich
>>>>
>>>> On 1/16/2021 7:38 PM, bill lam wrote:
>>>>> I didn't mean to change stdlib sooner or later, but if we do it again,
>>>> rank
>>>>> 0 should be a better option.
>>>>>
>>>>> Why users (beginner or not) would write a+"0 b or sin"0 ?
>>>>>
>>>>>
>>>>>
>>>>> On Sun, Jan 17, 2021, 8:20 AM Henry Rich <[email protected]> wrote:
>>>>>
>>>>>> I would be happy for a user to do that, but changing stdlib might not be
>>>>>> a good idea.  Beginning users often write
>>>>>>
>>>>>> a +"0 b
>>>>>>
>>>>>> and it doesn't cost them dearly.  If you make the change, sin"0 will be
>>>>>> expensive.
>>>>>>
>>>>>> Henry Rich
>>>>>>
>>>>>> On 1/16/2021 7:17 PM, bill lam wrote:
>>>>>>> Thanks. then defining sine as 1&o."0 should be fine.
>>>>>>>
>>>>>>> On Sun, Jan 17, 2021, 8:07 AM Henry Rich <[email protected]> wrote:
>>>>>>>
>>>>>>>> What makes them efficient is IRS.  1&o. supports IRS; 1&o."0 does not.
>>>>>>>> Is you define sin as 1&o."0, sin will run fast, but sin"0 will not.
>>>>>>>>
>>>>>>>> Henry Rich
>>>>>>>>
>>>>>>>> On 1/16/2021 6:24 PM, bill lam wrote:
>>>>>>>>> IIUC All atomic math functions are rank 0 but support IRS so that
>>>> they
>>>>>>>> are
>>>>>>>>> as efficient as rank infinity on long array arguments.
>>>>>>>>>
>>>>>>>>> The question should be that
>>>>>>>>> is 1&o."0 as efficient as 1&o. on long arrays.
>>>>>>>>>
>>>>>>>>> On Sun, Jan 17, 2021, 12:32 AM Henry Rich <[email protected]>
>>>>>> wrote:
>>>>>>>>>> Terminology.  If verb v has IRS, it can handle v"n internally
>>>> without
>>>>>> a
>>>>>>>>>> rank loop.
>>>>>>>>>>
>>>>>>>>>> + has IRS.  +"n does not need a rank loop.
>>>>>>>>>>
>>>>>>>>>> +"n does not have IRS.  +"n"n2 does need a rank loop.
>>>>>>>>>>
>>>>>>>>>> +/@:*"1 has IRS, but +/@:* does not - that's how they're coded.
>>>>>>>>>>
>>>>>>>>>> 1&o."0 does not have IRS.
>>>>>>>>>>
>>>>>>>>>> Henry Rich
>>>>>>>>>>
>>>>>>>>>> On 1/16/2021 11:27 AM, bill lam wrote:
>>>>>>>>>>> but the verb in this question is
>>>>>>>>>>> (1&o.)"0
>>>>>>>>>>>
>>>>>>>>>>> even if 1&o. has IRS, does (1&o.)"0 also has IRS ?
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On Sun, Jan 17, 2021, 12:02 AM Henry Rich <[email protected]>
>>>>>>>> wrote:
>>>>>>>>>>>> m&v does have IRS if v does.  I didn't know that until I just
>>>>>> checked.
>>>>>>>>>>>> Henry Rich
>>>>>>>>>>>>
>>>>>>>>>>>> On 1/16/2021 7:10 AM, bill lam wrote:
>>>>>>>>>>>>> I'm not sure if 1&o."0 has IRS (integrated rank support) or not.
>>>> If
>>>>>>>> it
>>>>>>>>>>>>> doesn't then I think the phase with infinity rank is fine.
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Sat, Jan 16, 2021, 7:02 PM Arnab Chakraborty <
>>>>>> [email protected]>
>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>> Dear all,
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>         Just wondering if the correct defn of sin shouldn't be
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> sin=:1&o."0
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> instead of
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> sin=:1&o.
>>>>>>>>>>>>>>       which has rank infinity.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> With the rank infinity definition +/@sin behaves just like
>>>> +/@:sin
>>>>>>>>>>>>>> But, ideally, +/@sin 4 5 should be a list of two numbers, while
>>>>>>>>>> +/@:sin
>>>>>>>>>>>>>> should be their sum.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Just like, +/@*: and +/@:*:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Thanks and regards,
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Arnab
>>>>>>>>>>>>>>
>>>>>>>> ----------------------------------------------------------------------
>>>>>>>>>>>>>> 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.
>>>>>>>>>>>> https://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
>>>>>>>>>> --
>>>>>>>>>> This email has been checked for viruses by AVG.
>>>>>>>>>> https://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
>>>>>>>> --
>>>>>>>> This email has been checked for viruses by AVG.
>>>>>>>> https://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
>>>>>> --
>>>>>> This email has been checked for viruses by AVG.
>>>>>> https://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
>>>>
>>>> --
>>>> This email has been checked for viruses by AVG.
>>>> https://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
>>
>>
>> -- 
>> This email has been checked for viruses by AVG.
>> https://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
> 

-- 
----------------------
mail written using NEO
neo-layout.org
%PDF-1.5
%ÐÔÅØ
6 0 obj
<</Length 5026      /Filter/FlateDecode>>
stream
xÚÕ][·
~÷¯˜? 
©¨»€À@íu´OnýäÉm´qä¥¿5£Û\Î̯wOŠ¬Ï®G)’"õQS9ü<Èáû7òà“ð¯h°ÞŽZ«Á‡Ñ9;|þòæ·D߉òu
vøßÀÍø¦F½$nåNäh‡¿øµP.ŽRz?ƒ1­ 4u£‘.Ú!â)~ÿ×ðæÝðæãÜß4K<kG4þÀ
iä^§Ÿö÷Ï_º‡¼CPÓ#•£ÒeûõÇÚލôq˜ÿû­@ó+­ÕÌìƒcx6þ˜¦õϫԂüh¢ŽnИ¤ÒÒùAPù¨rc”
RÜ™‘¼t#iEZ£§°+,릥Ã/R1Ù»Ooþô†8F§œ>ý4­šÉ3õ§/ÃßIi½”Dø4oüô×7>U5tCÓ}³&3S¢áêc弗ëFS•§
q$²Ö4òô£´JÝ§ŠŸê‚8Ã(Ýg1¦Ð^abè–4½=¤™©gi’Ú“bÓí†fRL„l«gTù±P~ŒÆX…
T0+%íð¥kŽ~ÎÉ͒c ‹     Â*{·9.j§š¶Ïxò°žLlIƒ‹i»¬met~¼6;VÖ·Ú¥¶Nˆª½¶ñãe¢
ie¨v¹Á;ÿ=Ԏ[©¬µˈU‡ktêŠ)ÓȾ«{RcÖg%Œ‡¦<“gêYù´’RFüXüðïOo…
֚Ւ’ZÖçã¨=[¶ÇFS”7=ãù9ü„Å&ax›eDÂ÷Oóˆüó~¥þ’F‡½¬a¬Qÿ$LÑHsOù×-u)”ËrK5&5¯×¨±VÐmŒn©´ujܐVݬ]–¶:z§Æ
ZñºF‹•‡a˜ÐÙPmë´¸!­l–78_*q'“=%–v´!\RâÃM%¶iGÀ‰_ŽuØò¦8«°ÚTa
ñ*Lê¼
k‡Êèë*ÜðµVá*Ë¢Â7£      ìE‘þÂüA:4Í¿oþ‘ºí¤?„BÇÓ̊3KöCIÿ0k2ˆâ¸å
þu†Ù'›úǪ’éë_Ë×¢~ÿËðnø8䨫N}awyêµùÌÔþæSo<Ë´v]„\ZšhDÀdoFotðƒÓð”Æ[h¶q‹èx'8åJL
  ±ô(ƒ½b\hSûÖeȎpøE#ò°֕©gâ|x˦”
l6²Ù¬¦”`ú÷?Cû×ßÊØ÷ÇEòÃüxŸÁððÁØÁ(N<*õd•³E¿J³±&#”ýeh²6#}š=k53+ÜI²ýw‹N¶+¬Ft#{Ó<€^>äy{ëVؾ«èÛn^qÑ,ùÇ^/~ÿyÈ×M¯€Ý¶ÍlÐ^¹dZύ¶!E2Ö(¢Æ¶
 HGàƒ°Zޘaþ¨í„ÙGh2ž£UñÛ»‰¬wʀ[œöð
ÎD•é—Á€/׉ÀZâ͒m3$LŸõ–¡RÁÀY޹±µ?´°«X#uÚߐ6h]¤àˆˆC‘¤Ñvb€Ë¿‘¬Æ(óçÜ̈ÈZ¡ðàáã«
 á“3Á!]pé ¤YaÉeÃÜ—È»`·H9^Ë¢ÑVm£±
Ö0ê¨`öknù†Fk‡Si÷¬N,mëڙ•Cí9µáÀªãÚu`DØNŒ{qFsÉ9¯R|†ß/З¾Q§df¬Ï(Ø´")ƒ/<Açª4~NÇsˆDœÔHAiÛôYZÊèééҌmX“cÊÚ¡„¼
 t®½4¦çëTâÊRíuƒý9#iún%³ušèÞ¸)pòW'$–z?nboGН)n2qS¦ž‰çxA©)fÈG)dyê¢
öÉ1Ä)êi¢woíwsˆñžC¦¹£§j”sò‘XŠyJ†’b>¥3ëÑØwrlS#2¦&“¨s|óç<óe\£yì¤U4Ý¡ë´ 
¢Y‘×L$¿ÿ<ä°yŠš!ÇQŠÿJQ±cRRc-§Â}ðU6v|·?ë7Y–•é-EúeÍÿ6¯½Sä“à(}Ó~+
">ö‹:ÓÎãð†Ü"”WËuD®ç­Z8ñi¹šõ»±è镍¯áÇoKlÆR¹tVäFO‘Ô`iŒÑI$«)‹0{¹ŸÑéX*tüʱ´÷qבåȆ{g¯r˜øeòL}äƒ:—B°tïæœK-²¥³i"v„tнè¤O'E˜N+šd*ªPo¤ViËJùå6¬Ñ®'>çÌRûˆ@M÷Zf™­ô)¬Žì€
  –§áŠ
AJތPRTØc'¬ä§•JZ
Wl|Š1¿r`­)ŵ<£     1âY>²€¿6G‡Ù3u&>ÔÃb=šÎuÉüІá`ø²h¡’ìê"û“kh¡âó 
ž-T!pTx-ÌԧѦû-œ«ruZˆ¬p”Ú¸‹`!!²’Q?;X¨$§°á$X˜©Á¦Û
!6̼X¨àhÖ^õ(‹ÒŒJÎB*zaâF**‘›:Œ¥VܤöWÛÊÐÄB‘£VxØcAB
ÏÍ>¹Ž]Û:Œ¥!-Ü4]n0¾YZ‘ì€,
1B¥çG
q@tr)ÌÔ÷"…*ê‘ÎÀ,|tދñSšÈÈÉyÌ{GÞKš¿ê^b»ñuo¶õ®Šgf˜‡+[ÂÝóTÁ®`žf5ïA*    
¿Y'}oBdÀ#!ijLˆ§ƒÕªqnêL¨V»¨ýÕ¶<roA•—¾C)#¤€}•š‘KSg?•°rRû[󼴞V;ÆÃ¡¡  
þÙJäó|`v¡ÌÄ÷"”ŠÏùâ9á«È"•ùzÓaIoöv`:Ä@g¸Ãt¹®L§YËkébã)0ci>3V'þ‚ioïyæ¥õÌÄ«ù<
 <J<9ì
—áQV1hÖ7€G•ÃJ{:‰fêgH] ¤
óä¾!U·£¯„HykÒ}-Dڈ#mÖýk1Òɤ¦Ä_;GdïÂHùÊ˜ðú°Ñ°ƒ²[×ÖÊ`*¢˜18
ñP)™0!ektú&AJ94:À:Eiè¡Å`:ÑsšÀ^§À‡šð8Rž“Ã>” ´      
uCþ¬ß$Ñ8Ö%$(ÁêG€J3¯¤=Ì6K>óŠÔ%gý¯
‹7xE@§%b»G@'õ&$ƒŽ$"º…
zs)I꽉˜®ÔÛ9ø#2úqÓ´Ñã+wÆõp™æ.Ĕ£.?•g?(`š¶ø[µL)`ÛVpð-dª$Ö
Z[в6öiKœ‘ж×ÒVfЁ¦|’ŽÏ”Ì”>Ióq^HID™@mìQӖ¸òÕt»!„lÚÉg6¥ ¤x~Ø4mèŽN⦙ú>à4CM
r8M¡¥“È)‡<>º¯ANélA§ÍªœƒNôˆ9ír#Îّš{±S¸ý‘ùÂ{Ó¯Øim?‡6Öó8¼!52NZ³\HËÀ
öŸ{±Sî6äÔ#c§da^ÁaVì4ŽH5n"§,=e®÷0öµ›
û;Œ”}ςŽÎ{2y¦>„Ng/qE–h§m˜ƒõy"a2œVõÄ<¾ywú(ˆ,G‰«^nœ¢’›p´ÅäΏé±nn5äþéù¸5¤yZúÞ
7«ºŒ]:‡÷Ψ"ÆçœQEŒ_Éí!Æéˆ&ði^AŒy“Ø³n#Æiëºvöj¹Fì.Ä>-”`ãø`v¢ÎÄ·
Èq –Ä
ù_)[ޏo?ގ’)û.˜Oà=`5íæËÌÓâ„é¬Iq–‹nû€9WÙµùtEôÝ*fC€ê㈫ž.³—d|8¥¿M=õ~ÿþ´ŸŒ[HX°³Ê1"þ³Kb§V‘¢aw§Ð¯qóԒžfŸ%b‹$Ö2Z†„S]B£Â[u
      Y½j]’8¾k}õ3ìÑÇç¯J $Θ“U    ™útUBÓýÖæÂÔ}E  ;‘4|y­*A&·Ï…
Qèٚ„‰öøúrîr-¾ÊÄËU#…
J.j`yÚkjqT\Ü94³4u8j%,èhí®4åaû«žœz¾q\zsøÔz›[:µÕbƒÒ׊Õ%~ڈ`>å9˜opI™à̈Î^RÎÔ÷–B?Ö_(=
 ¢QIõL¥ËގK°qèy>m亂OëZÞSx 6íETm+*)Öª+ZÝ-*^     
‹!4ýÕ¶M“Õ¶j‡¶*:c­“¬¤•™Úåší¥íˆcãAjêŸ»öÀ2vòrôL{÷Ýh>“
‘ÓÏTw°îì¨ìɑ×ͦJti5u       ¯•t֒aûÜxµ/z÷‚ÅbsÖâÊ´ÅËÍûãvÌûü!ã*\…
„wrÆWJ+CL&Àëb[Ó|Y9åˆáø-     >ÑFšÚƎî
¹´Š¾%åË)2ð·ÚciËc§§KkÄÊ_ŠR;dÁ!pl‡ÎMéÙ<ÇJW8©½­Xžý_í³‘ÅFtš 
7(¾`˜Ì'YzQoov¿Fƒ=ƒ¥  ž
áè;™<S_
 øV€H$£V'Ü Ñ4>òöo“êqÝаÕFɳ4Eç…
-¼®¥ØÖ_Q—=ë†ØP"ÑiQQ·†´heÓcmÛV`ÑèzísË~Do@eª
me©éuÍþJ—Å)e|<ý5m¾µ¡³zƈá¹öé0ÝÊÔ3ñÕ-=ë2MCú‚.#µ5ö]®Lm¨r啲1Ǹ¨LUÖÈbù$2C#*`jó¯]³˜Ûcj¯½tí¿ì<²­\㣸\ᨻ¤\„¶WK,2ëZz¥Ù!f:SÏÄÏS‚F>åp}Ÿ;‡f:ðr_ë®4ˆ>Jh

âÎú3ÀDq|^÷:øz4C‡Uð­ÚÎë-ê‚ßY|ƞ1*Åyõók˜ÿháF¡x^ñ[;t/ÌÕä\€ö̟õ›T豸XxÄ6fúÝ
îE‰±>Ë¥HÎq-"x‘„uï‹s¼Ÿ¶O1Ógý†eh­Gð‰íšüËã›WEkf8–1C>œDKŠòïxßêD 
ß­L˜.Mugé³~“$èTŠùúzý²³Ê¨˜9
N£¼O®Ym8ÜeuæT=§“V‹µûzݨó¾^‹QìÆ‹‰7&f?¦6üXã¾öý˜˜™}¸Â3¨±ñZ›yð¶…
øí³:½tOM×Σ‰ŠÃwĬÁ¹Ú–ʽŒIqaMCjÁ¡a£hº,m)®à'K‹hÈJwbkhя]¦Ù~Ún;¶s‘Yév–ÅFy™q|Ë'
…J:\      •ÊË´£#%yt–©gâ‹ÅeÚ'˜£î¨-Ê(9Æ¡xøRæÆp4£Ã]•e*$Ĭ
¦-,›—CÔõ¸UW–
ƒŸBn¨À®œ×>N—Ç­
‹Ry—9Œ¹L1Öoøo2V!|é÷ñÜ䴚56sÿ7¿$ŸÃjE‹1­™],™Hkæ)n¬Ù´T:¯Þ\31-Z|ÉÚ窤åÝå_u÷#S23S­4LnßgËWYl‹Ä¨‹†—çˆæ—é›Tkm,Ç8ì{ƒŒô‡¸ûÁ/8pqûRz›ÔâÝxÁÈéÝxdÙ%ϟõ
 áåØbz£òàÎ߇#¢‘<açe󟝖ÜèôVµé³~ÃtRé頊/       
¨Ç¹ò!vx½ÁjÃá>«ÃiÖi±©Ôb_«eÞÕjñ 
j]ݗØñ_â†+Žë–F¼ƒ!òÑéÑ*?×+Ã5\©tÆkk¥î_Þcœ’èòËô
Wˆ›$¿Ç£õw{*£b›S1±ê789´CþÜâTL¬¦sÚ×e•sm‚«áÒfm”>¿œâWV½xøu"[„É"ôr¡òUZžc9ג¯±ƒÒ|íJi~ÿ²¬øº6q¦ù
…'2ð++%$åæš±ÚciËÉbm
YéNlŒ,ú¡Ë$ÚÊMÓkÏôœ+–^wSEÍØ£`|Ìží"'©’‹ø#|f8Ê3õL|-SäwÏDË¥·Nݑ(ò-6f;Hy,~¯å—Ìù{E¥øÿPÄ
U.M¢˜CÔÕ¸™(:Þ+R{æ<‘_úùp^qõÿßw´ŽÊ9íKŽoε]EBìÁo¦ä›HÅÌë'W…ÍjÎ<É 
P?ðS±/Òê1ÒĉØ^1qcÉêRí.™x5»vË(“ËpéŽr_žÿ†Ô(h}ò‚ÑLüï9†ñùëE=흷‹_.ê¸~·h1àñÕ¢þý›Eu57ÞD™èÖµ"Þ­žRê
…¢#GS¯½N@´q‰H¤ëµAšË—ˆ°ûÈð²wˆx?<.°œˆgÚS7ˆzÚû.-Æ;¼?ÔÓ_¿>´ïðöPO¿¼<DлÂ#
Çw‡òU Z¼oƍü’ܪfà+®?:(hßïÞm!=òÖ¹˜Ãîe!ŽÑ¤ÿw…ªªn^*Æó±©šüog·{ŸÿiÅ=
endstream
endobj
11 0 obj
<</Length 25        /Filter/FlateDecode>>
stream
xÚ˽—%¤À ÀÀÒÉ´HÁJXµ
endstream
endobj
12 0 obj
<</Subtype/CIDFontType0C/Length 2341      /Filter/FlateDecode>>
stream
xڅV    PÇžaٝE։²owÇÌ Š‰·àÁӇ!*xa#1Ü 
,‡Ë²+Ñ0áeW•`TˆáÒ9+‡hMX¼@Æ5IŔƣþY~L½YM*•ª÷*ÓU3ÝÓÿ=ß÷õ×Ó$áêJ$©‰\¹8lÁŠI˲ÒâŒÓÓ¦¬JHÊÒÇœ}óE^ô²¨8q!Ž&ÅÑ*B|ÞEäd¢ÆÕ
«ß̓?OÄ/ÏIwröHˆSyKµa¡ªqÎSU>„Â9ArFÖ¿ÿÏ,Ó3²
“’^/ÆMðò›î;Ý+6ÛkaŒ!]¿1-ÁkILüF}LJfzZúT¯ùz½×ÓØL/CBf‚Á”?õ|^¿çû£=?>=6ai|Bšq£1[úD‚$\WBNP„’p#Ü
   1œ ‰‘„1Šð$X‚#¼        
?b)B¼B„ÄZbMÄ›ˆóÄâ+™”@ºÆc\¤š+@$Ÿ·I-M6“¿º„ºìr9'.‹5ÊîÈD×¹®;]ɟ“/‘o—_VŠ)ŠcŠ_©1Ô&åe©òü™¶–›Dƒ{ͤ
 @½ ƒO¸Ghº=ð=²oÓj~ˆD–zœt~º¯_XØ
NTù?é¤h¼QnrøÞ'ý$ژ!ۀh£¦Â<&µ"«¶¦¢¢¶&«"-5++£×I‘Îü2ñ‚縯,å³™÷eï¾Ñ
£”}©œ­H
Âù¨Üž§ã¥ü”SEÖ}»ÞÝY–_š{ÈÔ±ô«zKIãÕ÷LŽo¥l2ÁÑÉ<™M%ZÖÖ%sú#;ް…
å馒²mü›¥–ÚuŽÙÔïÿ‚®ýäÍ+÷þ7ºÇþC6Š~#Ç..²“ít    ²v¨f0܃A%÷K è~URq 
9‘óÄY+:Áf^;sùòµå8£âÛ&°^§^'¯pQš~.–2p…Úpú¼¾……±ß        
¡à¤­¼¯uQԆ•Êæ<i¥ Á±…±4N¯Cve€ßÚàãͯr°†:ÚòuÿɇI¸L_/îóõqá©Ü¥:kZ®t³¶Ãz
æ´ÜujVøúŒÐdNÝs‰¢Ç?Ãu¹6õÉ`º8éí*­inÌN¯äÚÛä
ñ¯|´]ƒ´uãn¥
þlöyÓ*ÝòÕ©\ˆuÙÇ©§VFi^¶ÝLìgïÞm
›RåWů<þMGcŒ”~®&šIP²FÑÄØñ’blíb¡«ùƒ¦F.²Yži0lÛÄ®µœ;ÎÃ%ÐØQ¯úã«Á’N9ÂB³ø•٣ǩ”š€ÈFŸSß΋¬ÿK©_vçÖ­–³ç8õ%¸þxŸRo‰X3cދ,m’¸°™Év‰Xƒɑè‹YÛµïýc¿8ޘ¬y¬À(¨;ñ5Œ†Uå{´coæÏÀ‘QÁ8Ökh_Ümr\0“ûI"†vd,I˜–‘iԚL™Ù+òËhêvÜÝÞÖÚ\ÙýÑ9H–UUW)'+¶lõÇ×á<œ
 zjèú§ÞN?~&ùï
쟝ì(Òïì1œlׄ”—\´èAþx“j^ZµšÅ±¾Hb(ú\ÅQ@ðý®Áů߼¯ö̵[m݉«OqB¥D.õó®’zÝM°ÃL6€›¬¡™I9œYÏ彞•”–ÔdÐ|ÖVÙe=¥lÊ®NÉ4¦p4îƒ<;
       ŸCƒ¹Á« •› ì²$éÔéØËàñ'{å?*~†29SÜÅ2©Ç{å¯M`%F÷䘥x
…{Xjé†Áá*]·eâmGc  }„³q&NF¬E½äU_~‡ƒ€wÎüp¤2┦`é´BôäQU8FA€LÒâqp;ñ’…
£Ërûª>ò’7~Ítû\ßÃó•à   þ…‰0‡ÛЭžŸUPSxY      Tñw¾`{?ÛÛÀw´Ê»Ö„|<
ÂS1d¿9 cÁ-IùCº1E7i~Ô,nê®W>Y+H¾)’L9X&A/tBß*APÀV     
-‡0Ï4¸ßLž•dkwö†oDÇéЧ@„™+±ËQÛ¤‡j¡ƒ‘G 
´6îρ°ZÕ8ÂÐFÁ*©Ãz¬Fík\I°"µÀðÑÁ¸H1|¿4Ð,6š@2²ÜÚ%5!űáoôÄ@Ï¿¼K;½;<z 
Ú_rRsӉ,ÃèP…ú¨~óV¨{P¥ø3Pü!Z²Ü§NÐÑ¿•9â;žF
z?£ c%s/î!ÏÀ®~¸ˆ“˜Ð]½ñeq˜‰[Neþ'&oÁv%Î3¤ùémnEï…
ºÖÜ{ɇRNlioÑDTZ?)ÒA3Ֆý)”¡ÛsW°óزÝÏø+³Í±§G×´ßäÜù=uŵ%JFÅ­{y}p±’žœÓ'úõI{²
>Ï2^ÈøbN¿ƒÃk=]ҍ_Û"Kʋgg¬úQZZû¿éŽ-·ð'[ä–ðïQÎÑCÞb        
ŠÍNºeK5m”ö£Üïo³{<ˀšP߅£îï´î;ñ{á~°…om•[º5©¨Àqܤ 
à‹CÆÑfçÆ]½«/A^ï@7¼ÝÙëqöFˆe›}j‚€Y¢†¹.Ô¶´¤ÎñþgÖºuþ¥ àáAfã‡[ªs8õCb}rrJÁ
å$PÌXýýCZœrÿ±›3Z}-y»•ÕU5G?äòËË
°êG¹×Awft'7¾^Íï9\SRÍØ¿3ÿ¾]^b6ma׬ÊJŒåÕ¿%™ÆB3;ÙH9£a}Óf>.EŸ˜¬ƒ8¼ÂHsÎi:s£î#[
_UYp½óÈrèæ.B–£7çôBj/°½äI§q+œÔ‡ž0óÓ¾|qϹῸ¬0~<‹yѽAÑðÄ`
Ž›†ZœÉA.lf~:67ü=*®T4uô²4&>ã=ÆN>=å»ÓZ$±ÝvqÃ3¶'w ÷²gÛQúÛ;‹#DV5Þy 
ôpžã<,ñ°US‡†9òG‰÷˜ÿ½  ™
endstream
endobj
14 0 obj
<</Length 511       /Filter/FlateDecode>>
stream
xÚ}“Ooâ0ÅïùÞ=¤8&Ú
E*V¬TÊ´ê5Ä  œÈI|ûµý*­–EñË̼yžŒGß¶;ÿUVò§œ}PSuº 
?{Ëko4ZTEw!Õnˆ$É!Ú¼°­®Šµlœ­kU¶&y­Šs'iÈúwҜN¥úJ±}ØxOŸþçÏïÛùÆÿÑ©¢-+åЩ;çÚç¶j_¶g“ýÿDf¢ìN”9™_¤óð
…œsó`©dV]ì    
oÒ»d“Á÷±TR÷VÙÁ÷ÁdY´=¹ßâbFe‹wצ¥ËZ+o6cÓ¹lZ}u®¼É»–¤Kubã;Mή«ë3Y?Œ{iÊ$´™Ñ&¿›Øã¯¥‰–íõÞ¾jöך˜pÀpQIjê¼
 «y33ž²ÙÊ|R”ü+ÎQu8MÂðw*†Pñ;×N(0BœÇO©#z… 9(e ´=V gG       ÍA”¦ 
(-A‘£Î8à,³ w†º v$à,@?±A3       ¨„è>E 
®Îö*è§@÷È_ð"x‰zÂ\"Ì,B÷ÝcB¿X@šñ+bñmú&' 
8ˆ1›¬×S¼]÷6í"؝¾í]Ñim–Î-¾Û,»S¥¢Ûݨ«ÚV¹¯»T÷ô¾òþ¨Ð7F
endstream
endobj
17 0 obj
<</Producer (LuaTeX-1.0.4)/Creator (TeX)/CreationDate 
(D:20210117052224+01'00')/ModDate 
(D:20210117052224+01'00')/Trapped/False/PTEX.FullBanner (This is LuaTeX, 
Version 1.0.4 (TeX Live 2017/Debian))>>
endobj
9 0 obj
<</Type/ObjStm/N 11/First 67/Length 621       /Filter/FlateDecode>>
stream
xڅSÉnÛ0¼ç+Þ1AápE
Ävœ¸ES×Nۊ̨ɐä"þû•µ‡¶‘xähfÞBMœ²     V‘ÄjI‘Èðq’
NJiÈPŠUh2š“¥LØ#‘R¦õÑÙ»9ì[æe`Ó¦îCÝw”‚xÅV¡köm:ˆÄøsØTù¤yt¡ÎÔi"JlvÊUâÁÐâ_°:ƒ˜À·mÚõ./\á˜êûÐÖ°:„ýåºÏû€
†ƒ9ÀÒ\ZxˆØ²mŠuè[Îæì&<ö~`[ˆØ®¼ßµå¹W6¿ª"¬.'ž€rÂ¥<!i„OœÖ¨•±Þ
gÚ¦¨ŽôB¸D¥¤¹$•Y•Æi+Iå%w©Ê¼”Nrî¥q*I¼âÎpëUâÒDz
ˆ«rJKo´S*õÆ›åNl      fØ2XI¥ÏR§Á’YPk/8B   
V´O?Êû×VÅÍBW´Õ®oÚ!¼Î»ýz¹œ\ø¸¯‹¾jêÑ*”ûmÀ6/ÑÂ8‰í        
nh$Æ”ð4.Ö³ó®ˆíÀ°i¾»
Uù‘á,Jś‘ÄբϷUq^—Û@œ­ûððRËnŸñ(3¯¶38t™M3ô„xŒ·<Øz×Ç 
žpvQͦªK¶Ø@²ê£+6É»0@ÿ–ß“ÁMYÀ:‡1‡g7Í·º†+ù—4üÅøÉÁÕþ¬~|`1ÇñÁ½${èP—E}ß@¿U]ßèø|ÓÜ
…ö¥Ý„)ÒñKŽ'p²ÛmÃC¬2ßùŒ¯²‹ïh+Á>U›Î=e÷4Íє¦|¿¼¿ß­\.Û
endstream
endobj
18 0 obj
<</Type/XRef/Index[0 19]/Size 19/W[1 2 1]/Root 16 0 R/Info 17 0 
R/ID[<D75B60843892F33C34EE0A8BDC3ACBCD> 
<D75B60843892F33C34EE0A8BDC3ACBCD>]/Length 67        /Filter/FlateDecode>>
stream
xÚc``øÏÄÀÉÄÌ@ÌČ@ÌÀÈÀϤف˜“Q‘ÄfeþÃÀ(’b³1ʾÑ@ÌŨ`ÌÀ¨|±²Ð
endstream
endobj
startxref
9182
%%EOF
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to