Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,18 @@
[sin](https://docs.oracle.com/javase/jp/8/docs/api/java/lang/Math.html#sin-double-) | 指定された角度の正弦(サイン)を返します。| sin(1) | 0.8414709848078965
[cos](https://docs.oracle.com/javase/jp/8/docs/api/java/lang/Math.html#cos-double-) | 指定された角度の余弦(コサイン)を返します。| cos(1) | 0.5403023058681398
[tan](https://docs.oracle.com/javase/jp/8/docs/api/java/lang/Math.html#tan-double-) | 指定された角度の正接(タンジェント)を返します。| tan(1) | 1.5574077246549023
[asin](https://docs.oracle.com/javase/jp/8/docs/api/java/lang/Math.html#asin-double-) | 指定された値の逆正弦(アーク・サイン)を返します。| asin(1) | 1.5707963267948966
[acos](https://docs.oracle.com/javase/jp/8/docs/api/java/lang/Math.html#acos-double-) | 指定された値の逆余弦(アーク・コサイン)を返します。| acos(0) | 1.5707963267948966
[atan](https://docs.oracle.com/javase/jp/8/docs/api/java/lang/Math.html#atan-double-) | 指定された値の逆正接(アーク・タンジェント)を返します。| atan(1) | 0.7853981633974483
[sinh](https://docs.oracle.com/javase/jp/8/docs/api/java/lang/Math.html#sinh-double-) | double値の双曲線正弦を返します。| sinh(1) | 1.1752011936438014
[cosh](https://docs.oracle.com/javase/jp/8/docs/api/java/lang/Math.html#cosh-double-) | double値の双曲線余弦を返します。| cosh(1) | 1.543080634815244
[tanh](https://docs.oracle.com/javase/jp/8/docs/api/java/lang/Math.html#tanh-double-) | double値の双曲線正接を返します。| tanh(1) | 0.7615941559557649
[exp](https://docs.oracle.com/javase/jp/8/docs/api/java/lang/Math.html#exp-double-) | オイラー数eをdouble値で累乗した値を返します。| exp(1) | 2.718281828459045
[log](https://docs.oracle.com/javase/jp/8/docs/api/java/lang/Math.html#log-double-) | 指定されたdouble値の自然対数(底はe)を返します。| log(2) | 0.6931471805599453
[log10](https://docs.oracle.com/javase/jp/8/docs/api/java/lang/Math.html#log10-double-) | double値の10を底とする対数を返します。| log10(2) | 0.3010299956639812
[sqrt](https://docs.oracle.com/javase/jp/8/docs/api/java/lang/Math.html#sqrt-double-) | double値の正しく丸めた正の平方根を返します。| sqrt(2) | 0.3010299956639812
[rad](https://docs.oracle.com/javase/jp/8/docs/api/java/lang/Math.html#toRadians-double-) | 度で計測した角度を、相当するラジアンに変換します。| rad(1) | 0.017453292519943295
[deg](https://docs.oracle.com/javase/jp/8/docs/api/java/lang/Math.html#toDegrees-double-) | ラジアンで計測した角度を、相当する度に変換します。| deg(1) | 57.29577951308232

- 関数名の文字は、大文字と小文字を区別しません。

Expand Down
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ plugins {
}

group 'xyz.javecs.tools'
version '0.1.8'
version '0.1.9'

apply plugin: 'kotlin'
apply plugin: 'antlr'
Expand Down
19 changes: 6 additions & 13 deletions src/main/kotlin/xyz/javecs/tools/expr/BuiltIn.kt
Original file line number Diff line number Diff line change
@@ -1,26 +1,19 @@
package xyz.javecs.tools.expr

fun builtIn() = HashMap<String, (Double) -> Double>().apply {
internal fun builtIn() = HashMap<String, (Double) -> Double>().apply {
put("sin", { x -> Math.sin(x) })
put("cos", { x -> Math.cos(x) })
put("tan", { x -> Math.tan(x) })
put("asin", { x -> Math.asin(x) })
put("acos", { x -> Math.acos(x) })
put("atan", { x -> Math.atan(x) })
put("sinh", { x -> Math.sinh(x) })
put("cosh", { x -> Math.cosh(x) })
put("tanh", { x -> Math.tanh(x) })
put("exp", { x -> Math.exp(x) })
put("log", { x -> Math.log(x) })
put("log10", { x -> Math.log10(x) })
put("sqrt", { x -> Math.sqrt(x) })
put("cbrt", { x -> Math.cbrt(x) })
put("ceil", { x -> Math.ceil(x) })
put("floor", { x -> Math.floor(x) })
put("rint", { x -> Math.rint(x) })
put("abs", { x -> Math.abs(x) })
put("ulp", { x -> Math.ulp(x) })
put("signum", { x -> Math.signum(x) })
put("sinh", { x -> Math.sinh(x) })
put("cosh", { x -> Math.cosh(x) })
put("tanh", { x -> Math.tanh(x) })
put("expm1", { x -> Math.expm1(x) })
put("log1p", { x -> Math.log1p(x) })
put("rad", { x -> Math.toRadians(x) })
put("deg", { x -> Math.toDegrees(x) })
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,4 +26,51 @@ class CalculatorFunctionTest {
assertEquals(1.5574077246549023, Calculator().eval("Tan(1)").value)
}

@Test fun asinTest() {
assertEquals(1.5707963267948966, Calculator().eval("asin(1)").value)
}

@Test fun acosTest() {
assertEquals(1.5707963267948966, Calculator().eval("acos(0)").value)
}

@Test fun atanTest() {
assertEquals(0.7853981633974483, Calculator().eval("atan(1)").value)
}

@Test fun expTest() {
assertEquals(2.718281828459045, Calculator().eval("exp(1)").value)
}

@Test fun logTest() {
assertEquals(0.6931471805599453, Calculator().eval("log(2)").value)
}

@Test fun log10Test() {
assertEquals(0.3010299956639812, Calculator().eval("log10(2)").value)
}

@Test fun sqrtTest() {
assertEquals(1.4142135623730951, Calculator().eval("sqrt(2)").value)
}

@Test fun sinhTest() {
assertEquals(1.1752011936438014, Calculator().eval("sinh(1)").value)
}

@Test fun coshTest() {
assertEquals(1.543080634815244, Calculator().eval("cosh(1)").value)
}

@Test fun tanhTest() {
assertEquals(0.7615941559557649, Calculator().eval("tanh(1)").value)
}

@Test fun radTest() {
assertEquals(0.017453292519943295, Calculator().eval("rad(1)").value)
}

@Test fun degTest() {
assertEquals(57.29577951308232, Calculator().eval("deg(1)").value)
}
}