commit
message
Formulas.ASIN written and tested.
author
Ben Vogt <[email protected]>
date
2017-01-16 23:48:39
stats
2 file(s) changed,
30 insertions(+),
0 deletions(-)
files
src/RawFormulas.ts
tests/FormulasTest.ts
1diff --git a/src/RawFormulas.ts b/src/RawFormulas.ts
2index e9172dc..fbcefe1 100644
3--- a/src/RawFormulas.ts
4+++ b/src/RawFormulas.ts
5@@ -228,7 +228,24 @@ var ARABIC = function (text?) {
6 return r;
7 };
8
9-var ASIN = Formula["ASIN"];
10+/**
11+ * Returns the inverse sine of a value, in radians.
12+ * @param value The value for which to calculate the inverse sine. Must be between -1 and 1, inclusive.
13+ * @returns {number} inverse sine of input value
14+ * @constructor
15+ */
16+var ASIN = function (value?) {
17+ checkArgumentsLength(arguments, 1);
18+ value = valueToNumber(value);
19+ if (value === -1) {
20+ return Math.PI;
21+ } else if (value > 1 || value < -1) {
22+ throw new CellError(ERRORS.NUM_ERROR, "Function ____ parameter 1 value is " + value + ". Valid values are between -1 and 1 inclusive.");
23+ }
24+ return Math.asin(value);
25+};
26+
27+
28 var ASINH = Formula["ASINH"];
29 var ATAN = Formula["ATAN"];
30 var ATAN2 = function (x, y) {
31diff --git a/tests/FormulasTest.ts b/tests/FormulasTest.ts
32index 0b3f409..9ad9499 100644
33--- a/tests/FormulasTest.ts
34+++ b/tests/FormulasTest.ts
35@@ -120,7 +120,18 @@ catchAndAssertEquals(function() {
36 return ARABIC(10);
37 }, ERRORS.VALUE_ERROR);
38
39-assertEquals(ASIN(0.1), 0.1001674211615598);
40+// Test ASIN
41+assertEquals(ASIN(0), 0);
42+assertEquals(ASIN(1), 1.5707963267948966);
43+assertEquals(ASIN("1"), 1.5707963267948966);
44+assertEquals(ASIN(false), 0);
45+catchAndAssertEquals(function() {
46+ return ASIN(2);
47+}, ERRORS.NUM_ERROR);
48+catchAndAssertEquals(function() {
49+ return ASIN("str");
50+}, ERRORS.VALUE_ERROR);
51+
52
53 assertEquals(ASINH(0.1), 0.09983407889920758);
54