FunctionRegistry and ConstantRegistry ignore JaceOptions.CaseSensitive, which has performance implications as there are lots of unnecessary calls to ToLowerFast().
public CalculationEngine(JaceOptions options)
{
this.executionFormulaCache = new MemoryCache<string, Func<IDictionary<string, double>, double>>(options.CacheMaximumSize, options.CacheReductionSize);
this.FunctionRegistry = new FunctionRegistry(false);
this.ConstantRegistry = new ConstantRegistry(false);
this.cultureInfo = options.CultureInfo;
this.cacheEnabled = options.CacheEnabled;
this.optimizerEnabled = options.OptimizerEnabled;
this.caseSensitive = options.CaseSensitive;
Even after disabling case sensitivity, it gets checked by both ConstantRegistry.IsConstantName() and FunctionRegistryIsFunctionName().

This does not seem to break the case sensitivity it self as even this test case I wrote to CalculationEngineTests passes:
[TestMethod]
public void TestCalculateFormulaWithCaseSensitiveThrows()
{
Dictionary<string, double> variables = new Dictionary<string, double>();
variables.Add("var1", 1);
variables.Add("var2", 1);
CalculationEngine engine = new CalculationEngine(new JaceOptions { CaseSensitive = true });
//CultureInfo.InvariantCulture, ExecutionMode.Compiled, false, false, false);
var ex = AssertExtensions.ThrowsException<VariableNotDefinedException>( () => engine.Calculate("VaR1*vAr2", variables));
Assert.AreEqual("The variable \"VaR1\" used is not defined.", ex.Message);
}
FunctionRegistry and ConstantRegistry ignore
JaceOptions.CaseSensitive, which has performance implications as there are lots of unnecessary calls toToLowerFast().Even after disabling case sensitivity, it gets checked by both
ConstantRegistry.IsConstantName()andFunctionRegistryIsFunctionName().This does not seem to break the case sensitivity it self as even this test case I wrote to
CalculationEngineTestspasses: