2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

.NETで数式処理を行うライブラリ「xFunc.Math」の基本と活用例(S-Calcでの実装)

Last updated at Posted at 2025-08-09

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公式サイト

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?