In
<http://www.jsoftware.com/jwiki/RE%20Boss/J-blog/Special%20code%20for%20f/.%
40:g>
http://www.jsoftware.com/jwiki/RE%20Boss/J-blog/Special%20code%20for%20f/.%4
0:g I define the conjunction 'obta' - oblique at table.

 

f obta g is equivalent to f/.@:(g/) but is much leaner and a bit faster.

See the wiki-page for the detailed figures.

 

 

obta=: 2 : 0            

assert. 'dyad only' 

 :

assert. >{.(x *.&(1...@$) y) ; 'vectors only'

if. x -: y do. (u@:(v|.)\y) , }.u@:(v|.)\.y

else.

  's t'=: x ,&# y

  z=. $0

  if. s=t do. y=.|.y

   if. x-:y do. z=.(u@:(v@:(,:|.))\y) , }.u@:(v@:(,:|.))\.y

   else. NB. y=.|.y

    z=. i.0 1

    for_j. i.&.<: s do. z=.z, ((j{.x) u@:v (-j){.y) , ((-j){.x) u@:v j{.y
end.

   end.

  elseif. s<t do. y=.|.y

    for_j. i.&.<:s do. z=.z, (j{.x) u@:v (-j){.y end.

    z=.z, |.s x&(u@:v)\y

    for_j. |.i.&.<: s do. z=.z, ((-j){.x) u@:v j{.y end.

  elseif. s>t do. y=.|.y

    for_j. i.&.<:t do. z=.z, (j{.x) u@:v (-j){.y end.

    z=.z, t (u@:v)&y\x

    for_j. |.i.&.<: t do. z=.z, ((-j){.x) u@:v j{.y end.

  end.

end.

)   

 

 

R.E. Boss

 

 

 

----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to