22 lines
828 B
TypeScript
22 lines
828 B
TypeScript
|
/// <reference path="../Complex/type.ts">
|
||
|
import {configDependency} from '../core/Config.js'
|
||
|
import {Dependency, ImplementationTypes} from '../core/Dispatcher.js'
|
||
|
|
||
|
export const add = (a: number, b: number) => a + b
|
||
|
export const unaryMinus = (a: number) => -a
|
||
|
export const subtract = (a: number, b: number) => a - b
|
||
|
export const multiply = (a: number, b: number) => a * b
|
||
|
export const divide = (a: number, b: number) => a / b
|
||
|
export const sqrt =
|
||
|
(dep: configDependency
|
||
|
& Dependency<'complex', [number, number]>) => {
|
||
|
if (dep.config.predictable || !dep.complex) {
|
||
|
return (a: number) => isNaN(a) ? NaN : Math.sqrt(a)
|
||
|
}
|
||
|
return (a: number) => {
|
||
|
if (isNaN(a)) return NaN
|
||
|
if (a >= 0) return Math.sqrt(a)
|
||
|
return dep.complex(0, Math.sqrt(unaryMinus(a)))
|
||
|
}
|
||
|
}
|