ICalc.cs 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. namespace FxpConvert.Common
  5. {
  6. public interface ICalc
  7. {
  8. /// <summary>
  9. /// 加法
  10. /// </summary>
  11. public IAdd Add { get; }
  12. /// <summary>
  13. /// 减法
  14. /// </summary>
  15. public ISubtract Subtract { get; }
  16. /// <summary>
  17. /// 乘法
  18. /// </summary>
  19. public IMultiply Multiply { get; }
  20. /// <summary>
  21. /// 除法
  22. /// </summary>
  23. public IDivision Division { get; }
  24. /// <summary>
  25. /// FFT
  26. /// </summary>
  27. public IFFT FFT { get; }
  28. /// <summary>
  29. /// 数组求和
  30. /// </summary>
  31. public IArraySum Sum { get; }
  32. public void Fill(ref float result, float value, uint count);
  33. public void Fill(ref double result, double value, uint count);
  34. }
  35. public interface IArraySum
  36. {
  37. public float Sum(ref float value,uint count);
  38. public double Sum(ref double value,uint count);
  39. public float Rms(ref float value, uint count);
  40. public double Rms(ref double value,uint count);
  41. }
  42. public interface IFFT
  43. {
  44. public void FFT(double[] real, double[] imaginary);
  45. public void FFT(float[] real, float[] imaginary);
  46. public void IFFT(double[] real, double[] imaginary);
  47. public void IFFT(float[] real, float[] imaginary);
  48. }
  49. public interface IAdd
  50. {
  51. public void Add(ref float left, float right, uint count, ref float result);
  52. public void Add(ref float left, ref float right, uint count, ref float result);
  53. public void Add(ref float left, float right, uint count);
  54. public void Add(ref float left, ref float right, uint count);
  55. public void Add(ref double left, double right, uint count, ref double result);
  56. public void Add(ref double left, ref double right, uint count, ref double result);
  57. public void Add(ref double left, double right, uint count);
  58. public void Add(ref double left, ref double right, uint count);
  59. }
  60. public interface ISubtract
  61. {
  62. public void Subtract(ref float left, float right, uint count, ref float result);
  63. public void Subtract(ref float left, ref float right, uint count, ref float result);
  64. public void Subtract(ref float left, float right, uint count);
  65. public void Subtract(ref float left, ref float right, uint count);
  66. public void Subtract(ref double left, double right, uint count, ref double result);
  67. public void Subtract(ref double left, ref double right, uint count, ref double result);
  68. public void Subtract(ref double left, double right, uint count);
  69. public void Subtract(ref double left, ref double right, uint count);
  70. }
  71. public interface IMultiply
  72. {
  73. public void Multiply(ref float left, float right, uint count, ref float result);
  74. public void Multiply(ref float left, ref float right, uint count, ref float result);
  75. public void Multiply(ref float left, float right, uint count);
  76. public void Multiply(ref float left, ref float right, uint count);
  77. public void Multiply(ref double left, double right, uint count, ref double result);
  78. public void Multiply(ref double left, ref double right, uint count, ref double result);
  79. public void Multiply(ref double left, double right, uint count);
  80. public void Multiply(ref double left, ref double right, uint count);
  81. }
  82. public interface IDivision
  83. {
  84. public void Division(ref float left, float right, uint count, ref float result);
  85. public void Division(ref float left, ref float right, uint count, ref float result);
  86. public void Division(ref float left, float right, uint count);
  87. public void Division(ref float left, ref float right, uint count);
  88. public void Division(ref double left, double right, uint count, ref double result);
  89. public void Division(ref double left, ref double right, uint count, ref double result);
  90. public void Division(ref double left, double right, uint count);
  91. public void Division(ref double left, ref double right, uint count);
  92. }
  93. }