name:
src/main/js/formulas/math/ATANH.ts
-rw-r--r--
921
1import { NumException } from "../../errors/NumException";
2import { SheetColumnRowKey } from "../../models/common/SheetColumnRowKey";
3import { Complex } from "../../models/common/Types";
4import { Converters } from "../../utils/Converters";
5import { AbstractFormula } from "../AbstractFormula";
6import { FormulaName } from "../FormulaName";
7
8export class ATANH extends AbstractFormula {
9 static SELF: ATANH = new ATANH();
10 NAME = FormulaName.ATANH;
11
12 internal(origin: SheetColumnRowKey, ...values: Array<Complex>) {
13 AbstractFormula.checkLength(values.length, 1, this.NAME);
14 const value = Converters.toNumber(Converters.first(this.collateralLookup(origin, values[0])));
15 if (value <= -1 || value >= 1) {
16 return new NumException(
17 `ATANH parameter 1 value is ${value}. Valid values are between -1 and 1 exclusively.`
18 );
19 }
20 return (Math.log(1 + value) - Math.log(1 - value)) / 2;
21 }
22}