> ## Documentation Index
> Fetch the complete documentation index at: https://villagesql.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# MySQL 用 vsql_complex 拡張機能

> vsql_complex 拡張機能は、四則演算、絶対値、および共役の関数を備えた COMPLEX カラム型を MySQL に追加し、VEF カスタム型の実例として同梱されています。

`vsql_complex` は、複素数を 2 つの倍精度浮動小数点数として格納する `COMPLEX` カラム型を、それに伴う算術演算とともに追加します。カスタム型の実例としてサーバーに同梱されており、VEF 型に必要なものを端から端まで示しています。バイナリレイアウト、テキスト形式、比較規則、および集約です。

| | |
| - | - |
| **メンテナー** | VillageSQL |
| **ソース** | [villagesql-server/villagesql/examples/vsql-complex](https://github.com/villagesql/villagesql-server/tree/main/villagesql/examples/vsql-complex) |
| **ライセンス** | GPL-2.0 |

## インストール

`vsql_complex` はサーバーのソースツリーに含まれているため、そのバンドルはソースからのビルドを含むすべてのインストール方法の後に存在します。1 つのステートメントでサーバーにインストールします。

```sql theme={null}
INSTALL EXTENSION vsql_complex;
```

インストールされたことを確認します。

```sql theme={null}
SELECT EXTENSION_NAME
FROM INFORMATION_SCHEMA.EXTENSIONS
WHERE EXTENSION_NAME = 'vsql_complex';
```

```
+----------------+
| EXTENSION_NAME |
+----------------+
| vsql_complex   |
+----------------+
```

## 追加される機能

### COMPLEX 型

値は `'(real,imaginary)'` と書き、16 バイトを占有します。バンドルは `COMPLEX2` という変種も登録しますが、このページでは扱いません。

```sql theme={null}
CREATE TABLE signals (
    id        INT PRIMARY KEY,
    impedance COMPLEX
);
```

### 関数

| 関数 | 戻り値 | 説明 |
| - | - | - |
| `complex_add(a, b)` | `COMPLEX` | 加算 |
| `complex_subtract(a, b)` | `COMPLEX` | 減算 |
| `complex_multiply(a, b)` | `COMPLEX` | 乗算 |
| `complex_divide(a, b)` | `COMPLEX` | 除算 |
| `complex_real(a)` | real | 実部 |
| `complex_imag(a)` | real | 虚部 |
| `complex_abs(a)` | real | 絶対値 |
| `complex_conjugate(a)` | `COMPLEX` | 共役 |
| `complex_sum(a)` | `COMPLEX` | 集約: グループ全体の合計 |

## 例

```sql theme={null}
INSERT INTO signals VALUES
    (1, '(50.0,0.0)'),
    (2, '(3.0,4.0)'),
    (3, '(0.0,-2.5)');

SELECT id, impedance,
       complex_real(impedance) AS re,
       complex_imag(impedance) AS im,
       complex_abs(impedance) AS magnitude
FROM signals;
```

```
+----+-----------+------+------+-----------+
| id | impedance | re   | im   | magnitude |
+----+-----------+------+------+-----------+
|  1 | (50,0)    |   50 |    0 |        50 |
|  2 | (3,4)     |    3 |    4 |         5 |
|  3 | (0,-2.5)  |    0 | -2.5 |       2.5 |
+----+-----------+------+------+-----------+
```

`(0,1)` を掛けると値が 4 分の 1 回転し、集約はカラム全体を合計します。

```sql theme={null}
SELECT complex_multiply(impedance, '(0,1)') AS rotated FROM signals WHERE id = 2;
SELECT complex_sum(impedance) AS total FROM signals;
```

```
+---------+
| rotated |
+---------+
| (-4,3)  |
+---------+
+----------+
| total    |
+----------+
| (53,1.5) |
+----------+
```

## 関連項目

* [カスタム型](https://villagesql.com/docs/ja/sdk/cpp/custom-types.md) — VEF 型の宣言方法と、サーバーが型に求めるもの
* [拡張機能の作成](https://villagesql.com/docs/ja/extensions/build/create.md) — 自分の拡張機能を作る
* [利用可能な拡張機能](https://villagesql.com/docs/ja/extensions/catalog) — 完全なカタログ


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.