diff --git a/rtl/objpas/math.pp b/rtl/objpas/math.pp index ea60688f74..0cd27db489 100644 --- a/rtl/objpas/math.pp +++ b/rtl/objpas/math.pp @@ -318,9 +318,61 @@ function GradToRad(grad : float) : float;inline; function RadToGrad(rad : float) : float;inline; function DegToGrad(deg : float) : float;inline; function GradToDeg(grad : float) : float;inline; -{ one cycle are 2*Pi rad } -function CycleToRad(cycle : float) : float;inline; -function RadToCycle(rad : float) : float;inline; +{$ifdef FPC_HAS_TYPE_SINGLE} +function CycleToDeg(const Cycles: Single): Single; +{$ENDIF} +{$ifdef FPC_HAS_TYPE_DOUBLE} +function CycleToDeg(const Cycles: Double): Double; +{$ENDIF} +{$ifdef FPC_HAS_TYPE_EXTENDED} +function CycleToDeg(const Cycles: Extended): Extended; +{$ENDIF} +{$ifdef FPC_HAS_TYPE_SINGLE} +function DegToCycle(const Degrees: Single): Single; +{$ENDIF} +{$ifdef FPC_HAS_TYPE_DOUBLE} +function DegToCycle(const Degrees: Double): Double; +{$ENDIF} +{$ifdef FPC_HAS_TYPE_EXTENDED} +function DegToCycle(const Degrees: Extended): Extended; +{$ENDIF} +{$ifdef FPC_HAS_TYPE_SINGLE} +function CycleToGrad(const Cycles: Single): Single; +{$ENDIF} +{$ifdef FPC_HAS_TYPE_DOUBLE} +function CycleToGrad(const Cycles: Double): Double; +{$ENDIF} +{$ifdef FPC_HAS_TYPE_EXTENDED} +function CycleToGrad(const Cycles: Extended): Extended; +{$ENDIF} +{$ifdef FPC_HAS_TYPE_SINGLE} +function GradToCycle(const Grads: Single): Single; +{$ENDIF} +{$ifdef FPC_HAS_TYPE_DOUBLE} +function GradToCycle(const Grads: Double): Double; +{$ENDIF} +{$ifdef FPC_HAS_TYPE_EXTENDED} +function GradToCycle(const Grads: Extended): Extended; +{$ENDIF} +{$ifdef FPC_HAS_TYPE_SINGLE} +function CycleToRad(const Cycles: Single): Single; +{$ENDIF} +{$ifdef FPC_HAS_TYPE_DOUBLE} +function CycleToRad(const Cycles: Double): Double; +{$ENDIF} +{$ifdef FPC_HAS_TYPE_EXTENDED} +function CycleToRad(const Cycles: Extended): Extended; +{$ENDIF} +{$ifdef FPC_HAS_TYPE_SINGLE} +function RadToCycle(const Rads: Single): Single; +{$ENDIF} +{$ifdef FPC_HAS_TYPE_DOUBLE} +function RadToCycle(const Rads: Double): Double; +{$ENDIF} +{$ifdef FPC_HAS_TYPE_EXTENDED} +function RadToCycle(const Rads: Extended): Extended; +{$ENDIF} + {$ifdef FPC_HAS_TYPE_SINGLE} Function DegNormalize(deg : single) : single; inline; {$ENDIF} @@ -780,16 +832,119 @@ function gradtodeg(grad : float) : float;inline; gradtodeg:=grad*(180.0/200.0); end; -function cycletorad(cycle : float) : float;inline; - begin - cycletorad:=(2*pi)*cycle; - end; +{$ifdef FPC_HAS_TYPE_SINGLE} +function CycleToDeg(const Cycles: Single): Single; +begin + CycleToDeg:=Cycles*360.0; +end; +{$ENDIF} +{$ifdef FPC_HAS_TYPE_DOUBLE} +function CycleToDeg(const Cycles: Double): Double; +begin + CycleToDeg:=Cycles*360.0; +end; +{$ENDIF} +{$ifdef FPC_HAS_TYPE_EXTENDED} +function CycleToDeg(const Cycles: Extended): Extended; +begin + CycleToDeg:=Cycles*360.0; +end; +{$ENDIF} -function radtocycle(rad : float) : float;inline; - begin - { avoid division } - radtocycle:=rad*(1/(2*pi)); - end; +{$ifdef FPC_HAS_TYPE_SINGLE} +function DegToCycle(const Degrees: Single): Single; +begin + DegToCycle:=Degrees*(1/360.0); +end; +{$ENDIF} +{$ifdef FPC_HAS_TYPE_DOUBLE} +function DegToCycle(const Degrees: Double): Double; +begin + DegToCycle:=Degrees*(1/360.0); +end; +{$ENDIF} +{$ifdef FPC_HAS_TYPE_EXTENDED} +function DegToCycle(const Degrees: Extended): Extended; +begin + DegToCycle:=Degrees*(1/360.0); +end; +{$ENDIF} + +{$ifdef FPC_HAS_TYPE_SINGLE} +function CycleToGrad(const Cycles: Single): Single; +begin + CycleToGrad:=Cycles*400.0; +end; +{$ENDIF} +{$ifdef FPC_HAS_TYPE_DOUBLE} +function CycleToGrad(const Cycles: Double): Double; +begin + CycleToGrad:=Cycles*400.0; +end; +{$ENDIF} +{$ifdef FPC_HAS_TYPE_EXTENDED} +function CycleToGrad(const Cycles: Extended): Extended; +begin + CycleToGrad:=Cycles*400.0; +end; +{$ENDIF} + +{$ifdef FPC_HAS_TYPE_SINGLE} +function GradToCycle(const Grads: Single): Single; +begin + GradToCycle:=Grads*(1/400.0); +end; +{$ENDIF} +{$ifdef FPC_HAS_TYPE_DOUBLE} +function GradToCycle(const Grads: Double): Double; +begin + GradToCycle:=Grads*(1/400.0); +end; +{$ENDIF} +{$ifdef FPC_HAS_TYPE_EXTENDED} +function GradToCycle(const Grads: Extended): Extended; +begin + GradToCycle:=Grads*(1/400.0); +end; +{$ENDIF} + +{$ifdef FPC_HAS_TYPE_SINGLE} +function CycleToRad(const Cycles: Single): Single; +begin + CycleToRad:=Cycles*2*pi; +end; +{$ENDIF} +{$ifdef FPC_HAS_TYPE_DOUBLE} +function CycleToRad(const Cycles: Double): Double; +begin + CycleToRad:=Cycles*2*pi; +end; +{$ENDIF} +{$ifdef FPC_HAS_TYPE_EXTENDED} +function CycleToRad(const Cycles: Extended): Extended; +begin + CycleToRad:=Cycles*2*pi; +end; +{$ENDIF} + +{$ifdef FPC_HAS_TYPE_SINGLE} +function RadToCycle(const Rads: Single): Single; +begin + RadToCycle:=Rads*(1/(2*pi)); +end; +{$ENDIF} +{$ifdef FPC_HAS_TYPE_DOUBLE} +function RadToCycle(const Rads: Double): Double; +begin + RadToCycle:=Rads*(1/(2*pi)); +end; +{$ENDIF} +{$ifdef FPC_HAS_TYPE_EXTENDED} +function RadToCycle(const Rads: Extended): Extended; +begin + RadToCycle:=Rads*(1/(2*pi)); +end; +{$ENDIF} {$ifdef FPC_HAS_TYPE_SINGLE} Function DegNormalize(deg : single) : single;