Swift 中的 Arcus 余切实现

Arcus Cotangent implementation in Swift

如何在swift中实现arcus cotangent (arccot)? 需要导入哪个库,我正在使用 Darwin,但在尝试调用时看不到它?

<math.h> 中的所有数学函数都可以在 Swift 中使用,如果您

import Darwin

(导入 Foundation 或 UIKit 时会自动导入)。

现在反余切函数不在其中,但您可以使用以下关系从 atan() 轻松计算它(参见示例 Inverse trigonometric functions):

arccot(x) = arctan(1/x)        (for x > 0)
arccot(x) = π + arctan(1/x)    (for x < 0)

arccot(x) = π/2 - atan(x)

前两个公式在数值上更适合 large (绝对)值 的 x,最后一个更适合 small 值, 所以您可以将 acot() 函数定义为

func acot(x : Double) -> Double {
    if x > 1.0 {
        return atan(1.0/x)
    } else if x < -1.0 {
        return M_PI + atan(1.0/x)
    } else {
        return M_PI_2 - atan(x)
    }
}

对于 Swift 3M_PI 替换为 Double.pi

在Swift 4 (iOS 11, Xcode 9)

放置import UIKit后,可以这样写:

let fi = atan(y/x)

其中 x 和 y 类型为 CGFloat(在我的例子中)。

或者您可以根据需要使用其他人:

let abc = acos(y)

数学函数适用于参数类型:Double、Float、CGFloat 等