00001 using System; 00002 using System.Collections.Generic; 00003 using System.Linq; 00004 using System.Text; 00005 00006 namespace GEP.Core.Float.Functions 00007 { 00012 [Serializable] 00013 public class SquashedMultipleAddition : Symbol 00014 { 00018 protected static string NAME = "Squashed Multiple +"; 00022 protected Symbol _squashFunction; 00026 protected float[] _parameters = new float[1]; 00027 00028 public SquashedMultipleAddition(int n_Parameters, Symbol squashFunction) 00029 : base(n_Parameters, NAME) 00030 { 00031 _squashFunction = squashFunction; 00032 } 00033 00034 public override float Value(float[] parameters, int startIndex) 00035 { 00036 float result = 0; 00037 int loopBound = startIndex + _n_Parameters; 00038 for (; startIndex < loopBound; startIndex++) 00039 { 00040 result += parameters[startIndex]; 00041 } 00042 parameters[0] = result; 00043 return _squashFunction.Value(parameters, 0); 00044 } 00045 00050 public SquashedMultipleAddition(SquashedMultipleAddition symbol) 00051 : base(symbol) 00052 { 00053 _squashFunction = symbol._squashFunction; 00054 } 00055 00056 public override GEP.Core.Common.Symbol Clone() 00057 { 00058 return new SquashedMultipleAddition(this); 00059 } 00060 } 00061 }