|
using System;
using System.Collections.Generic;
namespace YAMP
{
class MinFunction : StandardFunction
{
public override Value Perform(Value argument)
{
if (argument is ScalarValue)
return argument;
else if (argument is MatrixValue)
{
var m = argument as MatrixValue;
if(m.DimensionX == 1)
return GetVectorMin(m.GetColumnVector(1));
else if(m.DimensionY == 1)
return GetVectorMin(m.GetRowVector(1));
else
{
var M = new MatrixValue(1, m.DimensionX);
for(var i = 1; i <= m.DimensionX; i++)
M[1, i] = GetVectorMin(m.GetColumnVector(i));
return M;
}
}
throw new OperationNotSupportedException("min", argument);
}
ScalarValue GetVectorMin(MatrixValue vec)
{
var buf = new ScalarValue();
var min = double.PositiveInfinity;
var temp = 0.0;
for(var i = 1; i <= vec.Length; i++)
{
temp = vec[i].Abs().Value;
if (temp < min)
{
buf = vec[i];
min = temp;
}
}
return buf;
}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
Florian lives in Munich, Germany. He started his programming career with Perl. After programming C/C++ for some years he discovered his favorite programming language C#. He did work at Siemens as a programmer until he decided to study Physics.
During his studies he worked as an IT consultant for various companies. After graduating with a PhD in theoretical particle Physics he is working as a senior technical consultant in the field of home automation and IoT.
Florian has been giving lectures in C#, HTML5 with CSS3 and JavaScript, software design, and other topics. He is regularly giving talks at user groups, conferences, and companies. He is actively contributing to open-source projects. Florian is the maintainer of AngleSharp, a completely managed browser engine.