xyzzyの電卓

# XYZZYの電卓の使い方memo

なんか昔はインターネット検索ですぐにヒットしたのに、今はページが消えてしまっていていろいろ情報がなくなってしまったのでここにmemoしておきたい。

## 注意

- 執筆中の記事ですが一応共有します。
- 電卓めっちゃつかうよ！


## Tokens

- +: 加算 2+2 => 4
- -: 減算 3-2 => 1
- *: 乗算 4*2 => 8
- /: 除算 10/5 => 2 とか 10/3 => 10/3（分数）とか 10/3.0 => 3.333333333333334（少数）
- %: 剰余
- =: 代入？
- \\: int除算？ 100\\3 => 33
- ,: ?
- ^: 累乗
- !:　階乗　3! => 6 とか 5! => 120 
- <<: 左シフト 4<<1 => 8
- \>\>: 右シフト 16>>2 => 4
- &: ビット論理積 0b0011 & 0b0101 => 0b1
- |: ビット論理和 0b0011 | 0b0101 => 0b111
- \`: ビット排他的論理和 0b0011 ` 0b0101 => 0b110
- (: カッコ、計算の優先順位制御
- ): カッコ、計算の優先順位制御


## set

$ set
現在の設定（解の出し方）がみれる

### 答えの基数をかえる
$ set radix=2
$ set radix=8
$ set radix=10
$ set radix=16

### 答えのビット数を変える
$ set bits=16
$ set bits=32
$ set bits=unlimit

例えば
$ set bits=16
$ ~0b1
0b1111111111111110

$ set bits=32
$ ~0b1
0b11111111111111111111111111111110

$ set bits=unlimit
$ ~0b1
0b-10

**8bitない**
**unlimitの挙動がわからん、そもそもunlimitに何を期待している？**

### 符号の取り扱い (signed, unsigned)

$ set unsigned
- unisgned 符号無し
$ set bits=16 radix=2 unsigned
$ -1
0b1111111111111111

- signed 符号有り
$ set bits=16 radix=2 signed
$ -1
0b-1

**ただしbits=unlimitの時には挙動が同じ？、MSBの定義ができないからか？**
$ set bits=unlimit radix=2 unsigned
$ -1
0b-1


## 答えを分数にするか、少数にするか (ratio)

- 答えを分数にする
$ set ratio=ratio

```
$ set ratio=ratio
$ 1/2
1/2
$ 1/10
1/10
```

- 答えを小数にする
$ set ratio=float
```
$ set ratio=float
$ 1/2
0.5
$ 1/10
0.1
$ 1/3
0.3333333333333333
```

## 定数
pi => 3.141592653589793
e => 2.718281828459045

## 変数
```
$ a=40
40
$ b=80
80
$ a+b
120
```


## bit演算

Shift <<, >>  **算術シフトと論理シフトの違いはsignedかどうかで決められるのか？要確認**

## 数の表現

- 2進数
0b011 => 7
- 8進数
010 => 8
- 16進数
0xffff => 65535
- 指数表記
3e3 => 3000.0
0.0005 => 5.0e-4



# 関数

**ソースを読んだらこれだけあった、表にしてまとめたい**
使い方として、たとえばこんな感じ

平方根  sqrt(4) => 2.0f0
三角関数 sin(pi/2) => 1.0 **三角関数の引数はラジアンぽい**

|function| means | example |
|--|--|--|
| gcd | 最大公約数？greatest common divisor | |
| lcm | 最小公倍数？least common multiple | |
| exp | 指数関数？exponential | |
| expt | | |
| pow | 累乗？pow | |
| log | 対数？log | |
| log10 | 常用対数？log_10 | |
| sqrt | 平方根？sqare root | |
| isqrt | 平方根数を最も近い整数に下向きに丸める？ | |
| abs | 絶対値？absolute value| |
| sin | 三角関数sine | sin(pi/2) => 1.0 |
| cos | 三角関数cosine | cos(0) => 1.0f0 |
| tan | 三角関数tangent |  |
| asin | 逆三角関数arc sine | |
| acos | 逆三角関数arc cosine | |
| atan | 逆三角関数arc tangent | |
| atan2 | 三角関数arc tangent 2 ？| |
| sinh | 双曲線関数 hyperbolic sin ？| |
| cosh | 双曲線関数 hyperbolic cos ？| |
| tanh | 双曲線関数 hyperbolic tan ？| |
| asinh | 逆双曲線関数 hyperbolic arc sin ？| |
| acosh | 逆双曲線関数 hyperbolic arc cos ？| |
| atanh | 逆双曲線関数 hyperbolic arc tan ？| |
| floor | 床関数・切り捨て | floor(3.5) => 3 |
| ceil | | |
| ceiling | 天井関数・切り上げ | ceiling(3.5) => 4 |
| trunc | | |
| truncate |  ||
| round | | |
| rem | 剰余？ | mod(7,4) => 3, mod(-7,4) => -3 |
| mod | 剰余？ | mod(7,4) => 3, mod(-7,4) => 1 |
| ffloor |  ||
| fceiling |  ||
| fceil | | |
| ftruncate | | |
| ftrunc | | |
| fround | | |
| float | 浮動小数点数？floating point number| |
| int | 整数？ integer| |
| ratio | | |
| complex | 複素数？ complex | |
| phase | | |
| cis | | |
| min | 最小？| |
| max | 最大？| |
| conjugate | | |
| signum | | |
| sign | 符号関数 | sign(-10) => -1 |
| realpart | 実部？ | |
| real | | |
| imagpart | 虚部？| |
| imag | | |
| numerator | 分子？ | |
| num | | |
| denominator | 分母？ | |
| den | | |
| ash | | |
| shift | シフト演算？ | |
| random |　乱数？ | |
| rand | | |