private void HorizontalAdd() { float[] a = new[] { 1f, 0f, 1f, 2f, 100f, 0.1f, 1234f, 678.234f, 10f, 1f, 0f, 1f, 2f, 100f, 0.1f, 1234f, 678.234f, }; const float r = 4042.668f; Assert.That(NumericsHelpers.HorizontalAdd(a), Is.Approximately(r)); }
public float GetHeatCapacity(GasMixture mixture) { Span <float> tmp = stackalloc float[mixture.Moles.Length]; NumericsHelpers.Multiply(mixture.Moles, GasSpecificHeats, tmp); return(MathF.Max(NumericsHelpers.HorizontalAdd(tmp), Atmospherics.MinimumHeatCapacity)); }
private float GetHeatCapacityCalculation(float[] moles, bool immutable) { // Little hack to make space gas mixtures have heat capacity, therefore allowing them to cool down rooms. if (immutable && MathHelper.CloseTo(NumericsHelpers.HorizontalAdd(moles), 0f)) { return(Atmospherics.SpaceHeatCapacity); } Span <float> tmp = stackalloc float[moles.Length]; NumericsHelpers.Multiply(moles, GasSpecificHeats, tmp); return(MathF.Max(NumericsHelpers.HorizontalAdd(tmp), Atmospherics.MinimumHeatCapacity)); }