Add tasks for all the new languages
This commit is contained in:
parent
9dc3c2bb62
commit
bba7bfd280
13208 changed files with 134745 additions and 0 deletions
59
Task/Arithmetic-Complex/Phix/arithmetic-complex.phix
Normal file
59
Task/Arithmetic-Complex/Phix/arithmetic-complex.phix
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
constant REAL = 1,
|
||||
IMAG = 2
|
||||
|
||||
type complex(sequence s)
|
||||
return length(s)=2 and atom(s[REAL]) and atom(s[IMAG])
|
||||
end type
|
||||
|
||||
function add(complex a, complex b)
|
||||
return sq_add(a,b)
|
||||
end function
|
||||
|
||||
function mult(complex a, complex b)
|
||||
return {a[REAL] * b[REAL] - a[IMAG] * b[IMAG],
|
||||
a[REAL] * b[IMAG] + a[IMAG] * b[REAL]}
|
||||
end function
|
||||
|
||||
function inv(complex a)
|
||||
atom denom
|
||||
denom = a[REAL] * a[REAL] + a[IMAG] * a[IMAG]
|
||||
return {a[REAL] / denom, -a[IMAG] / denom}
|
||||
end function
|
||||
|
||||
function neg(complex a)
|
||||
return sq_uminus(a)
|
||||
end function
|
||||
|
||||
function scomplex(complex a)
|
||||
sequence s = ""
|
||||
atom ar, ai
|
||||
{ar, ai} = a
|
||||
if ar!=0 then
|
||||
s = sprintf("%g",ar)
|
||||
end if
|
||||
|
||||
if ai!=0 then
|
||||
if ai=1 then
|
||||
s &= "+i"
|
||||
elsif ai=-1 then
|
||||
s &= "-i"
|
||||
else
|
||||
s &= sprintf("%+gi",ai)
|
||||
end if
|
||||
end if
|
||||
|
||||
if length(s)=0 then
|
||||
return "0"
|
||||
end if
|
||||
return s
|
||||
end function
|
||||
|
||||
complex a, b
|
||||
a = { 1.0, 1.0 }
|
||||
b = { 3.14159, 1.2 }
|
||||
printf(1,"a = %s\n",{scomplex(a)})
|
||||
printf(1,"b = %s\n",{scomplex(b)})
|
||||
printf(1,"a+b = %s\n",{scomplex(add(a,b))})
|
||||
printf(1,"a*b = %s\n",{scomplex(mult(a,b))})
|
||||
printf(1,"1/a = %s\n",{scomplex(inv(a))})
|
||||
printf(1,"-a = %s\n",{scomplex(neg(a))})
|
||||
Loading…
Add table
Add a link
Reference in a new issue