# complex numbers

scope
t := time();
for x from -1 to 1 by 0.0000001 do
   a := arcsin(x!(x-1))
od;
print('arcsin;' & time()-t);

t := time();
for x from -1 to 1 by 0.0000001 do
   a := arccos(x!(x-1))
od;
print('arccos;' & time()-t);

t := time();
for x from -100k to 100k by 0.01 do
   a := arcsec(x!(x-1))
od;
print('arcsec;' & time()-t);

t := time();
for x from -100k to 100k by 0.01 do
   a := arctan(x!(x-1))
od;
print('arctan;' & time()-t);

if unassigned cosc then cosc := << x -> cos(x)/x >> fi;
t := time();
for x from -100k to 100k by 0.01 do
   a := cosc(x)
od;
print('cosc;' & time()-t);

t := time();
for x from -100k to 100k by 0.01 do
   a := csc(x!(x-1))
od;
print('csc;' & time()-t);

t := time();
for x from -100k to 100k by 0.01 do
   a := csch(x!(x-1))
od;
print('csch;' & time()-t);

t := time();
for x from -100k to 100k by 0.01 do
   a := sec(x!(x-1))
od;
print('sec;' & time()-t);

t := time();
for x from -100k to 100k by 0.01 do
   a := sech(x!(x-1))
od;
print('sech;' & time()-t);

t := time();
for x from -100k to 100k by 0.01 do
   a := sinc(x!(x-1))
od;
print('sinc;' & time()-t);

t := time();
for x from -100k to 100k by 0.01 do
   a := tanh(x!(x-1))
od;
print('tanh;' & time()-t);

t := time();
for x from -100k to 100k by 0.01 do
   a := cbrt(x!(x-1))
od;
print('cbrt;' & time()-t);

t := time();
for x from -100k to 100k by 0.01 do
#   a := ceil(x)
od;
print('ceil;' & time()-t);

t := time();
for x from -100k to 100k by 0.01 do
   a := cosh(x!(x-1))
od;
print('cosh;' & time()-t);

t := time();
for x from -100k to 100k by 0.01 do
   a := log(x!(x-1), 3)
od;
print('log;' & time()-t);

t := time();
for x from -100k to 100k by 0.01 do
   a := log10(x!(x-1))
od;
print('log10;' & time()-t);

t := time();
for x from -100k to 100k by 0.01 do
   a := sinh(x!(x-1))
od;
print('sinh;' & time()-t);

t := time();
for x from -100k to 100k by 0.01 do
   a := tanh(x!(x-1))
od;
print('tanh;' & time()-t);

t := time();
for x from -100k to 100k by 0.01 do
   a := x!(x-1)^4
od;
print('x^4;' & time()-t);

t := time();
for x from -100k to 100k by 0.01 do
   a := x!(x-1)**4
od;
print('x**4;' & time()-t);

t := time();
for x from -100k to 100k by 0.01 do
   a := (x!(x-1))/(4!x)
od;
print('x../4..;' & time()-t);

t := time();
for x from -100k to 100k by 0.01 do
   a := recip(x!(x-1))
od;
print('recip;' & time()-t);

t := time();
for x from -100k to 100k by 0.01 do
   a, b := arctan2(x!(x-1), 2)
od;
print('arctan2;' & time()-t);

t := time();
for x from -100k to 100k by 0.01 do
   a := sin(x!(x-1))
od;
print('sin;' & time()-t);

t := time();
for x from -100k to 100k by 0.01 do
   a := cos(x!(x-1))
od;
print('cos;' & time()-t);

t := time();
for x from -100k to 100k by 0.01 do
   a := ln(x!(x-1))
od;
print('ln;' & time()-t);

t := time();
for x from -100k to 100k by 0.01 do
   a := exp(x!(x-1))
od;
print('exp;' & time()-t);

t := time();
for x from -100k to 100k by 0.01 do
   a := tan(x!(x-1))
od;
print('tan;' & time()-t);

t := time();
for x from -100k to 100k by 0.01 do
   a := sqrt(x!(x-1))
od;
print('sqrt;' & time()-t);

t := time();
for x from -100k to 100k by 0.01 do
   a := abs(x!(x-1))
od;
print('abs;' & time()-t);

t := time();
for x from -100k to 100k by 0.01 do
   a := (x!(x-1)) |- ((x+1)!(x-0.5))
od;
print('|-;' & time()-t);

t := time();
for x from -100k to 100k by 0.01 do
   a := antilog2(x!(x-1))
od;
print('antilog2;' & time()-t);

t := time();
for x from -100k to 100k by 0.01 do
   a := antilog10(x!(x-1))
od;
print('antilog10;' & time()-t);

t := time();
for x from -100k to 100k by 0.01 do
   a := rot(x!(x-1), Pi/4)
od;
print('rot;' & time()-t);

t := time();
for x from -100k to 100k by 0.01 do
   a := arccoth(x!(x-1))
od;
print('arccoth;' & time()-t);

t := time();
for x from -100k to 100k by 0.01 do
   a := argument(x!(x-1))
od;
print('argument;' & time()-t);

t := time();
for x from -100k to 100k by 0.01 do
   a, b := polar(x!(x-1))
od;
print('polar;' & time()-t);

t := time();
for x from -100k to 100k by 0.01 do
   a, b := cas(x!(x-1))
od;
print('cas;' & time()-t);

epocs;
