Closed baryon closed 6 years ago
Sadly, this is a duplicate of issue #99. There’s not much I can do about it without a whole new math library (see issue #111).
This can be fixed so:
extension Double {
func isDivisible(by value: Double) -> Bool {
let decimalNumberFormatter = NumberFormatter.init()
decimalNumberFormatter.numberStyle = .decimal
return decimalNumberFormatter.string(from: .init(value: self/value))?.contains(decimalNumberFormatter.decimalSeparator) == false
}
}
func sin(_ value: Double) -> Double {
return value.isDivisible(by: .pi) ? 0 : Foundation.sin(value)
}
func cos(_ value: Double) -> Double {
return (.pi/2+value).isDivisible(by: .pi) ? 0 : Foundation.cos(value)
}
func tan(_ value: Double) -> Double {
return value.isDivisible(by: .pi) ? 0 : (.pi/2+value).isDivisible(by: .pi) ? .infinity : Foundation.tan(value)
}
the result of sin(π) is not zero. sin(π()) = 1.22464679914735e-16