q command | by sample .. last update 22-Dec-2013 18:45 |
---|---|
.Q locale(static) | .Q.a(lower alpha),.Q.A(upper alpha),.Q.n (digits),.Q.k (version) |
acos | acos -1f .. 3.141593 |
acot *nyi* | acot:{acos x%sqrt 1+x*x} |
+ [addition] | 4h+0xaabb .. 174 191,4h+9j .. 13j |
all | all 11111b .. 1b |
and | 0011b and 1010b .. 0010b |
any | any 10001b .. 1b |
@ [apply] | "denubolar "@4 6 7 0 1 9 8 3 2 2 1 8 .. "blade runner" |
arcosh *nyi* | {log x+sqrt (x*x)-1f} where x >= 1 (see also under section "COMPLEX OPERATORS") |
arcoth *nyi* | {0.5*log (x+1f)%x-1f} where |x| > 1 (see also under section "COMPLEX OPERATORS") |
arsinh *nyi* | {log x+sqrt 1f+x*x} (see also under section "COMPLEX OPERATORS") |
artanh *nyi* | {0.5*log (1f+x)%1f-x} where |x| < 1 (see also under section "COMPLEX OPERATORS") |
asc | asc "cool" .. `s#"cloo" |
asin | (180*asin 0.5)%acos -1f .. 30f |
association | ("silver"!0x0a114dab762e)@"liver" .. 0x4d11ab762e |
atan | (acos -1f) ~4*atan 1 .. 1b (for arccot see `acot) |
avg | avg 10 20 30 40 .. 25f |
bid/ask notation | "F"$("1 19/64";"2 3/4") .. 1.296875 2.75 |
bin | 7 8 9 10 11 12 13 19 bin 19 9 .. 7 2 |
cast | 99^9 0 0n 0 7 0n 4f .. 9 0 99 0 7 99 4f |
@[f;x;msg] [catch] | {@[{x+2};x;`error]} each (4;`4;"m";8j) .. (6;`error;`error;10j) protected file read: {@[read0;x;`unavailable]}@`:F.txt |
-3! character representation | -3!(`karl`marx;4 3 2 1;001b) .. "(`karl`marx;4 3 2 1;001b)" |
commands | \t .. timer \t f x .. time \P .. precision \p .. port (\p -n reset port) \ .. OS command \v .. variables \d .. dictionary \l .. load script \S .. random seed .. -314159 default \c .. console setting 25 x 80 (default) \C .. browser setting 36 x 2000 (default) \\ .. good bye |
$ [condition] | $[1b;`right;`wrong] .. `right |
cos | cos (acos -1)%3 .. 0.5 |
cosh *nyi* | {0.5*(1%c)+c:exp neg x} |
count | count (`aa`bb;`cc`dd) .. 2 |
cross | `E1`E2`E3 cross `M1`M2 .. (`E1`M1;`E1`M2;`E2`M1;`E2`M2;`E3`M1;`E3`M2) |
csv | "," |
cut | 3 cut/:("delta";"airlines") .. (("del";"ta");("air";"lin";"es")) |
date arithmetics (m) | 2001.01m+key 6 .. 2001.01 2001.02 2001.03 2001.04 2001.05 2001.06m |
date arithmetics (m) | 2002.03m-2001.01m+key 6 .. 14 13 12 11 10 9 |
date arithmetics (d) | 2006.01.20-til 5 .. 2006.01.20 2006.01.19 2006.01.18 2006.01.17 2006.01.16 |
date arithmetics (d) | 2011.01.20-2006.01.20-til 5 .. 1826 1827 1828 1829 1830 |
date arithmetics (ts) | 2006.01.22T21:06:22.062+1 .. 2006.01.23T21:06:22.062 |
date arithmetics (ts) | 2006.01.22T21:06:23.062+1%86400000 .. 2006.01.22T21:06:23.063 |
date projections | r:2006.01.22T21:13:36.531 r.date .. 2006.01.22 r.week .. 2006.01.16 r.time .. 21:13:36.531 r.month .. 2006.01m r.minute .. 21:13 r.second .. 21:13:36 r.year .. 2006 r.ss .. 36 r.hh .. 21 r.mm .. 1 r.dd .. 22 r:.z.Z `int$r.time mod 1000 .. reading the milliseconds `int$t.timestamp mod 1000000000 .. 2011.03.15D22:32:22.109921000 (micro-seconds) |
date casting (I) | `hh`mm`ss$r.second .. 21 13 36 |
date casting (II) | `year`month`dd`week$r .. (2006;2006.01m;22;2006.01.16) |
date boundaries & date casting (III) | 9999.12.31-`date$.z.Z .. (`date$.z.Z)-1000.01.01 |
date system command \z is 0(=default) or 1 | \z 1 .. "D"$("22/09/2009";"31/12/2000";"01/06/2008") .. returns 2009.09.22 2000.12.31 2008.06.01 \z 0 "D"$("2009/09/22";"2000/12/31";"2008/06/01") or "D"$("2009-09-22";"2000-12-31";"2008-06-01") returns .. 2009.09.22 2000.12.31 2008.06.01 |
[delimiter suppression] by quote intervals | show ("******";",") 0: enlist ("******";",") 0: enlist "Ian,Racz,\"Edmonton,Alberta\",Canada,\"114St,88Ave\",manager" Ian Racz Edmonton,Alberta Canada 114St,88Ave manager |
deltas | deltas (til 5) xexp 2 .. 0 1 3 5 7f |
denormalizing | flip exec (exec distinct n from T)#n!v by k from T.
T:([n:`a`a`a`b`b`c`d;k:`m1`m2`m3`m1`m3`m2`m4] v:9 8 7 6 5 4 3) |
dependencies | Tview :: T |
desc | desc 1 5 5 7 6 3 3 .. 7 6 5 5 3 3 1 (desc "abcd" .. "dcba") |
dictionary |
a dictionary maps lists into lists: a:`list1`list2`list3!(`l`e`f`t;4 5 6 7;0101b) we can use the dot notation: a.list2:4 5 6 7 creation of a Kdb+ table: T:flip a |
differ | differ 1 5 5 7 6 3 3 .. 1101110b |
distinct | distinct "mississippi" .. "misp" |
div | integer part of a division .. 19 div' 4 6 7 8 .. 4 3 2 2 j div i .. (j can be 64-bit integer) example: 87726636552j div 873 .. 100488701j |
do | do[n;..;..;] |
_ [drop] | -4 _ "applegate" .. "apple" |
encryption | md5 "birdflu" .. 0x3292dfabfffba27383d72cab3c4413b5 |
enlist | enlist 6 .. ,6 |
= [equal] | `cb=`cx`cs`cb`cbb .. 0010b |
except | "icewater" except "weird" .. "cat" |
exp | exp til 5 .. 1 2.718282 7.389056 20.08554 54.59815 |
fills | fills "mis is ip i" .. "mississippi" |
? [find first] | "Czechoslovakia"?"o" .. 5 |
first | first "miami" .. "m" |
flip | flip (`aa`bb;`cc`dd) .. (`aa`cc;`bb`dd) |
floor | floor 2.77 3.99 -3.99 .. 2 3 -4 (integer again) |
$ [formats] | [a] IP address to decimal.. "I"$"10.23.23.11" .. 169285387 [b]"Z"$"20060303-10:13:59.099" unix timestamp to q .. 2006.03.03T10:13:59.099 [c]"I*c"$(("34";"88";"299");("mao";"tse";"tung");0x4a4b4c) .. (34 88 299;("mao";"tse";"tung");"JKL") the * lets the characters unchanged [d]"ISc"$(("34";"88";"299");("mao";"tse";"tung");0x4a4b4c) .. (34 88 299;`mao`tse`tung;"JKL") [e]"IS*"$(("34";"88";"299");("mao";"tse";"tung");0x4a4b4c) .. (34 88 299;`mao`tse`tung;0x4a4b4c) the * lets the bytes unchanged [f] bijection of bytes into ASCII:all ("c"$j)="x"$j:key 256 .. 1b. BUT ("c"$j)~"x"$j:key 256 is 0b |
getenv | getenv `TEMP |
>= [gte] | "o">="moscow" .. 110110b |
> [greater than] | "o">"moscow" .. 100100b |
hclose | hclose h .. closing file-communication |
hcount | hcount `:file .. # of bytes |
hdel | hdel file .. erase file |
hopen | hopen `:xy/yx.txt .. h "whatever" |
iasc [index ascending] | v@iasc v:1 5 5 7 6 3 3 .. 1 3 3 5 5 6 7 |
~ [identity] | `e ~ /: (5;`e;"nhl 2006";`roland;"e";`e;0x34) .. 0100010b |
idesc [index descending] | v@idesc v:1 5 5 7 6 3 3 .. 7 6 5 5 3 3 1 |
if | if[true;..;..;] |
in | "se" in "russia" .. 10b |
infinities | inf:(1b,0xff,0Wh,0W,0Wj,0we,0w) # -1 + inf .. (0;254;32766;2147483646;9223372036854775806j;0w;0w) and 0Wd 0Wz 0Wt (infinities related to date/datetime/time) |
inter | "birds"inter"parrots" .. "rs" |
inv | inv 1f*(4 1 3;-1 1 2;6 7 17) .. (1.5 2 -0.5;14.5 25 -5.5;-6.5 -11 2.5) /set \P 10 eq.system: 15x + 8y = 3 and x - 10y = 95 .. (inv (15 8f;1 -10f)) mmu (3 95f) .. 5 -9f ;x = 5 , y = -9 |
, [join] | "Czecho","slovakia" .. "Czechoslovakia" |
key | key 5 .. 0 1 2 3 4 # key "silver"!0x0a114dab762e .. "silver" |
keyed tables | T:([n:`t`a`w;m:7 6 5] a:`A`a`c;b:`ll`jj`dd) |
last | last "miami" .. "i" |
<[less than] | "miriam" < "m" .. 010110b |
like | "panama" like/: ("*am*";"pan*") .. 11b;("tr*nce";"france") like "*[*]*" .. 10b |
lj | left join |
log | log 7 8 2.71828 -3 0 .. 1.94591 2.079442 0.9999993 0n -0w |
lower | "GLOBAL LIMIT SYSTEM" .. "global limit system" |
lsq [least squares] | 1 1.8 1.5 2.5 lsq flip (1 1f;2 1f;3 1f;5 1f) .. 0.3314286 0.7885714 |
<= [lte] | "o"<"moscow" .. 001001b |
ltrim | deleting leading blanks: ltrim " zurich" .. "zurich" |
x$m [matrix multiply] | (2 3f;-1 4f)$(9 2f;4 2f) .. (30 10f;7 6f) For (1 x n) . (n x 1) matrices we can take: (c,c:count v)#prd flip v cross v resp. we do: (flip enlist v)$enlist v |
mavg | 3 mavg 1 3 5 7 9f .. 1 2 3 5 7f |
max | max "texas" .. "x" |
maxs | maxs 2 4 2 2 8 7 2 7 .. 2 4 4 4 8 8 8 8, "fox"~maxs"fox" .. 1b |
mcount | 5 mcount "alabama" .. 0 1 2 3 4 5 5 5 |
med [median] | med 8 7 6 5 6 7 9 .. 7f |
min | min 5 -1 8 2 .. -1 |
mins | mins 67 8 11 4 6 .. 67 8 8 4 4, "volga"~mins"volga" .. 1b |
mmax | 3 mmax "DEEPTHOUGHT" .. "DEEPTTTUUUT" |
mmin | 3 mmin 9 8 7 56 17 87 13 .. 9 8 7 7 7 17 13 |
mmu | .. see matrix multiply |
mod | (key 23) mod 11 .. 0 1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5 6 7 8 9 10 0 j mod i (j can be 64-bit integer) example: 87726636552j mod 873 .. 579j |
msum | 3 msum 1 5 7 9 11 .. 1 6 13 21 27 |
* [multiply] | 3*4 5j .. 12 15j |
neg | neg (4;9j;7h;0x77;0N;01b) .. (-4;-9j;-7h;-119;0N;0 -1) |
next | next "perth" .. "erth " |
not | not 1100b .. 0011b, not 1 1 0 0 .. 0011b |
null | null 0N 9 8 7 0N .. 10001b |
odbc | h:.odbc.open `filedsn`usr`pwd (db2 connect) |
or | 1100b or 0101b .. 1101b (works also for Int/Long/Short+Bytes) |
peach [parallel each] | peach[>;3 13 76 111 223 227 224 701] .. 11111101b |
prd | prd 1+til 5 .. 120f |
prds | prds -1 2 -3 4 .. -1 -2 6 24 |
k)s)q) [prefixing] | k) k4 s) jdbc/odbc sql93 .. q) talking to q server |
prev | prev key 5 .. 0N 0 1 2 3 |
protected execution | see under `catch |
rand | rand each 6#50 .. 19 39 49 17 2 28 |
? [random] | 5?10 .. 6 5 7 7 7, -5?10 .. 4 3 7 1 6 or 7?" " returns 7 random chars out of "a-z" |
rank | rank 11 12 22 12 98 112 .. 0 1 3 2 4 5 |
ratios | ratios (til 6) xexp 3 .. 0 0w 8 3.375 2.37037 1.953125 |
raze | raze (1 3;4 5 6 7;1) .. 1 3 4 5 6 7 1 |
read0 | read0 `:text.txt |
read1 | read1 `:bytes |
reciprocal | reciprocal 2 4 8f .. 0.5 0.25 0.125 |
(n,m)#v [reshape] | 2 10#til 20 .. works only for 2-dim, 2 3 4# .. length error |
reverse | reverse "flurry" .. "yrrulf" |
rotate | 4 rotate "techno" .. "notech" |
rounding .. | round:{floor 0.5+x}, roundto:{y*floor 0.5+x%y} -> roundto[34.7873 11.3787 38.6767;0.25 0.2 0.125] .. 34.75 11.4 38.625 |
i [rownumber] | select i,.. |
rtrim | .. rtrim "geneva " .. "geneva" .. deleting trailing blanks |
select | be aware that .. T:select a,b,a from U ..then cols`T is `a`b`a1 |
select ?[t;a;b;c] | ?[M;enlist (>;`b;2);0b;()] .. select from M where b>2 ?[M;((>;`b;2);(like;`c;"*r*"));0b;()] .. select from M where (b>2) and c like "*r*" ?[M;((>;`b;2);(like;`c;"*r*"));0b;(enlist `a)!enlist (sum;`a)] .. select sum a from M where (b>2) and c like "*r*" ?[M;((>;`b;2);(like;`c;"*r*"));0b;(`a`c)!((sum;`a);(last;`c))] .. select sum a,last c from M where (b>2) and c like "*r*" ?[M;enlist (>;`b;2);(enlist `d)!enlist `d;(enlist `a)!enlist (sum;`a)] select sum a by d from M where b>2 |
.z.s [self referent] | fac2:{$[x<2;1;$[x<3;x;x*.z.s x-2]]} .. double factorial !!n |
serialized tables (set+get) |
let be - M:([] a:`u`d`x`w; b:9 8 76 1) `:somedir/T set M or .[`:somedir/T;();:;M] saving as T M:get`:somedir/T reading .. we can also use \l somedir/T `:somedir/T insert N .. inserting `:somedir/T insert `a`b!(`I;8777) ..keyed tables..K:([k:`a`b`c]s:`km`lk`ol;v:98 99 88) .[`:somedir/L;();:;K] or `:somedir/L set K for saving .[`:somedir/L;();,;] N or `:somedir/L insert N for inserting |
signum | signum 8 0 5 -3j .. 1 0 1 -1 |
sin | sin (acos -1)%6 .. 0.5 |
sinh *nyi* | {0.5*(1%c)-c:exp neg x} |
sockets | h:hopen `:host:port (hclose h) |
sqrt | sqrt sums 1+2*til 7 .. 1 2 3 4 5 6 7f |
ss [string search] | "quantitative easing" ss "ti" .. 4 8 |
ssr [string replacement] | ssr["sandman";"andm";"ham"] .. "shaman" |
string | string (`abc;878;9j;"anc") .. ("abc";"878";,"9";(,"a";,"n";,"c")) |
sublist | (2;5) sublist "waterland" .. "terla" |
sums | sums -1 2 -3 4 .. -1 1 -2 2 |
sv | 1 100 1000 sv 5 8 9 .. 508009 |
system | shell execution .. |
tables | tables ` .. listing |
# [take] | 4#9 .. 9 9 9 9, -5#"adam" .. "madam", 4#9 8 7h .. 9 8 7 9h |
tan | 1f~tan (acos neg 1)%4 .. 1b |
tanh *nyi* | {(d-c)%(d:1f%c)+c:exp neg x} |
til | til 5 .. 0 1 2 3 4, til 6h .. 'type, til 6j .. 'type |
trim | trim " ghost riders in the sky " .. "ghost riders in the sky" .. deleting leading/trailing blanks(not in-between excess blanks) |
type | bool = 1;byte = 4;short = 5;int = 6;long = 7;real = 8;float = 9; char = 10; symb = 11;month = 13; date = 14;datetime = 15;minute = 17;second = 18;time = 19;enum = 20; table = 98;dict = 99;lambda = 100;assignment = 101 (t: ::, type t = 101); projection = 104;composition = 105; f' = 106;f / = 107;f \ = 108;f': = 109;f /: = 110; f \: = 111; dynamic load = 112 |
uj | union join (self-explaining) |
<> [unequal] | "strawberry" <>"r" .. 1101111001b |
union | 1 3 4 union (3;`a) .. (1;3;4;`a) |
upper | upper"global limit system" .. "GLOBAL LIMIT SYSTEM" |
value [execute/assoc.algebra] | value "silver"!0x0a114dab762e .. 0x0a114dab762e |
vector conditional | ?[11010b;76 12 23 11 32;-4 -5 -9 0 3] .. 76 12 -9 11 3 |
views | views ` .. listing |
vs | 0x0 vs/:16 32 64 128 255 .. (0x00000010;0x00000020;0x00000040;0x00000080;0x000000ff) 0b vs/: 1 2 4 .. 00000000000000000000000000000001b 00000000000000000000000000000010b 00000000000000000000000000000100b |
wavg | 2 3 4 wavg 7 8 22 .. 14f |
where | where "i"="mississippi" .. 1 4 7 10 |
while | while[true;..;..;..;] |
within | "pqy" within "dw" .. 110b |
wsum | 4 3 2 1 wsum 1 3 5 7 .. 30f |
xbar | select max amts,min amts by 10000 xbar amts from M (select max amts,.., by 10000f xbar .. will result in a type error) i xbar j (where j can be 64-bit integer) .. example: 70000 xbar 3762 87722 144544j .. 0 70000 140000j |
xlog | 2.71828 10 xlog/: 1e3 1e-7 2.71828 -4.. (6.90776 3;-16.11811 -7;1 0.4342942;0n 0n) |
xor *nyi* | {xwi[x;y] or xwi[y;x]} |
xprev | 2 xprev 3 4 8 7 .. 0N 0N 3 4, -2 xprev 100 200 300 400 .. 0N 0N 300 400 |
xwi *nyi* | {x and not y} |
.Q local | .Q.host 1381711022 .. `host174-60.pool8291.interbusiness.it (.Q.host "I"$"85.114.2.6" .. `cobra.obit.ru) |
.z local | (h) host,(u) user,(K) version time, (k) version, (a) IP,(f) script,(z) GMT,(Z) timestamp (s) self referent |
z1,z2,z = (re,im), {re,im} are real | some COMPLEX OPERATORS (in K4).. if relevant, then always referring to the principal branch - BUT SUBJECT OF A REVIEW (because of the Power Series etc) |
π/2 , π , 2π | pih:0.25*pi2:2*pi:acos -1 |
cpi(z=i) , cp1(z=1), cpni(z=-i) cpn1(z=-1) , cp2(z=1-i) , cp3(z=-1+i) cp4(z=1+i) , cp5(z=-1-i) | cpi:0 1f;cp1:1 0f;cpni:0 -1f;cpn1:-1 0f;cp2:1 -1f;cp3:-1 1f;cp4:1 1f;cp5:-1 -1f |
cp0(z=0) , oo0(z=π/2+0i)) oo1(z=- π/2+0i) | oo1:-1f*oo0:(pih,0f);cp0:0 0f |
ep1(z=-0.5+i31/2) , ep2(z=-0.5-i31/2) | ep2:1 -1*ep1:0.5*(-1,sqrt 3) |
flat (just decorative) | flat:{$[1e-011>abs x;:0f;:x]} |
ap (utility) | ap:{0f+x,'cp0} |
signum | signum:{(x>0)-x<0} (available under q) |
sinh x, x real | sinh:{0.5*(1%c)-c:exp@-x} |
cosh x, x real | cosh:{0.5*(1%c)+c:exp@-x} |
tanh x, x real | tanh:{(sinh x)%cosh x} |
arsinh x, x real | arsinh:{log x+sqrt 1f+x*x} |
arcosh x, x ≥ 1, real | arcosh:{log x+sqrt (x*x)-1f} |
artanh x, |x| < 1,real | artanh:{0.5*log (1+x)%1-x} |
cis x = (cos x; sin x), x is real | cis:{(cos x;sin x)} flat@/:/:cis 0.5*pi*key 5 .. (1 0 -1 0 1f;0 1 0 -1 0f) means cis(0,π/2,π,3π/2,2π) is 1,i,-1,-i,1 |
absq(z) , squared absolute value f(z) = |z|2 | absq:{+/x*x} absq (24 3;10 4) is (676 25f), so
|24+10i|2=676, |3+4i|2=25
|
absz(z) , absolute value f(z) = |z| | absz:{sqrt absq x} absz(3 6;4 8) returns 5 10f ..
|3+4i|=5, |6+8i|=10 |
deg(x), x real ;(degrees) | deg:{x*180f%pi} deg asin 0.5*sqrt 0 1 2 3 4 returns 0 30 45 60 90f |
arc(x), x real ;(arcus) | arc:{x*pi%180f} arc 0 45 90 135 180 360 .. 0 0.7853982 1.570796 2.356194 3.141593 6.283185 |
arg(z) , argument of z , (-π < arg z ≤ π) φ = arctan y/x | arg:{(1+c*1-c:signum y)*acos x%absz[x;y]}
and in case of a [0,2π)-based definition:
arg[1 0 -1 -1 0 -1 1f;0 1 1 0 -1 -1 -1f] .. 0 1.570796 2.356194 3.141593 -1.570796 -2.356194 -0.7853982;
arg2:{(pi2*l<0f)+l:(1+c*1-c:signum y)*acos x%absz(x;y)} φ(1)=0,φ(i)=π/2,φ(-1+i)=3π/4,φ(-1)=π,φ(-i)=-π/2,φ(-1-i)=-3π/4,φ(1-i)=-π/4 |
arootz(z;n) n positive integer f(z) = |z|1/neiφ/n | arootz:{(cis (arg a)%n)*\:(+/a*a:0f+*x) xexp 1f%2f*n:last x}
arootz((-236 621;-115 -478);3) .. (4 9f;-5 -2f)
(-236-115i)1/3=4-5i ,(621-478i)1/3=9-2i
arootz((9 82368 -47068;40 94024 -1900);2 6 5) .. (5 7 7f;4 1 -5f)
(9+40i)1/2=5+4i ,(-47068+94024i)1/6=7+i , ,(-47068-1900i)1/5=7-5i
|
dymz(z1;z2) , dyadic multiplication(1) | dymz:{(-/m*n;+/(m:x@0)*|n:x@1)} dymz((1 4 7 -2;2 -3 -1 5);(3 -2 -4 6;8 1 -3 -7)) .. (-13 -5 -31 23;14 10 -17 44)(1+2i)(3+8i)=-13+23i ,(4-3i)(-2+i)=-5+10i , (7-i)(-4-3i)=-31-17i , (-2+5i)(6-7i) = 23+44i
|
dymz2(z0;z) , dyadic multiplication(2) | dymz2:{((-/a*m);+/(a:*x)*|m:last x)} dymz2(2 5;(3 6 7;-2 5 -4)) .. (16 -13 34;11 40 27)(2+5i)(3-2i)=16+11i ,(2+5i)(6+5i)=-13+40i , (2+5i)(7-4i)=34+27i
|
sqrz(z) , square f(z) = z2 | sqrz:{dymz(x;x)} sqrz(3 -8 5;9 -2 -3) .. (-72 60 16;54 32 -30f)) ..
(3+9i)2=-72+54i;(-8-2i)2=60+32i;(5-3i)2=16-30i |
cubz(z) , cube f(z) = z3 | cubz:{dymz(x;dymz(x;x))} cubz (6 5;4 3) .. (-72 -10;368 198) ..
(6+4i)3=-72+368i;(5+3i)3=-10+198i |
conj(z) , conjugated f(z) = z_ | conj:{(*x;-last x)} conj(3 8;1 -2)..(3 8;-1 2f);
3+i → 3-i and 8-2i → 8+2i |
invz(z) , inverse f(z) = z-1 | invz:{(x*1 -1)%\:sum x*x} invz(3 6;4 8) .. (0.12 0.06;-0.16 -0.08)(3+4i)-1 = 0.12-0.16i , (6+8i)-1 = 0.06-0.08i |
expz(z) ; exponencial f(z) = ez | expz:{{(exp@*x)*/:cis last x}} expz(0.5 3;0.5 4) .. (1.446889 -13.12878;0.7904391 -15.20078)e0.5+0.5i=1.446889+0.7904391i , e3+4i=-13.12878-15.20078i |
sqrtz(z) , square root f(z)= z1/2 | sqrtz:{(-c),'c:aroot(x;2)} sqrtz(54 -520 60;-30 -138 32) .. (-7.608343 -3 -8 7.608343 3 8;1.97152 23 -2 -1.97152 -23 2)(54-30i)0.5 = ±(-7.608343+1.97152i) , (60+32i)0.5 = ±(-8+2i) , (-520-138i)0.5 = ±(-3+23i) |
curtz(z) , cubic root f(z)= z1/3 | curtz:{(c,'dymz2(ep1;c)),'dymz2(ep2;c:aroot(x;3))} curtz (-72 -10;368 198) .. (6 5 -6.464102 -5.098076 0.4641016 0.09807621;4 3 3.196152 2.830127 -7.196152 -5.830127) (-72+368i)1/3 = [6+4i , -6.464102+3.196152i , 0.4641016+(-7.196152)i] (-10+198i)1/3 = [5+3i , -5.098076+2.830127i , 0.09807621-5.830127i] |
prdz(z) ,product f(z) = Π(z) | prdz:{(*/absz . x)*cis@ +/arg . x} prdz(1 2 4 0.1;3 -5 -3 0.5) .. 30.6 30.8; (1+3i)(2-5i)(4-3i)(0.1+0.5i) = 30.6+30.8i prdz 5#'(4;7) .. 17684 -29113f ,
(4+7i)5 = 17684-29113i (but using "pownz" below is the better deal in this case) |
prdz2(z) ,pairwise product f(z) = (z0,z1, ... ,zn) ⊗ (w0,w1, ... ,wn) = (z0w0,z1w1, ..., znwn) | prdz2:{((x[0]*y[0])-x[1]*y[1];(x[0]*y[1])+x[1]*y[0])} prdz2 . ((3 2 6;-2 -1 5);(9 -7 -11;6 5 11)) ... (39 -9 -121;0 17 11);(3-2i,2-i,6+5i) x (9+6i,-7+5i,-11+11i) = (39,-9+17i,-121+11i) |
firstpown(z) ,the first n powers of z:(1,z,z2,...,zn) | firstpow:{c:til 1+last x;u:cis@c*arg . a:first x;u*\:v:(absz . a) xexp c} we are looking for the first 7 exponentials of 0.4+0.7i; -> b:firstpow(0.4 0.7;6)
1 , 0.4 + 0.7i , -0.33 + 0.56i , ... ,0.274527 + 0.007336i (= (0.4+0.7i)6)
|
pownz(z;n) power, n ≥ 0 and integer, n vector or scalar f(z) = zn | pownz:{((absz c) xexp e)*/:cis (e:last x)*arg c:*x} pownz ((4 3 0.5 7 0;7 9 1.5 2 1);1 2 3 4 5) .. (4 -72 -3.25 1241 3.061617e-016;7 54 -2.25 2520 1)
(4+7i)1 = 4+7i,(3+9i)2 = -72+54i,(0.5+1.5i)3 = -3.25-2.25i, (7+2i)4 = 1241+2520i, i5=i
pownz((1 -3 -1;1 0 2);4) .. (-4 81 -7f;4.898587e-016 -3.967856e-014 24)(1+i)4 = -4 , (-3)4 = 81 , (-1+2i)4 = -7+24i |
rootn(z;n) , n positive scalar integer f(z)=z1/n | rootn:{,/'((absz c) xexp 1%e)*/:/:cis ((arg c:*x)+/:pi2*!e)%e:last x} rootn((-72 -10;368 198);3) .. (6 5 -6.464102 -5.098076 0.4641016 0.09807621;4 3 3.196152 2.830127 -7.196152 -5.830127) .. so: (-72+368i)1/3 = [6+4i , -6.464102+3.196152i , 0.4641016+(-7.196152)i] (-10+198i)1/3 = [5+3i , -5.098076+2.830127i , 0.09807621-5.830127i] |
hornz(coeff); horner schema complex polynomial evaluation | hornz:{y+(-/c*x;+/c*|x)} c:3 -4;p:+(6 9 1 0;1 -2 0 -11);last hornz\[*p;1_p] .. -766 -598f; so:p(z)=(6+i)z3+(9-2i)z2+z-11i, then p(3-4i) = -766-598i |
fs1(z) .. special functions f(z)=(1+z2)1/2 | fs1:{sqrtz cp1 + sqrz x}
fs1 (3 4;-1 -9) .. (-3.147749 -4.020744 3.147749 4.020744;0.9530619 8.953568 -0.9530619 -8.953568)
f(3-i)=[-3.147749+0.9530619i,3.147749-0.9530619i];f(4-9i)=[-4.020744+8.953568i,4.020744-8.953568i]
|
fs2(z) f(z)=(1-z2)1/2 | fs2:{sqrtz cp1 - sqrz x} |
fs3(z) f(z)=(z2-1)1/2 | fs3:{sqrtz cpn1 + sqrz x} |
fs4(z) f(z)=iz | fs4:{cp3*|x} |
fs5(z) f(z)=-iz | fs5:{cp2*|x} |
fs6(z) f(z)=(i+z)/(i-z) | fs6:{c:dymz(b+x;invz (b:cpi)-x:ap x);c[;&|/|/(0w,-0w)=\:x]:cpn1;if[1=#*c:-1_'c;c:*:'c];:c} fs6 (2 0 0;1 1 0w) .. (-1 0n -1;-1 0n 0)f(2+i)=-1-i , f(i) is undefined(singularity) , f(INF) = -1
fs6(-1 -6) .. -0.72 0.04, so
f(-1-6i)=-0.72+0.04i |
fs7(z) f(z)=(1+z)/(1-z) | fs7:{c:dymz(b+x;invz (b:cp1)-x:ap x);c[;&|/|/(0w,-0w)=\:x]:cpn1;if[1=#*c:-1_'c;c:*:'c];:c} fs7(0 1 4f;1 1 -5f) .. (0 -1 -1.176471;1 2 -0.2941176)f(i)=i , f(1+i)=-1+2i , f(4-5i)=-1.176471-0.2941176i |
sinz z f(z) = sin z | sinz:{((sin a)*cosh b;(cos a:x@0)*sinh b:x@1)} sinz (1 0 0.8660254;-2 -1 0.5) .. (3.165779 0 0.8589803;-1.959601 -1.175201 0.3375965)sin(1-2i)=3.165779-1.959601i , sin(-i)=-1.175201i , sin((0.5*31/2)+0.5i)=0.8589803+0.3375965i |
cosz z f(z) = cos z | cosz:{((cos a)*cosh b;-(sin a:x@0)*sinh b:x@1)} cosz(2 1 3.3;1 1 -1.7) .. (-0.6421481 0.83373 -2.792904;-1.068607 -0.9888977 -0.417337)cos(2+i)=-0.6421481-1.068607i , cos(1+i)=0.83373-0.9888977i , cos(3.3-1.7i)=-2.792904-0.417337i |
tanz z f(z) = tan z | tanz:{dymz (sinz x;invz cosz x)} tanz ((17*pi%8),1,4,(sqrt 3);0 16 0.5 1) .. (0.4142136 2.292611e-014 0.7079078 -0.1126422;0 1 0.8408826 1.288976) tan(17π/8)=-1+21/2;tan(1+16i)~i;tan(4-0.25i)=0.7079078+0.8408826i;tan(31/2+i) = -0.1126422+1.288976i
|
cotanz z f(z) = cotg z | cotanz:{dymz (cosz x;invz sinz x)} cotanz (4 2 0 1;0 1 1 -4) .. (0.8636912 -0.1713836 0 0.0006099003;-0 -0.8213298 -1.313035 0.9997206) cotg(4)=0.8636912;cotg(2+i)=-0.1713836-0.8213298i;cotg(i)=-1.313035i;cotg(1-4i) = 0.0006099003+0.9997206i
|
sinhz z f(z)=sinh z | sinhz:{0f^fs5 sinz fs4 x} sinhz (0 0 0 2 ;6,0,(pih),-11) .. (0 0 0 0.01605139;-0.2794155 0 1 3.762159)sinh(6i)=-0.2794155i , sinh(0)=0 , sinh(iπ/2)=i , sinh(2-11i)=0.01605139+3.762159i
|
coshz z f(z)=cosh z | coshz:{0f^cosz fs4 x} coshz (0 6.2 -4 0w;(40*pi),7.3,0f,0f) .. (1 129.6126 27.30823 0w;-0 209.5251 -0 0)
cosh(40πi)=1 , cosh(6.2+7.3i)=129.6126+209.5251i , cosh(-4)=27.30823 , cosh(INF)=INF
|
tanhz z f(z)=tanh z | tanhz:{l:300f;c:fs5 tanz fs4 x:ap x;c[;&l
tanhz(-3 0 0.25 0w -0w;0 3 -7.1 0 0f ) .. (-0.9950548 0 0.4893675 1 -1;0 -0.1425465 -0.9372601 0 0)tanh(-3)=-0.9950548;tanh(3i)=-0.1425465i;tanh(0.25-7.1i)=0.4893675-0.9372601;tanh(± INF) = ± 1
|
logz z = log |z| + i arg z f(z) = log z | logz:{(0.5*log absq x;arg x)} logz (-1 -10 -1;-1,0,sqrt 3) .. (0.3465736 2.302585 0.6931472;-2.356194 3.141593 2.094395)log(-1-i) = 0.3465736-2.356194i , log(-10) = 2.302585+3.141593i , log(-1+31/2i) = 0.6931472+2.094395i
|
asinz = -i log(iz + (1 - z2)1/2) f(z) = arcsin z | asinz:{fs5 logz (fs2 x)+(2*#*x)#'fs4 x} asinz (2 1.732051 0;0 1 1f) .. (1.570796 2.153461 3.141593 1.570796 0.9881321 0;1.316958 -1.358838 -0.8813736 -1.316958 1.358838 0.8813736) arcsin(2)=1.570796 ± 1.316958i ; arcsin(31/2+i)=0.9881318+1.358838i,2.153461-1.358838i ; arcsin(i)=0.8813736i,π - 0.8813736i
|
acosz =-i log(z + i(1 - z2)1/2) f(z) = arccos z | acosz:{oo0-asinz x} acosz (3 0;4 1) .. (-0.9368125 -1.570796 0.9368125 1.570796;2.305509 0.8813736 -2.305509 -0.8813736) arccos(3+4i)=± (0.9368125-2.305509i), arccos(i)=± (1.570796-0.8813736i)
|
atanz = 0.5i log [(i + z)/(i - z)] f(z) = arctan z | atanz:{c:0.5*fs4 logz fs6 x:ap x;l:last x;c[;&(0w=s:*x)|l in 0w,-0w]:oo0;c[;&-0w=s]:oo1;c[;&(0f=s)&1f< l]*:cp3;if[1=#*c:-1_'c;c:*:'c];:c}
atanz (-5 0 -0w;8 -2 3) .. (-1.514221 -1.570796 -1.570796;0.0898435 -0.5493061 -0)
arctan(-5+8i)=-1.514221+0.0898435i, arctan(-2i)=((-π/2)-0.5493061i) , arctan((-INF)+3i) = -π/2
|
arsinhz = log (z + (z2 + 1)1/2) f(z)=arsinh z | arsinhz:{logz (fs1 x)+(2*#*x)#'x}
arsinhz (-100 0 0;5 0 100 ) .. (5.299591 0 -5.298292 -5.299591 0 5.298292;3.091637 3.141593 1.570796 0.04995591 0 1.570796) arsinh(-100+5i) = ± 5.299591+3.091637i ,arsinh(0) = 0 or πi, arsinh(100i) = ± 5.298292+πi/2
|
arcoshz = log (z + (z2 - 1)1/2) f(z)=arcosh z | arcoshz:{logz (fs3 x)+(2*#*x)#'x}
arcoshz (-100 0 0;5 0 100 ) .. (5.299541 0 -5.298342 -5.299541 0 5.298342;3.091632 -1.570796 -1.570796 -3.091632 1.570796 1.570796) arcosh(-100+5i) = ±(5.299591+3.091637i) ,arcosh(0) = 0 ± πi/2, arcosh(100i) = ±(5.298292+πi/2)
|
artanhz = 0.5 log [(1+z)/(1-z)] f(z) = artanh z | artanhz:{c:0.5*logz fs7 x:ap x;c[;&(0f<*x)&0f=last x]*:cp2;if[1=#*c:-1_'c;c:*:'c];:c} artanhz (1 0 1 2f;1 0 -3 0f) .. (0.4023595 0 0.0919312 0.5493061;1.017222 0 -1.276795 -1.570796)artanh(1+i) = 0.4023595+1.017222i , artanh(0) = 0 , artanh(1-3i) = 0.0919312-1.276795i , artanh(2) = 0.5493061-1.570796i
|
complex matrix operations a 1st word |
Let be M a complex matrix. We can represent M as Re(M) + i*Im(M) (Form 1) or in the more visible form just as M where each element of M is a pair of real numbers (r,c) (Form 2)
Form 1 to Form 2: tp12:{x,''y} Form 2 to Form 1: rm:{*:''x} (real part) and cm:{last''x} (complex part) |
k)cmult (A;B) , A,B of Form 2 complex matrix multiplication | cmult:{a:(rm x;cm x);b:(rm y;cm y);tp12[((r1 mmu r2)-c1 mmu c2);((r1:a@0) mmu c2:b@1)+(c1:a@1) mmu r2:b@0]}
example:
A:2 2#0f+(2 -1;-3 1;5 3;6 -1) .. ie A[0;0] is 2-i etc. B:2 2#0f+(3 2;9 -1;6 -3;-1 -1) A,B are Form 2 matrices. Then C:cmult[A;B] will return the 2x2 matrix 2 2#(-7 16;21 -9;42 -5;41 17) .. ie C[0;0] is -7+16i etc |
k)invc M , M of Form 2 complex matrix inversion | invc:{C:(c:#x)#!:0f+((rm x),'cm x),((-1f*cm x),'rm x);:tp12[C[;i];C[;c+i:!c]]}
example:
M:2 2#(2 1;-1 9;7 1;-5 -11) .. ie M is a 2 x 2 complex matrix with M[0;0] = 2+i Then L:invc M represents M-1 .. L is then (rounded to 4 decimals) 2 2#(0.1089 -0.0770;0.0996 -0.0078;-0.0037 -0.0780;-0.0067 0.0238) .. ie L[0;0] is 0.1089-0.077i etc |
Powerseries Σ ncnzn .. n>-1, integer z, cj complex numbers | Example 1: Approximate e0.4+0.7i by a 7-term Powerseries: sum each prdz2 . (flip (1%(*\)1,1_til 7),'0f;firstpow(0.4 0.7;6)) ... 1.140992+0.9610174i
Exact value: e0.4+0.7i = 1.14101..+0.9610599i
Example 2: |