13,861,257 members

#### Stats

83.8K views
92 bookmarked
Posted 19 Sep 2012
Licenced CPOL

# Yet Another Math Parser (YAMP)

, 30 Sep 2012
Constructing a fast math parser using Reflection to do numerics like Matlab.
 ```using System; namespace YAMP { abstract class LogicOperator : BinaryOperator { public LogicOperator (string op) : base(op, 3) { } public abstract ScalarValue Compare(ScalarValue left, ScalarValue right); public override Value Perform (Value left, Value right) { if(!(left is ScalarValue || left is MatrixValue)) throw new OperationNotSupportedException(Op, left); if(!(right is ScalarValue || right is MatrixValue)) throw new OperationNotSupportedException(Op, right); if(left is ScalarValue && right is ScalarValue) { return Compare (left as ScalarValue, right as ScalarValue); } else if(left is MatrixValue && right is ScalarValue) { var l = left as MatrixValue; var r = right as ScalarValue; var m = new MatrixValue(l.DimensionY, l.DimensionX); for(var i = 1; i <= m.DimensionX; i++) for(var j = 1; j <= m.DimensionY; j++) m[j, i] = Compare(l[j, i], r); return m; } else if(left is ScalarValue && right is MatrixValue) { var l = left as ScalarValue; var r = right as MatrixValue; var m = new MatrixValue(r.DimensionY, r.DimensionX); for(var i = 1; i <= m.DimensionX; i++) for(var j = 1; j <= m.DimensionY; j++) m[j, i] = Compare(l, r[j, i]); return m; } else { var l = left as MatrixValue; var r = right as MatrixValue; if(l.DimensionX != r.DimensionX) throw new DimensionException(l.DimensionX, r.DimensionX); if(l.DimensionY != r.DimensionY) throw new DimensionException(l.DimensionY, r.DimensionY); var m = new MatrixValue(l.DimensionY, l.DimensionX); for(var i = 1; i <= m.DimensionX; i++) for(var j = 1; j <= m.DimensionY; j++) m[j, i] = Compare(l[j, i], r[j, i]); return m; } } } } ```

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.

## Share

 Architect Germany
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.