Kinx Library - Math
Tags: ruby, javascript, kinx, math
Published: 2020-08-04 05:26:44

Hello, everybody!

The script language [Kinx](https://github.com/Kray-G/kinx) is published with the concept of **Looks like JavaScript, Feels like Ruby, Stable like AC/DC(?)**.

This time it is `Math`.

* Reference
    * First motivation ... [The post of introduction](https://dev.to/krayg/kinx-as-a-script-language-4iko)
        * Kinx, I wanted a scripting language with a syntax of C family.
    * Repository ... https://github.com/Kray-G/kinx
        * I am waiting for pull requests.

`Math` is a library for mathematics. The same methods are bound to the special object of Integer and Double, so you don't have to use `Math` instead of those. For example, you can use;

```javascript
var a = 2.pow(10);     // Math.pow(2, 10)   => 1024
var b = 2.0.pow(10);   // Math.pow(2.0, 10) => 1024
var c = (-10).abs();   // Math.abs(-10)     => 10
```

As an unary minus is lower priority than the function call, you need parentheses for `-10` above. You can also use `random()` with the receiver of Integer or Double, but the receiver does not mean anything.

```javascript
var a = 1000.random(); // 1000 is nothing to mean.
var b = 10.0.random(); // 10.0 is nothing to mean.
var c = Math.random(); // Normal.
```

About the special methods or special objects, see [Kinx Library - String](https://dev.to/krayg/kinx-library-string-4mm0).

## Math

Here are methods of Math.
By the way, the first argument is `x` and the second argument is `y` below.

|        Method        |                                        Meaning                                        |
| -------------------- | ------------------------------------------------------------------------------------- |
| Math.sin(dbl)        | $$\sin x$$                                                                            |
| Math.cos(dbl)        | $$\cos x$$                                                                            |
| Math.tan(dbl)        | $$\tan x$$                                                                            |
| Math.asin(dbl)       | $$\theta$$ for $$\sin \theta=x$$                                                      |
| Math.acos(dbl)       | $$\theta$$ for $$\cos \theta=x$$                                                      |
| Math.atan(dbl)       | $$\theta$$ for $$\tan \theta=x$$                                                      |
| Math.atan2(dbl, dbl) | the angle between the positive x axis and the ray to the point $$(x, y) \neq (0, 0)$$ |
| Math.sinh(dbl)       | $$\sinh x$$                                                                           |
| Math.cosh(dbl)       | $$\cosh x$$                                                                           |
| Math.tanh(dbl)       | $$\tanh x$$                                                                           |
| Math.exp(dbl)        | $$e^x$$                                                                               |
| Math.ldexp(dbl, int) | $$x \times 2^y$$                                                                      |
| Math.log(dbl)        | $$\log_e x$$                                                                          |
| Math.log10(dbl)      | $$\log_{10} x$$                                                                       |
| Math.pow(dbl, dbl)   | $$x^y$$                                                                               |
| Math.sqrt(dbl)       | $$\sqrt x$$                                                                           |
| Math.ceil(dbl)       | Minimum value of integer over $$x$$ by Double                                         |
| Math.floor(dbl)      | Maximum value of integer under $$x$$ by Double                                        |
| Math.fmod(dbl, dbl)  | Floating point remainder for $$x \div y$$                                             |
| Math.abs(dbl)        | Absolute value of $$x$$ by Double                                                     |
| Math.random()        | Random value between $$0 \leq r < 1$$                                                 |

> Look at above with LaTeX in your brain...

## Conclusion

As I wrote at the top of this article, you can use the methods for Integer or Double value directly, so I think you do not have to use it via `Math` object.

See you next time.