C#-189字节
double f(double x, double y){double r,t,m,c;r=Math.Sqrt(x*x+y*y);t=Math.Atan2(y,x);m=Math.Pow(r,-x)*Math.Exp(y*t-t);c=Math.Cos((1-y)*Math.Log(r)-t*x);return m*(2*c*c<1?Math.Sqrt(1-c*c):c);}
可读性:
double f(double x, double y){
double r, t, m, c;
r = Math.Sqrt(x * x + y * y);
t = Math.Atan2(y, x);
m = Math.Pow(r, -x) * Math.Exp(y * t - t);
c = Math.Cos((1 - y) * Math.Log(r) - t * x);
return m * (2 * c * c < 1 ? Math.Sqrt(1 - c * c) : c); }
说明:决定不使用任何复杂库。
žž我- ž= X + 我ÿ= rË我Ť= (rË我Ť)(- X + 我(1 - y))=[R− x[R我(1 - y)Ë- X 我牛逼Ët ( ÿ− 1 )=[R− xËt ( ÿ− 1 )Ë我((1 − y) ln(r )− x t ) (如 [R一世=Ë我LN(r ))
让它等于 米Ë我一个 哪里
m =[R− xË吨( ÿ− 1 )
a = (1 − y) ln(r )− x t
然后 R (ž我- ž)= 米cos一个 和 我(ž我- ž)= m 罪一个
最大绝对值可以由 cos一个 和 罪一个 项,这些在 1个2√ (因此测试 2C2< 1)。
如前所述,提高到复杂的指数取决于选择特定的分支切割(例如 ž= 1 可能 Ë我π 要么 Ë3 我π -提出来 一世 给出了 Ë- π 要么 Ë- 3 π 分别),但是,我只是使用了约定 吨∈ [ 0 ,2 π) 根据问题。