12,701,828 members (35,371 online)

62.6K views
89 bookmarked
Posted

# Yet Another Math Parser (YAMP)

, 30 Sep 2012 CPOL
Constructing a fast math parser using Reflection to do numerics like Matlab.
 ```﻿using System; using System.Collections.Generic; namespace YAMP { class MaxFunction : 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 GetVectorMax(m.GetColumnVector(1)); else if(m.DimensionY == 1) return GetVectorMax(m.GetRowVector(1)); else { var M = new MatrixValue(1, m.DimensionX); for(var i = 1; i <= m.DimensionX; i++) M[1, i] = GetVectorMax(m.GetColumnVector(i)); return M; } } throw new OperationNotSupportedException("max", argument); } ScalarValue GetVectorMax(MatrixValue vec) { var buf = new ScalarValue(); var max = double.NegativeInfinity; var temp = 0.0; for(var i = 1; i <= vec.Length; i++) { temp = vec[i].Abs().Value; if (temp > max) { buf = vec[i]; max = temp; } } return buf; } } } ```

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.