From 09181f806feb9e43e30d56e75d0b5de2a2825b49 Mon Sep 17 00:00:00 2001 From: James Grugett Date: Sat, 9 Jul 2022 15:01:58 -0500 Subject: [PATCH] Move binary search to util file --- common/calculate-cpmm.ts | 24 +----------------------- common/util/algos.ts | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+), 23 deletions(-) create mode 100644 common/util/algos.ts diff --git a/common/calculate-cpmm.ts b/common/calculate-cpmm.ts index 9474bffb..ce46cc34 100644 --- a/common/calculate-cpmm.ts +++ b/common/calculate-cpmm.ts @@ -4,6 +4,7 @@ import { LimitBet } from './bet' import { CREATOR_FEE, Fees, LIQUIDITY_FEE, PLATFORM_FEE } from './fees' import { LiquidityProvision } from './liquidity-provision' import { computeFills } from './new-bet' +import { binarySearch } from './util/algos' import { addObjects } from './util/object' export type CpmmState = { @@ -139,29 +140,6 @@ export function calculateCpmmAmount( return amount } -function binarySearch( - min: number, - max: number, - comparator: (x: number) => number -) { - let mid = 0 - while (true) { - mid = min + (max - min) / 2 - - // Break once we've reached max precision. - if (mid === min || mid === max) break - - const comparison = comparator(mid) - if (comparison === 0) break - else if (comparison > 0) { - max = mid - } else { - min = mid - } - } - return mid -} - function calculateAmountToBuyShares( state: CpmmState, shares: number, diff --git a/common/util/algos.ts b/common/util/algos.ts new file mode 100644 index 00000000..dd450075 --- /dev/null +++ b/common/util/algos.ts @@ -0,0 +1,22 @@ +export function binarySearch( + min: number, + max: number, + comparator: (x: number) => number +) { + let mid = 0 + while (true) { + mid = min + (max - min) / 2 + + // Break once we've reached max precision. + if (mid === min || mid === max) break + + const comparison = comparator(mid) + if (comparison === 0) break + else if (comparison > 0) { + max = mid + } else { + min = mid + } + } + return mid +}