S-Calcで使用している数式処理ライブラリ「xFunc.Math」の紹介
私が開発して公開しているWindows向け関数電卓ソフトS-Calcでは、数式の解析と計算処理に、.NET向けライブラリxFunc.Methを使用しています。
この記事では、その概要と基本的な使い方、そしてS-Calcでの活用例をご紹介します。
xFunc.Mathとは
xFunc.Mathは、C#などの.NET環境で利用できる数式パーサ&評価ライブラリです。
ユーザが入力した文字列形式の数式をパースし、計算結果を返すことができます。
対応している機能は非常に幅広く、以下のようなものがあります。
- 四則演算。累乗(べき乗)、平方根
- 三角関数
- 対数・指数関数
- 論理演算、ビット演算
- 変数やユーザ定義関数の登録
- 複素数演算
採用理由
S-CalcでxFunc.Mathを採用した理由は次の通りです。
1.幅広い関数と演算に対応
一般的な関数電卓で必要とされる演算はほぼカバーしています。
2.拡張が容易
独自関数や定数を簡単に追加できるため、化学計算やカスタム機能への対応が容易です。
3.商用利用可能なライセンス
MITライセンスで提供されており、商用アプリでも利用可能です。
4.最新の.NETに対応
.NET 6/7/8 でも動作し、定期的にメンテナンスされています。
基本的な使用例
以下は、xFunc.Mathで単純な数式を計算する例です。
using xFunc.Maths;
using xFunc.Maths.Expressions;
// Processorのインスタンスを作成
var processor = new processor();
// 数式をパースして計算
var result = processor.Solve("2*sin(30)");
// 結果を表示(度数法の場合、1が出力されます)
Console.WriteLine(result); // 1
変数や関数を使った例
変数やユーザ定義関数を使うことで、より柔軟な計算が可能です。
var processor = new Processor();
// 変数の定義
processor.Variables["x"] = 5;
// 数式で変数を使用
var result = processor.Solve("x^2 + 3");
Console.WriteLine(result); // 28
S-Calcでの活用例
S-Calcでは、xFunc.Mathを以下のように活用しています。
- 入力された式をリアルタイムにパース氏、構文エラーを検出
- 計算履歴機能と連動して過去の計算式や解を再利用
- カスタム関数や定数の登録機能
(ユーザが独自の式や定数を保存し、ワンクリックで呼び出せる) - 複素数演算や周期表データとの組み合わせ計算
また、以下のyoutube動画でS-Calcの機能紹介をしております。
S-Calc紹介動画
まとめ
xFunc.Mathは、.NET環境で数式処理を行う際に非常に便利なライブラリです。
S-Calcの中核を担う計算エンジンとして採用し、機能拡張や独自機能の実装を支えています。
興味がある方は公式リポジトリをご覧ください。
GitHub - sys27/xFunc
S-Calcの詳細についてご興味の沸いた方は、こちらの公式サイトをご覧ください。
itechem公式サイト