forked from Mirror/Ryujinx
1825bd87b4
This is the first commit of a series of reformat around the codebase as discussed internally some weeks ago. This project being one that isn't touched that much, it shouldn't cause conflict with any opened PRs.
67 lines
No EOL
1.8 KiB
C#
67 lines
No EOL
1.8 KiB
C#
using System;
|
|
using System.Runtime.CompilerServices;
|
|
|
|
namespace Ryujinx.Audio.Renderer.Dsp
|
|
{
|
|
public static class FloatingPointHelper
|
|
{
|
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
public static float MultiplyRoundDown(float a, float b)
|
|
{
|
|
return RoundDown(a * b);
|
|
}
|
|
|
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
public static float RoundDown(float a)
|
|
{
|
|
return MathF.Round(a, 0);
|
|
}
|
|
|
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
public static float RoundUp(float a)
|
|
{
|
|
return MathF.Round(a);
|
|
}
|
|
|
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
public static float MultiplyRoundUp(float a, float b)
|
|
{
|
|
return RoundUp(a * b);
|
|
}
|
|
|
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
public static float Pow10(float x)
|
|
{
|
|
// NOTE: Nintendo implementation uses Q15 and a LUT for this, we don't.
|
|
// As such, we support the same ranges as Nintendo to avoid unexpected behaviours.
|
|
if (x >= 0.0f)
|
|
{
|
|
return 1.0f;
|
|
}
|
|
else if (x <= -5.3f)
|
|
{
|
|
return 0.0f;
|
|
}
|
|
|
|
return MathF.Pow(10, x);
|
|
}
|
|
|
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
public static float DegreesToRadians(float degrees)
|
|
{
|
|
return degrees * MathF.PI / 180.0f;
|
|
}
|
|
|
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
public static float Cos(float value)
|
|
{
|
|
return MathF.Cos(DegreesToRadians(value));
|
|
}
|
|
|
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
public static float Sin(float value)
|
|
{
|
|
return MathF.Sin(DegreesToRadians(value));
|
|
}
|
|
}
|
|
} |