C# 为什么三角代码是这样写的?

C# 为什么三角代码是这样写的?,c#,optimization,trigonometry,C#,Optimization,Trigonometry,我正在阅读其他人用C#编写的一些代码,我遇到了一个类似于以下的函数: public double calculate(double radianAngle) { double sine = Math.Sin(radianAngle); double cosine; if(angle > 0.0 && angle < Math.PI / 2.0) cosine = Math.Sqrt(1.0 - sine * sine);

我正在阅读其他人用C#编写的一些代码,我遇到了一个类似于以下的函数:

public double calculate(double radianAngle)
{
    double sine = Math.Sin(radianAngle);
    double cosine;
    if(angle > 0.0 && angle < Math.PI / 2.0)
        cosine = Math.Sqrt(1.0 - sine * sine);
    else
        cosine = Math.Cos(radianAngle);

    // ... unrelated code here

    return resultThatUsesSineAndCosine;
}

但是为什么需要为此添加if语句呢?如果它等于
Math.Cos(radianAngle)
,那么为什么要这么做呢?是否有更准确的原因?或者这是微观优化?或者,这段代码是用另一种语言(C++)进行微优化的,然后移植到C#,微优化完好无损?即使是微观优化,为什么它只适用于0和pi/2之间的角度?

我想说你是对的,它只是来自其他地方的微观优化。就[0..90]而言,sin和cos在相关信息上都大于0
(cos(x))^2 = 1 - (sin(x))^2