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); }
คำอธิบาย: ตัดสินใจที่จะไม่ใช้ไลบรารีที่ซับซ้อน
ZZฉัน- Z= x + i y= rอีฉันที= ( rอีฉันที)( - x + i ( 1 - y) )=R- xRฉัน( 1 - y)อี- x i tอีt ( y- 1 )=R- xอีt ( y- 1 )อีฉัน( ( 1 - y) ln( r ) - x t ) (เช่น Rผม=อีผม ln( r ))
ให้นี่เท่ากับ ม.อีฉัน ที่ไหน
m =R- xอีt ( y- 1 )
a = ( 1 - y) ln( r ) - x t
แล้วก็ R (Zฉัน- Z) = m cosa และ ฉัน(Zฉัน- Z) = m บาปa
ค่าสัมบูรณ์สูงสุดสามารถกำหนดได้โดย cosa และ บาปaคำศัพท์เหล่านี้มีค่าเท่ากัน12√ (ดังนั้นการทดสอบ 2ค2< 1)
ดังที่กล่าวไว้การเพิ่มไปยังเลขชี้กำลังที่ซับซ้อนนั้นขึ้นอยู่กับการเลือกการตัดสาขาเฉพาะ (เช่น Z= 1 อาจจะเป็น อีฉันπ หรือ อี3 ฉันπ - เลี้ยงสิ่งนี้ให้ ผมให้ส่วนที่แท้จริงของอี- π หรือ อี- 3 π ตามลำดับ) อย่างไรก็ตามฉันเพิ่งใช้การประชุมของ t ∈ [ 0 , 2 π) as per the question.